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 Google, other 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
If you like this article, please share it: |
Tags: Business, Development, Software
July 6th, 2007 at 3:23 am
[…] 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 […]
January 11th, 2008 at 7:42 pm
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.
January 15th, 2008 at 9:44 pm
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.
January 15th, 2008 at 10:40 pm
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
January 21st, 2008 at 3:42 pm
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.
November 10th, 2008 at 4:29 pm
[…] Top 10 Advances in Software Development […]
June 30th, 2009 at 7:57 am
[…] This post was Twitted by maxxorsws […]
August 4th, 2009 at 10:22 pm
This post was Twitted by maxxorsws
January 28th, 2010 at 4:08 am
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
March 19th, 2010 at 11:09 am
[…] 10 Software Innovators of All Time Top 10 Advances in Software Development AKPC_IDS += "1087,";Popularity: unranked [?]SHARETHIS.addEntry({ title: "Desktop Computer Inventor […]
July 7th, 2010 at 6:34 pm
The WWW will be a catalyst for more advancement in software development and is technically an advancement in software development itself
December 15th, 2010 at 11:31 am
So informative article. these are all great development in software area. I’m glad to read this post
January 6th, 2011 at 3:42 pm
What about version control? I would argue that to be a huge boon for the software development industry.
February 3rd, 2011 at 12:45 am
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.
June 24th, 2011 at 10:12 am
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
June 25th, 2013 at 8:58 pm
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.
February 17th, 2014 at 4:53 am
What about oop? and discription about that? What you think about that?