So you got a job as a software engineer. What now? There are 1,000 technical skills that you can dig into. There is always a new framework to learn. Your company probably has a large codebase that you can get familiar with. You need to know Git, the command line... the list goes on. In many ways, how you approach career growth is more important than the specific things you learn. In this post, we'll look at 5 tips for helping you grow as a software engineer. We will not be talking about specific technologies since those change all the time. Instead, we'll look at the mindset that will best help you advance in your software engineering career:
- Set Goals
- Ask Questions
- Let Yourself Get Stuck
- Follow Trends
- Don't Follow Trends
If you know what you want to achieve, there is always a way to plan how to get there. Without clear goals, it is all too easy to spend hours on things that, in retrospect, did not serve to help you in your career. Reasonable goals guide us in determining what to do and what to say "no" to. That means that a goal must be specific enough to serve as a compass guiding your journey but general enough that it is not just another task on your to-do list. A good rule of thumb is that a goal should be something that you cannot complete over a weekend, and it should also not be something that will take more than a year.
Goals should also be actionable. Just like a good software feature spec, a goal should have criteria that you can use to determine whether you have met it. For example, if you want to learn Vue, your goal should not be "Learn Vue." Try something like "Learn Vue well enough to rewrite
[PROJECT X] in it without referring to documentation" or "Learn Vue so that I can write a blog post comparing it to React." With more concrete goals and completeness criteria, you will find that it is easier to decide what to work on next.
Also, set aside some time - maybe just five or ten minutes per week - to think back over what you have accomplished and to refocus if necessary. Keep a document where you write down the progress you have made, the things you have learned, and then return to it when you feel discouraged. I promise that it will be motivating to remember how far you have come already!
Whether working on a team or as an individual developer, one of the most helpful practices that you can foster is asking questions - even if you already have a good idea of the answer! By asking someone a question (in person or online), you may get a direct answer, and that is great. However, you may learn another way to think about your problem. Even the exercise of formulating a compelling question can help the way you think about it.
Another good reason to ask questions is to fight imposter syndrome. Most of us struggle with feeling like we are not adequate to solve the problem in front of us. The best way to fight imposter syndrome is by being honest with yourself and others about what you know and what you don't know (yet). By asking questions, you tell yourself and everyone around you that you want to learn and that you can learn.
Asking questions is great, but sometimes the best thing you can do is struggle through a complex problem. While you should not try to solve every problem from scratch, you should occasionally take the opportunity to use what you already know to figure out something that you don't. As you advance in your career, you will find that you sometimes face problems that nobody on your team or StackOverflow has solved before. Developing the problem-solving skills to overcome these situations can be one of the most valuable tools you will ever put in your toolbox.
The feeling of accomplishment when you are stuck for a while and finally figure out how to move on is incredibly motivating, and it will give you a nice boost of confidence. If you have been working on one problem for a while without making progress, go back to the previous tip and ask some questions. There is no shame in getting help, and some issues really are incredibly tough. Challenge yourself, but never drive yourself to the point where you feel defeated. Remember that when a problem feels too hard, it is not because you are not good enough to solve it. It is because it requires specific knowledge you haven't gained yet, so cut yourself some slack, do some research, ask questions, and move on.
If you are the note-taking type, then it can be helpful to chronicle how you wrestled with the problem. Even if you never return to these notes, the process of writing them will help you remember what worked and what did not the next time you encounter a similar problem.
Career growth follows some sort of progression. You start at some point, and you grow toward some future version of yourself. To best direct the goals you set (remember the first tip!) to get to the version of yourself that you want to be, you need to be strategic. Want to be a kick-ass front-end engineer? Learning React and Tailwind are probably better uses of your time than learning jQuery. Want to get into cloud-native development? Go, Kubernetes, and service mesh should be the things that you focus on.
Try to dedicate a little time every week to keep up with what is new and exciting in the communities that interest you. This can be difficult because there is a lot of noise to filter for every bit of signal. At first, it may be difficult to tell what is hype and what is a legitimate trend. You will develop the skills over time to predict whether some new technology is going to have a lasting impact. Still, at least initially, you may want to be among the early adopters or early majority for a tool or technique rather than try to be among the innovators. It feels good to be on the bleeding edge, but it feels better to look back with confidence in what you have chosen to invest your time in.
Finally, your interests will probably change over time, and that is a good thing! Don't let dedication to something you used to enjoy prevent you from pivoting and pursuing something else. Sometimes it can even be advantageous to shift directions in your career because you will be a more well-rounded individual and bring a unique perspective that not everyone else will have. Personally, I have learned more from engineers who started doing something else - from QA to quantum physics research - than from people who have spent their entire career in a single track. Your career is your own.
Wait, didn't I just say to not follow trends? Paying attention to the trends helps you decide what goals to set for yourself, but (from someone who has been there) chasing every new technology leads to burn-out. Try to have just a couple of goals at any point, and don't spend time on things that don't further those goals. Ultimately, when you force yourself to prioritize what is most important, you have to just wave at some trends as they pass by. Especially in fast-moving ecosystems, there will always be more you want to discover than you will be able to. Remember that even the developers you look up to are not experts in everything, and they likely know surprisingly little about most of the tech headlines we see.
You can measure your skillset by depth and breadth. Now, it may be perfectly legitimate to have a goal like "Improve the breadth of my front-end knowledge by reading 1 book on each of the 4 most popular frameworks," but do not try to become an expert in all four frameworks simultaneously. Make sure that you are clear on when you are working for depth and when you are working for breadth.
I hope that this article helps you focus your time and energy on the things that help you get to where you want to be. Whatever direction you want to take your career, whatever the specific things you decide to invest yourself in, remember to cultivate the habit of being mindful about where you are going and purposeful about how you get there.