We all learned in college, design in a software project is so important. Why? Well, design was important. That’s all :) We accepted that without question from our professors(or at least I did). The college project time devoted to design was loitered away in searching for a project, discussing how we were to do it, who would be our project partners and so on. Generally doing everything but actually learning a formal design procedure which would help us design a software product.
Coming out of college into a world of real projects and unrealistic deadlines, lead us (both Amar and me) into a race where design was well .. shrinked, to put it mildly. That put us into a general feeling that we were delivering on projects faster.
Here goes. Client asks us to develop a shopping cart. We jump into the code the first day itself, and in a matter of 10 days deliver an excellent shopping cart solution for him. Proudly we show it to the client, and out come the freezing words. “Can we also add a short comment to each product?”. “Why not”, we say weakly. The words barely come out, but we do it for completing the project. In our minds we think, “That simply means changing the database table, and changing each of the 25 programs which access this table. Uh Oh”
After the next 5 days spent on doing herculean modifications, we emerged exhausted but wiser. We realised requirements and design is an important part of any project.
Some people claim that design is useless. Especially newbies in the open source market. They claim, extreme programming is the way to go. They prefer the random, unchartered road to creating something, deciding whether we can add it to the project and then adding it. Well to me, thats like manufacturing a bumper and then deciding whether it can be fitted into a car.
And see, extreme programming does not advocate 0 design. They just say don’t overdo the design. Even Linus Trovalds says “”Design” is like a religion – too much of it makes you inflexibly and unpopular. ” . He just says you need not go too much on design for projects such as creating the kernel of Linux. And he is partly right, because designing a Linux kernal from scratch is too big for the understanding of mere mortals like us. Linus Trovalds is Linus Trovalds and we should expect him to have an intelligence superior to ours. Unfortunately programmers latch on to it like flies to sugar, and construe “0 design is great. We don’t want to waste time writing boring documents. We want to be writing cool code” . Perhaps to compliment their, umm laziness. And what happens in the end?. Clients get innumberable reasons on why the deadline was not kept to. Its quite sad actually and not necessary at all. We have faced it all.
Nowadays, in Poornam, ISO implementation is going on. As part of it, we designed new Software development documents (in the name of ISO, but this was what we wanted all along). I was a little skeptical at first, whether all these documents would be really put to use in a real project scenario. I have a scare for a lot of documentation. We would rather leave it to an experienced programmer like AgniSoonu, who you do not have to say anything really. Just say the project title to him, and he’d handle the rest.
After a lot of false starts, we finally tried out the long awaited ISO documents out on one new project, and man it was like new doors to freedom. The requirements and project planning went so smoothly, the client was impressed, the programmer was delighted because things were not ambiguous any more. Everything was on paper, down to the error messages generated for each unexpected error. And whats more, it took about 2 days project planning for a project which is expected to take 3 weeks. The client changed whatever he wanted changed much before we wrote the first line of code. Not bad at all, considering the amount of heart burn it would save us later.
Now after about 4 years of small and big projects, we feel we have at last roosted home. This would not be possible without dear Agni, who created brilliant programs with the almost raw and sketchy project descriptions we gave to him and KrishnaKumar without whom ISO would be just a pipe dream. I feel Poornam has begun to mature in its development efforts. Lets have more, ISO, CMM and more :)