I read an article recently on The Inquirer which discusses why software developers should stop writing code from scratch, and start learning to be ‘agile’ and recycle existing code.
“Apparently the keys to unlocking the “agility paradox” are architecture, a focus on software process and engineering, and recycling” – Nick Farrell, The Inquirer
Sure, programmers are definately not going to loose their jobs based on opinions in this article, they will still need to be there to assemble a variety of packages to implement greater functionality in whichever software project they are working on. As a programmer myself (BCompSc, final year), I have noticed that over the years, especially with the introduction of the .NET framework by Microsoft, that work is being done to cut down the workload of a programmer by the amount of ‘fresh code’ they need to come up with to make a program functional.
The idea of reusing or recycling code has been around for quite some time, probably ever since modern programming languages have been around. A programmer could write a new class() which provided ‘x’ functionality, and could keep reusing that class wherever and whenever he needed that same functionality over again, whether it be in the same or different projects.
My main languages I code in are C/C++, JAVA and VB.NET (.NET framework, I should probably learn Visual C# or something too hehe). Whenever I switch between these various languages to program in the .NET environment, you can really notice a big different in the amount of code you need to write to achieve a similar result as you would get if you wrote the same program in C++ for example. Microsoft’s .NET framework includes a vast amount of ‘pre-defined’ code if you will, objects that can be reused to save time.
I noticed this when the .NET framework v2.0 was released, and started using Visual Studio.NET 2005, we programmers had access to a bevy of new and interesting functionality at our fingertips. No new code needed to be written as we could simply recycle objects and code from which had already been writen and provided to us by .NET. One new object which stands out in my head is the Web Browser object which provides web browsing functionality to an application with basically no extra code required.
I also remember a week ago I think, I read an article online somewhere (forgot exactly where) which discussed how programmers spend their time predominantly whilst they are programming. Either writing code, modifying existing code or understanding code written by other developers. The biggest chunk of time amongst many programmers (~60% est.) was when they were sitting there, reading and understanding other’s code, then (~30% est.) modifying existing code and finally on average (~10% est.) of programmers would actually be writing new code.
Don’t take this data I just spewed out at you as accurate, but based on these estimates, you can see that many programmers don’t write new code these days as it is, so have these guys at ‘The Inquirer’ totally lost it in this recent article, saying that programmers “need to stop writing code”?
At Gartner’s Application Development Summit event recently, Matt Hoyle (Gartner Analyst) gave a keynote speech saying, “The future of application development is not about programmer productivity,”…”but in assembling functionality from components.”
I Think this couldn’t be more true, especially with everything I just talked about earlier about reusable objects in the .NET framework for example.
Programmers shouldn’t stop writing code altogether, but the future of Rapid Application Development (RAD) is definately to assemble functionality from existing componments. Who knows, maybe in 20 years time, Software Architect maybe a better term for a programmer. We shall see.