Tuesday, June 4, 2013

Programming is complexity management

People that does not know anything about programming think you have to be strong in math and logic.
That's plain wrong.

Programming is about managing complexity.
I'm not talking about mathematical complexity, but human complexity.
That is the complexity of combining ideas to achieve a result.

You have to be strong in math if you are doing a math program, which is something like 1% of programs in the world, as much you have to be strong in business to create a great business app.

Studies say that our working memory can store 7 items, and temptations are great, to think that people that can work with more are more intelligent, and thus, write better program.

That's even more plain wrong.

A programmer that can store 20 items in their working memory at one time, and codes in consequence will be terrible.

The great developer makes himself replaceable so that everyone can improve his work. That's taking advantage of the power of our peers.
If nobody can understand your program without having 20 items at a time in his brain, then nobody will improve your program, and it will die as soon as you leave it.

The great developer will make the memory deficient person able to understand his ideas.
You know you are reading a great code when your logical brain is off, you are busy drawing boxes, arrows, and sketches into your head or on paper.
Vision is working more than logic.

The great developer might not be able to store more than 20 items in working memory, but he can transform anything to make it fit into a 4 items working memory.

Programming is about organizing ideas, not about logic.
The business domain of your program (business, maths, game) will define the other skills you need.
But programming by itself is only about organizing and writing down ideas on an IDE.

No comments:

Post a Comment