Saturday, August 21, 2010

Programming Truths

I don't think most people (even some other developers!) understand the massive amount of work that goes into creating a software project. Currently in the middle of the design phase for a project, two particular points made in this article struck a chord.
Good programmers spend much of the other 90% [of their time] thinking, researching, and experimenting to find the best design.
During the design phase of a software product I usually lock myself in a room with a large whiteboard and a laptop. I take a look at the requirements and begin to break them down, looking for similarities that can be grouped together into software components.

These get written, erased, rewritten and moved all over the whiteboard numerous times during this exercise. I write small blocks of code to test my interim designs and see how they look, how they perform and see if the smaller design fits with the larger system. These design sessions are one of my favorite parts about software design, but it is not at a large cost - see the next point:
Programming is hard work. It’s an intense mental activity. Good programmers think about their work 24/7. They write their most important code in the shower and in their dreams.
I constantly think of how I can improve the system I am helping to design; thoughts like - "Could I remove that dependency if I refactor the code?" -or- "If I apply this design pattern will the system scale better?" It is a constant process of furthering the design until you reach a point where you can begin an implementation.

I often think back to what I have accomplished in my work days during a design phase - most of the time it involves several sheets of scratch paper filled with notes, sketches, pseudocode, and seemingly random UML diagrams.

What is great about software, like any other creative field, is seeing the final output of those long hours of design - seeing those early scribbles on paper become something real.

No comments:

Post a Comment