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.

What is the format for writing an agile story card?

Although various companies and their agile teams might use their own “agile” format of story writing, a very popular and common way of agile story card writing is to follow three lines that mentions who is the user, what the user wants to do and what is the business value of doing that action or achieving that goal.

This is in sharp contrast to most of the waterfall model requirements writing where most of the time the requirements are written with System of Application in view rather the users in the view. It’s not uncommon to see those waterfall model requirements to be documented as “System shall…”.

One of the reasons behind the success of the agile model of programming is the care for the user role and the business value more than the waterfall one (despite the pros and cons of each type).

The diagram above shows a typical format of a agile story card.

Roles and Responsibilities of Business Product Owner in Agile Teams

Product owner is one of the most important roles in any agile teams. Sometimes this role is also called BPO referring to Business Product Owner. Product owner is one of the three key roles of the agile team (namely Product Owner, Scrum Master & The Team) and is a someone tasked with creating vision for the product and governing what is being released.

Here are some of the key roles a product owner typically does in an agile team.

  1. Defines the features of the product being developed by conveying or creating the vision and goals
  2. Creates and maintains the product backlog
  3. Prioritizes the features according business or market values so that they are analyzed, developed and tested according to those priorities
  4. Helps the team if any clarifications are required around the features /epics or stories.
  5. Is responsible for the profitability of the product.
  6. Is responsible for making any adjustment to the features being developed for the priority of the development every iteration as needed.
  7. Participates in the various key meetings such as Daily Scrums, Retrospectives, and probably explains the business values to the stakeholders when a Show and Tell meeting is conducted.
  8. Makes decision on acceptance or rejection of the work results
  9. Represents the customer and engages the customers or interfaces with them as required.
  10. Is responsible for communicates the project status to external stakeholders
  11. Has authority to terminate the iteration or sprint if a sudden change in direction is required.

On the fun side, also take a look at the following two great cartoons about product owner roles. (Disclaimer: The images have been borrowed under fair usage. The original author name(s) appear on the cartoon itself)

First one:

An the other one: