Friday, August 3, 2012

Software Design, or not?

During my career, I saw many people who write good pieces of software.  My goal has always been pursuing this.  To write a good software like these people.  But, here is an interesting thing to bring up.

So many of great software developers don't prepare separate time for designing!
In my case, I need time to design what I will write.  My design process is roughly like this:

1. Gather requirements.  And list what should happen.
2. Divide out inputs and outputs.  This eventually determines "interface".
3. Organize internal or intermediate data that I will handle in my system.  And see if I have to store anything.  (Store in memory for session, or store in DB for persistence).  These will contribute a lot to concrete functions or classes.  And key to the solutions.

Yep.. No UML, but my own way of listing and diagrams to represent. And this takes time.  So much time, actually.
I saw, and I am working with many great and smart developers.  And I know they write close to flawless codes in a shot.  My conclusion is "They also design, but they all do in their brain.  Therefore, design process is fast, and sometimes it looks missing from outside."  To be thorough, I need to check one by one through paper.  So, I am solving problem case by case.  This is inefficient, but so far this brings out my best quality.  I wish I could do these check step in brain so that I can produce software faster.
The key skill here is "memory", which is very hard to improve.

No comments: