February 18, 2004

What is wrong with Software Development?

In following the current debate on offshoring I see some focus on the process that is used and how this is crucial to the success or failure of a project. To a degree there is an acceptance of bugs in software development. New processes such as agile development are emerging to improve the process. But maybe the process will always have flaws because our fundamental concepts of software development are wrong?

Some aspects of Agile Development and eXtreme Programming revolve around daily builds, fixing bugs as soon as they're found, and working in such a way that known bugs or dependancy issues are caught before they spiral out of control. The xUnit series is becoming very popular for unit testing with frameworks such as .Net and Java. More and more focus seems to be moving from RAD (Rapid Application Development) to what I'd call RBF (Rapid Bug Fixing - not catchy I know, how about RAP - Rapid Application Patching? ;o)).

But maybe we are missing something fundamental? Maybe we're making tiny improvements on an inherently flawed way of producing software applications?

I read a few interviews with some senior Sun people recently and they had some very interesting insights. The two main concepts from the articles I will link to that I would like to draw attention to are

  • The education system takes the wrong approach in how it develops computer science graduates.

  • Some of our most fundamental computer science concepts have boxed us into viewing software development from a restricted imagination.


Now these two are linked in some ways, but the first point can be addressed while still staying inside our current software orthodoxy, while the other can't.

In my experience (which is admittedly very limited), most computer science programs fall in one of two different directions. In one direction are the programs that rely heavily on theory. Students come out knowing a broad base of theory but with very little that they can immediately apply in their first job. It does however provide a solid foundation for further learning.
In the other direction are the programs that have modules with names like "Web Services with .Net" and "Cisco router administration." Students on these courses learn a lot about the latest industry technologies, maybe VB .Net or Java or J2EE, whatever. When they graduate a project manager can pick them up and assign some code to them and they can be useful almost immediately. However maybe their theoretical base is less solid than the students from more theory-oriented courses and this could potentially hamper them later on, or at least make life harder for them.
And of course most computer science programs will fall somewhere between these two extremes.

Richard Gabriel, a "Distinguished Engineer" at Sun, has a very interesting idea about how a computer science course should work. And maybe this type of course would produce better developers than the previous and current generations?

But even these graduates who would leave college with a lot of experience will still be trapped in the orthodoxy of current mainstream computer science. Jaron Lanier, technology prophet (my own description :o)), has some interesting ideas about reimagining basic computer science concepts. In the interview with java.sun.com he mentions that even the file is currently an orthodox concept but it wasn't always part of the mainstream of computer science.

Victoria Livschitz, another Sun person, also has some interesting ideas regarding the idea of proper reuse of software modules and the level of intuition lacking from software development at the moment.

Reading the ideas and opinions of such people is really humbling but also very inspiring to get an insight into some of the minds that are leading the way towards a better and cooler technological future.

Links:
Interview with Richard Gabriel
Interview with Jaron Lanier
Interview with Victoria Livschitz

Posted by Cokane at February 18, 2004 04:54 AM
Comments