Being brave is about doing what is necessary, even when you are afraid. The single most important thing in agile is to inspect and dare to change things which aren't working. You can start with small experiments to find solutions, and if it turns they do not work, then you can stop them.
People can feel limited when challenged, which slows them down or keeps them from trying. It can be a real problem, but their fear might actually be in their imagination. Sometimes the only thing that's holding you back is yourself. Survival rules can hinder us- sometimes you have to break them.
Testing techniques like Equivalence Partitioning, Boundary Value Analysis, and Risk-based Testing can help you decide what to test and when to automate a test. InfoQ spoke with Adrian Bolboacă about different types of tests, writing sufficient and good acceptance tests, criteria to decide to automate a test, and how to apply test automation to create executable specifications.
Approval testing is a test technique which compares the current output of your code with an 'approved' version. The approved version is created by initially examining the test output and approving the result. You can revisit the approved version and easily update it when the requirements change. Approval testing is supported by TextTest, an open source tool for text-based functional testing.
Dead code needs to be found and removed; leaving dead code in is an obstacle to programmer understanding and action, and there's the risk that the code is awakened which can cause significant problems. Deleting dead code is not a technical problem; it is a problem of mindset and culture.
Complex AI systems with non-deterministic outcomes pose challenges for testers and programmers. Such systems will increasingly become normal in high-impact, high-risk applications, argues Fiona Charles; testers should increase their capacity for thinking and learning and develop a number of personal strengths such as courage and good judgement.
Try to keep units small, use appropriate tools, and pair-up programmers and tester; these are suggestions for writing good unit tests. Unit testing is a mixture of programming and testing; programmers can work together with testers to learn from each other and broaden their knowledge horizons.
Technology makes it easier to collaborate, but also distracts us and can have negative consequences on the quality and content of our personal interactions. The mere presence of a cell phone can pull you away from a task and reduce your focus. An interview with Jeffery Hackert on cultivating attention, awareness and empathy when working in teams, and giving and receiving uninterrupted attention.
Feedback can be used to build trust in teams and help individuals improve their skills and grow in their craft. Emily Page and Doug Talbot shared their experiences from experimenting with peer feedback at Ocado Technology at Spark the Change London 2016. An interview with Emily Page, Organizational Catalyst at Ocado Technology.
More and more now value is created through connected organizations and individuals using seamless collaboration across boundaries. At the same time however, many companies are still influenced by management practices invented in 19th century. A paradigm shift is needed to successfully manage in the networked society.
Skill matrixes support self organization in teams and help to create intrinsic motivation, where people want to learn new things. They can show how cross-functional teams really function and provide insight into bottlenecks found in teams.
Alexandre Magno, author of the book ”How Creative Workers Learn", gave a masterclass at the Scrum Gathering Portugal 2016 showing the power of the practices that emerge from the inside of an organization instead of being imported from the outside.
When you want to scale the number of A/B tests to do many experiments at the same time, you need to adopt your processes and platform, and it might also impact your culture. Doing product research with controlled experiments helps to confront your ideas about how customers will use your product in reality, and check if those ideas actually impact user behaviour.
The Cloud, infrastructure as code, federated architectures with APIs, and anti-fragile systems: these are technologies for developing software systems that are rapidly coming into focus, claimed Mary Poppendieck. Systems are moving towards the cloud, and APIs are replacing central shared databases and enable the internet of things. We need to develop anti-fragile systems which embrace failure.
To remain agile while offshoring software development, you have to invest time to make agile practices work under conditions where they are not supposed to work. Giving up is often not an option; you need to stretch agile practices by going back to the principles and collaboratively find ways to scale them and make them work effectively in a distributed environment.