Agile programming works for the solo developer

Related gallery

Webjam 8 Photo Gallery

Webjam 8 Photo Gallery

Agile programming, aka extreme programming, offers a great deal to the lone developer. Learn how agile practices brings order to solo efforts.

You may not realise it, but if you're a software developer who works alone, you may already be using a lot of the concepts behind agile programming, also known as extreme programming, or XP. Of course, certain agile programming practices, such as pair programming, simply don't apply, but the organic nature of the agile methodology easily lends itself to rapid application development, even for the solo programmer.

I'll step through the relevant practices of agile programming and how they can facilitate application development in the one-man shop.

Agile programming overview
The agile programming methodology is divided into four activities and deployed with an iterative style. Planning, designing, coding, and testing are all performed in bite-size pieces. These steps are revisited when needed or according to schedule.

When you're developing alone, it's easy to just dive in and assume that you'll be able to handle whatever problems arise. Agile methods can facilitate the process, however, and will actually help you avoid the lag that comes from struggling with a less organised approach.

I'm an independent application developer, as are many in the current economic climate. As of this writing, I've got four separate projects. While I can easily manage requirements and progress status for each of these endeavors, I've found that the time needed for sourcing, ramp-up, and development is greatly reduced simply by applying a little order to the chaos.

Borrowing relevant agile programming methodologies has worked quite well for these projects. For one thing, agile programming isn't heavy and doesn't require an inordinate amount of overhead. Also, every piece of planning is immediately useful, and my clients get a sense of constant contact and the instant gratification of regular updates. The practices defined by agile programming help me put a simple structure behind my work. This lets me focus on getting things done, but it also supplies the environment I need to adapt to and incorporate changes without disrupting progress.

When you're working alone on a project, planning is easier with the agile methodology than with spiral development or the other methods I've worked with. In fact, much of the process comes naturally to the lone-wolf developer. By picking and choosing the pieces that fit, these practices are well suited to working alone.

Agile planning
You may find that you're already using many of agile programming's planning practices, although perhaps in a more informal manner. Try tweaking your diligence slightly, and you'll discover some of agile programming's tremendous benefits in this area.

User stories
User stories are a way of capturing what I call -the flood." This is similar to requirements gathering in traditional development methodologies, but it differs in that technical details are omitted and work to be performed is described in plain English, broken out into two- to three-week sections. Each user story is written onto an index card and used to plan releases.

Since one-man projects tend to be small, I generally break the user stories into shorter duration blocks. Of course, this goes against the rules of the -planning game" and ultimately quickens the iterative rhythm; however, the same basic principles apply.

Releases
A release consists of user stories grouped together based on dependencies and business need. Agile programming releases are not partial deployments but rather represent completed, logically grouped portions of functionality. Scope or duration can determine a release, and functionality is chosen by common sense and priority.

As with team projects, keep releases short. Each release comprises several iterations and is largely determined at the beginning of the project. Organise releases by grouping the user story index cards together. This allows you to keep the customer satisfied with frequent deployments, and it helps keep the focus on the big picture.

Just-in-time planning
Once you have an idea of the releases, determine your iteration length. An iteration should be one to three weeks in length, and there should be three or four iterations per release. Even with shortened user stories, I've found that sticking to the low end of this guideline works on lone projects, as long as I make sure that all iterations are about the same length. Otherwise, it's too easy to break away from the agile model.

Define iterations by selecting the most important user stories and breaking them down into programming tasks. Involve your client in deciding what task has the highest priority, and always plan to complete it first.

Iteration planning should be done at the start of that iteration and not before. This may seem somewhat shortsighted, but it keeps you focused. Discrepancies will be resolved in future iterations.

Designing the solution
Designing your solution with the agile methodology is simple. It's spread out over the course of development, rather than being completed up front.

Class cards
Create index cards representing objects and classes. Use the cards as you would boxes on a diagram to demonstrate the objects' relationships. Keep it simple, and refine the layout with additional detail when planning an iteration.

Refactoring
As you move through the project, take time to clean up your code and consolidate functionality. This is called refactoring, and it allows the system architecture to develop logically and organically. Every iteration should include time for restructuring; the class cards can show where it may be necessary.

Spike solution
When you encounter a tough problem that lacks an immediately apparent solution, create a spike solution. This is where you try out different approaches in code to make the correct solution more apparent. This happens all the time in independent development, and it may not require the level of formality that agile programming calls for.

Other design principles apply as well, but many are somewhat inherent when the team is a single person. For example, it's a good idea to name objects and other system elements consistently, but as an individual, you probably don't need to formally create a metaphor.

Coding guidelines
Much of the coding guidelines for agile programming refer to management of teams, but a few concepts are worth adopting.

Client contact
Frequent contact with the client is crucial for the deferred planning of this methodology. Not only does frequent contact help clarify details and prioritise tasks, but it's also a great management tool when you work alone. It gives the client confidence in your ability to deliver and keeps the client abreast of your progress.

