Originally published on my blog.
Landing your first engineering role after getting a degree in computer science (or software engineering) is a challenging process.
There are so many software engineering vacancies, but a significant majority of them are for those with at least 2+ years of experience. There are not enough junior positions on the market, so the competition for entry-level roles is high. Yet, it is still possible to land an engineering role, even without experience.
The following tips are mainly dedicated to computer science or software engineering graduates looking to land their first engineering role. However, self-taught developers and boot-camp graduates can still benefit from this article.
I'm going to list five actionable steps that I hope can help you land your first role.
REFRESH COMPUTER SCIENCE FUNDAMENTALS AND UNDERSTAND HOW AGILE SOFTWARE DEVELOPMENT METHODOLOGY WORKS
If you're a computer science or software engineering graduate, employers will expect you to know computer science fundamentals.
Once you graduate, take your time to refresh computer science fundamentals. By these, I mean:
- Computer programming
- Data Structures and Algorithms
- Database systems
- Software Engineering Principles
A quick comment on data structures and algorithms: when I went through my job search, many companies (even small to medium, so not just the big-tech companies) used HackerRank-style coding challenges to assess candidates.
I'd say to practice them if you want to increase your chances to land a role. But remember that in software engineering, we don't revert binary trees daily. 😆 I'm simply giving you practical advice.
In addition, understand how agile software development methodology works. Read about the Agile manifesto, the people involved, agile ceremonies and how software is packaged from start to finish.
BUILD AT LEAST ONE STRONG PROJECT AND UPLOAD IT ON GITHUB
This step is crucial because if you have no experience (not even an internship or a placement), somehow, you'll need to demonstrate that you can write code. The way to do this is to build at least one strong project and upload it on Github.
By "strong" project, I mean:
A real-world project but on a smaller scale: I'm a fan of management systems because all companies have a way to store data of every sort internally (either customer's data, employees' data, products, etc.). You can also choose to create a project based on the domain you're most interested in. For example, are you interested in fintech? Try to make a sample of a banking application.
A project that uses the latest technologies: this also depends on what type of engineer you would like to become (frontend, backend, or full-stack). If you're more interested in frontend engineering, building a project that uses a popular language + a popular framework is a great choice. Same for a backend engineer, but I would add APIs + a database on top. For a full-stack engineer, a combination of the two. Bonus points if you can show familiarity with containers or cloud computing.
A project that includes tests: in the real world, we do write tests. So it's great to add them into your project as well, to show that you do care about testing your code.
A project mindful of code quality: your code doesn't have to be perfect, mainly because you're at the stage where you've never worked in a commercial environment. However, you can still be mindful of indentation, classes, variables and methods names. Bonus points if you can show some understanding of engineering principles such as SOLID and DRY.
A project that includes a descriptive Read.me file: it's essential to include a well-descriptive Read.me because often your profile will be read by people who don't have a technical background. In your Read.me file, explain what the project is about, what problem it solves, its design, and how to run it.
Bonus tip: while creating a project, get to know your IDE, make the most of the keyboard shortcuts, and learn the Linux commands (at least the basic commands).
Git is a Version Control System widely used across the industry, so learning Git will be of great benefit. It can also happen that you interviewers ask you about Git to see if you've ever heard of it.
Honestly, you don't need t take a whole course to learn Git. It's vast, and you probably won't remember everything anyway.
Focus on understanding what it is, why it's used and the most common commands. I think this list is helpful.
SHARPEN YOUR INTERPERSONAL SKILLS
Software engineering involves a lot of interaction with technical and non-technical people.
Nowadays, there is a significant emphasis on emotional intelligence, even in software engineering.
Recruiters don't want to hire people who refuse to be collaborative.
Employers value those who know how to work well with other people, learn how to communicate and empathize with others.
For this, you can find some interesting books on how to sharpen your people skills. A great example is the book "How to Win Friends and Influence People" by Dale Carnegie.
USE IT HIRING PLATFORMS
Instead of continuously tailoring your CV for each company (a very time-consuming process!), take full advantage of IT hiring platforms.
You can create your account on these platforms, and recruiters can directly message you if they're interested in your profile.
You can potentially apply a "one-size-fits-all" approach through these platforms, which is great because you can dedicate more to the steps above.
Some examples of IT-hiring platforms are:
I would also add to take advantage of LinkedIn and Twitter by networking and sharing your journey. However, I'm fully aware that not everyone wants to do that and prefer to "silently" land an engineering role. I know many engineers who landed their first engineering role without constantly being on LinkedIn or Twitter, so it's still doable.
To wrap up:
✔️ Refresh computer science fundamentals and understand how agile software methodology works.
✔️ Build at least one strong project.
✔️ Learn Git.
✔️ Sharpen your interpersonal skills.
✔️ Use IT Hiring Platforms.
I hope you've found this helpful. Let me know in the comments if you have any questions.
Until next time. 👋🏾