Wednesday, 2 September 2015

Some things that work for us

In our team we have accomplished some things I find essential for the scrum process to work effectively. Maybe somebody finds something interesting or inspirational. All comments are very welcome...

1) Agile principles

It is very hard to progress in something if you don't believe in it. In our team every member understands and appreciates the principles of Agile and tries to apply these in everyday work. For example our newly recruited quality engineers says: "I can just comment that it felt a very natural process for me starting from day 1 even though I didn't have any previous experience with it. It just kind of made sense after the first sprint already." Of course we need to adapt some of these principles to our work specifics, but more often it requires for us to adapt ourselves to agile.


2) Customer value driven

One of the most important agile principles. The whole point of software development is to offer value to the user. This point has to be constantly acknowledged by everyone and the process should be built around this principle. To increase this we started releasing after every sprint which resulted in some interesting changes.

a-  Tolerance for the bugs reduced and changed our development to more quality oriented. We write tests first, automate everything what we can, and do testing as often as possible. After each sprint we have high quality production ready product.

b-  Sense of ownership and actually making a difference increased. Instead of waiting more than a month for the release, we see that we create something, and people start using it pretty soon (being actual users or people in the organization). So the chain "we create -> people use", became a lot more visible and prominent in everyday work.

c- Ability to deal with small and big things at the same time. We don't have to wait weeks to get a small bugfix live and we don't have to release half-tested or not complete product when we need to get something out of the door quickly.


The downside of this can be that it creates a lot of routine and there is less anticipation for "The release", but I think the benefits outweigh the cost.


3) Scrum process

With scrum it goes even deeper. It is very important for each team member to understand the scrum process and coming down from that, understand the meaning and value of each part of that process. It's hard to make the full use of the tools if you don't know what is their purpose, let alone not knowing the meaning of the whole process. In my mind probably the biggest responsibility for the scrummaster is to promote this meaning and these values in team. In addition in our team we try to keep our knowledge of the process updated (everyone has attended or re-attended scrum training recently) and also constantly share and discuss ideas and experiences between members.


4) Cross-functional

Since grooming is one of the backbones of the scrum process, we find it very important for each team member to understand to some extent every aspect of the work we do. Since skills and the nature of different tasks vary a lot, we use pair-programming as much as possible. The goal is that every member of the team has at least basic skills for every aspect of the work we do, and we are pretty close to that. For example every member of our team is able to run and write automated functional tests.


5) Product Manager

One of the roles of the product manager is to be a diplomat between higher business and development. Translate one's visions and needs to other and vice-versa. This means he needs to understand both parties and more importantly trust and listen to them, where he lacks the understanding. Since engineers are from my experience often more prone to agile than business people, this is maybe one of the key points for all this to succeed. Points 1-3 should be covered by direct management also, otherwise it renders the whole effort useless. It feels to us that our PM has understanding how our process works and is taking an extra effort to adjust his work to the way we work, to get the most out of us, while not compromising his own goals. Our PEM is also not forcing anything, he is questioning the things we do and enabling us, not forcing.


6) Avoiding "Product arrogance"

We think about our product, how to make it better, faster, robust, etc. but we often forget our users, although users are buying our product. There is one technique to put users first:  change the way how we write our user stories (PBIs). Our typical PBI starts with the common format "As a {role} I want to {do something} because of {benefit}". The problem is that then every developer thinks about that {role} as himself. But there are usually no users skilled like you are (or minority is). The cure for that problem is to use Personas for writing user stories. Give your Personas names and some characteristics and background, like age, how they spend their time, how they use your product. When you have Personas then you can write PBI in simple English, e.g. "Jane and Andrew share photos to compare their children". Everybody understands such sentence, which includes concrete actors, performing specific actions and there is a  result which is testable.


--

When talking with people about these topics I often hear "show me proof, show me numbers". This post is not meant for convincing anybody, but rather express our feelings about our team and our processes. For me as a scrum master, the most important metric is the feeling in the team. Do we feel that things just progress and the feeling in overall is good? And the answer is (to put aside estonian way of expressing ourselves - "I guess not too bad" :D ), while constantly seeking for ways to improve, we are happy with the way things are going.






No comments:

Post a Comment