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.
Yet, even with these limitations, there were developers who recognized what was possible. They embraced the promise and potential of productivity tools by adapting to and incorporating them into their development strategy. Since that time, productivity tools have continued to evolve and their general adoption and usage has accelerated, resulting from the confluence of a number of factors:
• The simplification of the development environment via the introduction of fourth-generation languages like Java and .NET, making coding easier than in years past. While we haven’t yet reached the point of a million monkeys with keyboards churning out the collected works of Shakespeare, the development process has been fairly well insulated and streamlined
• Broadening of the talent pool through an overall increase in the number of software developers, thanks to the minimization or elimination of traditional barriers to entry
• Substantial evolutionary gains in productivity tools, facilitating faster, more accurate functionality, but with fewer bugs
As their evolution continues, growing numbers of developers have become willing to trust, rely on and reap the benefits that productivity tools offer.
Productivity tools of today
Productivity tools are making the move from being technological curiosities to dependable workhorses capable of generating true benefits and a recognizable ROI. Yet today when you say “productivity tool,” most people immediately think “refactoring.”
It’s true that refactoring tools are currently the predominant and most popular type of tools out there. However, that limited definition paints an incomplete picture by omitting other types of tool sets, such as SCM, build management, enforcement, ORM and UI components, which can often be taken for granted. A broader and more correct characterization of productivity tools is any resource that saves time, effort and money by automating repetitive or mundane tasks, while simultaneously improving efficiency and accuracy for software developers.
The current generation of productivity tools encompasses a diverse array of tools and functionalities that facilitate automation of resource-intensive tasks. By leveraging this automation, developers are liberated from addressing and managing mundane but important actions, and can instead devote their time and energy to creating added value for their organization and customers. Through this increased focus on actual code development and generation of added value, productivity tools foster innovation, and aid software developers in producing code that is cleaner and more consistent (with fewer bugs), faster than ever before.
While productivity tools are beginning to come into their own, they still have limitations, which are keeping the fence-sitters on the fence. One pressing issue is a lack of interoperability. To truly realize the full potential that these tools hold, greater convergence is needed.
Right now, developers looking to capitalize on tool-based productivity gains often resort to writing scripts that cobble everything together, adding an extra layer of work and complexity. The wave of next-generation tools emerging today is finally alleviating this problem, though, by seamlessly melding productivity tools addressing all aspects of software development—from design to deployment—in easy-to-use, out-of-the-box solutions.
A second, less urgent challenge is that of perception; productivity tools suffer from somewhat of a bum rap. Some developers still sniff disdainfully at the idea that they might need productivity tools as if they’re somehow a slight to their skills and abilities, while others maintain that these tool sets harm more than they help. They get in the way and are little more than a bog, dragging down speed and performance.
Resetting these misperceptions won’t be easy for tool developers, but it can be done. Making tools easier to use, improving functionality, and optimizing speed and performance are all good first steps in this process. By clearly and accurately understanding, then addressing, each issue, tool developers will pave the way for the next stage of evolution.
Productivity tools in the future
So, what’s next for productivity tools? There’s no crystal ball to tell us exactly what the next generation of productivity tools will look like. However, there are a few predictions that can be made based on their history and evolutionary path:
• Greater interoperability, better integration: The paradigm shift toward developing tools that play well together has begun, and will eventually result in robust tool sets providing superior, more tightly integrated functionality
• Speed and performance optimizations eliminating the “bog effect” will take hold, producing faster and more powerful tools that have only minimal effect on development environment performance
• Transparency will become the new norm. Rather than being front and center, productivity tools will work behind the scenes, diligently performing key tasks and processes transparently and unobtrusively
• Productivity tools will become easier to configure and use, with streamlined, intuitive controls unhampered by steep learning or integration curves
The famous idiom, “It is neither the strongest nor the most intelligent that survives; it is those most adaptable to change,” has never been truer than it is today. Those willing to evolve and adapt to changing technologies are the likeliest to meet with success. Whether productivity tools will pave the way for the next great wave of software innovation is still unknown. Only time and the limits of our own human ingenuity will tell.
What is certain, however, is that productivity tools’ role as a bridge to greater coding efficiency, accuracy and value will continue.
Stephen Forte is the chief strategy officer of Telerik, which sells .NET components.