|
This issue home | Past issues | MTBC home
Building Great Software – What We’ve Learned in the Last Two Decades
How software is developed has dramatically changed in last two decades. Now, software development has become a lot more predictable science, than the craft it once used to be. An approach to software development, known as Agile, actually embodies two decades of that learning. Most companies which build software will be well served if they follow the Agile approach to software development.
Less like a Craft, a Lot More like Engineering
Two decades ago, most software was largely written from scratch, with very little dependence on third-party, re-usable, building blocks. Developers had all the flexibility, as well as all the responsibility, for writing good code. For individual developers, the process used to be a lot more fun, but also lot more complex. That’s when seasoned managers believed a great software developer is forty times more productive than an average developer!
But now, with the advent of various prefabricated layers of software and available building blocks, such as application servers, databases, etc., developers are relieved of many software housekeeping tasks. A developer’s work environment is now significantly more productive with tools such as interactive development environment, automatic code checkers, etc. All of these available tools free developers from tedious, low-value tasks and their focus can be directed to writing code for the business solutions they want to address.
While earlier there was little upfront focus on developing test cases, software testing is now a mature discipline. Building test cases and rigorously testing software is the only way to ensure software quality. Good software teams routinely follow excellent practices like Test Driven Development. Before writing a single line of code they first write the test case to test their code. What a sound idea – development with an end in mind! This practice ensures that developers actually understand the real intent of the software requirements before cranking out code.
The above examples illustrate how the software development process has matured in the last two decades. As a result, building great software has become much less of a craft and lot more of a real engineering project.
The Remaining Challenges
While software development really has become a more manageable engineering discipline, it is not quite like manufacturing. There is inherent uncertainty involved in writing software. Research and design are innate components of “writing” software, and are in-grained in the process. Often a software developer will employ a trial and error approach to write a piece of software that actually performs as specified. Therefore, writing software is not as predictable as the manufacturing process is, and a different approach to managing software projects is required.
Another chronic issue with software development has been that of the “moving target” of requirements specification. The idea of casting requirements in stone and holding them constant, until the development team delivers, is actually a mirage. In fact, it is largely a flawed expectation. As Edward V. Bernard says, “Walking on water and developing software from a specification are easy, if both are frozen.”
Agile Software Development
Agile is an umbrella term that encompasses different variations – Extreme, Scrum, Spiral, etc., some of which have been around for a while. But, recent thinking has expanded the definition of Agile further. The Agile approach essentially delivers a sound prescription for the ongoing challenges of software development.
The Agile process recognizes and embraces the reality that software requirements cannot be, and in most cases should not be, cast in stone at the outset. Requirements specifications must be allowed to emerge and evolve organically. Once this flexibility is allowed, the end result is a better product which is more whole heartedly adopted by the intended users.
Yet, as previously mentioned, the software development process requires a high degree of engineering discipline. The Agile development process prescribes a healthy balance between HOW you build software (i.e. the engineering discipline) and flexibility of WHAT you build (i.e. the actual feature/function specification, which always appears to be a moving target). Moreover, the Agile process allows and encourages different development teams to strike a balance that is most appropriate for their particular situation. For example, an early-stage start-up company building a new, innovative product needs lighter discipline and much higher flexibility. A mature software product company with an installed-base of thousands of customers may need much higher discipline and limited flexibility. Yet both teams can effectively implement the Agile process of software development.
Finally, the agile process serves software teams which are dispersed – with developers working from home, or in different office locations throughout the country, and around the world. In fact, the Agile process works very well with offshore teams, allowing companies to achieve the holy grail of software development: lower costs, higher quality, and better products!
______________________________________________________________________
Hemant Elhence is the Founder and CEO of Synerzip, a Dallas based software services company. Synerzip serves small/mid-sized companies with dual-shore (US + India) Agile software development and QA/testing services. As a seasoned team of software professionals, Synerzip assists its clients in effectively leveraging the offshore advantage, without the upfront risk, hassle factor, and set-up costs. Contact: hemant@synerzip.com.
Tech Link is a monthly publication of the Metroplex Technology Business Council Communications Department.
To unsubscribe, e-mail . Please provide your name, company, phone number and e-mail address.
© 2004-2006 Metroplex Technology Business Council®
411 Belle Grove Drive
Richardson, Texas 75080-5297
(972) 792-2850
 NeoSpire Managed Hosting |
|
Top Stories
More Top Stories
In Every Issue
MTBC Chairman's Circle Members
Platinum Member
Haynes and Boone, LLP
Gold Members
Nortel
Richland College of the DCCCD
Texas Instruments Inc.
University of Texas at Austin
University of Texas at Dallas
Verizon Business
Silver Members
Alcatel-Lucent
AT&T Inc.
Cisco Systems
Deloitte
Elcan Optical
Entrust
Ericsson
Hewlett-Packard
IBM
InfoVision
Intervoice
Motorola
NEI
Nokia Siemens Network
Oracle
Paetec
Raytheon |