Friday, May 30, 2008

Pragmatic Factors for Agile Success

Venkat Subramanian gave a talk on Pragmatic factors for agile success at NFJS. The talk addressed team member’s attitude towards different aspects of software development. He starts out by comparing the attitude of team members to those of drivers sharing a highway. The ride can be tense and lead to road rage or it can be respectful and pleasant. Venkat discusses these aspects using devils vs. angels’ advice along with how to keep some balance between the 2 opinions.

Work for outcome: The devil suggests the 1st and most important step is addressing a problem is to determine who caused it. Find that person to blame and point at them. The angel suggests being a part of the solution and not the problem. Blame does not fix bugs. Use the problem as an opportunity to learn. To keep a balance, remember that it is everybody’s fault. There will always be problems. Just fix them.

Criticize Ideas, Not People: The devil suggests that you have a lot invested into the design. You have a lot of pride. Stick to your design and don’t listen to anyone else. They just don’t get it. The angel suggests sharing your design with others and asking for help on improving it. Take pride in arriving at a solution rather than proving whose idea is better. To keep a balance always contribute ideas, but know that they will not always be accepted. Be realistic and fair, unemotional but not indifferent or unconcerned.

Keep up with change: The devil suggests that technology changes so fast. It’s overwhelming and you can’t possibly keep up. Just stick to the language you know. The angel suggests that it’s in your best interest to keep up to date. You don’t have to be an expert in everything. Learn iteratively and incrementally by attending local user groups, workshops or conferences, and reading. Spend at least 30 minutes each day learning something new. To keep a balance, ask what’s the value of the new technology? What it does? And what it solves? Don’t convert an application to a new technology just for the sake of learning.

Invest in your Team: The devil suggest that you keep things to yourself. Don’t share what you know. It’s to your advantage to be the smart one on the team. The angels suggest having regular brown bag sessions to raise the awareness of the team. Each member has different expertise and strengths and it’s to your benefit to be in a mature and qualified team. To keep a balance don’t turn the meeting into a design session. Pick a book and stretch beyond technical books.

Feel the rhythm: The devil suggests having a code review once to review the entire code base. The angel suggests not letting tasks add up and tackling them regularly. Have constant code reviews (pair programming) or small task code review. Constantly evolve the code and maintain using TDD. It’s like walking, left foot code, right foot test. Walk while keeping a balance. The key is to set small reachable goals, celebrate your success.

Let customers make decisions: The devil suggests developers are creative and intelligent. They have the best answers and should make all critical business decisions. Business people will just make a mess of things. The angel suggests presenting the customers with details (pros and cons and benefit from business point of view. Let customers make business decisions. To keep a balance, don’t bug them with low level details but also don’t assume low level details not important.

Let Design guide, not dictate: Devil suggests a creating a detailed upfront design and not deviating from it. The angel suggests using the design as a map that guides us in the right direction. Have Strategic design and tactical design. Design evolves as your knowledge evolves. Team should have programmers that design and code as well as architects that design and code. To keep a balance, no big upfront design does not mean no design. No need for sophisticated tools, use the right tools.

Fix prices are broken promises: Devil suggests to give an estimate even if we don’t have all the details yet. The angel suggest letting the team work with the client to get realist estimates. Estimates can be based on previous similar work. Or estimates can be made on 1st few iterations. After delivering a small subset, you’ll get a better idea of project and then can give better estimates for the remaining work. “You’ll know when we are done” is not acceptable. To keep a balance, remember that if you don’t give an estimate, someone else that does might get the contract. Consider estimates by iteration or if you are currently working in non agile, plan driven environment and it is working for you then do it that way

Different makes a difference: The devil suggests as long as it works on my machine it’s ok. Who cares about other platforms. The angel suggests run unit tests on different platforms. To keep a balance, be selective if you have too many platforms. Remember that hardware is cheaper than your time. Use VMWare or virtual machine if you cannot by hardware.

Attack problem in isolation: The devil suggests the only way to debug is to step through entire system. The angel suggests isolating the problem from its surrounding and focusing on what’s relevant. You’ll save time and stress.

Schedule regular face time: The devil suggest that we need a lot of meetings. We will keep scheduling more meetings until we figure out why work is not getting done. The Angel suggests following Scrum and the daily stand up meeting.

Be a Mentor: The devil suggests that you use your superior skills to intimidate your team members. It took you a lot of hard work to get to where you are. Don’t share. The angel suggest that you help people learn. Don’t spoon feed them, share the knowledge, learn collectively, make everyone around you better. Be a mentor not a tormentor.

This presentation is available on InfoQ at