Keep Coding: A Staff Engineer’s Perspective

One of the aspects of working as a Staff Engineer that divides authors the most is dedicating one’s own work time to programming. Some encourage doing this as often as possible, while others recommend focusing on strategic work, planning, and setting development directions for the organization. In theory, it is true that one coding individual can hardly make a huge impact on the organization, but in practice, our fellow engineer colleagues are reluctant to follow someone detached from daily engineering work. There is even an archetype described in literature known as the “Ivory Tower Architect,” whose sole task is to devise idealized solutions for a perfect world that exists only in their mind.

My opinion on this matter is very straightforward: regardless of their role, a Senior should consistently and regularly develop and nurture their programming skills. This also applies to software testers, who often unjustifiably look for excuses by saying that their specialization lies in testing. This approach practically closes the path to further promotion for the tester, and the glass ceiling above their head is of their own making.

To develop in programming, it is worthwhile to set two paths for oneself:

  • The first should involve our favorite language (e.g., Java). It is useful here to look at a sample job offer for a Java programmer and see what is required. We will probably encounter knowledge of one of the leading frameworks (Spring) and understanding of typically backend mechanisms, such as rate limit.

  • The second should focus on learning another language. Here, I recommend JavaScript or Python because of the multitude of things that can be relatively easily created only in these languages. For instance, most things related to AI are in Python (Langchain), and creating my website awesome-testing.com required knowledge of React and JS.

Programming is also a creative activity. We can create things from scratch, giving us a unique opportunity to make things useful for us or the project. Ideas for learning programming in a tester’s job:

  • A service mocking dependencies of 3rd party or other teams’ services
  • A tool for creating test data
  • A tool for cleaning up the test environment
  • A tool for collecting and presenting results of automated tests
  • Integration with Jira/TestRail API and automatic reporting

Keep calm & keep coding :)

Bibliography: