The Agile Developer: another introduction
Categories: IssuesAfter reviewing my previous post, I realised that the agile developer should be presented in an even simpler form. Seriously, that’s what an agile developer do: develop things as simple as possible, but no simpler. Ensuring that what is created match what is wanted by the customer, and the code written actually works.
The short version of an agile developer is a person who understand the details of the task and takes this understanding to his peers to find the simplest way to implement it. The agile developer creates the tests that will verify the details, before actually implementing the code that will handle these details. And he’s not satisfied with a running test before the code is refactored so simple and understandable that anyone can read it. But the agile developer will not rest before his implemented task works well together with the system as a whole and the customer returns with a satisfied feedback.
The details you find underneath:
- Get your task, specification, order, whatever. You now wonder: what is it really I should make? Keep in mind how many times you’ve experienced changes to the requirements document or some details weren’t covered in the document.
- Get hold of the decision maker, the customer with the answers. Ask if you can have a brief walk-through of the task. Make sure you catch the intention and ask whether the proposed solution really meets this intention. Oh, and if the customer gets carried away talking about his domain, make sure to keep him in that state. Promise to deliver something he can see or review no later than within a couple of weeks.
- Now, talk to a fellow developer or architect. Discuss the task with him and talk about how this fits into the big picture of the application, or more presice, what the architecture should look like.
- Spend some time to write up the functional features of the user stories from the meeting. Make the most important ones your priority. Create som tests against some “black box” functionality that gives you a return value you believe is relevant.
- Start implementing the core functionality in a way that the unit tests you created can be run. If you designed the tests wrong, change them accordingly.
- Make sure your tests run. When they do, simplify your code. When you realize you have overlapping og expanding functionality, keep refactoring and make sure the unit tests still work.
- When all is implented, tests run and the code is satisfactory simple, make sure to run an integration test with the rest of the system. Promote your functionality so the customer quickly can run through it.
- When the customer likes what he sees, the tests run and your task is complete, celebrate! Do so until the new iteration starts.