5 Common Mistakes I Made as a Software Engineer
Just half an hour ago, there was some sunshine peeking out of these gray and gloomy clouds. If you had a plan for the day, you should stick to it, however gloomy, gray, or cold it is. So today, in this article, I will explain the mistakes that I think are very important to take care of when you are working as a software engineer.
A funny thing happened: I didn't start recording while talking about the first mistake, so here it is.
1. Not Asking for Help
The first mistake that I think of, and that definitely blocked me when I was starting as a software engineer, is not asking for help. I would be stuck on a task or a bug fix, trying to figure out a bug for three days, for example, without any progress. I wouldn't be able to ask for help because I was thinking that asking for help means that you are not qualified, that you're dependent on others, and things like that. I was trying to prove that to myself.
So I would just stay there, try to look at all the documentation, try to figure it out, and also waste a lot of time trying to find the solution. I could have just asked a colleague or someone who has more experience, and they would have helped me within 10 or 15 minutes. It took me time to understand that this is okay to do, especially when you are fresh out of university. You still want to prove yourself and prove that you can work independently. What I can say is, it's actually part of becoming a more experienced engineer.
2. Not Learning Technologies Properly
This is the second mistake that I thought of: not learning your technologies properly the first time you encounter one. The mistake that I was always making is that I had a task, for example, involving a new framework for me. Instead of taking time to learn the basics and the fundamentals of that framework, I would just dive into the task that I needed to do.
I learned it the hard way because the thing is that you're going to have pain later debugging things that are related to that framework or whatever feature or service you are working on. So yeah, learn frameworks, get into that documentation to understand how it works.
3. Not Taking Responsibility for My Own Career
This is the third mistake I made as a software engineer: not taking responsibility for my own career. I was always thinking that hard work is all it takes to get promoted and to progress in your career. I was thinking the harder you work, the more productive and useful for your team you will be, you will get noticed, and then some manager will come to you and say, "Hey, you are getting this promotion because you have been working so hard."
But it turns out that's not the case. You actually need to proactively promote your successes and also make sure to actively choose, when you can, the projects that you want to work on—projects that you think would give you visibility.
One thing that is very, very important that I wasn't doing before is to document all the work you're doing. Create a Word document or notes on your phone or on your computer, or anywhere, where you document: - What are the projects you worked on? - What are the challenges you faced? - How did you help the company?
Also, don't be afraid of asking people for feedback, especially helpful feedback that could help you get this promotion.
4. Believing the First Version of Code is the Best
Here's the fourth mistake that I learned: the first version of your code is probably not the best. You should keep thinking about it and refactor it until you are satisfied with it. Basically, if you are going to add a new feature to a service, make sure that you think about the architecture of that service overall and how your new code and new feature fit inside of it. You should really put high standards for yourself in terms of code quality because, believe me, it's something that you will gain time and see the benefits of in the long run.
5. Not Improving Operations and Maintenance Skills
This is the fifth mistake that I was making: I wasn't improving skills related to operations or maintenance. I am someone who enjoys working on new features, new products, discussing with UX designers, with PMs. So I was never really putting much effort into actively learning skills related to, for example, monitoring, dashboarding, and maintaining the services that you have.
I realized that it is something really important to learn, especially if you want to become an all-around software developer. And it is actually, from what I realized, the difference between junior and senior developers. Senior engineers are really into this, are really into improving how services are maintained because usually, it's their responsibility to make sure that these services are running well. So yeah, if you want to become a strong engineer, definitely put effort into that.
Join the 10xdev Community
Subscribe and get 8+ free PDFs that contain detailed roadmaps with recommended learning periods for each programming language or field, along with links to free resources such as books, YouTube tutorials, and courses with certificates.