Today, I like to discuss the single most important skill our testers should master in their career, which is coding.
Why coding is important?
Because you are SDET, Software Development Engineer in Test, you are software engineer. As a software engineer, coding is the task you should do every day, and that is the skill you should get.
You may ask whether writing tests is not important than coding. The reason is that writing tests can help the product improve quality, but it does not grow your career sometime. I can give an example of mine. When I first join SQL Server, we write T-SQL script based tests, and I have less chance to write coding. As a result, my coding skill did not grow. Fortune-ly, SQL Server testing team moved into programming way of writing tests today, and our tester’s coding time increased a lot. That is super great. Of course, we sometime spend too many time to write code and write library, and less time to write the real test case. That is another big topic, I am not going to talk in this blog.
Since most of us writing automated tests today, does it mean that we have great chance to improve our coding skill. The answer is not really. Our SDET are doing too many tasks today (just as our PM play different roles): we write test libraries , we do lab run verification, we sign-off product, we setup machines for testing, we install builds for testing, we fix our fragile tests, we open and close bugs, we create enlistments, we builds (radically, we spend lot of time for building). We also have another tasks, such as meeting, project tracking/bug report. All above tasks will take a huge amount of our daily times, and the time reminding for us to doing real coding and grow our skill is pretty small. I remember one day I mentioned that I dream I can spend 50% time on coding to our test manager, he is pretty surprise in that he believe the number should be much higher. However, In reality the number is much slower.
So how can we do for this situation. We should try out best to improve our engineering system to reduce the time for unnecessary times, let system to setup environment, install build, run tests, open/close bugs and sign-0ff. All of these should be automated. We should committed our self to doing code every day and do coding as much as possible. If you cannot achieve this due to the nature of your job, you SHOULD consider to move on to other job.
To summary, keep in mind coding is your single important skill you should grow.