Testing framework
Create unit tests before writing code. This might seem a little like overkill for small projects, but it actually keeps the scope in focus and limits development to the requirements. Code enhancements and additions must be completed in a separate iteration, facilitating quality assurance.

Even though it's a good idea to create a testing framework, less formality is required for one-man projects. Since I usually wind up writing code and interfaces, I use preliminary interfaces with debug flags as my test mechanism for back-end functionality. Although this isn't as stringent or long-lasting as the agile methodology's preferred practice, I'm comfortable that it meets my needs.

As extreme programming enthusiasts are quick to point out, the process is designed to be modified to fit your needs and changed when it isn't working.

Test before moving on
Once you've completed coding a particular piece of functionality, make sure it works before moving on. This is one of the ideas behind creating unit tests up front. When the relevant code has passed the unit test, it can be integrated. After completing all tasks for a user story, apply functional tests to ensure all requirements are met. When you find serious bugs, modify your testing to check for them after they've been fixed.

When you're working alone, this is pretty much the natural progression of testing code anyway. By creating formal tests before writing code, it's evident whether a piece of functionality works or not.

Bringing structure to the soloist
These are some of the principles of agile programming that apply to solo development. I picked up these habits on a recent project as an experiment to see if I noticed any improved efficiency. It took about a month to really get into the habit of not solving problems before their time and being diligent about refactoring, but my productivity increased once I got a rhythm going.

I really like the way the client took an active role through continual contact, and forcing myself to create test cases before writing the code facilitated development. If you're a single developer, agile programming can give structure to your process.

Talkback

Add your opinion

In order to post a comment, you need to be registered. (Sign In or register below)

Post your comment

Terms of Service - As a ZDNet registrant, and by using this service, you indicate that you agree to our Terms and Conditions and have read and understand our Privacy Policy.

ZDNet Australia Live

Master of Arts @ Oxford, iirc!

3 minutes ago by Beta on NBN FUD: will Abbott ever learn?

CT, phone clone: Craig Thomson says his phone might have been cloned, and that's why it appears that he made pho... http://t.co/zIh7ylDI

St George opts to keep 200 IT workers http://t.co/5kdlMCDz

St George opts to keep 200 IT workers: St George Bank has this week decided not to outsource 200 of its back-of-... http://t.co/QBEKbQkE

Foxtel completes Austar takeover: Foxtel has completed its $2 billion takeover of regional counterpart Austar, a... http://t.co/EBWbRuzw

St George Bank opts not to outsource 200 IT staff: http://t.co/5lt9pxwl ^LH

http://t.co/A2OJz5ad

Did some one say Tony Abbott was a Rhode scholar??? Wow if thats true that jut put a huge dent in the prestige and reputation of the Rhod...

24 minutes ago by Ron123 on NBN FUD: will Abbott ever learn?

Yay. RT @JamesVickery: St George opts to keep 200 IT workers http://t.co/OA7qsztl

Privacy Act amendments hit parliament http://t.co/a8M9Lui2 via @zdnetaustralia

Privacy Act amendments hit parliament http://t.co/1G8tnnjJ via @zdnetaustralia

St George opts to keep 200 IT workers http://t.co/Yyn3ixQs

This week, long awaited amendments to the privacy act hit parliament. http://t.co/j5z9Doeo ^ST

I'm not familiar with how to go about cloning, but a quick bit of a search/read seems to indicate its not really in the realms of possibi...

34 minutes ago by pmoxey on CT, phone clone

#Privacy Act amendments hit parliament: Proposed changes to the Privacy Act that would shore up information secu... http://t.co/KsPjnTDr

#Privacy Act amendments hit parliament: Proposed changes to the Privacy Act that would shore up information secu... http://t.co/4YS7yvcl

#Privacy Act amendments hit parliament: Proposed changes to the Privacy Act that would shore up information secu... http://t.co/UXNtAC74

by http://t.co/vmlLt4bh: St George opts to keep 200 IT workers: St George Bank has this week decided not to outso... http://t.co/kVGB8BSk

Would an accelerator just for clean tech companies work? http://t.co/mtc9VYvC ^ST

RT @zdnetaustralia: Privacy Act amendments designed to strengthen Commissioner's bite hit Parliament: http://t.co/j5z9Doeo ^LH

Start-up accelerator targets cleantech 'Atlassians, BigCommerce' via @zdnetaustralia http://t.co/oho3oQSK @atpinnovations @hamishhawthorn

Privacy Act amendments designed to strengthen Commissioner's bite hit Parliament: http://t.co/j5z9Doeo ^LH

#InfoSec Privacy Act amendments hit parliament - ZDNet Australia http://t.co/DdWBn7QW #CyberSecurity

Accelerator targets 'clean-tech' start-ups http://t.co/ZUCm1R4i

Privacy Act amendments hit parliament: Proposed changes to the Privacy Act that would shore up information secur... http://t.co/I9U0QzJ6

CT, phone clone: Craig Thomson says his phone might have been cloned, and that's why it appears that he made pho... http://t.co/4upP3upU

