Here is our monthly selection of knowledge on programming, software testing and project management. This month you will find some interesting information and opinions about learning software development, autonomous teams, flaky tests, backlog refinement, technical debt, test automation, software architecture, developing AI software.
Text: Things I Learnt The Hard Way (in 30 Years of Software Development) This is a cynical, clinical collection of things I learnt in 30 years working with software development. Again, some things are really cynical, others are long observations on different jobs.
Text: Test Flakiness – One of the main challenges of automated testing Dealing with test flakiness is a critical skill in testing because automated tests that do not provide a consistent signal will slow down the entire development process. If you haven’t encountered flaky tests, this article is a must-read as it first tries to systematically outline the causes for flaky tests. If you have encountered flaky tests, see how many fall into the areas listed.
Text: Managing developer identities in autonomous teams. This article talks about autonomous teams, evolution of developer self-identities, and a manager’s role in all this.
Text: 5 Tips to Improve Product Backlog Refinement The Product Backlog Refinement (PBR) activity is one that many new Scrum teams struggle with. Insufficient PBR often results in long sprint planning meetings and incomplete backlog items at the end of the sprint. This article provides some tips on how to improve backlog refinement, which in the past was called backlog grooming.
Text: Technical Debt: Poor System Understanding While Time Constrained Technical Debt occurs when a local optimum is prioritized over a global solution. This commonly occurs when there is poor understanding of the system combined with a time constraint. Viewing technical debt as a system problem along the dimensions of time and system understanding can lead to insights on how better alignment can help reduce technical debt in projects. Time and System Understanding are two common contributors to technical debt, this blog explains how they are related, how they can promote or reduce technical debt, and some strategies for keeping technical debt at bay or removing it completely.
Text: Developers mentoring other developers: practices I’ve seen work well Mentorship has been the best things that’s sped up my growth and others engineers around me. This post discusses mentorship practices that work well engineer-to-engineer
Text: Redefine “Done” To Include Automation for Smarter, Faster Software Delivery In pursuing the twin goals of increased speed and continuous innovation, delivery teams have been busily ramping up automation efforts in the last few years. Test automation has been instrumental in helping accelerate release cycles, improve software quality and increase efficiency across the whole software delivery lifecycle (SDLC).
Video: The Evolution of the AI Software Developer. Learning to code in the modern era is a world away from how many current software developer acquired their skills. Programming used to be algorithmic and is becoming ever more heuristic in its nature, with machine learning and artificial intelligence (AI) coming more to the fore.
Video: Metrics Driven Software Architecture Everyone wants awesome architecture for their software development project. The kind of software architecture you can gladly show at conferences: scalable, secure, testable, and without technical debt. But how can we be sure we’re going in the right direction?
Video: How and Why to Upgrade to Java 17 Java upgrades are sometimes seen as difficult, and many Java applications are still running on an older version of Java. This session describes Java’s current six months release process and why applications should use a recent Java version.
Video: Technical Debt: Fixing Highest ROI Issues Does your technical debt backlog look endless? Are you thinking about pausing feature development to resolve technical debt? Stop. What if you were told that a good chunk of your backlog can simply wait? Technical debt can seem overwhelming when we look at it as a loosely organized list.
Video: What Are You Testing? Gojko Adzic presents five universal rules for test automation, that will help you bring continuous integration and software testing to the darkest corners of your system. Learn how to wrestle large test suites into something easy to understand, maintain and evolve, at the same time increasing the value from your automated tests.
Tools: Radish is an open source BDD tool completely written in python. In addition to the fully supported Gherkin language radish supports some more functionality like: Scenario Preconditions, Scenario Loops, Variables and Expressions. radish tries to provide the most awesome pythonic experiences when implementing your steps and hooks. Your test code should be as great as your project’s code.
Tools: Tekton is a cloud-native solution for building CI/CD systems. It consists of Tekton Pipelines, which provides the building blocks, and of supporting components, such as Tekton CLI and Tekton Catalog, that make Tekton a complete ecosystem.