What Does it Take to Become a Great Software Engineer?By: Sylvain Kalache, Holberton School
To become a great Software Engineer, you should focus on acquiring 3 main skills:
- Knowledge of the full stack
- Ability to learn by yourself
- Soft skills
Read on to learn in detail what these skills are and how Holberton School is a great place to get trained in them.
Knowledge of the full stack
While everybody has a different definition of what being a "full stack" Software Engineer means, in a nutshell, it is the capacity to understand every layer of a software product.
The term "Full Stack" often refers to multiple technologies and parts: frontend, backend, database, web server, hardware, and network. Just like a good Mechanician needs to understand how an engine works to fix or improve a part of it, a Software Engineer must have an understanding of all the layers to be able to properly contribute to the system. Obviously, no one can be an expert in all areas, but any great Software Engineer will have the basic foundations.
Lacking this knowledge can be disastrous. While I was working as a Software Engineer at LinkedIn, a recent graduate who was a "frontend specialist" implemented a feature that was querying a field in the user database table. Because the table was not properly configured to handle this query, both the database and the website went down for 20 minutes, which had a huge impact on the business. This would not have happened if this Software Engineer had been full-stack developer - that is, if he had a minimum of database knowledge and not just frontend knowledge.
A good place to start is to ensure you are comfortable with:
- Algorithm and data structure
- Application development with oriented object programming language
- System administration and networking
Take a look at this post for a more detailed description of a Fullstack Developer.
The ability to to learn by yourself
Core software concepts remain about the same, but the tools used in the industry are constantly changing. These new tools allow developers to build better, faster and more reliable systems. The Software industry is probably one of the fastest changing industries. That is why your smartphone and favorite applications are constantly improving.
In this context, highly skilled Software Engineers, who are are responsible for this evolution, need to assess and perhaps learn new tools that will help them to make their applications faster, better and more reliable. Obviously, they are not going back to universities or coding bootcamps to learn these new tools. The best software engineers are able stay up-to date with the latest trends on their own. To do this, you need the fundamental software knowledge and the ability to teach yourself new skills.
New developers often underestimate skills like communication and time management, but they are actually a big part of a great Software Engineer's success. If you decide to create your startup, you will need to convince investors, customers, and people to join your team. If you are an individual contributor, you will need to collaborate with your co-workers, mentors, juniors, and newcomers.
Most great software developers are also experts at the following:
- verbal: public speaking, presentation…
- written: documentation, email, post mortem, technical writing…
Remember that for any company, if you do your job well, you are a 1X. But if you are also helping 10 of your co-workers to do their jobs better, then you become an 11X - the type of person successful companies need. A team can only go as fast as the weakest link and successful companies are the fruits of successful teams.
If you can manage these three skills, you will be an amazing Software Engineer who will easily find a job, and you will be on the path to a promising career. I am so convinced by this that I actually left my Software Engineer job at LinkedIn to start a school that focuses on teaching those skills, and it's called Holberton. All our students are trained on these three main skills.
In a nutshell, Holberton offers a two-year program that trains highly-skilled Software Engineers. Our application process is open to anyone over 18 and our students go from being teachers, musicians, cashiers, cameramen... To Software Engineers at top Silicon Valley companies like Dropbox, NASA, Docker, Apple, LinkedIn…
Using a project-based and peer-learning approach, students learn by working on projects and collaborating with their peers. While there are no lectures and no formal teachers, we have mentors who are trained tech industry professionals who guide students as they enter the industry. Students acquire the foundations that any great Software Engineer must have, while developing soft skills in an environment that mirrors a company environment. Join us!