May 08

I started my professional programming career over 20 years ago on the Commodore Amiga.  The Amiga was a state-of-the-art personal computer, with a proprietary operating system, windowed GUI, and dedicated sound and graphics chips when the IBM PC was still saying, “C:DOS RUN.”

The Amiga computer was fast for its time, but maddeningly slow in hindsight: 5-10 minutes to compile a typical development project.  Hard drives were still external, bulky and expensive at $500 for 30MB.  The Amiga system APIs were plentiful, massive and complex, like the Win32 APIs that followed.  I wrote software in C, using a programmable text editor and the “Make” tool to build projects.

A lot has changed in two decades.  As with most things in this business, software development tools and systems are now better, faster, and sometimes cheaper.  But what are the most important changes?

In the spirit of David Letterman, following are my “Top 10 Advances in Software Development.”  These are the things–from my perspective, in increasing order of importance–that have most improved software development and entrepreneurship over the past 20 years.  I encourage you to reply with your own Top 10 list.

10. Modeling Tools

Of all the items on this list, modeling tools still have the farthest to go before they become the essential and dominant part of the software development process that they should be.  There are some promising candidates, but most modeling tools are still too “heavy,” expensive, and disconnected from the code and overall development process.  And while the tools are getting better at modeling classes and use-cases, when it comes to writing logic and the “guts” to most functions, code is still the way to go.

9. Automated Build Tools

The C “Make” tool in 1985 was quite powerful for its day, doing much of what the automated build tools can do today.  However, today’s tools are graphical, making it far easier to create complex and logic-driven build routines.  Modern tools are also better at handling errors, and can restart the build process in the middle, automatically determine project dependencies, interface with source control systems, and manage the work of a virtual team across the Web.

8. IDEs

Integrated Development Environments (IDEs) combine all of your programming tools together in one application, with a consistent user interface, macro language and documentation system.  IDEs make good on the promise of windowed GUIs, enabling developers to create a comprehensive “dashboard” for the software development process.

7. XML

Sometimes the greatest solutions are the most simple.  XML represents data in a human-readable and generally-universal plain text format.  Years ago this wasn’t possible with limited storage space and computing power.  But now most modern software uses XML to store and exchange data.  As a result, we are seeing an increase in mashups, where software is combined in new ways to provide more powerful solutions.

6. Faster Processors

When I first started programming professionally, building an average-size development project would take 5-10 minutes.  I’d spend an hour or three coding, then start the build and go grab a Coke.  Now I can make a change, build the project in seconds, and almost instantly see the results and debug any problems.  Not only does this save time by not having to wait around for the project to build, but the rapid-feedback cycle results in faster solutions while debugging.

5. Microsoft Windows

Say what you will about Microsoft, but kudos to M$ for delivering a world-dominant computing platform, offering software entrepreneurs such as myself a market pool 600 million strong and expected to hit a billion by 2010.  When you have that much attention and opportunity focused in one place, you are going to see the incredible advances that continue to fuel Moore’s Law and drive our information society.

4. Code Outlining

Code outlining is using XML tags to organize source code into collapsible sections and hierarchies.  Arguably the most controversial item on this list, this is also where you’ll find the most personal bias.  With my cubital tunnel, every mouse click and key press can be a literal pain.  Code outlining can collapse a 50-page code file into a single screen and save hundreds of clicks and endless scrolling.

3. Code Sharing and Google

In the old days, if I ran into a programming roadblock, I had to rely on the vendor’s limited documentation or hope that one of my programming buddies had encountered a similar problem.  It wasn’t uncommon to search for a solution over weeks and even months.  Now with Googleother search engines and code-sharing sites, millions of “buddies” are accessible in seconds.  If someone somewhere has encountered a similar problem, chances are they’ve shared their solution on the Web, and Google will find it.

2. Managed Code

Write the code and it just works.  That’s what I love about managed programming languages and C# in particular.  Sure, my code may have logic errors that I need to debug.  But I am no longer spending hours needlessly chasing pointer-to-pointer bugs and memory leaks found in C++, for example.  With managed code, the focus is on business processes and logic, not programming language behavior and side-effects.

