advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement

Review: Agile Development: An Expert Roundtable:

 

Cutting Edge Issues

Barry: What are the cutting edge issues in agile development? Agile development has been around for a little while, but not as long as some of the other methods/approaches. What are authors in the field thinking about today? What would be interesting to a reader who is already familiar with agile development?

Brian: There's a book out now called Balancing Agility and Discipline: A Guide for the Perplexed. People are trying to map the success-oriented goals of agile development within a larger context. In larger organizations, you can have teams that are operating in agile environments but under the umbrella of a deeper process.

Venkat has written a book on pragmatic agile development ( Practices of an Agile Developer, coauthored with Andy Hunt). The book's goal is to get the individual reader to look in the mirror, come up with his or her own goals, and ask how the reader is preparing for those goals. That is an interesting perspective. We don’t often turn things inward. But people are starting to come up with the notions of an agility index which measures how one is operating as a professional, responsible, productive member of a team.

David: There's an effort from Carnegie Mellon called the PSP— “Personal Software Process” which uses that inward-looking concept. I don’t know where PSP ranks as being agile/non-agile, But PSP involves lots of introspection. I've heard some talks about it and I really liked what I heard.

Venkat: hink about programming technology languages and tools. Take object-oriented programming (OOP), for example. OOP came out in 1967 but we didn't adopt it until mid to late 80s. Now, almost 40 years later, we still have people who are trying to adapt to object-oriented programming.

Methodologies have the same kinds of problems. The computer industry changes very frequently but the rate at which the industry adopts a methodology is extremely slow. There are initial adopters. Then at a certain point, the practice of a methodology gets mainstream acceptance. Agile development has been around for a while but it’s not at the point of massive adaptation yet. Some people have not heard about it, or have heard about it, but have not used it at all. I'm seeing some clients who are very new to agile development, and others who know about agile development but don’t know how to use it effectively. So one of today's challenges is to teach the people who don’t know about agile development. Another challenge is to make sure that the people who think they know about agile development know exactly what it is, and to make sure that they use it for the right purpose and to the right effect.

BB: Do people misunderstand agile development? What are the common pitfalls/misconceptions?

Brian: They say: “It's agile, so I don’t have to write documentation.” Hans Wegener has a diagram that maps technology upheaval and domain upheaval to various processes. The idea is that a stable domain with a stable technology base supports a more process-heavy approach, like CMM. So for example, people in the aerospace industry or the defense industry know what they are doing and what their goals are. (That is, the domain is stable.) The programming language and platform is chosen for them, so the technology is also stable. In such situations, a process-heavy approach can help.

If the domain is stable, but the technology comes and goes, then model-driven architecture may be best. You can model the domain and then spit out technology in Java, in C#, in C++, and so on. The technology can change but the domain does not. Agility really fits in when the technology is somewhat stable and the domain is not so stable. Agile development started in the Java world where there isn't too much technology change because you're not crossing language boundaries and platform boundaries. But you're working in a very unstable, Internet-oriented, Web service domain. Customers don’t really know what they want. Customers change their minds all the time. That's where agile development started. But agile development is beginning to move into the fourth quadrant— the quadrant with low domain stability and low technology stability (the quadrant labeled "don't do this" in Wegener's diagram).

Venkat: Brian is correct. But at the diagram's far right extreme, the domain may be very stable but those working with the domain may not understand it. This can be problematic. This pushes things towards the left quite a bit. Agility could creep in and become useful in the bottom-left of the diagram. A domain expert’s point of view is that he or she knows the process but doesn't know how to deal with that in a computerized system. In contrast, developers know how to write the code, but they may not understand the domain. Where these two meet is an area where problems arise.

Brian: That gets back to David’s interest in mapping agility into the more stable domains—the domains that expect a more process-heavy approach.

David: Two things that harm the mindshare of agility. First, some organizations use agility to justify bad practices. They don’t want to do better documentation. They don’t want to gather requirements. They don’t want change the way they do things, so they say “we’re agile,” and they think that agility justifies whatever they are already doing. The second harmful thing is a when a group takes sense activities, starts doing them all the time, and calls it Extreme Programming (XP). The name Extreme Programming scares managers. The XP methodology is based on common sense ideas but the name "Extreme Programming" keeps it from being widely adopted.

BB: So, you're speaking in favor of Extreme Programming, but not in favor of the name "Extreme Programming."

David: Extreme Programming can be a bit dogmatic. You have to do ten things or you’re not doing extreme programming. But the principles behind XP are very common sense principles. I don’t think it should be an either/or approach. I think we need some kind of transition scale from more agile to less agile, depending on the foundation upon which you're building.

Venkat: If you ignore the things you need to know before you get into agility, then agile development degenerates into hacking. But agile development is not about people not knowing things and hacking. Agile development requires very competent developers. If they're working on an object-oriented system, they have to know object-oriented technology very well. They have to understand important design principles, such as the DRY ("Don't repeat yourself") principle from the Pragmatic Programmers, the Open-Closed Principle by Bertrand Meyer, the YAGNI ("You aren't gonna need it") principle of Ron Jeffries, and several other object-oriented design principles. The combination of all these principles gives us a guiding framework that allows us to focus on agility.

BB: Is there something in particular that, when people are actually doing agile development, they tend to get wrong?

Venkat: People say "We do unit testing,” but their unit testing is not effective. They're not doing it the right way. People say “We use continuous integration,” but the way they use unit test integration is not effective. They complain that there are too many error messages and they start turning off the messages, or they don’t check code as frequently as they should. “Yes, we do iterative and incremental development, but each cycle is two years long.” People think the solution is to use a certain practice or tool. But they need to go back and ask "Do we use this effectively?” The most important thing is to have a mentor in the team when you start developing with any technology or any practice. In this regard, agile development is no different. If you throw your team into something they learned over a weekend or from a book, the team will not be effective. One way to succeed is to have a mentor, an architect, or a lead developer who can work with the team and help the team learn over six months to a year.

Brian: It reminds me of Zen Buddhism. When people are meditating, they fall asleep. So there's a guy who walks around with a kindly rod to whack people on the back of the head or legs to keep people focused the goal. In Zen the goal is enlightenment. In the process world, the goal is to create software that the customer wants and to produce it on time. It's good to have someone with a kindly rod to go around and smack people, politely and gently, to keep them focused on the goal.

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

 Microsoft RIA Development Center
 IBM Rational Resource Center
 Destination .NET
XML error: not well-formed (invalid token) at line 33
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

JUNOS: Open, but Not Open Source
Sun Gives Enterprises a New Mobility Option
iPhone Knocking on the Enterprise
Linux 2.6.26 Opens Up to Debugging
Borland Launches ALM Management Tools
Nominations Open for CEO Vision Awards
A Look at Google's Open Source Protocol Buffer
MySpace Catches iPhone Fever
Software Drives the iPhone 3G
Novell's Linux Build Service Goes Open

Introduction to Scrum
Semantic Search Arrives at the Web
Using the New ListView Control in ASP.NET 3.5
SMS Messaging Using the .NET Compact Framework
Security Enhancements Abound in Windows Server 2008
Design and Use of Moveable and Resizable Graphics, Part 2
Control Your Linux Server Remotely with GnuPG, procmail, and PHP
The Baker's Dozen: 13 Tips for Building Database Web Applications Using ASP.NET 3.5, LINQ, and SQL Server 2005 Reporting Services
Probe and Modify Your Types' Alignment Programmatically
.NET Building Blocks: Custom User Controls in Practice

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About



JupiterOnlineMedia

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers