Can a lone developer use Agile?
Agile development methodologies such as standups, sprints and even retrospectives can be adopted by developers who work alone
The stereotypical view of a software developer is, of course, of the loner in a cube writing code all day. The truth of the matter is that, most of the time, coders work as a part of team, and if that team is using Agile methodology, it can be quite the social scene. From daily standups to sprint demos to retrospectives to even pair programming, it can involve a regular number of meetings and (shudder) human interaction.
However, there are those developers out there who, either by desire or circumstance, work alone, as one man or woman development teams. Are they ruled out from using Agile methods to manage their own development work, or can Agile be adopted by the lone developer?
It’s a question that comes up from time to time in developer forums. There are those who think that some particular Agile approaches cannot be used by a solo developer. Extreme Programming (XP), which relies heavily on pair programming, would seem to be ruled out. Likewise, some believe that the optimal size of Scrum teams is somewhere between 5 and 10 people (or something more than 1). After all, how you hold stand ups or retrospectives with just one person?
Despite this, the general consensus seems to be that Agile can most definitely be adopted by the solo developer. Master’s theses have been written about it and even XP has been adapted for use by one person (minus the pair programming, of course). Overall, many familiar with Agile feel that most, if not all, of the basic components can be adopted by solo developers.
There’s no reason a lone developer implementing Agile can’t continue to do (and benefit from) some or all of the following:
- Create clearly defined, small chunks of work (i.e., user stores)
- Work in short code sprints and have frequent, incremental product releases
- Keep a backlog of user stories and possibly a (Scrum) board to track progress
- Hold daily “standups” before starting work each day (i.e., review what was completed the day before, what issues there were and what needs to be done today)
- Keep track of how long it takes you to do tasks and how many tasks get completed in a sprint (burndown rate/velocity); this is key to accurately estimating how long future tasks will take and future sprint planning
- Do test driven development (i.e., create automated/unit tests before writing code)
- Refactor code regularly
- Conduct retrospectives
- Communicate frequently with the client, to provide regular updates and product releases and solicit feedback and input
One issue that can be a common problem for developers working alone (regardless whether s/he uses Agile) is not having another coder around to help with problems. One common solution is Rubber Ducking: having a rubber duck (or a teddy bear or anything really) nearby to describe your problem to. Many developers find that simply having to clearly state your problem out loud - or in writing, for example to an online forum - can help reveal the solution.
In the end, though, there’s no reason to think that Agile, or some portions of it, can’t be used by developers working alone. As many suggest, one of the key tenets of Agile is flexibility, so find which parts of Agile work best for you and apply them. In general, using a formal methodology (Agile or otherwise) can help to provide structure and process to those developing alone.
Just remember, if you work alone, that’s no reason not to wear pants.
Are you a solo developer using Agile? Please share your experience in the comments.