1. World Wide Web

It’s interesting that the greatest advance in software development isn’t development-specific.  The Web has transformed nearly every aspect of a software development company, greatly simplifying many tasks and making it possible for small companies to thrive in the global marketplace.  For just a few dollars a month, a software entrepreneur can market, sell and support his products and services from anywhere to anywhere the Web will go.  This improves productivity, spurs innovation, and raises the overall global economy.

Article published on May 8, 2007




Tags: , ,

17 Responses to “Top 10 Advances in Software Development”

  1. Top 10 Advances in Software Development - vBulletin Community Forum Says:

    […] and entrepreneurship over the past 20 years. I encourage you to reply with your own Top 10 list. -more- Comments 0 Trackbacks 0 Total Comments […]

  2. Technical Bard Says:

    Some of this is good.

    XML isn’t such a great advancement. XML is basically obfuscated lisp code that doesn’t execute itself…

    Managed code was developed 30 years ago in Lisp and Smalltalk, but the hardware didn’t catch up until the 1990s. Java and C# are only better improvements if you like static typing. Python and Lisp are still more productive options.

  3. John Says:

    How about OOP? without OOP, no complex program could be run smoothly these days! Eveybody should be busy for debugging instead of developing new softwares.

  4. Timm Says:

    I completely agree, OOP is a very important advance in software development. But this list is limited to advancements in the past 20 years, and OOP was invented in the 1960s (many say Simula 67 was the first real example). Thanks for commenting!

    http://en.wikipedia.org/wiki/Object-oriented_programming

  5. Chris Pietschmann Says:

    I don’t think #6, Faster Processors, is really a top advance in software development. It makes it possible to do more complicated things, while simultaneously making it easy for us to afford to write sloppy code.

    Also, #1 the World Wide Web isn’t really an advancement in software development either; however it has played an extremely important role in enabling the advancement of software development over the years.

    I would suggest replacing them with Unit Testing (TDD) and Object Oriented Programming (OOP). Both of those are very significant advancements.

  6. Small Basic: Programming Should be Fun Says:

    […] Top 10 Advances in Software Development […]

  7. Twitted by maxxorsws Says:

    […] This post was Twitted by maxxorsws […]

  8. runescape money Says:

    This post was Twitted by maxxorsws

  9. last chaos gold Says:

    the World Wide Web isn’t really an advancement in software development either; however it has played an extremely important role in enabling the advancement of software development over the years

  10. Desktop Computer Inventor Charles Thacker Wins Turing Award Says:

    […] 10 Software Innovators of All Time Top 10 Advances in Software Development AKPC_IDS += "1087,";Popularity: unranked [?]SHARETHIS.addEntry({ title: "Desktop Computer Inventor […]

  11. Jason S Says:

    The WWW will be a catalyst for more advancement in software development and is technically an advancement in software development itself

  12. Prefabrik Says:

    So informative article. these are all great development in software area. I’m glad to read this post

  13. Christian Says:

    What about version control? I would argue that to be a huge boon for the software development industry.

  14. Gordon Says:

    I still greatly miss the the HP85 structured basic interpreter from thirty years ago.
    I developed on it for four years, and in the fifth year I looked for problems in my software and in the HP85 system. The HP85 had no problems.
    It seems that we have tried to do too many things with the basic computer and operating system. There is too much complexity at that level, and as a result the learning curve is too great and reliability suffers.

  15. Atul Kumar Paswan Says:

    yeah,you have rightly pointed out to the microsoft in developing software technlogy because 80% of people use windows OS and it greatly helps for software developers in concentrating there development on a particular subject without bothering about the intricacies and incompatibility of the system os

  16. Raunu Gebo Says:

    These advances are good, but I strongly beleive in mathematics. Designers and developers of softwares should apply more mathematics during the designing process inorder to suit user’s requirements of different groups of people. Remember, a system must suit a user, if not then the system is not worthy. Mathematical Theorems like graph theory, theories in combinatorics, metric space and cryptography should be greatly involved.

  17. mayuri Says:

    What about oop? and discription about that? What you think about that?

Leave a Reply