A just-published survey from Forrester Group about the habits of developers, including many readers of Dr. Dobb's, reveals new insights into the software development process as it continues to evolve at the fast pace we've seen for the last two decades. During the next few weeks, we'll share the results with you and look at what they portend. Perhaps the most striking result in the survey is the response to the question "Which methodology most closely reflects your development process?"
- Stop Malware, Stop Breaches? How to Add Values Through Malware Analysis
- Infographic: Challenges in Managing a Hybrid Cloud
- SaaS and E-Discovery: Navigating Complex Waters
- SaaS 2011: Adoption Soars, Yet Deployment Concerns Linger
- Architecting Private and Hybrid Cloud Solutions: Best Practices Revealed
- How to Stop Web Application Attacks
The most common response, from a whopping 28% of respondents (on a base of almost 500 developers), was "no development process." (By comparison, the #2 response, Scrum, garnered half as many responses. All other options scored 9% or less. ) It's hard to fathom that more than one in four professional developers today use no specific methodology. I'd love to believe that this is strictly the result of benighted management that has no clue about how development should be run, but personal experience tells me this is not the case. It's a combo shot of both management and developers.
The latter fulfill a stereotype that I've seen numerous times: the cowboy style hacker who enjoys a maverick image, who gets the results he wants so he thinks. He'd rather be left alone to do his work than to attend stand-up meetings, have others review his code, or indulge in any of the fancy folderol that a "me-tho-do-lo-gy" would require. It's not the only stereotype or profile, but it's a persistent one. I still meet them. They get by strictly on their talents, while everything else they do encumbers their path. As a result, they spend far more time in the debugger than they need to, they manage code poorly, they hack builds together, and generally have a poor idea of where they stand in the project's roadmap. They are not good teammates.
There are, of course, other situations that are far more frustrating, which consist of good programmers trapped at a site where managers are opposed or incapable of adopting a process. These managers are sometimes ex-cowboys, or they simply haven't been educated in the value of any methodology. Others don't have the management capabilities or enjoy executive backing for instilling the discipline of a methodology. Here, I believe, developers can take the lead. They can begin, among themselves, to create their own process and build it from the bottom up. A question that immediately arises is: "Which methodology should we choose?" And the wisest answer is: "It doesn't matter." Any methodology is better than none at all.
The presence of a methodology will invariably generate a clearer understanding of the deliverables, a well-defined set of responsibilities that can be assigned to team members, defined build and test processes, a review process, and a shipment calendar. Effectively, it's a minimalist SDLC that enables everyone to plug into their roles and understand their place in the various project's dependencies. Doing this requires the participation of most developers on the team and will surely require a senior person to oversee it. In its final form, it might well look unlike any formally defined process (lean, XP, or the like), but it will deliver better results than no process. If a more structured methodology is chosen later, this first step will greatly ease adoption.
Even one-man projects are well served by a basic methodological framework. I believe the vast number of abandoned open-source projects is partially due to the inability of their principal developer to move forward for lack of a systematic and disciplined approach. Most projects of any value require great exertion over a long period of time, often without much if any support from others. If a project involves a long and somewhat arduous commitment, then most anything that increases the burden contributes to the project's abandonment. For this reason, all developers will benefit from basic methodology disciplines in their private work.
Doing this solo requires sober self-analysis, as it is likely that individuals are disciplined in one area and undisciplined in others. This is certainly true of me and, from what I can see in OSS projects, of many others. Methodology is most needed where the team (here, the individual) is least disciplined, so that one step in the process does not bring the whole project down. Taking this point to the level of an entire team: It would be convenient to believe that the strengths of the various team members overlap so that all activities are properly covered, but in my experience, this is not the case. Most teams have a glaring weakness somewhere that places a significant drag on progress. A methodology makes those areas salient and provides tools for resolution. This is why nearly three-quarters of all developers use some kind of methodology and are unlikely to give it up to return to an undisciplined approach.