Increasing Software Development Productivity
Writing software, like any creative activity, always takes time, and the time required to finish a given task cannot be predicted with any great accuracy. It is also very labor intensive. There are some simple ways to improve development productivity that have been around for quite some time.
All too often, writing software is equated with cutting code, and there’s certainly some truth to that because glue logic will always be needed somewhere. And code as such offers a very obvious way of measuring results or progress or burn rate, or otherwise an output that can be managed and benchmarked: So many KLOCs (thousand lines of code) per day or week, the more the better, less is a problem. Keeping track of it all justifies a significant amount of overhead.
Concentrating on code is much like missing a forest for the trees. The code is very fine grained, concerned with the minutia of getting from A to B, within which high level objectives can easily be lost sight of.
There’s also an inordinate amount of keyboard activity involved when cutting code, which is pretty odd considering that one of the goals of programming is to reduce human drudgery. Even odder is the avoidance of programming graphically, such as can be done with Delphi’s VCL (Visual Component Library) and the very impressive MapForce from Altova. Mainstream programming, from .NET and out, involves a lot of keyboard activity, with precious little visual about it, in spite of claims to the contrary.
So, to increase software development productivity, the big target is to reduce, if not entirely eliminate, the coding, which can be done extremely well in India and Russia, China and Brazil. Concentrate on the task at hand, assembling ready built software thingies, a la Legos, to accomplish ready defined functionality.
It’s really easy to do, and in fact has been done for quite some time. Reusing or extending proven code in the form of modules or components or Legos, when done in a systematic way, can dramatically reduce development time, and in the process make things much more reliably and predictable.
FutureWare has been doing software development for some time, and after a while we noticed patterns before people started writing books about them. For a while, we made a sold a lot of frameworks, before they became commodities. Not surprisingly, over time we’ve built up a good sized library, as well as some integration tools, which allow us to put things together very quickly. We even developed a program to keep track of these, which later was packaged as a digital asset management product. We even bragged about it for a while, with our $25K challenge similar to Mark Miller’s open challenge on team development. Never lost one, but we did sell a lot of product by demonstrating functionality, on the fly, right before the customers’ eyes.
We got a reinforcement lesson in this reuse from a customer of ours a few years ago. They built data acquisition systems, with high end analog to digital converter cards in 19 inch RETMA cabinets. They had a standard design for these converters, which happened to have four channels. What to do when less than four are needed, like only one? To them the answer was simple. Labor is expensive, silicon and plastic is cheap. Populate the converters completely, and null terminate the unused channels. The seemingly high cost of excess capacity in the converters is always offset by the time to design and engineer, the capital required to modify a manufacturing line, and infrastructure in procurement, testing, G&A, etc., whose non requirement effectively reduces the final deployed system cost.
The bulk of software development costs, and the major source of uncertainty, is the labor required to do coding. Reducing, if not eliminating, that makes for predictability with increased reliability and faster deliveries or transaction response times as the case may be. It’s easy to do, and again has been done for some time, by automating the system integration. Eating our own dog food, as it’s called. In our case, the results are delicious.
A Word From Our Sponser
Never Lose Track Of Digital Assets Again!
Media Asset Tracker A powerful design productivity tool that works for you!
Tags: coding, delphi, design automation, software development, visual component library, visual programming
