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 senior software engineer, project management constraints, software metrics, automated tests, scaling software development teams, test plans and API testing tools.
Text: What a Senior Staff Software Engineer Actually Does Almost every software company that I’ve ever talked to has both a technical track and a management track meaning that if you stay on the technical track, you can advance to equally senior levels without managing people. At the same time, almost every career talk or panel that I’ve ever attended is by someone from the management track. Now I’ve always understood, at least at a high level, what a manager does and what the management track entails. Part of this is because the more senior roles in the management track have a high amount of visibility, both internally and externally. The same is also true on the technical track, but to a much lower extent, resulting in a bit of mystery around those roles.
Text: Rethinking the Triple Constraint: Five Project Dimensions The notion of such a “triple constraint” or “iron triangle” appears throughout project management. The problem is that I’ve seen numerous representations of the triangle with various parameters – size, cost, time, or scope – and various assumptions about what’s being held constant. The classic triangle doesn’t show quality explicitly. Does that mean that quality is a non-negotiable expectation, or — more likely — that you get whatever quality the team can achieve within the constraints the other parameters impose? In my view, the traditional triple constraint is wrong, although the concept of constraints and trade-offs is certainly valid.
Text: Dysfunctional metrics kill agile transformations Agile transformation is a journey, and a long one for most organizations. Such multi-year initiatives usually start with a strategic purpose, and from top leadership. With such stakes at play, it’s inevitable that clients ask, “are we there yet?” In response to the question, teams often come armed with charts, slides and metrics that showcase the journey’s progress. This armory of information is usually collected with budgetary justifications in mind. But, the clients just really want to know if the transformation is enabling faster delivery of high quality software, and if the business is adapting to change without losing go-to-market predictability. I’d like to discuss the reason a fiscally-motivated set of metrics are misleading and ultimately detrimental to the transformation journey.
Text: How to Write Automated Tests Correctly? Test automation is an important asset of software development teams, especially for Agile teams that have a limited amount of time to perform software testing activities. This article shares some tips to improve your automated test writing practices.
Text: Scaling Engineering Teams via RFCs: Writing Things Down I have recently been talking at small and mid-size companies, sharing engineering best practices I see us use at Uber, which I would recommend any tech company adopt as they are growing. The one topic that gets both the most raised eyebrows, as well the most “aha!” moments is the one on how the planning process for engineering has worked since the early years of Uber. When working at large companies like Microsoft or smaller ones like Skyscanner, there have been two things related to planning that have always bugged me. First, the lack of visibility on others building or having built the same thing as my team. Second, the tech and architecture debt accumulated due to different teams building things very differently, both approach-wise and quality-wise.
Text: Do You Really Need a Test Plan? Many organizations feel they need a formal test plan to drive their QA strategy. But do they really need one at all?
Text: Agile Software Development Metrics & KPIs for Teams From the perspective of Scrum, metrics and KPI evaluations are a few of the last frontiers in the process for continuous improvement. In this article, Lucas Napoli shares some metrics and KPIs that Agile software development teams should be aware of.
Text: Best Features to Look for in API Testing Tools Testing is an important activity of the deployment an API. This article shares some tips on how to choose an API testing tool with the right features for your organization requirements of your APIs as well as your business processes.
Video: The Heart of Domain-Driven Design (DDD) Domain-Driven Design (DDD) is one of the best thing to happen to software development in decades. It has within it the key to our hardest software architecture problems: how to slice up our software, how to write maintainable software, how to name things … and most importantly of all, how to meet the needs of our users. But there is a problem.
Video: Deconstructing Deep Learning and Artificial Neural Networks Watch this video for a mathematics and jargon free presentation and introduction to Deep Learning and Artificial Neural Networks!
Video: Get the Most from Modern Java Versions With the release of JDK 15, there has been seven new versions of Java in the past three years. Java developers are now being provided with new features at a faster pace than at any time in the 25-year history of the Java programming language.
Video: How to Prioritize What to Test It can be intimidating for inexperienced software development teams embarking on their test automation journey for an existing code base. There is so much to test, and so many ways to test. You can often see teams stuck with debating on where to start software testing and what tools to use and best practices.
Video: Prioritizing Technical Debt This presentation explains how easily obtained version-control data lets you uncover the behavior and patterns of the development organization and manage technical debt. This language-neutral approach lets you prioritize the parts of your system that benefit the most from improvements so that you can balance short- and long-term goals guided by data.
Tools: Kraken CI delivers a modern, open-source, on-premise CI/CD system that is highly scalable and focused on software testing. Kraken CI operates according to the Continuous Integration philosophy. It focuses on supporting two main phases of a software development workflow: pre-commit and post-commit phases.
Tools: MAF (Modular Automation Framework) is an expandable fast, easy to use automation framework built in the cucumber language. Supports API Testing and SQL Testing in a simple manner. Allows the usage of modules in isolation as well as in an integrated fashion. Utilizes the cucumber language to clearly articulate intent while preserving test data for further debugging and record-keeping. Allows the integration of custom modules and provides a core to allow for simple integration between components.
Tools: Free Retrospective Tools for Distributed Scrum Teams
Even if Agile approaches favor collocated teams, distributed Scrum teams are more common that what you might think. Many Agile software development teams are based on a virtual organization.