Wednesday, April 06, 2005

Do Software Processes Make Sense?

In India many organizations compete by using their software certifications, but I have heard many engineers/developers complain that processes take away a lot of time. Many people complain about forging and process for the sake of processes. Here is my first take on software processes

Software processes are good, but they come at a cost. The trade off is not straightforward. Lets consider the following points

  1. Software processes serve as a discipline for the forgetful programmer
  2. Reviews give us insight into potential issues and save us the time of reworking things later
  3. Unit testing and Integration testing should be stressed upon, it really helps catch a lot of potential defects

On the other hand

  1. Excessive processes might be time consuming
  2. The focus should not shift from the work product to the processes

I hope I will not be called radical for stating that "sometimes its better to let the one odd complex/hard to reproduce bug be in there", its easier to fix when someone hopefully internally catches and tells you how it occurs, instead of spending a lot of time for finding and fixing it. This does not mean that you leave potentially disastrous things in your software, if you are satisfied with your testing -- move on!

New methodologies like eXtreme Programming are radical in their focus on testing, developer burn-out and online review. It makes no sense to write code that has never been tested.

I have been trying to figure out the main reason for software development being so expensive and sometimes buggy. Here is a first cut at the list of what software developers have

  • Software reuse
  • Extensive testing (which adds to the cost)
  • Good tools, compilers and debuggers (like gcc, lint, purify, etc)
  • Availability of free compilers, code and tools (they have licensing restrictions to a great extent)

I would also like to consider the discuss the pros and cons of Project Management

I think that about 70% of the productive code is written by 30% of the people.

Can we come with methods to streamline and refine the process of software development, reduce costs/increase productivity and reduce developer burn-out?

Comments?

No comments:

Ranking and Unranking permutations

I've been a big fan of Skiena's Algorithm Design Manual , I recently found my first edition of the book (although I own the third ed...