Shortly after the publication of English naturalist Charles Darwin’s “On the Origin of Species”, theories and speculation arose that there must be a “missing link”—an undiscovered connector between man and beast. The idea of an evolutionary chain woven together by interlocking advancements is not restricted just to natural sciences; it is a concept that can be accurately applied across any number of settings, including technology.
Unlike natural science’s continuing struggle with this evolutionary missing link, the world of software development has not only discovered, but is beginning to understand, adapt to, and leverage its own missing link: productivity tools and applications. While we have not yet seen the ubiquitous adoption of these tools, there is far less fence-sitting than in the past. Instead of seeing them as just a crutch for the inept or a set of training wheels for the insecure, developers are realizing that when leveraged properly, productivity tools can act as a bridge to greater coding efficiency, accuracy and innovation.
The Stone Age
Evolution is an incremental process of refinement and advancement, a winding path leading from the past to the future. Along the way, evolutionary progression is disrupted by generational and technological leaps embraced initially by a few brave souls, followed by universal adoption. This pattern can be seen clearly in the productivity tools arena.
Only a decade ago, productivity tools were almost considered novelties: interesting, fun to tinker with, but complex and sluggish, with limited functionality and few actual benefits. More often than not, configuring these Neolithic tools was more time-consuming and resource-intensive than completing tasks by hand.
Conventional functionality, such as continuous integration and coding standards enforcement (typically found in the current generation of productivity tools) was simply non-existent. These early applications were rudimentary at best, often requiring extra effort and resources be allocated to fill in the gaps.
For example, nearly a decade ago, I managed a development shop of some thirty-odd developers. During my tenure as CTO, fully half of my time was spent overseeing enforcement and administrative tasks: code reviews and inspections, particularly to verify proper code commenting and compliance with company code standards. I used to have to beg (and sometimes threaten!) developers just to check in their code.
As new developers were added to our team, great amounts of time and man-hours were invested to ensure their understanding and observance of our coding strictures. Further, additional full-time personnel were required to manage key administrative chores, such as build management, and build coordination and integration with the company’s bug tracker.
Current productivity tool sets automate away many such tasks; had today’s tools and functionalities been available to my team and I, we would have been able to eliminate these costly yet necessary time-sinks.