Here is our monthly software development links selection of knowledge on programming, software testing and project management. This month you will find some interesting information and opinions about software estimations, productivity metrics, flaky tests, structuring software testing, Agile teams dynamic, testing with Java scrappers.
Text: Software Estimation is a Losing Game Software estimation is the process of predicting the time and effort required to accomplish development or maintenance tasks. Estimates are generally used to help customers (this could be your own organization) make decisions. Customers often want a general idea of how long it will take to accomplish tasks and since the customer is always right, we engineers have always agreed to participate in a practice that we frankly despise. We estimate because it’s easier to sell a software solution with a fixed delivery time than to actually admit that the customer is simply going to get whatever product your team can complete in the allotted time. The estimate becomes our commitment to delivering a piece of software under some arbitrary deadline. Sadly, we commit to these deadlines, despite the likelihood of missing them, and in full acknowledgement of the consequences of missing our estimates.
Text: No Single Metric Captures Productivity The urge to measure the productivity of developers is not new. Since it is often the case at organizations that more code needs to be written, many attempts have been made to measure productivity based on lines of code (LOC). For example, in early 1982, the engineering management of developers working on software for the Apple Lisa computer decided to start tracking LOC added by each developer. One week, the main user interface designer, Bill Atkinson, optimized Quickdraw’s region calculation machinery and contributed -2000 LOC. The management stopped asking for his LOC.
Text: Handling Flaky Tests at Scale: Auto Detection & Suppression At Slack, the goal of the Mobile Developer Experience Team (DevXp) is to empower developers to ship code with confidence while enjoying a pleasant and productive engineering experience. We use metrics and surveys to measure productivity and developer experience, such as developer sentiment, CI stability, time to merge (TTM), and test failure rate. The DevXp team has continuously invested in test infrastructure and CI improvements, but one of the biggest impediments to our progress is the high — and ever increasing — rate of test failures due to flaky tests. Before we automatically handled flaky tests, the main branch stability was hovering around a 20% pass rate.
Text: Designing and evaluating metrics Now more than ever, we need clear thinking about what measurements we should use to understand our world, our products, and ourselves. A metric is simultaneously 1) a designed artifact, 2) a lens through which we observe phenomena, and 3) way we set and monitor goals. The goal of this post is to articulate how I think about metrics (after spending several years on dozens of data science projects). I propose five key properties of metrics that represent key tradeoffs in the design process, as well as a depiction of the lifecycle of a metric.
Text: Hourglass into Pyramid: how you can improve the structure of your tests My name is Uladzislau Ramanenka and I’m a Senior iOS QA Engineer at Bumble Inc, the parent company that operates Bumble and Badoo, two of the world’s highest-grossing dating apps with millions of users worldwide. We strive to deliver the best possible customer experience. To this end, we are constantly improving our apps and regularly deliver many new qualitative features. For us, one of the ways we prevent bugs from escaping into the wild and affecting customer experience is by using automated testing. The earlier the bug is caught, the less expensive it is to resolve. The other thing test automation allows us to do — is support the ability to change. Whether adding new features or doing a large redesign — automated tests can quickly pinpoint errors. They enable us to change the software with confidence.
Text: The Human Factor in Agile: Understanding the Importance of Team Dynamics Understanding the significance of team dynamics is essential in fostering an Agile environment that nurtures collaboration, innovation, and productivity. This article discusses the importance of team dynamics for Scrum teams.
Text: Testing Your Website & Applications Using Java Scrapers Making sure your website or app works as intended is a must. There are lots of ways to test this, and Java-based scraping is a compelling example. Let’s look at what this means exactly, what it involves, and how Java scrapers can help you up your software testing game.
Video: Genuinely Multidisciplinary Software Project Teams This presentation will help you understand the power of multidisciplinary software development project teams, why we are in a place to build them now, and how you might get started.
Video: A Contrarian View of Software Architecture The presenter has spent an inordinate amount of time the past half decade across multiple companies working with very large, long-running enterprise software systems. Especially in long-running, constantly changing systems, you want the code and the software architecture to be easy to understand, relatively painless to extend or modify, and when advantageous, be simple to modernize with updated technology.
Video: How to Choose the Best Database for your Application This presentation on how to choose the best database for your application reviews the strengths and qualities of each database type from their particular use-case perspectives. Although having everything in one database seems like the straightforward path, it is not always the most cost or time effective path.
Video: Think About Memory: How to Write Fast Java Code This presentation discusses things that affect (CPU bound) performance of Java code. A key message is that Java developers DO need to worry about memory, even if garbage collection rarely is a problem.
Video: JavaScript Metaprogramming ES6 greatly expands upon JavaScript’s existing metaprogramming capabilities with the Symbol, Reflect, and Proxy types. Through some practical examples, this presentation discusses the role each of these types play within JavaScript metaprogramming and see how they not only affect your code but even drive several modern language features.
Video: Tips for Effectively Applying the Product Owner Role This presentation offers tips to successfully apply the product owner role. It distinguishes different product owner flavors, explains hope the Scrum product owner role differs from the SAFe one, and how product ownership can be scaled.
Video: End to End (E2E) Testing Considered Harmful This video presents the impact of End-To-End Testing upon a large scale agile project within the UK government, covering the historical motivation for End-To-End Testing so common to IT and how it has hindered team adoption of Continuous Delivery.
Video: Sustainable Pace?! How Self-Care Boosts Project Teamwork Finding the right balance in software development organizations is neither an individual task nor is it only a project team’s responsibility. It is an interaction of both and more! Software project managers also play a vital role as they often (still) have a higher organizational lever.
Tools: CRISP is an open-source Chrome extension which helps to select web elements on the page, automatically populate its selectors, assign configured actions and generate ready test code based on the customized patterns. It can speed up the process of test development by replacing manual time-consuming operations with automated features.
Tools: Open Source Test Data Generators In most of your software testing activities, you need data. Sometimes you can rely on a small sample, but if you want to perform some load testing or if you want to test a feature that needs to produce a multipage invoice, then you start to need more than just two or three occurrences. Test data generators are tools that can help you in this task with the automatic generation of hundreds or thousands of customers, products or accounts items with different attributes for their id, email, name, etc.
Tools: Open Source Planning Poker Tools The first thing to say is that the term “Planning Poker®” is a registered trademark of Mountain Goat Software, the Mike Cohn company. This is why this agile planning practice could be sometimes names differently: scrum poker, agile poker, etc. This article presents a list of free and open source planning poker tools and plugins that are also directly available as online tools.