In a previous post, Jon talked about living in a world without QA. If you read that, you might be wondering: what do I do with my existing QA folks? One idea is to train them to become developers. Having started my software career in QA and transitioning from QA to dev myself, I will explore some ideas about how to do that in this post. I’ve broken the ideas into three categories: attitude, practice, and principles.
First, the folks involved in training must have the right attitude. Existing developers must be willing to train and mentor. QA folks have to be interested in learning to be developers and applying their skills in different ways. Someone in your organization—maybe that’s just you—has to believe it will be worth it. When you spend time training and mentoring others, not only is there the potential to make a positive impact on them, you also get a chance to grow yourself. When you can reduce the time it takes to deliver value to your customers, your company and customers will benefit. Don’t be held back by the thought that you need a big training plan up front or approval from management to start some training. Start small, reflect often, and grow the training iteratively.
In order to become a better developer you need to practice. Your training should provide opportunities for learners to practice programming. Use katas as a way to get better at the fundamentals of programming and to learn the tools your team uses to write code. Try doing katas in pairs where each person gets a chance to be the driver (the person at the keyboard) and the navigator (the person giving directions). Experiment with mob programming as a way to provide exposure to real-world problems and learn together as a team. I believe practicing Test-Driven Development is a must in a world without QA. Start training on TDD and use the QA folks’ experience of coming up with tests to improve your automated developer tests. QA folks are especially good at coming up with tests that don’t follow the happy path.
While learning the fundamentals of programming is essential, there are also a few principles that I believe must be learned. Writing code that a computer understands is not enough. You need to be able to write code that humans can understand. A valuable developer also writes code that is flexible and maintainable by following the SOLID principles. Many other principles that are valuable for a professional software developer can be found in the Imposter’s Handbook.
With the right attitude, plenty of practice, and a focus on principles you can train QA staff to become developers.