Career advice as a developer you should follow to avoid the most common mistakes

Anton Prokhorov
CodeX
Published in
8 min readApr 5, 2022

It’s been a long time since I joined my prospective company and my career path has not been ended yet, there are so many things to do during my career path, however, it’s time to make and share some retrospective to help others to avoid some career mistakes I made, so, let’s start.

1. Focus on basics

Sounds quite obvious, but when I just started to do programming in high school, I wanted to get instant feedback and to create something useful, It was a time when desktop apps were standard de facto, and I ignored basic knowledge about my language semantics, syntactic capabilities, basic algorithms, and data structures, I started to learn Borland Delphi framework and WinAPI to create something impressive as I thought.

When my school CS teacher sent me to learn competitive programming, I thought, it was nice to have this ability (to solve complex algorithmic tasks), but, It was more interesting for me to learn web development because I thought it’s a more useful skill to increase your probability to get hired.

It caused the situation when I was in my first job interview, I wasn’t able to answer any questions about fundamentals, I even didn’t understand that basic fundamental knowledge will help you to increase the speed of your progress.

2. Be rest assured about the reasons you obtain a CS degree.

I didn’t finish my first bachelor's program, because I didn’t understand why I need to learn math analysis, linear algebra, etc, after expulsion from the university, it passed more than one year before I had finally understood that I have a huge gap in my knowledge, which didn't allow me to grow up faster, so I finished applied math major in Siberian Aerospace University and after that, I truly started my real career. It looks like I wasted a couple of years without any value, however, just think twice after graduating high school, maybe it’s reasonable to get a year gap and travel to think, what you want to do and what you need to bootstrap your career.

3. Don’t expect your local university to make you professional.

There are only little amount of universities in the world that could give you useful skills, especially in Russia, universities have the main purpose, to grow up PhDs, they have no aim to build engineer from you, so focus on socialization. Participate in events (example: my university organized some hackathons, competitions, etc), use free software to make self-education (example: GitHub students pack).

Also, as a student, you can take part in events available only for students (Google summer of code, ICPC). Take part in all of these, these activities bring experience to working in a team and working with other’s code, also GSoC is an opportunity to fill your GitHub profile and to take part in an open-source project you will be able to place in your CV. When HR is looking up for Junior to invite to a job interview, there is plenty of almost the same CVs and your line about taking part in an open-source project helps to intrigue.

Study in univesity, but rely on yourself.

4. Relocate from your local area.

This advice is not as useful as before the pandemic, however, there are a lot of things you couldn’t do in your local area. Your network will grow faster if you relocate to a city/country where the local community is more developed. The first time I was applied for a job interview in Yandex (Russian google analog) was by recommendation from my ex. colleague.

Notice, the faster you relocate, the faster your career grows

A perfect case is to enter to university in town you want to build your career in the future, it allows you to get used to living in the desired location and build your network more effectively. If your network will have been built before you start your career, you will gain more freedom in your career moves.

5. Don’t hesitate to create your community

If you haven’t the ability to relocate and there is no community in your area, create it. I mean it. Really, besides you find buddies with the same interests, your organizing skills help you in the future. Sooner or later, you will do some administration role (as a team lead, architect, or engineering manager) and your obtained skills will come in handy.

6. Find a mentor at the start of the career

If you have a mentor, your progress grows faster. How to find one? Ask your friends, acquaintances, and colleagues. Most of us will be glad to help you, because we can because mentoring is an opportunity to structure our knowledge.

If you have already found a mentor, choose the same language/tech stack. It would be increased the probability to get instant answers about Java from a Java developer.

7. Be a mentor

As I told before, mentoring is a opportunity to structure your own knowledge

Write blog posts, create your own YouTube channel, and share your knowledge, because there are a lot of people, who are trying to pass the same path as you have already passed. It also helps you to increase visibility and develop your personal brand, to grow the community around you, and socialise

8. Don’t spread your interests, focus on one thing simultaneously.

It’s very interesting to learn any new technology released recently, to learn every area of software engineering (deep learning, big-data processing, UI, backend, mobile, compilers, system programming, operating systems, etc), however, there are restricted resource limit of the human brain, so focus on one area and learn until you will be fluent in it, and only after you get bored, switch. Because if you learn many things simultaneously, you will be mediocre in all branches of your knowledge.

