Main image of article Agile or Waterfall: Which Will Boost Your Career?
shutterstock_411334609 Many programmers are pursuing the dream of leveraging their basic programing skills into something larger. They want to develop applications for the enterprise, which offers much potential for advancement. But that dream could prove impossible for those not willing to adapt to the nuances of modern application development. Some coders simply focus on creating what they perceive as the best code possible, at the expense of actually delivering something useful to their target demographic. But there is a lot more to success in the application-developer market than just creating good code.

Beware the Waterfall

In the early days of programming, creating functional code was the primary goal, with the process dictated by waterfall methodology of delivering applications only once the coding, engineering, and development of an application was complete. Waterfall reigned supreme in the days of the mainframe, where everything was spec-ed out in advance and detailed project plans were put in place, overseen by layers of management. Waterfall proved to be a reliable, if not flexible approach to building applications. However, the methodology has a potentially fatal flaw: customer feedback only happens after project delivery. In other words, errors in logic or misunderstood requirements are only revealed at the end of the project, meaning that the customer potentially walks away unsatisfied. It takes a significant effort to correct problems—if they can be fixed. Such tragedies, which can impact every member of the development team, could have been avoided by making some simple course corrections early on in the development process.

Embracing the Agile Approach

The failures of the waterfall approach led to programming teams coming up with a different methodology to build an application. Based upon the Agile Manifesto, this methodology dictates a development process based upon iterations of software, which are validated during each step of the process. In other words, adaptability and flexibility are built into the development process, allowing coders to build upon smaller successes to deliver exactly what the customer wants. While vast tomes have been written touting the advantages offered by an agile development cycle, very little space has been dedicated to what agile may mean for the team members and their associated career paths. Simply put, an agile approach brings both vertical and horizontal mobility to programmers participating in the process, a simple fact underscored by the value placed upon customer satisfaction. In other words, team members collaborate with other team members, as well as customers, and are able to build project management and communication skills, which may be more valuable than one’s ability to simply write code. Nowhere is this truer than with the agile approach based upon SCRUM ideology. Scrum is part of the agile movement, and focuses on team members using short work cycles to develop code that can be inspected and then adapted before introducing the next iteration. In other words, scrum offers continuous improvement, coupled with stakeholder feedback. A scrum project often involves a Product Owner, a Scrum Master and a self-managing development team.

With Agile Comes Success

Dave McCormick, VP Product Management at Alpha Software Corp. suggested that the scrum approach “helps programing teams hit their estimated ship dates with more certainty. It all comes down to the accuracy of working with a bunch of smaller unknowns rather than a few big ones.” For team members, that means success is much more likely and also measurable. Agile is something that Alpha Software embraces. The company’s primary product is a RAD (Rapid Application Development) system for building mobile applications quickly. “Agile is used both in-house and by the majority of our customers,” McCormick added. McCormick is intimately familiar with agile, having participated in projects that used it. He’s also recommended the system to his enterprise customers. McCormick isn’t the only one touting the advantages of agile. Raj Mehta, President and CEO of Infosys International, is another believer in the agile method: “Infosys has developed custom applications for several different government agencies and agile has become the primary path for success.”

It All Comes Down to Teamwork

Agile embraces the ideology of open collaboration as well as teamwork. That means team members must be excellent communicators to be successful. “Learning to effectively communicate and share knowledge is one of the most import steps for career advancement,” Mehta said. “Agile promotes those ideologies and forces team members to adopt valuable skills that lead to success.” McCormick also points out the value of the collaboration: “Feedback proves useful for customers/stakeholders who see progress on an incremental basis and feel vested in the project.” Because these people ultimately determine whether a project is successful, they must be involved as collaborators from the beginning. Scrum’s emphasis on team members, McCormick added, means everyone in the team can potentially learn new skill-sets just by participating in the process, “which ultimately can give them vertical momentum to take on more substantial roles.” They could potentially move up to the role of Scrum Master or Product Owner on future projects. “Assembling an agile team is one of the most important aspects of a development project,” Mehta said, “and individual team members must be acutely aware of their roles and responsibilities. As a matter of fact, I will only use Product Owners and Scrum Managers that have previously been members of a successful Scrum Development Team.” While the debate may rage about whether or not agile- or waterfall-based ideologies are the best way to deliver applications, it is relatively clear that agile offers a better way for programmers to shine in a highly competitive job market by building on small successes. And that, in turn, can potentially give them the opportunity to build and manage a substantial project, such as the development of an enterprise application.