Growing as a software engineer
Tags: career, growth
Published: 2021-04-25 19:12:55

Do you feel stuck at the current level and can't seem to grow out of a junior role or reach that senior title? Or maybe you feel intimidated by that vast knowledge required of senior engineers? Well, I can tell from experience, knowledge is not everything. Soft skills and your attitude in general, play a big role in advancing your career. I have seen juniors grow very quickly and other developers seemingly plateau in their comfort zone and not growing any further. Here is my personal advice on what to focus on and which qualities to polish in order to improve as a software engineer.

## Keep learning

This one is pretty obvious huh? 🤔 However, it is very important. Our industry is moving very fast and if you stay in your comfort zone just working on the same things you will be left behind.

I'm not saying learn a new language every couple of months. Even though that may open your horizon to new ideas and ways of solving problems. However, keep up to date with the latest developments in your field. Keep track of new tools and ideas floating around.

Follow the people who are leading the way. Follow those that are sharing ideas, tips, and tutorials. Even though social media is a double-edged sword, I think Twitter is a must-have for developers. There is so much happening there that you may be missing out on.

Pick a topic that interests you or even better might be useful at work, find learning resources, and become good at it. You don't need to know everything, but keep expanding your skillset bit by bit. However, it is best to choose topics that have immediate value to you or you are genuinely interested in as this will help you stay on track. And don't just watch, practice it 🙂.

## Care about the product

You don't have to become an expert in every field you are working in. There are people who do that for a living. Your job is to build good solutions. However, building a good solution means first understanding the problem. It is important to understand not only what you are building, but also why. Knowing that may lead to interesting ideas and solutions that you may not have thought about otherwise.

## Care about customer experience

Again, there are people who have built their whole careers around it. What I mean here is don't be lazy. If you are building a checkbox, please link it with a label 🙂 If your backend action takes longer, show some progress indicator, to let customers know the system is working. Don't rely only on backend validation, give users some early feedback in frontend. In essence, try to use the product yourself and notice the pain points.

## Care about the code

As there is UX, there is also DX. By focusing on user experience we want to keep our users happy. In the same manner, by caring about developer experience we try to keep developers happy. I am biased as a developer but would say DX is as important as UX.

Coding is not only a solution to a problem. Coding is also the act of finding the best and creative solution - coding is art. Don't solely focus on making it work. Think about usage as well. Think about code expressiveness. Is it easy to read and comprehend or do you need a notebook to keep track of it?
Is it easily accessible or do you need to do tons of setup every time you want to use it?

That is why TDD is praised because it forces you to first think about the intended use and only then about implementation. This leads to a better overall design that can stand the tests of time.

Don't just slap things together. Imagine you will have to support your codebase in 5 years. Care about what you write to make your colleagues and future self happy. Happy developers tend to write better code 🙂

## Be proactive

If you see something that needs improving, do it. Or at least bring it to attention. If nobody seems to care too much, then do it anyway. Don't just drop everything of course, but find some small chunks of time and work towards making your life easier.

Now, that doesn't mean work on anything you like 🙂 Your main tasks are still your priority. However, sometimes your experience tells you that addressing certain things will either save from issues later or will increase productivity. Your job is to provide arguments for those changes. Always consider the time required for proposed changes and the value gained from them. Sometimes it is simply not worth it.

For smaller improvements or fixes, you can always implement them and send a pull request instead of just living with it or complaining only. Your effort will be appreciated.

## Be respectful

You can't really earn respect if you don't respect others. Keep in mind that not everyone has the same knowledge and experience. Don't judge developers who are earlier in their career. Remember, you were in their place once as well.

## Ask

If you are stuck, just ask for help. There is no shame in that. Being able to ask for help is actually a valuable skill. Everyone gets stuck sometimes. Talking with your colleague may be faster than you pushing through on your own. Even if you take into account the time spent by both of you. Even if you are alone now, ask your [rubber duck](https://en.wikipedia.org/wiki/Rubber_duck_debugging) for help 🙂

There is always someone who can teach you something. No matter how senior you are, you can learn from others. 

## Help

The same goes the other way around. Don't look down on others. Help them and guide them. Mentoring not only helps juniors but you as well. You learn to teach and put your thoughts into clear and understandable sentences. This way both of you grow and make your team even more awesome.

## Rest

Don't underestimate the importance of rest. Being tired and overloaded with work can make you miserable. Even small tasks can make you angry. Like you already know - happy developers write better code. Well, angry developers do the exact opposite. And being tired and hungry can make you angry very quickly.

Have enough hours of sleep, do short breaks. Have fun after work and take care of your work-life balance. Eating well and good night's sleep will help you stay focused and motivated throughout the day. Learning to not bring your work home and keep your mind off it when resting will help you to avoid burnout.

Sometimes, it seems like you are stuck and even rest does not help. It seems like everything irritates your and rest time just doesn't help as it used to. You might be approaching burnout. However, a very good solution in such situations is exercise. It may sound like the opposite of rest, but it is a rest for your mind and a very effective one. A short workout or a walk can do wonders in refreshing your mind and boosting your mood.

So, take care of yourself, be respectful and curious. Don't be afraid to ask, but don't hesitate to help either. Keep practicing and learning and one day you will look back and realize that you've come a long way 🙂.