viernes, noviembre 25, 2016
domingo, octubre 16, 2016
Les dejo dos videos muy recomendables de como trabajan los equipos de ingeniería de desarrollo de Software en Spotify:
Spotify Engineering Culture - part 1 from Spotify Training & Development on Vimeo.
Spotify Engineering Culture - part 2 from Spotify Training & Development on Vimeo.
Spotify Engineering Culture - part 1 from Spotify Training & Development on Vimeo.
Spotify Engineering Culture - part 2 from Spotify Training & Development on Vimeo.
domingo, septiembre 11, 2016
jueves, agosto 11, 2016
sábado, julio 09, 2016
domingo, junio 05, 2016
lunes, mayo 09, 2016
Google descubrió que la seguridad psicologica es la base de un equipo de Alto rendimiento. Los miembros se tienen que sentir seguros de tomar riesgos sin preocuparse de que el resto del equipo los juzgue. Les dejo una imagen con el resumen de la nota y la fuente para quien quiera verlo en profundidad.
domingo, abril 03, 2016
Les dejo 28 características de un gran ScrumMaster, de un muy buen artículo escrito por Barry Overeem:
- Involves the team with setting up to process. A great Scrum Master ensures the entire team supports the implemented Scrum process. The daily Scrum for example is planned at a time that suits all team members. A common complain about Scrum is the amount of ‘meetings’, involving the team with the planning of the events will prevent at least some resistance.
- Understands team development. A great Scrum Master is aware of the different phases a team will go through when working as a team. He understands Tuckman’s different stages of team development: forming, storming, norming, performing and adjourning. The importance of a stable team composition is therefore also clear.
- Understands principles are more important than practices. Without a solid, supported understanding of the agile principles, every implemented practice is basically useless. It’s an empty shell. An in-depth understanding of the agile principles by everyone involved will increase the chances of successful usage of practices drastically.
- Recognizes and acts on team conflict. A great Scrum Master has read the book ‘The 5 Dysfunctions of a Team’ by Patrick Lencioni. He therefore recognizes team conflict in an early stage, can apply different activities to resolve it, and even better, he knows how to prevent conflict.
- Dares to be disruptive. A great Scrum Master understands some changes will only occur by being disruptive. He knows when it’s necessary and is capable to be disruptive enough to enforce a change, but without causing irreparable damage.
- Is aware of the smell of the place. A great Scrum Master can have an impact on the culture of the organization so that the Scrum teams can really flourish. He therefore knows the movie ‘The Smell of the Place’ by Prof. Sumantra Ghoshal and can also apply the related workshop.
- Is both dispensable and wanted. A great Scrum Master has supported the growth of teams in such a manner they don’t need him anymore on daily basis. But due his proven contribution he will get asked for advice frequently. His role has changed from a daily coach and teacher to a periodical mentor and advisor.
- Let his team fail (occasionally). A great Scrum Master knows when to prevent the team from failing but also understands when he shouldn’t prevent it. The lessons learned after a mistake might be more valuable than some good advice beforehand.
- Encourages ownership. A great Scrum Master encourages and coaches the team to take ownership of their process, task wall and environment.
- Has read… A great Scrum Master has read all the stuff produced by e.g. Geoff Watts, Lyssa Adkins, Tobias Mayer, Henrik Kniberg, Growing Agile and Gunther Verheyen. Basically he knows whom to follow in his area of study.
- Has studied… A great Scrum Master has studied the Trello board that Growing Agile has published. The Shu-Ha-Ri levels offer a very useful structure to a knowledge base for every Scrum Master.
- Is RE-TRAINED. A great Scrum Master recognizes himself in the acronym made up by Geoff Watts, RE-TRAINED:
- Resourceful, is creative in removing impediments
- Enabling, is passionate about helping others
- Tactful, is diplomacy personified
- Respected, has a reputation for integrity
- Alternative, is prepared to promote a counter-culture
- Inspiring, generates enthusiasm and energy in others
- Nurturing, enjoys helping teams and individuals develop and grow
- Empathic, is sensitive to those around them
- Disruptive, breaks the status quo, help create a new way of working
- Has faith in self-organization. A great Scrum Master understands the power of a self-organizing team. “Bring it to the team” is his daily motto. Attributes of self-organizing teams are that employees reduce their dependency on management and increase ownership of the work. Some examples are: they make their own decisions about their work, estimate their own work, have a strong willingness to cooperate and team members feel they are coming together to achieve a common purpose through release goals, sprint goals and team goals.
- Values rhythm. A great Scrum Master understands the value of a steady sprint rhythm and does everything to create and maintain it. The sprint rhythm should become the team’s heartbeat, which doesn’t cost any energy. Everyone knows the date, time and purpose of every Scrum event. They know what is expected and how to prepare. Therefore a complete focus on the content is possible.
- Knows the power of silence. A great Scrum Master knows how to truly listen and is comfortable with silence. Not talking, but listening. He is aware of the three levels of listening and knows how to use them. He listens carefully to what is said, but also to what isn’t said.
- Observes. A great Scrum Master observes his team with their daily activities. He doesn’t have an active role within every session. The daily Scrum for example is done by the team itself. He observes the session and hereby has a more clear view to what is being discussed (and what isn’t) and what everyone’s role is during the standup.
- Share experiences. Great Scrum Masters share experiences with peers. This might be within the organization, but also seminars and conferences are a great way to share experiences and gather knowledge. Of course writing down your lessons learned is also highly appreciated. And yes, for the attentive readers, this is exactly the same as for the Product Owner and the Development Team.
- Has a backpack full of different retrospective formats. A great Scrum Master can apply lots of different retrospective format. This ensures the retrospective will be a fun and useful event for the team. He knows what format is most suitable given the team’s situation. Even better: he supports the team by hosting their own retrospective. To improve involvement this is an absolute winner!
- Can coach professionally. A great Scrum Master understands the power of professional coaching and has mastered this area of study. Books like Coaching Agile Teams and Co-Active Coaching don’t have any secrets for him. He knows how to guide without prescribing. He can close the gap between thinking about doing and actually doing. And he can help the team members understand themselves better so they can find news ways to make the most of their potential. And yes, these last sentences are actually an aggregation of several coaching definitions, but it’s sound quite cool!
- Has influence at organizational level. A great Scrum Master knows how to motivate and influence at tactic and strategic level. Some of the most difficult impediments a team will face occur at these levels; therefore it’s important a Scrum Master knows how to act at the different levels within an organization.
- Prevent impediments. A great Scrum Master not only resolves impediments, he prevents them. Due his experiences he is able to ‘read’ situations and hereby act on them proactively.
- Isn’t noticed. A great Scrum Master isn’t always actively present. He doesn’t disturb the team unnecessary and supports the team in getting into the desired ‘flow’. But when the team needs him, he’s always directly available.
- Forms a great duo with the Product Owner. A great Scrum Master has an outstanding partnership with the Product Owner. Although their interest are different, the Product Owner ‘pushes’ the team, the Scrum Master protects the team. A solid partnership is extremely valuable for the Development Team. Together they can build the foundation for astonishing results.
- Allows leadership to thrive. A great Scrum Master allows leadership within the team to thrive and sees this as a success of their coaching style. They believe in the motto “leadership isn’t just a title, it’s an attitude”. And it’s an attitude everyone in the team can apply.
- Is familiar with gamification. A great Scrum Master is able to use the concepts of game thinking and game mechanics to engage users in solving problems and increase users’ contribution.
- Understands there’s more than just Scrum. A great Scrum Master is also competent with XP, Kanban and Lean. He knows the strengths, weaknesses, opportunities and risks of every method/framework/principle and how & when to use them. He tries to understand what a team wants to achieve and helps them become more effective in an agile context.
- Leads by example. A great Scrum Master is someone that team members want to follow. He does this by inspiring them to unleash their inner potential and showing them the desired behavior. At difficult times, he shows them how to act on it; he doesn’t panic, stays calm and helps the team find the solution. Therefore a great Scrum Master should have some resemblance of Gandalf. The beard might be a good starting point :)
- Is a born facilitator. A great Scrum Master has facilitation as his second nature. All the Scrum events are a joy to attend, and every other meeting is well prepared, useful and fun, and has a clear outcome and purpose.
martes, marzo 01, 2016
Les dejo 25 caracteristicas de un gran equipo de desarrollo de software ágil:
- Pursue technical excellence. Great Development Teams use Extreme Programming hereby as a source of inspiration. XP provides practices and rules that revolve around planning, designing, coding and testing. Examples are refactoring (continuously streamlining the code), pair programming, continuous integration (programmers merge their code into a code baseline whenever they have a clean build that has passed the unit tests), unit testing (testing code at development level) and acceptance testing (establishing specific acceptance tests).
Apply team swarming. Great Development Teams master the concept of ‘team swarming’. This is a method of working where a team works on just a few items at a time, preferably even one item at a time. Each item is finished as quickly as possible by having many people work on it together, rather than having a series of handoffs.
- Use spike solutions. Great Development Teams uses spike solutions to solve challenging technical, architectural or design problems.
- Refine the product backlog as a team. Great Development Teams consider backlog refinement a team effort. They understand that the quality of the product backlog is the foundation for a sustainable development pace. Although the Product Owner is responsible for the product backlog, it’s up to the entire team to refine it.
- Respect the Boy Scout Rule. Great Development Teams use the Boy Scout Rule: always leave the campground cleaner than you found it. This means they always check a module in cleaner than it was before.
- Criticise ideas, not people. Great Development Teams criticise ideas, not people. Period.
- Share experiences. Great Development Teams share experiences with peers. This might be within the organisation, but also seminars and conferences are a great way to share experiences and gather knowledge. Of course writing down your lessons learned is also highly appreciated. And yes, for the attentive readers, this is exactly the same as for the Product Owner.
- Understand the importance of having some slack. Great Development Teams have some slack within their sprint. Human beings can’t be productive all day long. They need time to relax, have a chat at the coffee machine or play table football. They need some slack to be innovative and creative. They need time to have some fun. By doing so, they ensure high motivation and hereby maximum productivity. But slack is also necessary to handle emergencies that might arise, you don’t want your entire sprint to get into trouble when you need to create a hot-fix. Therefore: create some slack! And when the sprint doesn’t contain any emergencies: great! This gives the team the opportunity for some refactoring and emergent design. It’s a win-win!
- Have fun with each other. Great Development Teams ensure a healthy dose of fun is present every day. Fostering fun, energy, interaction and collaboration creates an atmosphere in which team will flourish!
- Don’t have any Scrum ‘meetings’. Great Development Teams consider the Scrum events as opportunities for conversations. Tobias Mayer describes this perfectly in his book ‘The Peoples Scrum’: “Scrum is centered on people, and people have conversations. There are conversations to plan, align, and to reflect. We have these conversations at the appropriate times, and for the appropriate durations in order to inform our work. If we don’t have these conversations, we won’t know what we are doing (planning), we won’t know where we are going (alignment), and we’ll keep repeating the same mistakes (reflection).”
- Know their customer. Great Development Teams know their real customer. They are in direct contact with them. They truly understand what they desire and are therefore able to make the right (technical) decisions.
- Can explain the (business) value of technical tasks. Great Development Teams understand the importance for technical tasks like e.g. performance, security and scalability. They can explain the (business) value to their Product Owner and customer and hereby ensure its part of the product backlog.
- Trust each other. Great Development Teams trust each other. Yes, this is obvious. But without trust it’s impossible for a team to achieve greatness.
- Keep the retrospective fun. Great Development Teams think of retrospective formats themselves. They support the Scrum Master with creative, fun and useful formats and offer to facilitate the sessions themselves.
- Deliver features during the sprint. Great Development Teams deliver features continuously. Basically they don’t need sprints anymore. Feedback is gathered and processed whenever an item is ‘done’; this creates a flow of continuous delivery.
- Don’t need a sprint 0. Great Development Teams don’t need a sprint 0 before the ‘real’ sprints start. They already deliver business value in the first sprint.
- Act truly cross-functional. Great Development Teams not only have a cross-functional composition but also really act cross-functional. They don’t talk about different roles within the team but are focused to deliver a releasable product each sprint as a team. Everyone is doing the stuff that’s necessary to achieve the sprint goal.
- Update the Scrum board themselves. Great Development Teams ensure the Scrum/team board is always up-to-date. It’s an accurate reflection of the reality. They don’t need a Scrum Master to encourage them; instead they collaborate with the Scrum Master to update the board.
- Spend time on innovation. Great Development Teams understand the importance of technical/architectural innovation. They know it’s necessary to keep up with the rapidly changing environment and technology. They ensure they have time for innovation during regular working hours, and that it’s fun and exciting!
- Don’t need a Definition of Done. Great Development Teams deeply understand what ‘done’ means for them. For the team members, writing down the Definition of Done isn’t necessary anymore. They know. The only reason to use it is to make the ‘done state’ transparent for their stakeholders.
- Know how to give feedback. Great Development Teams have learned how to give each other feedback in an honest and respectful manner. They grasp the concept of ‘impact feedback’. They give feedback whenever it’s necessary, and don’t postpone feedback until the retrospective.
- Manage their team composition. Great Development Teams manage their own team composition. Whenever specific skills are necessary, they collaborate with other teams to discuss the opportunities of ‘hiring’ specific skills.
- Practice collective ownership. Great Development Teams understand the importance of collective ownership. Therefore they rotate developers across different modules of the used applications and systems to encourage collective ownership.
- Fix dependencies with other teams. Great Development Teams are aware of possible dependencies with other teams and manage these by themselves. Hereby they ensure a sustainable development pace of the product.
- Don’t need story points. Great Development Teams don’t focus on story points anymore. They’ve refined the product backlog in such a manner, the size for the top items don’t vary much. They know how many items they can realise each sprint. Counting the number of stories is enough for them.