Software Development Linkopedia December 2021

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 software maintenance, coaching software developers, software engineering culture, DevOps, MVP, software architecture, refactoring code, metrics and test automation.

Software Development Linkopedia Decembe

Text: Amortizing Software Rewrites: An Evolutionary Approach How to rewrite legacy applications or split monoliths into microservices without slowing down on delivering features or introducing bugs in your system. The need to rewrite whole or parts of software arises quite often. Be it legacy modernization where an organization plans to move from monoliths to microservices, or parts of the application have become so complex and difficult to extend that they call for a rewrite. With the modern pace of software development, changes are the rule rather than the exception. What was correct yesterday has to be revised again tomorrow.
Text: Writing Tests as User Stories in React Testing code can be a controversial subject, largely due to the multitude of ways one can go about writing a test. There are no clear rules, and ultimately you are the one in charge of deciding what’s worth testing and how you’re going to do it. One common mistake is to test implementation details, but perhaps you’ve read that already.
Text: Coaching Testers versus Developers After many years leading and coaching testers, for the past 6 months I’ve been working with developers as a quality coach. I’m keen to share lessons learned from my experience so far and to learn from others working in Quality Assistance and Quality Coaching roles.
Text: Driving Cultural Change Through Software Choices Software developers have more power than they imagine to change the software engineering culture around them. As you build software that others will use or that your peers will work on, are you making it easy for them to do the right thing? If you build platforms, bake in easy integrations for the software values you want to see. If you’re in the position to choose new tools, pick ones that support the standards you want taken seriously. And as you write code, make it easy for others who will copy-paste what you’ve done to then do the right thing.
Text: Complete CI/CD with AWS CodeCommit, AWS CodeBuild, AWS CodeDeploy, and AWS CodePipeline An integral part of DevOps is adopting the culture of continuous integration and continuous delivery/deployment (CI/CD), where a commit or change to code passes through various automated stage gates, all the way from building and testing to deploying applications, from development to production environments. This article uses the AWS suite of CI/CD services to compile, build, and install a version-controlled Java application onto a set of Amazon Elastic Compute Cloud (Amazon EC2) Linux instances via a fully automated and secure pipeline. The goal is to promote a code commit or change to pass through various automated stage gates all the way from development to production environments, across AWS accounts.
Text: Seven Reasons To Build MVP For Your Business
The Minimum Viable Product (MVP) is an approach that aims to avoid building products that customers don’t need or want by maximizing your learning about what is valuable for them. In this article, Sergej Hermoni shares seven reasons why you should include building an MVP in your Agile approach.
Text: Best Practices for SQL Server Configuration Tuning and Improving Performance If a SQL server is the bedrock of your app or service, then its performance will be a big part in determining the responsiveness and fluidity of the end-user experience. As such, it is only by monitoring database performance from moment to moment and tracking usage trends over time that you can optimize it successfully.

Video: Why Software Architects Fail And What to Do About It We have all seen software architects with their ambitious projects, starting out with grand visions, ending up as costly lessons in what not to do, leaving behind the ruins of promising paradigms, technologies, tools, and careers. But why do software architecture approaches sometimes hurt instead of providing value? Why has “software architect” become a negative term for some people? And what can we do to improve our own work?
Video: Using Metrics as a Map to Navigate Uncertainty This session won’t teach you to eliminate uncertainty or allow you to see the future, but it will provide you with tools to explore and chart a reasonable course through the inherent ambiguity of knowledge work by simply measuring units of value delivered over time.
Video: How to Get 100% Cleanly Refactored Tested Code In this guided demo, we are going to look at 3 different software engineering techniques that are remarkably powerful in combination to cut through legacy code without having to go through the bother of reading or understanding it.
Video: Measuring Outcomes: How to Get Meaningful Agile Metrics
“How well is your delivery team doing?” That seems like a straightforward question for an Agile team, but it is more complicated that it might sound at first. Do we know what it means to “do well” or is it one of those things that is different to everyone?
Video: You Need to Redefine Test Automation Test Automation, a term everyone in testing probably hears on a regular basis, but what is it? If we listen to consultancies and tool vendors, it is the holy grail. If we listen to some gurus in the software testing domain, it is the current and future of testing. Others are more conservative. However, you commonly hear people say Test Automation when they actually mean Automated Testing, to be frank, they have become synonyms.

Tools: Selenoid is a powerful implementation of Selenium hub using Docker containers to launch browsers.
Tools: Taskcafe is a golang-based open source project management tool with Kanban boards
Tools: Open Source JavaScript Code Analysis The quality of the JavaScript code is often verified with the traditional activities of unit and functional testing. There are however tools that allow checking code before or during its execution to assess its quality and its adherence to coding standards using a process called code analysis. This article presents a list of open source tools to perform static and dynamic code analysis on JavaScript programs.
Tools: Gaphor is an open source Unified Modeling Language (UML) and SysML modeling tool written in Python. It also implement the C4 Model for software architecture and Risk Analysis and Assessment Modeling Language (RAAML), Gaphor is designed around the principles simplicity, consistency and workability. Gaphor implements a fully-compliant UML 2 data model, so it is much more than a picture drawing tool. You can use Gaphor to quickly visualize different aspects of a system as well as create complete, highly complex models.