Building Something from Scratch — Week 1
Officially, the second phase of the Academy starts. At the beginning of this phase, we have some material to watch and learn from it. This material will help to get a better performance in the project. Excitement and nervousness are emotions involved in me. Trying to make a big impact for the food bank and do it the best possible are the challenges to achieve.
The first material I watched was the videos of agile practices. These videos are full of useful practices used by agile teams in the software industry. I’m going to list the most relevant information of each video and I think it could help my team and me to achieve the goal of Building Something from Scratch.
Pair programming. It helps to build quality into the work. It creates a Driver-Navigator relation.
Continuos integration. It means building and expanding the system continuously instead of building the components separately and putting them together at the end. It reduces risk and helps to deliver a free defect solution.
Frequent Small Release. It means that giving constant results to the client provides good results for both parties. If you join it with continuous feedback, it will provide a variable working solution and a good return on investment for the customer.
Definition of done. It’s important to accurately measure the progress of their work. It consists of a checkpoint that defines what is done for the team.
Burn-up charts. It’s a metric that monitors and assesses the actual delivery against the planned delivery. It also identifies potential dysfunctions and communicates the progress of the project. Charts highlight risks and it provides a reliable basis for decision making.
Test Driven Development. TTD develops automated test cases for enhancements or new features before they write any code. The process consists of three steps:
- Writing a failing test.
- Write the simplest code possible to pass that test.
- Code refactored. It ensures it meets the required standards of the code.
It helps to ensure quality, and it keeps code clear, simple, and testable. It provides documentation for different team members, repeatable tests, it acts as an enabler for rapid charge and refractory.
Automated Testing. It provides some benefits as reduced testing time, early feedback, and reliability and repeatable. Automated testing is essential to gaining the advantage of these benefits. There are different types of testing:
- Unit.
- Integration.
- Functional.
- Story
It reduces risks and saves the cost of repetitive manual testing. Agile teams use it to help respond quickly and cost-effectively to charge.
Planning poker. It is a tool that encourages all team members to contribute to the activity of estimation and share their opinions and concerns. The team members hear the task and they choose a card (number), then they expose their numbers and explain why.
Retrospectives after iterations. This allows a team to regularly pause and reflect on how they are working together, how to improve, and what issues need clarification. It usually occurs at the end of each iteration or implementation of a significant event or deliverable. It consists of some questions:
- What worked well?
- What didn’t work well?
- What still puzzles me?
- What are we going to change?
Sustainable Pace. Working at a sustainable pace ensures agile teams have time to plan, think, rest and deliver effectively. The more relaxed and rested a team is, the better they can perform at a sustainable pace. It consists on reflect on what we could do to improve to work smarter and not harder.
Success slides. The sponsor and product owner needs to be involved during the development of the project. Everybody like for example the product owner, agile coach, head of HR, It leader, team leader, and business analyst gets meetings to define the success criteria:
- Scope
- Cost
- Time
- Quality
They discuss how fixed or flexible should be the criteria of the project, and the product owner and sponsor decide it.
Prioritisation. The requirements of the project are written on cards. All members decide to prioritize the criteria of the project. This prioritization uses MoSCoW. M means Must have (non-negotiable), S is Should have (if possible), C means Could have (nice to have) and W refers to won’t have.
The cards have the following format:
- As a _______
- I need _____
- So that ____
It is a way to prioritize the user stories.
Showcases. To demonstrate completed work to the product owner, project sponsor, and other stakeholders to get feedback. To make sure that everyone is on the same page, it is necessary to follow the following questions:
- What is completed.
- What is still in progress
- What they have achieved to date
Stand ups. They consist that each member gives an update of their work. They usually answer the following questions:
- What work did I complete yesterday?
- What do I plan to complete today?
- Do I have blockers?
It is a brief daily meeting, where the project manager is mainly there to hear about the blocks. Stand-ups help to know the current situation.
Big visible charts. They help to make work visible to anyone, so information is clear to see and understand. The format consists of backlog, analysis, development, in test, and done and ready to sign.
Social contracts. It consists of the agreement of each member that they will commit. The social contact consist of:
- Promise behavior by setting a baseline.
- It’s a living document.
- It encourages collaborative behavior and creates a respectful and safe environment.
Story cards/user stories. After capturing requirements, they do it from the perspective of the user. The format consists of:
- As a ______ (Who)
- I need ____ (What)
- So that ___ (Why)
It should deliver business value fast and with less risk. It also consists of acceptance criteria, this acceptance criteria will let the team know when the story is done.
Workshops are needed with potential users in order to capture their stories. The stories help to prioritize and estimate their work.
The antifragile video teaches about what is antifragile, why it is important, and how we could use it in our favor. Antifragile is a concept that applies to something or anyone that gets better or stronger when it gets hurt or kicked around. In other words, it means being adaptable to any situation.
To obtain the benefits of antifragile, we should crave disorder. But also, it requires at least two must-haves: just enough stressors and recovery time.
Being antifragile also means being open to failure. To get success, you have to fail and learn from it. Routine is the worst enemy for the objective of being antifragile.
Changing your mindset is fundamental to incorporate the successfully antifragile mentality. You have to look for the bright side and how it can make you better.
I think that the antifragile concept will help my team to get better after this project. We should keep our growth mindset during this journey.
Optimistic bias is an interesting video. I didn’t know about this phenomenon, and how it impacts our lives. According to the author, people are more optimistic than realistic, but we are oblivious to the fact.
People tend to be more optimistic about themself and more pessimistic about others and their country. “That doesn’t happen to me” is a mentality more common than I tough.
According to the speaker, the optimistic bias is important because of the following reasons:
- People with high expectations always feel better (Interpretation about the result and situation matters).
- Anticipation makes us happy.
- Optimism changes objective reality.
But like everything, it has negative aspects. Unrealistic optimism can lead to risky behavior. Knowledge about ourselves and situations will help us to keep balance.
The content of this video will help my team to keep balance in our emotions and expectations, so we could get a better result in the project.
How do we heal medicine? is an interesting video about how to overcome the issues that affect healthcare nowadays. According to Atul, the members of healthcare should work as a pit crew. Atul Gawande explains some issues that occur in the treatment of some diseases.
He describes how systems are the most successful, but usually, we are obsessed with the components of it like drugs, technologies, and specialists. But we should figure out to make all these components work together.
Necessary skills to apply a system correctly:
- Ability to recognize success and ability to recognize failure.
- Devise solutions (Checklist)
- Implant this idea. Humility, discipline, and teamwork are fundamental values to the implementation of the system.
I learned a lot of things related to the project from this phase. This week I learned about the good practices related to planning the proposal to the client. I learned additionally about how we should organize to develop a software project. The agile videos were useful to understand the importance of these practices and how they will impact in our work.