Thursday, October 12, 2006

Writing Zero Defect software

Yesterday I was listening an Arcast with title "Writing zero defect software" from http://www.skyscrapr.net/blogs/arcasts/default.aspx?ID=340. Dr. Neil talks about attitude (psychological part) of developer, how to tackle when bug is found, quality, TDD and discoverability of feature. He says that our software development should be done in such way that it should be always ready for shipped (may not be always with all feature, a typical agile value). He also explained one interesting fact that “why developer go for complex solution” and explanation seems to be a big truth. He says that we should have feeling of pride whatever piece of code we deliver and that feeling can only come if we strive to ship zero defect software. He is really concerned about fact our expectation for software are very low, clients always expect that software can not be developed without bugs and bugs are inevitable. He says that we need to set our standard high from software development industry and it should be on par with other industry like Car, Aero plane manufacture.

I am not sure whether we can really make “Zero defect software” or not but, if we implement his idea in our day to day activities of software development then we can definitely reduce the number of bugs in our system drastically. So, I would request you to listen the Arcast mentioned in above link.

Friday, September 29, 2006

Questions Every Designer Should Ask

Here is the much awaited task for you. You got to come up with a design for the given module. I guess this is how we all get our first design assignment. With the slight variation in the situation everybody goes through this sometime or other in their career.

While Design related tasks are much awaited for every programmer. Its every (most if not all) programmer's wish to become a designer. But when the first assignment comes they kind of get nervous and start looking at books to find a Quickest Way to produce the artifact. There are few books which can help you do the design and draw models etc but as a Designer there are few questions which needs to be asked before we start drawing design models.

1. What is the Functional Requirement?
2. What are the steps involved to meet the functional requirement.
3. What is Already Existing? Find out from other team members/designers as which of the functionality already exists.
4. What is the Design Guideline?
5. Are there any design constraints?
6. How much is enough? There is no limit on amount of details one can put in a design document but somewhere a line must be drawn where one says "This much detail is Enough".
7. What are the dependencies (both Internal and External)?
8. How is other parts of the system depend on yours?
9. What are the entities who play a role here? List all the entities from the system involved in the activity.
10. What are the artifacts to be produced?
11. What are the non-functional requirement eg Speed, Transaction Control etc.

If we ask these questions in the beginning then rest becomes easy. That's why designer love their work :)

Until Next Time...:)

Monday, September 18, 2006

Power of Simplicity

More often I come across people who think that a Powerful system has to be complex. Or if the system is powerful it must have lots and lots of complex logic in it. Somehow this amuses me to a greater extent. Quite oftent I end up asking these question to myself:
1. Why a Powerful System has to be complex?
2. What makes a System Powerful?
3. Is Simplicity not a powerful feature in itself?
4. Is it not a fact that if a Complex System is analysed properly, it consists of many simple systems?

The list of questions are endless and I rarely meet a person who can think through in these lines and try to implement a system in the most simplistic possible way.

Next time will discuss about why we need a simplistic approach.. Until next time...