On Programming

A discussion of programming strategies and results

An Argument Against the Cascade

| Comments

What is happening to the world of great code? Has anyone else noticed a trend towards scripting languages? At work I had to switch from a Java platform (Java is already horrible) to Javascript. At my college (RPI) the early computer science courses are switching from C++ to Python. Looking at the web, the Javascript world exploded over the past few years (remember when all you did with javascript was form validation?). Don’t get me wrong, Scripting languages have their place. I simply feel that scripting languages are more and more getting used to write entire applications instead of allowing your application to be extensible.

One argument for the diminishing quality of code was dubbed the Cascade of Attention Deficit Teenagers. The idea behind this is that new teenagers are constantly discovering open source projects and rewriting the modules in it so no progress is made since everyone spends all their time re-implementing the same functionality. While this can be a problem, its important to remember that reinventing the wheel isn’t always a bad thing. One of my major projects are Intel last year got taken over by a new intern this summer. He took the entire code base (around 10,000 lines) and ripped it apart. Through this process he managed to find multiple bugs and clean up sections of code that hadn’t been touched in a year. He then was able to build upon the cleaner code base and significantly improve its functionality and add a user interface that completely changes how people interact with the program.

This experience has taught me two important things:

  1. Reinvent the wheel but don’t stop with a wheel, add something more to it.
  2. Get multiple hands on a project, chances are someone out there is better than you at some aspect of your code.

In regards to #2, I want to point out that simply getting multiple eyes on a project is not enough. People can find bugs and suggest areas that need improvement but you will need someone else to radically redesign your code in a paradigm you have not considered.

Finally, in regards to the script languages: stop. Scripting languages are meant for making your program extensible or for rapid prototyping. Once you move beyond that programmers need to ditch their fear of pointers and move onto C/C++.