Context
There's an interesting article published by Gergely Orosz That talks about the current state of the Tech Ecosystem and the future ahead for software engineers. In the talk he gets deeper in the reasons and what we could do the software developers in the current tech state.
The main concern for a Software Engineer right now is that less investments in Tech Startups and companies means less jobs and opportunities for developers. Not only we are seeing a descend in salaries, we also see that it gets harder to get a new position.
The future of Software Engineering
Gergely Orosz talks about the new reality for software Engineers and he sees the following:
- An investment in boring technologies and monoliths over "cool stuff" and microservices.
- With TypeScriptTypeScript
Override
Introduced in TypeScript v4.3.
References
https://dev.to/lioness100/introducing-typescript-override-keyword-4b36
https://www.typescriptlang.org/docs/handbook/release-notes/typescrip..., we can see a raise of Full Stack developers, meaning we would see developers doing: backend, web, Android and iOS. He talks about React Native and Flutter. - Responsabilities "shiffting left", this means there are going to be less specialized teams (i.e. DevOps + Frontend + QA) and we would see more shared responsibilities. A Software Engineer should now be responsible of more areas: CI/CD, testing, coding…
- As a side note as a personal concern: he doesn't see AI replacing developers anywhere.
A software engineer, in 2024, now shouldn't be specialized in a specific area, less in a specific framework. As a software engineer looking for new jobs positions should focus in:
- TypeScript + React Native/Flutter (or any other fullstack framework)
- Android & iOS development
- CI/CD (Github workflows, Azure, AWS)
- Deployments
- Databases (SQL, NoSQL)
- Backend development (going to JavaScript/TypeScript, maybe NextJS)
- Testing (Jest, Cypress, Mocha) and testing strategies (TDD, BDD)
For a modern Software Engineer, the tech stuff isn't the only need to find and grow in a software related career. Gergely Orosz talked with other people who faced the Dot-com bubble and he got some other advices to improve:
- Being Product-minded, meaning that the developer should have the area of the product and how the customer uses it as a priority. Tech companies also would looking for developers who want to meet their customers and understand on first hand their needs.
- Related with the point above: maintain a close relationship with Product Managers roles and talk a lot with them, understand really well what the product does.
- Know what's the business model of their company and being very close to the products that are bringing money. Everything that's in an investment in the long run has a great chance to being discarded.
- Avoid leadership roles or not productive roles. Roles like Staff Developer or Engineer Manager are probably going to disappear in the near future. Companies would prioritize people who "do stuff".
- Communication is essential. Learn how to explain complicated stuff in a simple way and, also, try to simplify the code and how to work with it. Learning to document soon and often is an skill.