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 developer happiness, suffering-oriented programming, technical debt, code models, TestOps infrastructure, soft skills for QA engineers and best practices.
Text: 21 Ways to Maintain Developer Happiness in Your Team I never heard of Developer Happiness until a few years ago. It never existed in my vocabulary, even though I was once a software engineering manager. I did lots of stupid things in the past that I sorely regret. One of them is never knowing the importance of developer happiness. While it is true we cannot make everyone happy, there are a few items we as leaders need to consciously work on to upkeep developer happiness.
Text: Suffering-oriented programming I follow a style of development that greatly reduces the risk of big projects like Storm. I call this style “suffering-oriented programming.” Suffering-oriented programming can be summarized like so: don’t build technology unless you feel the pain of not having it. It applies to the big, architectural decisions as well as the smaller everyday programming decisions. Suffering-oriented programming greatly reduces risk by ensuring that you’re always working on something important, and it ensures that you are well-versed in a problem space before attempting a large investment.
Text: Tech Debt Walls Every codebase carries some amount of technical debt. Every team would like to get better at managing that tech debt. The first step in managing something is making it visible. A tech debt wall is a simple, effective way to make tech debt visible.
Text: Effective Mental Models for Code and Systems A mental model is an explanation of someone’s thought process about how something works in the real world. It is a representation of the surrounding world, the relationships between its various parts and a person’s intuitive perception about his or her own acts and their consequences.
Text: TestOps Infrastructure from Beginning to End: Theoretical and Technical Aspects The creation of a TestOps infrastructure is a demanding task. TestOps (or test operations) refers to the discipline of managing the operational aspects of testing within the software delivery lifecycle. In this article, we focus on theoretical and technical aspects, and discuss some case studies to consider.
Text: 6 Soft Skills To Focus On When Hiring QA Engineers for a Scrum Team No matter what project you are running, it is essential to ensure your quality assurance (QA) specialists are the perfect fit. However, when it comes to Agile projects using Scrum, there is a need to recruit top-level QA engineers with the right skills to engage effectively during a sprint before anything has been built. It is essential to focus on the must-have soft skills for quality assurance specialists that can help them perform agile testing. This article will provide valuable insights to make the hiring process easier and more cost-effective.
Text: Rethinking Best Practices Best practices aren’t universal and the use of the term without deeper consideration can be problematic. They’re straightforward, simplistic answers to difficult questions. Quick answers can at times work in our favor, a way to avoid cognitive overhead and set a clear path to a solution. In fact, we regularly need shortcuts in our day to day work to be able to function, the trade off of efficiency for thoroughness. This is unfortunately too often co-opted and overused, rendering it specious as a mantra of “don’t think, just do” or as hand waving promotion of a product over guidance on a course of action. What should be a starting point to a conversation, to give way to deeper consideration and approaches, is instead left to be short circuited in favor of an unassailable talking point. The concepts behind best practices may be sound, but as they are not ubiquitous, they should be up for debate. Our tendency to skip deeper investigation, to assume an answer is correct based on a label, makes use of the term “best practice” dangerous.
Text: QA Interview from the Position of Potential Candidate Just imagine that you are tired of your current job in software quality assurance (QA) and want to find something new. If you are a good software tester, this does not mean that you know how to find a job or behave during an interview.
Video: How Team Culture Can Make or Break a Scrum Team Based on a true story of the lessons learned coaching two Scrum teams on one product. Why is it that the same coaching techniques, in the same environment, can lead to drastically different outcomes? Learn how to identify the culture cycle and break bad habits to unlock the power of Agile team self-management.
Tools: Instancio is a library for instantiating and populating objects with random data, making your tests more dynamic. Each test run is against a new set of inputs. The goal is to reduce the time and lines of code spent on manual data setup in unit tests, and potentially to uncover bugs that may have gone unnoticed with static test data. Instancio uses reflection to populate objects, including nested objects and collections. A single method call provides you with a fully populated instance of a class, ready to be used as an input to your test case.
Tools: Agile, Scrum & Kanban Redmine Plugins Redmine is a popular open source project management web application written using the Ruby on Rails framework. This software is more oriented towards a traditional approach for project management with Gantt charts and calendar than Agile, Scrum or Kanban. However, the Redmine architecture allows however creating plugins to add additional features. The development of a number of Agile, Scrum, Kanban and Lean plugins has therefore been started in these past years.
Tools: Open Source Database Testing Tools Database testing is one of the areas that might have the smaller number of open source tools. The programming languages have many xUnit tools and mocking frameworks, but this is not the case for databases. This article provides a list of open source tools that can be used to perform unit, load and security testing on several relational (MySQL, Oracle, SQLServer, etc.) and NoSQL databases.