Funiteration – Fun way to explain iterative development in Agile

In our organization we are continuously striving to bring new practices and to share knowledge in different ways. Trying to make learning fun and interactive. Such an opportunity came our way and we had to put on our innovative hats to figure out, how a center of excellence group could present – agile, scrum, tools, and processes without getting it to be mundane and repetitive.

Finally after a lot of thought and scratches on the whiteboard, we unanimously agreed to describe iterative delivery using food (the one pull for all), calling it – sweet desires incrementally

For those not aware of Iterative development –

In any scrum team, what we fail to communicate or what is difficult for a developer to see, is the objective and need for iterative development. It is much more than time-boxing. It’s the ability to get feedback continuously, through your working software demos. To be able to accommodate changes and provide the need of the hour software. But the most essential part of all of this, is to be able to provide the customer the opportunity to make a choice, wait for the whole thing or go with what they can get now – reducing the time to market and increasing ROI. All of these, keeps your customer happy and attuned to what is coming their way. Happy customers, happy organization.

Now how do we put all of this in food and make it fun to learn J

Sweet desires incrementally

Sweet desires was the theme & title we came up with for the learning flow.  As the name suggests it catered to something sweet and we selected muffins.

Recipe

We framed the menu as below (requirements document), we shared this with the customers,  to select what they wanted as the end product and also gave them the option to take the muffin at the end of any one iteration – it was valuable and potentially shippable at the end of every iteration

blog 1

Three iterations >

blog 2

Consumable at the end of every iteration

At the end of every iteration, during the demo, we asked the customer to verify if the muffins met the Definition of Done. A checklist to ensure we have covered all the essentials related to quality, requirements and readiness.

blog 3

You can have variations in your presentation, where you can bring in blockers like, unavailability of toppings so ask them if they would be ok with something else, or would they like to wait till we get the toppings they want. This brings out how blockers can be handled and also how customer feedback plays a key role to remove the requirement blockers

Outcome

The activity was very successful and we were sold out within 45 mins of it starting.  What we hoped to achieve was learnings and to pass on the information regarding

  1. Better understanding of working in an iteration ( incremental delivery to the customer
  2. Importance of demos and how it helps gain confidence of the customer and creates a happy customer
  3. Ensures we are developing the right product, aligned with what the customer requires and provides an opportunity for the customer to make changes
  4. Learning of new concepts like definition of done – The importance of quality and alignment with the stakeholders
Advertisements

Batman or Justice League – 10x developer or a 1000x team

I have had the pleasure of working with a few great software developers and what is beautiful about their work is that when they have finished solving an incredibly difficult problem — one that no one else could solve — what they leave behind is a solution that can not only be understood by an average developer, but that an average developer will truly believe that they could have come up by themselves.

So what is a 10x developer?

A lot of attention is paid to the value of a 10x developer. What is talked less about is how/what actually makes them 10x. After all great coders don’t just write great code, they consider the architecture to be clean, accessible and maintainable. It should be code that not only works but can also be used by other coders to build on safely and creatively.  It should cost less to support and should focus on value. So all said and done, a 10x developer cannot be categorized with only speed and talent.

Qualities of a 10x (Rockstar)

  1. The ability to write excellent business logic.
  2. Writing good code is part of their DNA
  3. Can design and architect things beautifully and precisely
  4. Simplicity – keeping it simple
  5. Experience & Focus
  6. Perfectionism
  7. High End user focus
  8. Deep and broad technical experience
  9. Excellent learner and motivated to share – by which they learn more
  10. Team players
  11. Self – Ownership and accountable
  12. Constantly innovating – no matter how small
  13. Last but not least they are free minds, who like to innovate and try new things
  14. Ability to build on their skill and enhance it continuously

I won’t restrict it to the above but it’s something to delve on.  Adding to the 10x phenomena, I

I recently going through an article “the ever escalating war for talent: in the Silicon Valley. Where Facebook CEO Mark Zuckerberg made a passing comment “someone who is exceptional in their role, is not just a little better than someone who is pretty good. They are 100 times better”. So does that mean that –

  • If I am starting an organization, I am willing to take one standout person over 100 average good people?
  • Would I be comfortable to depend on a few rockstars, rather than a well formed team that will overwhelm with their collective workmanship?
  • Finally would I be able to sustain the level of curiosity and innovation of a 10x – have longevity. Aren’t these the ones that like to run away from Organization politics and bureaucracyJ. They are creators!!! They don’t like to be shackled in one type caste role and not allowed flexibility

What I concurred was that Google, Facebook don’t only hire 10x they also build teams that can be 10x or more, because they are not expecting them to work in silos, they are expecting them to innovate at a level that is beyond 10x and work together as a 1000x team.

So how do we ensure we have people building up to be 10x, after all it’s not easy to find 10x out there , but there is still a chance to build 10x within the organization, building on the fact that they have some amount of ownership and connect with the organization.

While delving on these words and the qualities of a 10x developer, what comes to the mind is why individuals why not a team of a few 10x and some pretty smart programmers that would create a 100x – 1000x team. If we are saying we want to deploy frequently and improve our TTM, so would we be able to do this with a few 10x or a team of 10x or maybe even a team of very good people with a potential to become a 1000x team, the strength lying with a team.

How do we find the people who can become a 100x team – “Building a 10x team is an altogether different task as compared to trying to make an existing team “10x efficient”

Qualities of a potential 100x team member –

  1. Identify 10x developers and place them in teams with pretty good developersJ. A group of 10x people! = A 100x team.
  2. Right mindset and practices Identify people who can instill the right mindset and practices early within the team, Also ensure they have a shared culture and interests.
  3. The Energized battery – Instills ownership & dependability within the team, no one neck to ring – the whole team has a neck. Raise the bar of excellence constantly
  4. Gives and receives trust freely – Believes in working as a team and sharing the responsibility. Open to feedback and learning, no matter the role or position of the teacher
  5. Meaning & Impact – build the environment and mindset to make the work personally important & the need to create the change. Communicate the vision, goal we want to achieve, build the platform for the individual to learn outside of what he/she is expected to do. Create an environment of meaning & value in whatever they achieve
  6. Unified commitment – Don’t communicate the vision/goal, build it with the them/team
  7. Principles  – There are no half way for good code, its either good or not at all. Makes it a part of the daily culture & DNA.
  8. Teachers – Create & propagate learners within the team – they constantly learn and love to share. These teachers don’t just tell, they show reasons.
  9. Team players – no lone rangers. Individual commitment to a group effort. People who believe in building together and sharing responsibility for both success and loss.
  10. Monetary incentives – Move away
  11. Transformational leader – They take care to inspire, teach and motivate each and every person on their team. These leaders do more than order people around; they continually teach and explain why projects and goals matter.
  12. Compete with yourself. Let each person grow within their areas of expertise, there is no such thing as healthy competition between peers.
  13. Skilled Has the potential, drive and interest to acquire or exceed the limits of their skills.

I wouldn’t recommend building a hiring strategy around solely hiring “rock stars”; don’t let perfect be the enemy of good: After all “Perfection is not attainable. But if we chase perfection, we can catch excellence.” Hire the best developers you can get and give them ample opportunity to develop and get even better –

Never throw caution to the wind

Now with a team we need to remember that if we want speed to market, scalability, ease of use, robustness, resilience, maintainability and enhanced ability, this will happen over a time.  With the 10x developer this could be bolted right from the start, but as a team it will take investment of time, knowledge and of course the mix of the right people. Many questions, few answers, but I would love to know what you think and how all this excellence can fit into our teams. What we need to decide is, do I want a batman or do I need him as part of the justice league J