9. Develop your soft-skills

Don’t focus only on hard skills. You can be the best developer in the world, but if you are not able to communicate with others, you doom yourself to be unemployed. I saw many cases where the best talents were fired because of a disability of communication.

If you are a Junior spend approximately 40% / 60% on soft skills and hard skills development accordingly

50% / 50% when you are Middle

60% / 40% when you are Senior

When you are a Junior: don’t hesitate to ask questions and make proposals to help your manager to build your own preferable career path (what you need to learn, what gap you need to close, what responsibility you want to take, etc)

When you are Middle, increasing your communication skills allows you to bring your point clearly, propose new ideas and be prepared to defend your point.

Seniority is hard to imagine without strong soft skills, you are responsible for a whole project (or subproject), you need to have a full overview of the system in your mind, you need clearly understand the requirements of stakeholders/project owners/etc, you have to achieve trust from your colleagues, managers, etc to freely move part of the system you responsible for to correct direction. All this stuff requires critical thinking and strong communicating skills, so the more you develop your soft skills, the more successful career you have.

Also, keep in mind, you need to develop critical thinking and you need to be able to consider every possible problem from an objective perspective, don’t be caught in cognitive traps, if you are not sure about something, explore and make experiments, use only facts and see constructive arguments in arguing.

For more information, I recommend reading this book

10. Use free sources for learning mostly

Ensure before buying the course, you have already researched entire free possibilities to achieve target information. There are a lot of free ebooks on GitHub and free courses without home assignments on Coursera. There is even a free Harvard CS50 course available online in different languages.

The best investment of money is to knowledge, to yourself, however, there are a lot of free of charge ways, don’t ignore them.

11. Do long-term planning

Determine whom you want to become in 5 years and it helps you to make the right decisions. Use roadmaps (examples: Java, Frontend, DevOps, you name it), build your own and follow your strategy to achieve your goal no matter what, don’t go out of your way and you will succeed.

12. Build your personal brand

Take part in open-source projects, speak in conferences, share knowledge through blog posts, YouTube videos, be a guest in podcasts, or even set up your own one, it allows you to have more visibility in the community. Visibility allows you to have influence it will come in handy if you need some support for building your own pet project, for example, you could bootstrap some fundraising or ask the community to bring pull requests to your project, also, publicity is a bonus when the hiring manager is considering your job application.

13. Prepare carefully for a job interview

If you were invited to HR-event from FAANG companies, it’s quite a rare event for most developers, so, don’t miss it, try to keep your leetcode skills in the actual state. If you were invited to a job interview, take care of a system design interview, especially for back-of-the-envelope estimation. If you are in the process of looking for a job, schedule an interview with the company you want to be applied to mostly on the last date to take more time to prepare and to obtain questions and requirements which now actually in the market, and don’t be hired to the first company you have an offer from

14. Choose your project carefully

If you want to be mental-healthy, money doesn’t matter! You will not be happy in a useless project with incompetent managers and engineers with tons of legacy without well-built business processes with overtime and waking ups at 3 a. m.

Also, be ethical, don’t work on scam/fraud project, don’t work on projects which brings destruction to society, you will feel terrible

I worked in ad tech, and I urged other people to suffer because I took part in features related to masking advertisements with useful content, and my ex-colleagues explained themselves, they do an internet free, however, I personally consider it like psychological defense.

15. Learn cybersecurity

Once, our customer decided to open-source his project and AWS secret keys became public, we spent a lot of time changing our developing infrastructure to avoid such cases in the future, also we started to develop new development habits and transformation was painful.

There was another case: one developer forgot to assign a permission class to the implicitly created endpoint to remove an entity from the database, it allowed the attacker to delete data without permission, and it caused a fire we had to extinguish at 3 a. m.

Every good developer must have cybersecurity knowledge. It’s the most stressful case when personal data of your clients leaks, or data corruption occurs. There are plenty of other consequences is able to take place without such knowledge and following rules of safe software development. Take part in CTFs, there are plenty of online events and sandboxes where you could practice. If you learn how to attack, you will be able to defend your software. However, don’t forget to be ethical. Don’t be blackhat.

And last, but not least

Think in a scalable manner. Your architecture, your code, your career, and your ideas should be scalable, because without development, you will be caught in stagnation, and then regression. Always learn something new and don’t be afraid of complexity.

--

--