TrainingConferencesAbout UsContact UsAdvertiseSQE.comRSS Feed

StickyMinds.com: brain food for building better software

Log In
 Clarify Your Search Criteria

Tips on Using Our Search Feature(s)
 
StickyMinds.com Home
ResourcesTopicsCommunityPowerPassBlogs
Home  >  Detail: License to Hack


A StickyMinds.com Original
Article Picture
License to Hack

By Karl E. Wiegers

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: Is your organization doing Extreme Programming or one of the other agile methods? Are they considering it? Before you jump on the latest methodology bandwagon, you should make sure you’re not just giving your developers a license to hack. Karl Wiegers provides some insight into how agile development models can be misused and how you can ensure that your process improvement effort has the best chance to be effective.


Rally Software
It was bound to happen. It had been a few years since someone offered the software industry a new productivity-enhancing miracle methodology. Managers and developers everywhere were primed for a new approach that avoided all those time-wasting requirements, design, and planning activities. So Extreme Programming and the other agile methodologies were welcomed with open arms. 
 
But then the same old things started to happen. Developers chose to perform their favorite bits of Extreme Programming, ignoring the fact that XP defines an integrated set of practices. Apparently relieved of the burden of writing any documentation, programmers began typing furiously, perhaps with a second programmer sitting alongside so they could claim to be doing pair programming. “We don’t know who our users will be, so we’ll just bang out something quickly and see how it goes over,” they said, neglecting XP’s emphasis on full-time, on-site customer engagement. “No need to contemplate design,” they said. “We’ll refactor our code later.” Developers thought they had been given a fresh, new license to hack. After all, it’s called “Extreme Programming,” not “Extreme Software Development.” 
 
I’ve seen this phenomenon before. “I’m following the spiral model,” a developer would claim. “I don’t need to write requirements because I’m just prototyping until the customer likes it.” While iterative prototyping is a basic element of the spiral development model, the protesting developer didn’t appreciate that risk management—which he wasn’t doing—is also a central tenet. “We’re doing RAD,” (whatever that meant), insisted another team. “We don’t have time to create a plan because we have to write this code rapidly.” Evolutionary prototyping and evolutionary delivery are other legitimate development methods that the ill-informed or undisciplined developer uses as a license to hack. 
 
All of these approaches to software development have structure, discipline, and a set of carefully selected practices that are thought to provide advantages on certain types of projects. They were devised by thoughtful people who wanted to help projects deliver useful and reliable products to customers quickly. Uninformed developers rashly adopt these new methods, assuming that the antonym of “waterfall” is “code-and-fix.” It’s not. Code-and-fix is indisputably the least efficient way to build quality software. However, it’s fun, at least until the “and-fix” part gets old. 
 
Programmers want a license to hack because most people find coding to be the most enjoyable part of software development. I haven’t written a program in a few years, and I miss the excitement of creating software that does something interesting, amusing, or useful for myself or for others. So some developers embrace any methodology they think promises freedom from the tedium of understanding requirements, designing robust solutions, and planning the myriad activities that make up any nontrivial project. However, all of the methodologies mentioned above do include the nonprogramming steps, in various forms and depths. 
 
Many software developers are inadequately trained in areas such as requirements engineering, configuration management, quality engineering, and project management. As a result, they don’t appreciate the need for these activities. They’re uncomfortable when asked to perform them, and they welcome any opportunity to bypass them. But these practices serve as important structures that lead to project success, not barriers that interfere with the “real” work of cutting code. 
 
All development teams want to deliver their applications faster. Rapid development should begin with a retrospective analysis to understand the factors that prevent your team from being as productive as they’d like. The resulting insight might well suggest a change in the development lifecycle you’re following and the practices you perform. This is the essence of process improvement. In contrast, jumping on the current methodology bandwagon without knowing whether it will address shortcomings in your current development approach is a fruitless quest for the nonexistent silver bullet. 
 
If you do adopt a different lifecycle or development methodology, make sure your team members understand how the components fit together, the rationale behind each element, and the types of projects for which the methodology is appropriate. For example, incremental delivery approaches are often ill-suited for embedded systems but work well for rapidly changing Internet projects. Do you want to fly in an airplane whose avionics were written by an Extreme Programming team or by a CMM Level 5 shop? I’ll take Level 5 every time. 
 
Set clear expectations that your projects will follow a structured, yet flexible, approach that will enable timely delivery of high quality, customer-driven functionality. Your product doesn’t disappear after its release date and developers often change jobs, so write enough documentation to let future maintainers efficiently adapt the system to meet new business needs.  
 
