To be an efficient programmer, you should be comfortable with the environment you’ll be developing in. This means understanding your integrated development environment (IDE) and shell. When you program you should be thinking about the code, not how to find a particular button or setting.
In addition to the language, you should study the higher level constructs that organize code and inform good programming practices: design patterns, concepts like DRY and SOLID, etc. These concepts — and how they are realized in code — depend on the nature of the language you choose to learn, i.e. SOLID applies to object oriented language where as patterns like pure functions apply to functional languages.
The current programming languages we would focus on are JavaScript/TypeScript, Java or C#, and Python.
JavaScript is a great initial language as is it underpins all web development. In addition, it has been steadily encroaching on other areas of the enterprise through frameworks such as Node.js. Because of its use in web development, JavaScript is also heavily used in web automation through tools such as Protractor, WebdriverIO, and Cypress.io. JavaScript is continually ranked as one of the most popular programming languages.
While TypeScript is a fundamentally different language than JavaScript, we would lump the two together. Because TypeScript transpiles into JavaScript, much of the surrounding ecosystem is identical, and learning TypeScript in parallel with JavaScript will give you the benefit of having both a static-strong and dynamic-weak language in your arsenal.
After JavaScript/TypeScript, we would suggest either Java or C#. These languages are very similar and are both used extensively within enterprise application development. C# is slightly riskier, as companies that leverage C# tend to be “all in” on the .NET / Microsoft ecosystem, so you might not get exposure to much else. While Java and C# aren’t new, sexy languages, they are the workhorses of the software industry.
Speaking of sexy (but not new!) languages, we have Python. Python has technically been around since the early 90s, but has seen a resurgence lately because of its use within data analytics applications, and specifically in AI/ML. Of course, it’s also just a powerful and accessible language.
One word of caution as we talk about learning to program: programming is one of those things that is very easy to learn, but very hard to master. This often leads to confusion or conflict when people start their learning journey, or interact with people who are much further along. Sometimes you hear things like “I learned Python, but nobody will hire me. Not fair!”.
Think of programming like learning to play chess: most of us could completely memorize 100% of the rules of the game in an afternoon. Does that necessarily make us grand masters? Hardly. In the same sense, you can learn the rules of a new programming language in a few weeks, but that doesn’t necessarily make you qualified to call yourself a master. And it doesn’t mean you are ready to step into critical application development roles. You’ll learn all the rules in the first two weeks, but like chess, you’ll spend the rest of your life trying to master them.
There are some in the quality assurance industry that say quality professional does not need programming skills. We disagree. We feel learning and continually improving in programming is a core competency of the quality engineer, and will be used extensively as you start writing complex test automation systems, as well when you collaborate with developers who are building the software you are testing.
Enterprise applications come in countless flavors, types, sizes, and configurations. In order to understand how these systems work — and how they break — you’ll need to understand the basics of enterprise architecture.