software development through the years

 

 Back in the 80s, for those who remember those mythical years, software was an engineering pursuit. In fact some of the titles still reflect that in certain industries, software engineer. The way software development worked back then was management would come to the software team and say we need for you to develop a schedule for the project. The team would sweat and slave away to come up with a schedule. Management would grown and moan and eventually sign up for whatever schedule you came up with. On big projects the schedules would go on for two or more years. Imagine how crazy that sounds.

 So needless to say management hated that process. It basically left management begging software developers to get stuff done, and stuff took forever. This was unacceptable.

In the 90s some software developers started looking for ways to speed things up. And management was also looking to get involved more and to drive quicker results. The big breakthrough came with object-oriented programming using c++. This radically changed everyone's perceptions of how long it was going to take. But initially it didn't really radically change how long it took. Now there's lots of people that will argue about what I'm about to say but c++ is very complex. It uses pointers and references. So you can still do pointer arithmetic if you want to which can sometimes be complicated. It also uses multiple inheritance instead of single inheritance. So there would be huge arguments about is it okay to use multiple inheritance even though you can't hardly tell what method you're calling. And sometimes it isn't even clear by looking through the compiled code what it's doing in the debugger. On top of this people really didn't understand object-oriented programming very well at that point. It seemed surreal. It really did. Your brain would actually think wow I'm in outer space somewhere or something. You could sense spiritual forces at work that you'd never encountered before in software. This was going to radically improve software and make writing software easy. One thing it did was make writing software more predictable and reliable when it was finished. This alone was a massive gain. As management sat in on more meetings and became more confident about meeting schedules they started coming up with weasel word ways of shortening the schedule. They would say we already did this on the last project just reuse that code. Sometimes this was a brilliant idea but sometimes we really hadn't done anything remotely like what we were about to do. You could reuse some of the code but largely you had new mountains to conquer that were way more complex. After all said management it's object-oriented what's the big deal. So management started shortening schedules and projects became ever more complex. And then it happened.

Somewhere in there the internet was born. By the late 90s Everyone had dollar signs in their eyes. Everyone was going to be rich by tomorrow. Every startup was going to be Yahoo. and every business was going to be like that book selling business Amazon. Looking back on it it's hard to believe that Amazon started off just selling books. And they only had a business on the internet, no stores. So the stress and software didn't really reduce, but management more and more became to expect projects faster and faster. Another massive thing for getting better productivity out of software developers was unit testing and automated integration testing. This allowed fairly complex programs to be tested repeatedly by the computer. So you could make a whole bunch of changes and run all the tests and see what you broke instantly. This gave you much greater confidence that your changes were not impacting anything already done. And if you wrote Good unit tests it gave you a good confidence that your new code would work. So the industry actually was changing. But what else was changing was Management's attitude. No longer did they say when can we get this done, instead they would say, "we need this by Friday" or "we need this by tomorrow at noon. Just use those libraries we already have." Libraries are groups of code that do a specific function. If you build up these libraries properly then you don't ever have to write them again. You might add some new features to them but you've got all those tests to protect you.

In 1995 another incredible thing happened, Java. This was Earth shaking. It was simpler than c++ and it had single inheritance. It did not allow for the complexity of pointers, you only use references. This was massive as far as productivity and successful completion of projects was concerned. There were other benefits to it also. In fact it was so successful that as usual Microsoft made a copy of it and called it c#. Of course Microsoft would say I'm a liar, because I read a book where they claimed that they came up with it from a blank piece of paper. This is ridiculous it's very similar to Java and uses the same technology as Java and basically it's a copy of java with Microsoft stamped on it. Now they have diverged in small ways but if you can write c sharp you can write Java. But if you can write either one of those it doesn't mean you can write c++. C++ still exists, but other easier object-oriented languages have taken over.

Somewhere in the 2000s managers basically started saying here's the schedule make sure you get this done. You could push back and say whoa where's this piece. Or hey don't forget we're all going to be gone a week at Christmas. But quite often they would just say we'll make it up somehow we're going with the schedule. Projects continue to slip but not nearly as long. And managers have gotten better at streamlining features that were nice to have so that things can get done quicker. Software developers are still the engine that makes computers work, but they no longer call all the shots. More and more they're viewed like high-paid brick layers. You've got a computer and you've got to login so why isn't this done?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments

Popular Posts