Software developers hiring bubble
Within the past few years, the tech industry has consistently and reliably added jobs. The demand for skilled tech labor such as software developers, testers, and quality assurance analysts has developed an extremely competitive market, driving the average salary beyond the 100K a year mark in the United States. For a long time, it seemed that there was no end to this party. In fact, in September 2021, the U.S. Bureau of Labor estimated that the employment rate of software developers, QA analysts, and software testers was going to grow by 22% between 2020-2030 which is significantly higher than the overall employment growth rate of 7.7% for the same period of time.
However, within the past couple of months, many tech companies have tightened their belts due to slow growth, rising labor costs and worrisome economic projections. Many big tech companies including Meta, Twitter, and Netflix (publicly known as a lay-off resistant company), have either frozen their hirings or laid off a chunk of their employees. Further, layoffs in many up and coming companies that have been the hot topic for the recent years such as Coinbase and Crypto.com have caused some hesitance in many people’s aspirations in the tech industry.
The recent decrease in hiring and increasing layoffs have caused a shift in thinking in software development and tech overall. Recent layoffs have caused the available tech talent to increase in the market. This effect will naturally cause more competition toward open positions, as well as most likely decrease the price of acquiring tech talent.
Impact of AI on the industry during current times
As companies are looking to cut costs during uncertain economic times, on top of layoffs, they are looking to maximize productivity from all of the workforce they have left. Artificial intelligence is a trendy buzzword that many people often encounter, regardless of their line of work. Some feel threatened by it taking over the world, some are afraid it will take over their jobs, and some feel excited about its potential. The software development industry itself is living through exciting times where different applications of AI are helping developers to code faster and cleaner, as tools utilizing AI are getting more and more sophisticated. This will ultimately help developers become more productive, and organizations to run their development teams efficiently.
As an example, code autocompletion tools are getting more and more intelligent. Starting from tools such as IntelliSense in VSCode that can suggest the next code elements, the next step was the development of tools such as Kite that reduces the number of necessary keystrokes by predicting what kind of functionality the user is looking to write on the line of code. From autocompletion tools like Kite, the development in AI has lead to creation of more advanced autocompletion tools. Examples of these tools include but are not limited to Tabnine, GitHub Copilot, and other up and coming autocompletion tools such as Amazon’s CodeWhisperer, which is set to launch in a limited beta within the near future but currently remains as a mystery regarding to its functionality.
Tabnine is a tool that offers whole-line as well as full-function code completions based on natural language comments that developers write to ask the tool to automatically write specific functions. As an example, by writing a comment of ‘get random forest model’, Tabnine can automatically write a piece of code that asks to import the necessary packages and the needed specified modules of them. On the other hand, Tabnine also offers automatic code completions, where a developer writes some of the code, and the tool predicts what they are looking to ultimately write and offers a code completion.
GitHub Copilot offers similar functionalities to Tabnine in terms of turning natural language to code through comments and/or predict what developers are going to write next and produce the respective code. Autocompletion tools as advanced as Copilot can certainly increase the speed of development. However, the evolution of autocompletion tools does not necessarily equal bug-free code as the autocompletion tools also have their own flaws. Developers should be mindful of the pitfalls with using autocompletion tools to speed up their coding process. In some cases, these tools do produce issues in code logic as well as vulnerable code. As an example, according to a study conducted at New York University, in 40% of cases, Copilot develops code that contains a vulnerability listed in CWE top 25. CWE is a universal online dictionary of software weaknesses. To avoid problems further in the software development process, developers and organizations should emphasize the importance of code reviews, regardless of the fact if an autocompletion tool was in use or not.
So, it appears that code reviews are not going anywhere. Thus, the code review process is seeing its own share of automation and applications of AI as well. Traditionally, code review tools such as Sonar have been built on a wide variety of preset rules to help detect problems from code. In practical terms, if the tool implemented one of the rules as X and Y, the system raises an error if X happens, and explains it as Y. Tools utilizing such rulesets are helpful in detecting simple errors from code. However, the capabilities of these tools are often limited to detecting errors located in a small amount of code, in most cases a single line of code. The advancements in ML and AI have lead to development of more and more intelligent code review tools. Code review tools such as Metabob utilizing different machine learning techniques can analyze complete code bases and detect complex bugs hiding in the logic and understand the context of the code. In addition, these modern code review tools are able to learn from user interaction and recognize what types of problems are most important for their users. One of the biggest advantages of using an AI-assisted code review tool is that they create less noise from the automated review and find more relevant problems. Within a recent blog, we ran an automated code review for a specific repository with two traditional, rules-based, code review tools and an AI-assisted one.
As many of the previously mentioned applications of artificial intelligence are relatively new, it is challenging to yet know how much more productive developers using them actually are, especially because the performance of most of the tools is still very use case specific. Another questions that still remains a discussion topic is that if automatically generated code is secure. Regardless of the fact that most of these AI-based tools haven’t reached their full potential yet, it is for certain that they will affect the process of software development in the future.