#BCAlert Accelerator targets 'clean-tech' start-ups: "Atlassian, BigCommerce, 99designs, Tigerspike; they were all... http://t.co/eu0LcNC8

by http://t.co/vmlLt4bh: Accelerator targets 'clean-tech' start-ups: The start-up accelerator model made popular ... http://t.co/zVej2Jra

Foxtel completes Austar takeover: Foxtel has completed its $2 billion takeover of regional counterpart Austar, a... http://t.co/iEIzq6Fh

Accelerator targets 'clean-tech' start-ups http://t.co/PsoK3Mmo

Accelerator targets 'clean-tech' start-ups: The start-up accelerator model made popular locally by Startmate, an... http://t.co/2Ypr2Ige

This story has been voted 12000 times in the last 24 hours!

1 hour ago, Is Bill Gates a great leader?

RT @AusLawReform: ZDNet: Cloud TVRs stop in wake of TV Now ruling http://t.co/SlSmGHIc #copyrev

by http://t.co/vmlLt4bh: Cloud TVRs stop in wake of TV Now ruling: In the wake of the Federal Court ruling that O... http://t.co/Lmmbc53I

Cloud TVRs stop in wake of TV Now ruling: In the wake of the Federal Court ruling that Optus' TV-recording app T... http://t.co/VrYAHvCe

@chrismurphys http://t.co/1VU8eGPi

Foxtel completes Austar takeover http://t.co/X2mL1PtQ

Two cloud-based TV recording services have been suspended in the wake of the Optus TV Now court ruling. http://t.co/kihL5Ul2 #optusnrl

Blades vs. standard racked servers for virtualization http://t.co/XtVsG1b6 < good post on an 'age-old' (feels like it anyway) discussion.

After Google gave up it motto of 'Do no evil', it has since siphoned $billions to a tax haven, by paying very high 'licence fees' to its ...

1 hour ago by Patanjali on Much ado about Google's tax

That has got to be one of your best/worst headline ideas ever.

1 hour ago by BrianH2 on CT, phone clone

Damn the lack of editing and small window! To continue the hanging introduction: To talk about others being afraid of technology is bein...

2 hours ago by Patanjali on Cloud TVRs stop in wake of TV Now ruling

This case has highlighted the basic opaqueness of cloud services. It is a business problem that cloud providers have been burying behind ...

2 hours ago by Patanjali on Cloud TVRs stop in wake of TV Now ruling

who they hell is voting so much

2 hours ago by lololololo on Is Bill Gates a great leader?

Such claim demonstrate how technology-wise incompetent Bill Gibson is. Proprietary software only provide promise of security (but not pro...

3 hours ago by onlyjob on Tax Office needs to rethink open source objections

What earthwave is suggesting here is not new. It has been suggested by many other security experts in the past inc;uding Symantec and dis...

3 hours ago by James Turner on National Botnet Network coming: Earthwave

50% penalty on Adobe. In my mind justifies using "alternate" sources.

3 hours ago by splatman on Australia tax inquiry opens submissions

To be added to the ToS: 'Furthermore, you agree that we can share your information with our third-party partners and whomever they let ha...

4 hours ago by Patanjali on Telstra GameArena hacked, 35K accounts lost

The question is not whether DDoS can be achieved or not but whether DDoS originating from compromised computers on a slower network (e.g....

4 hours ago by ChrisWatson on National Botnet Network coming: Earthwave

Lets throw Windows RT in the mix of Android and iOS mobile devices. Some of the management features of Windows RT means easier LOB (Line...

7 hours ago by fhemani on Windows 8 set for BYOD: Microsoft

If getting a degree was only about getting *any* job, then I would agree that a more specialised program might limit opportunities. Howe...

7 hours ago by Mario Wynands on Surely IT is more than just a game?

I'm the Chair of the NZ Game Developers Association, and have also consulted or worked for the Universities of Auckland, Otago and Waikat...

8 hours ago by sknightly on Surely IT is more than just a game?

Learning only matters if it helps you cross the bridge between where you are & where you want to be. In this respect, if where you want ...

8 hours ago by mitch.olson on Surely IT is more than just a game?

15 Oct 2007 It's a good thing that Kim Kardashian has a new show on E! titled "Keeping Up With the Kardashians" because it appears that i...

8 hours ago by Amampnema on IT Business Forum overcomes political uncertainty

As one of the founders of an 18 person game developer in NZ, I can tell you that your fears are not justified. We hire graduates from th...

8 hours ago by JonathanRogers on Surely IT is more than just a game?

@butterflyeffecs - really? Seriously?! You actually expected more of zdnet??? This article really does take the cake though - its gone we...

16 hours ago by lex on Android fragmentation steers Vic Health

This story has been voted 10 times in the last 24 hours!

1 day ago, CeBIT 2012 opens: photos

This story has been voted 15 times in the last 24 hours!

1 day ago, Lenovo ThinkPad 3G tablet (32GB)

Facebook Activity

Keep up with ZDNet Australia

ZDNet Events Calendar

ZDNet Events Calendar