6

I am fairly new in product development and I am trying to work over a product. The problem that I have realized is that people draw diagrams and charts showing different modules and layers.

But as I am working alone (I am my own team) I got a bit confused about the interaction I am facing in the development within the programs and I am wondering whether developing a product in modules is real or not?

Maybe I am not a great programmer, but I see no boundaries when data start to travel from frontend to backend.

gnat
  • 20,543
  • 29
  • 115
  • 306
Aura
  • 205

2 Answers2

22

The "layers" that we describe when we describe software systems are abstract concepts. To the computer, all it gets to see is a featureless stream of one opcode after another, no matter which layer, which class or which method it originally came from. In this sense, they are not "real" at all.

However, layers (and classes and methods) are useful for programmers to ease thinking about the system. By voluntarily restricting ourselves to think about the system only on one level of description at a time, and to think about an operation only in terms of its input and output rather than its internal workings, we increase our ability to understand the relevant parts when adding functionality or making a change.

This is initially quite counter-intuitive, and under-taught in formal education. But I assure you that judicious use of abstraction is the only thing that makes software development "in the large" possible at all for people who aren't autistic savants.

Kilian Foth
  • 110,899
2

Adding my two cents...

You’re your own team; you’re working alone on that product, one piece of advice: keep it simple, stupid!

In your case, I don’t think you need to abstract things creating layers or modules, you’ll only gain complexity.

Things would obviously not be the same if you were to work within a 10 guy’s team where some of them would be involved on business rules development and the other ones on the UI. In that situation, separating concerns might be a good idea. Just start simple and write unit tests to protect you from regression.

Why would you have to get things more complicated than they need to? You might not gonna need it at all!

MaxSC
  • 454