Home arrow Articles arrow Previous Editions
Make it Fun, Make it Agile PDF Print E-mail
Written by Kirk Knoernschild   
Tuesday, 11 September 2007

agiledeveloper-tall

Enterprise software development isn't fun anymore. As young geeks, we pursued a career in software development because we enjoyed technology, especially the part where we used a programming language to create software programs. You remember, right? Each day at work was filled with something new, exciting, and often-times profound. But for senior technologists with their sustainable passion for technology, software development today is less about writing code and more about performing other mundane activities that we not only dislike, but know are counter-productive to our end goal. But agile development, with its proven emphasis on individuals and working software, has the ability to make software development fun again. If we're able to bring agile to the enterprise, we just might make software development the way it ought to be - enjoyable, productive, and valuable. 

 

No More Fun
Oh, what have we done to our profession? We have branded software process in the attempt to make software development the repeatable, predictable, and plan-driven engineering discipline that it cannot be. Most organizations claim people as their most valuable asset, but few actually treat people as if they are valued. Instead, we impose standard processes that regard people as pluggable parts. We recognize the increasing complexity of business processes and technology, yet we fail to acknowledge that such a tumultuous environment demands adaptability. Experienced technologists interested in career growth are often forced through the ranks of management and organizational hierarchy to achieve corporate clout and increased financial stability. We negotiate contracts that we know cannot be fulfilled, create documents and diagrams that gather dust in the dark corners of a network drive, and walk the corporate hallways ashamed of our failures.

For many, this

Advertisement
dramatized depiction of enterprise software development is not far from the truth. As a result, our industry is suffering as the best and brightest developers are steering clear of the enterprise. Some are leaving the profession to pursue other careers, while others accept positions at small start-ups and "Web 2.0" companies in attempts to avoid corporate drudgery.

The problem is only exacerbated when studying our youth's disinterest in pursuing a degree in information technology. A recent report in the March 2007 issue of Computer Research News[1] shows a 70% decline between 2000 and 2005 in the number of incoming undergraduates majoring in computer science. While computer science remains one of the more lucrative career paths[2], not even the pleasure of riches save it from being labeled as one of the most boring career options[3]. Of course, to claim agile development of itself will buck the trend would be unprofessional and misleading. But living the values of agile development will help.

A Tale of Two Processes
Software development is a tale of two processes. For example, many organizations looking to increase agility find that adopting Scrum as a project management discipline combined with Extreme Programming as a development philosophy works very well. Yet other organizations attempt to drive development of standards, processes, and guidelines through enterprise software process improvement groups. The promise of a repeatable and mature software development process is very alluring. Establishing techniques to more effectively manage change, measure return on investment, and standardize artifacts provides value primarily to project management, stakeholders, and those funding the project. However, they do little to help improve code quality, architectural resiliency, and technological innovation. Software developers in the trenches require activities, artifacts, and practices that are specifically focused toward improving software quality, delivery, and the rapid feedback necessary to prove and disprove their work. This is a process that lives beneath corporate methodologies, and once discovered, adopted, and adapted, a powerful quality emerges that naturally aligns the development team with strategic business objectives.

The most successful enterprise software developers recognize early that their highest priority is developing software that provides value to the business. To provide value, the software system must not only satisfy the needs of the customer, it must also be resilient, stable, and perform well. Realizing this goal requires that developers constantly prove the software throughout the entire development lifecycle, with quality tests and frequent feedback. The tests must come in many forms, including unit tests, integration tests, acceptance tests, load tests, performance tests, failover testing, and more. Feedback from customers and stakeholders will help ensure the software system is functionally correct while feedback from peers and automated analysis tools will help improve design and code quality. The elegance of these two ideals is simple for all they require is a working software system.