There’s a broad spectrum of discipline between the dogmatic rigidity that some fear from software process improvement and the high entropy of code-and-fix programming. Give your team the best available processes and methods to engineer excellent software, but don’t give them a license to hack.


About the Author
Karl Wiegers is Principal Consultant with Process Impact in Portland, Oregon. Karl is the author of Software Requirements, Creating a Software Engineering Culture, and the forthcoming Peer Reviews in Software: A Practical Guide (Addison-Wesley, 2002). You can reach Karl at http://www.processimpact.com.

Back to Top
 

StickyMinds.com Weekly Column From 9/24/01 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Cameron Fetty 9/5/2007

Right on the money. Documentation is still a key piece for teams > 2.

 
 
Comment:    
by Bobby Joe Reff 9/28/2001

Although I agree with Mr. Bach on "fear of incompetence" as this can be one of the biggest problems with any development methodology, there is another consequence to this. Competent people can follow methodology. Competent people may even be able to overcome methodology flaws. Eventually, however, the competency of the people involved in an methodology begins to drop. Without a clear understanding of the purpose of the methodology and all of its components, the less competent (or more inexperienced)programmers, developers, methodologists, testers, etc. begin to use the "new" methodology as a license to hack, "be flexible", or shortcut the...Read On

 
 
Comment:    
by James Bach 9/27/2001

Karl, I don't think you can have it both ways. You can't be worried that agile processes will be followed improperly, unless you also worry that non-agile processes will be abused. Given a choice between using a product developed by a CMM shop and an XP shop, I would go for whomever is careful, qualified, and invests themselves in their work. Why don't we just agree that any process can and will be abused by somebody, somewhere? If we accept that, and we want to protect ourselves and our friends from that abuse, let's caution against "following" any process. Don't be a follower, at all. Instead advocate that we gain the skills, each of us,...Read On

 
 
Comment:    
by Istvan Fay 9/26/2001

In the last 20 years I have seen several new software development methods and languages. Their story was following the same pattern: there were some good ideas in it, then some evangelist came and began to pray it for 2-3 years as the silver bullet that solves all our problems instantly, and then came the new method or language. And hopefully the silent majority could grab out meanwhile those good original ideas, concepts from the whole construction that have initiated the new method. It seems for me that XP is yet another new method. I agree with Karl that XP can be misused to cover indiscplined software practice. This has nothing to do...Read On

 
 
Comment:    
by Gábor Ponyi 9/25/2001

i think that Karl's article is little out of context. here's why. Kent Beck clearly states throughout eXtreme Programming eXplained that XP is not applicable to all kinds of projects and -- just as importantly, if not more -- all kinds of people. License to Hack implies that XP was intended to be the new silver bullet to solve all the problems of sw development. it never was. the hype surrounding it may make it to be the ultimate weapon, so the words of caution are certainly justifiable, but it should not be presented as a boogey man. (there might be a mixed metaphor in the previous sentence.) i would like to keep XP as an option depending...Read On

Author's Response:
9/26/2001    
Thanks to all of you for your comments. My article was not intended to "hammer" XP or any other development methodology. In fact, it points out a number of the strengths of XP, as well as some limitations. The point is not that XP or any other methodology -- heavy or light, linear or iterative -- is a license to hack; they aren't. However, I have indeed seen (and I'll bet most of you have also) people who *interpret* new methodologies to justify their preference for code-and-fix programming (=hacking). Developers should absolutely consider all of the available methodologies when choosing the most appropriate one for their next project, because they all have a place. I'm merely cautioning against rushing to adopt a new solution without (a) ensuring that you understand the methodology, (b) ensuring that you know its scope and limitations, and (c) are prepared to apply it as intended, rather than simply picking the parts you like and misinterpreting the methodology as an excuse for not applying discipline to software development.

 
 
Comment:    
by Jill Scott 9/25/2001

I didn't at all interpret Mr Wiegers as slamming XP, but rather cautioning against using the XP label to mask undisciplined development practices. I think it's a wise warning. Agile and haphazard are not synonyms.

 
 
Comment:    
by Geert Pinxten 9/25/2001

Although the message is brought 'extreme' (I am a tester but I formly believe that professional developers do all their best to write qualitative good code)I fully support that one should not blindly jump into a new approach with the eyes closed. When a new approach comes by we investigate which new aspects can be of added value to us. We sucessfully implemented for instance some aspects of the XP planning game to improve our test team activities.

 
 
