15 Agile Best Practices – Are you following these in your team?

Having worked for several years in an agile development, I thought I would jot down some of the best practices that each developers should follow. This list is somewhat influenced by one of the agile survey I had to fill in to help a student.

  1. Don’t fear to simplify the existing code where necessary – without changing the functionality.
  2. If you see existing complex code, don’t fear to simplify it.
  3. If you see redundancies in the code, don’t fear to eliminate those by doing a code refactoring.
  4. Use pair programming – although pairing does not improve the productivity on the short run, it increases the code quality which means less of maintenance on the long run.
  5. Do a continuous integration of your new code with the existing code.
  6. Continually integrate your code with your co-workers code.
  7. Always write and run unit tests – don’t just run your unit test – run all other existing unit tests. Get actively engaged in unit testing. Change your mindset about unit testing if you have to. It’s a good thing.
  8. No-one owns the code. Or in another word, everyone owns it. Anyone should be able to change the existing code at any time without the fear. They should not be running around seeking permission from the person who wrote it originally.
  9. Different developers have their own style of writing and unit testing code. There needs to be a set of agreed upon coding standards in your team. This helps maintain the uniformity of the code and helps those who maintain it (could be yourself !).
  10. Have your teams co-located. It saves a lot of time and produces a good collaboration. All the members including developers, testers, requirement analysts, product managers, automated tester and if possible release managers should be co-located. Some companies have seating arrangements made to suit this co-location and open collaboration.
  11. Retrospectives are important. Not only they help you celebrate on good things you did, they also give you opportunity in gathering lessons learned and things to be improved. They help you and your team become aware of things that you did well in the pas iteration and helps plan or take action on things you should be doing in the future iterations to improve.
  12. Not all the items from the retrospective can be improved all at once. Pick the top three to five items and assign responsibility to individuals. Even though the work might have to be done by the whole team, assigning responsible individuals helps to track the progress, to follow  upon and to enforce the action on those action items.
  13. You customer should be reachable if not co-located. Having a reachable customer helps you get answers to your teams question as well as feedbacks quickly. Some companies allow the developers to contact the customers directly or through a customer contact person without bureaucratical hurdles. There are some companies who are picky on the communication protocols with the customers. In the team that I work on, our product owner is also the point of contact to reach out to customers with questions and request for feedback. If you have a contact person, it’s a good idea to have them get the responses from customers in  a timely manner.
  14. Have a show and tell after each iteration to get feedback from the stakeholders. The earlier the feedback, the better it is to make improvements to the application while it is still fresh on team’s mind.
  15. Have you daily scrums or daily stand ups short, and focused on the purpose of the meeting. Don’t sway away into discussions that are not needed at the moment. If you have things to talk in detail on certain topics, put those on a parking lot and discuss afterwards with a subset of related people. Don’t kill everyone’s time by brining in irrelevant topics during daily scrum.