The practices employed by enterprise software developers in the trenches that directly contribute to development of quality software cannot be driven by project management or enterprise software process improvement teams. The process used by the development team must be driven by developers in the trenches. It is they who understand the effort that goes into creating high quality software. It is they who recognize the value of frequent feedback. Certainly, there may be practices and artifacts created by the development team that exist to provide feedback to project management, but the inverse is also true. Project management practices must be employed that provide the development team with the feedback they need. For instance, project management must recognize the value of frequent customer demonstrations and must work closely with project stakeholders to ensure they are scheduled.

Making it Fun
Putting the fun back into software development requires trust and commitment. Software developers must accept professional responsibility for their work. They should create high quality unit tests, and continually work to improve test quality. They should seek client feedback and accept their constructive criticisms. They should stay abreast of recent technology and trends, and identify innovative ways that technology can be used that align with strategic objectives. Organizations must entrust their employees with the responsibility and authority to establish the processes that will produce the highest quality software possible. They must recognize that the technology landscape is constantly changing, and that experimentation with new technologies is a requirement for all enterprise developers. Organizations with corporate governance and compliance programs must recognize the experience and expertise of their senior enterprise developers, and encourage their feedback and involvement. The enterprise developer in the trenches must seek involvement in these corporate programs.

Agile development cannot be sold, it cannot be branded, and it cannot be productized. While you can seek help in determining which practices will help increase software quality, speed delivery, and reduce development cost, you cannot brand trust and empowerment. The practices that your team will find most effective and beneficial are a product of your people and their skills, not of a product you purchase. As software developers, we must stand for those practices we know will help us create the highest quality software possible. It is our professional responsibility, and once we accept the responsibility to improve our profession one small practice at a time, we will put the fun back into software development.

Conclusion

Software development is a complex activity. Ironically, process improvement efforts that strive to improve predictability and quality have had the opposite effect, turning software development into a mundane activity that stifles innovation. Frustrated by bureaucratic processes, little room for growth professionally, and lack of authority to control their own destiny, experienced developers are choosing to leave the enterprise, while younger candidates are choosing to avoid programming as a profession altogether. In addition to a proven approach, agile development practices stand to put the fun back into software development.


About the author
Kirk Knoernschild is Senior Technology Strategist at TeamSoft, where he leads based on his firm belief in the pragmatic use of technology. In addition to his work on large development projects, Kirk shares his experiences through courseware development, teaching, writing, and speaking at seminars and conferences. Kirk has provided training to thousands of software professionals, teaching courses on UML, Java J2EE technology, object-oriented development, component based development, software architecture, and software process.


[1] Vegso, Jay. "Continued Drop in CS Bachelor's Degree Production and Enrollments as the Number of New Majors Stabilizes." Computer Research News, Vol. 19/No. 2. March, 2007. http://www.cra.org/CRN/articles/march07/vegso.html

[2] Jefferson, Deshundra. "Most lucrative college degrees." CNNMoney.com, February 8, 2006. http://money.cnn.com/2004/07/26/pf/college/pay/index.htm

[3] Ilett, Dan. "It one of the ‘most boring jobs'." Silicon.com,  July 27, 2006. http://management.silicon.com/itpro/0,39024675,39160936,00.htm

Comments (0)add feed
Write comment


Write the displayed characters


busy
Tags:
Click to add your tags...,
 
< Prev   Next >

Video News

Agile Poll

Select all that Apply
How are you building an Agile organization?
 
 
 
 
 
 
 
ThoughtWorks Mingle 2.0
 

Coming Up - Editorial Calendar

  • August 13 - Quality Agile Development
  • September 10 - Agile News
  • October 08 - Valuable Agile Practices
  • November 12 - Introducing Agile to the Organization
  • December 10 - The State of the Agile Community
See the full 2008 Editorial Calendar >
Copyright © 2006 CMC Media, Inc. All rights reserved. All marks are trademarks of CMC Media Reproduction in whole or in part in any form or medium without the express written permission of CMC Media, Inc. is prohibited  
 
 CM Yellow Pages | ALM Expo | CM Today | Configuration Management Journal | CM Crossroads