Comment:    
by Russell Thornley 9/25/2001

I am surprised to see comments suggesting that Karl is herein "hammering" XP or other "agile" methods. I think the central point of the article is indisputable - that uninformed and untrained teams misuse or abuse methodologies - regardless of whether or not they are agile or "heavyweight". Why do they tend to do this? Perhaps because they are so conscientious as to eagerly embrace ideas that promise to improve their ability to deliver quality solutions in a timely manner. Moreover, the implication seems to be equally indisputable - that organizations must seriously embrace an appropriate methodology for their needs; not jump from one...Read On

 
 
Comment:    
by cathy gault 9/25/2001

The point of this article is the danger of jumping on the XP (RAD, or Spiral) bandwagon without fully understanding and adopting the disciplines involved. From what I've read, eXtreme programming involves a great deal of discipline and constant involvement with the users. XP seems to involve 12 or so "practices" ( the planning game, rigorous and fully automated unit testing, pair programming, refactoring, coding standards, YNGNI, Do the simplest thing that could possibly work, functional testing, continuous integration, system metaphor, frequent releases, collective code ownership.). I would love to participate on an XP project, provided...Read On

 
 
Comment:    
by Sidney Snook 9/25/2001

I have recently changed jobs after 34 years in ridgid software development environments where the bottom line was reliability and safty. This included 24 years of Department of Defense computer system development followed by 10 years of FDA regulated medical device computer system development and QA. I am now a test engineer in an "extreme programming" web software development environment. The change has been refreshing to focus on cost-effectiveness and doing only whatis needed...however... I have rapidly re-learned some old lessons. There is no silver bullet mehodology. Developers will hack, requirements will creep or be...Read On

 
 
Comment:    
by Gerold Keefer 9/25/2001

it was about time for such an article. XP has certainly some good ideas, test first for example. however, i see no real justification of the hype that comes with it. XP is not a software development process. a software development process consists of more than a dozend or so practices. the CMMI model consists of aound 180. i often hear "if it is missing, you can add this to XP", but does this allign with the "lightweight"-promise? i want to have a look at thosee "lightweight/agile" processes that takes you to level 5. regards, gerold

 
 
Comment:    
by Ed Weller 9/24/2001

Karl has correctly identified another round of the "here's a new method, let's adopt what we want and all our problems will go away". As he said, XP has many estaplished practices and picking one and saying you are doingt it is "eXtreme" (pardon the pun). I suspect many of the adherents/detractors of XP, CMM, ISO (pick one) have not read the defining works for those models or methods. Note his comment on embedded SW and Level 5 talked to flight control software. Beck makes this distinction in "eXtremet programming eXplained" as well - XP is suited to some development, but not all development.

 
 
Comment:    
by Tim Leedy 9/24/2001

I have to agree with Brian Lanham's above comment about being "a little off-base". I strongly disagree with the notion that Programmer's want to have a "license to hack". Most Programmers want to create robust software efficiently and quickly. It is this desire that has spawned rapid development methodologies. But, a methodology can only improve software development if the individuals using the methodology are properly educated and the processes are enforced. The fact that QA doesn't receive adequate requirements is likely due to the lack of internal enforcement of the methodology within the development team.

 
 
Comment:    
by Brian Lanham 9/24/2001

I think you might be a little off-base here. Just because I use an agile or lightweight processes doesn't mean my software is poor quality. Comparing CMM Level V and XP is a little like apples and oranges. Yes, they're both fruit. However, CMM evaluates the processes you use. I could just as easily get to CMM Level V with an agile process as with a heavyweight process. Also, you seem to be switching between hammering programmers and hammering XP. Pick a side. I can write poor code in RUP just as easily as in XP. I do agree that writing code is only a portion of the development effort and most organizations seem to be incapable...Read On

 
 
Comment:    
by Chris DeNardis 9/24/2001

Yes! Yes! Without some sort of standards, or expectations, a test project can spin out of control as well, only increasing the amount of regression (boredum) testing that happens. We should learn to walk before we run!

 
Back to Top



 
Ads By Google
What's This?
 
 



Home   |   Resources   |   Topics   |   Community   |   PowerPass



© 2010 StickyMinds.com. All rights reserved.
StickyMinds.com is a division of Software Quality Engineering.
Privacy Policy    Terms & Conditions    Link to StickyMinds.com    Feedback


Infosys

Rally Software




Agile Development Practices 

STARWEST