7 Pieces of Advice to be a Successful Software Engineer
You have a lot more power than you think
For me, being a software developer is one of the best jobs in the world. I love to code and getting paid for it is just awesome. But the weather isn’t always bright, and I’ve struggled so many times in my career that I’m constantly reflecting on my situation and trying to remind myself what I’m capable of.
To support you and your careers, I’ve written down seven pieces of advice I found to be very important for my career. Spend time trying each of them and see if they help you in your current situation.
1. Don’t Sell Yourself Short
This is one of the most important lessons I had to learn, and it took me about 10 years to realize it. These days, if you work in tech, and specifically as a software engineer, you’re a scarce resource. Normally, I don’t like it when people see their staff as resources because they’re humans after all. But in this case, I used the term to underline the importance and to make this as clear as possible for you:
Companies need you, not the other way around.
Let me elaborate on this some more. The U.S. market alone is currently facing a 500,000+ shortage in software developers. This gap will increase exponentially over the next five to 10 years due to increasing demand and demographic changes. The same applies for other countries and continents.
All the countless hours you put into learning new technologies, all the nights you spent working on your coding skills — it pays off.
Software engineer is probably the job with the highest demand.
Being aware of this — and more importantly, being able to use this — will not only give you better career opportunities with higher salaries, but it will ultimately result in much higher self-confidence. And that will help you not only in business but also in life.
2. Invest in You and Your Career
The tech industry is one of the fastest-changing industries today — if not the fastest. Sometimes, it’s hard to keep track of the ever-evolving ecosystem of software development, especially when it comes to web development. But in order to stay relevant, it’s mandatory for every engineer to keep learning new technologies, programming languages, frameworks, techniques, best practices, skills, etc.
The good thing about being a software engineer is that learning can be done from home or the office most of the time, and you can choose from a variety of sources, such as books, eBooks, blog posts, online courses, trainings, podcasts, and more.
However, when learning something new, you need to invest both money and time. Prices vary heavily between formats and so does quality. But what matters most for the majority of us is time. Time is precious, and time is scarce. Many engineers have full-time jobs, and learning happens before or after work, or during the weekend and holidays. So it almost always becomes a trade-off between family, free-time for yourself, and learning.
But it’s necessary to invest in your skills and career. So here’s what you really should do:
You need to invest smartly.
And when I say invest smartly, I mean that you shouldn’t follow every new framework or technology blindly.
Don’t practice React.js today, Vue.js tomorrow, and Angular next week.
Don’t switch between courses, books, and trainings.
Rather, you should check in with yourself. See where you’re standing now.
- Do you like working on the front end or back end?
- Are you a visual type or do you love numbers?
- What projects are you currently working on and what will help you with them?
- What technologies, frameworks, and languages are in demand in your area?
- Do you want to learn something new for a concrete reason (new job, higher salary, change of careers) or just for fun?
- What technologies are already established but still hot topics?
Have a time budget and dedicate it to what’s important to you. Check courses and their quality before spending time on them. And if you choose to spend your precious time on something, be committed and stick to it. We tend to lose interest after some time and chase the next cool thing.
Don’t do that — be smart!
3. Leave Toxic Bosses and Workplaces
“When you are 20 to 30 years old, you should follow a good boss and join a good company to learn how to do things properly.” — Jack Ma (Alibaba)
That’s a good point from Jack Ma. But what it doesn’t say is what you should do when you realize that your boss or your current job isn’t what you expected when you began working for the company.
Having a boss who doesn’t support you isn’t good for you, your self-confidence, and your career. Having a boss that actively (maybe even intentionally) hurts your career is even worse. Some bosses are sociopaths, or they’re just very difficult to deal with. Some are just not good leaders.
In the end, if you come to the conclusion that for one or another reason you can’t bring your A-Game because of your boss, I would advise changing your job more often than not. I know from my own experience and from many others:
Bosses don’t change.
Many of us are a bit lazy when it comes to changing jobs, and some are afraid. And then we tend to think that it’s not so bad after all — only to realize a few weeks later that nothing changed and it’s still bad. You’re a software engineer in high demand. Don’t let some incapable person or a toxic workplace drag you down.
There are others out there that deserve you more.
4. Consider Doing a Side Hustle
I love doing side projects even if I’m in a permanent role. It’s not the money that keeps me motivated to do so, even though money is a valid reason as well (but more money does come with more pressure…). But the reason I like doing side projects is because they help me constantly challenge my mind.
When you work on products or services for companies and clients, it’s not uncommon that you use the technologies your company uses or the client requests. While I still love coding, that can become boring after some time, and you might not be using the latest tech. Many companies still use Java 6,7, or 8 even though we already have Java 11. Or PHP without frameworks like Laravel.
My point is that a side hustle — even if it will consume time — will be good for your career in the long run because you can stay up-to-date with new tech, work on open source projects and add them to your portfolio and CV, and engage with the community, which is beneficial for your network.
Side projects let you learn new things and keep you motivated.
5. Work on Your LinkedIn Profile
Taking care of one or more social profiles is something I didn’t spend much time on in the early years of my career. I was fresh from university, I applied for three or four jobs, and I was hired for one of them. Everything seemed fine, and I thought I would work for that company my whole life.
Boy was I wrong. Not only did my feelings about the job change, but I was constantly jealous of co-workers receiving calls from headhunters and recruiters.
Even today, I see many, many extremely talented engineers stay in their positions with the same salary they had years ago because nobody knows what they’re capable of.
Having a profile on LinkedIn will give you exposure to recruiters, potential employers, and like-minded people. It will help you present your skills, connect with other people who share the same interests, and find new job opportunities. But let me state something very important for you:
A poorly maintained profile is worse than no profile.
You should spend some of your precious time and/or money enhancing and updating your profile constantly. I’ll share with you a few tips based on my experience with LinkedIn over the past couple of years.
- Have a profile picture that represents you in a good manner. No party pictures, but as a developer you also don’t need to wear a suit.
- Use the summary for two to three sentences about who you are and what your major skills are.
- Describe each of your job experiences with one to two short sentences, and optimize for keywords like Java, React, and HTML that recruiters and algorithms look for.
- Certificates are optional. If you have them, show them.
I would recommend dedicating one to two hours each week to connecting with others on LinkedIn, writing responses to messages, and looking for projects or job opportunities.
6. Don’t Hesitate to Ask Questions
One thing that I often recognize with myself and others is that as we get more experience— especially when we get a new title like team lead or senior developer — we think that we can no longer ask questions because that would undermine our reputation.
This is completely wrong!
Whether you’re just starting your career as a software developer or have 10+ years experience, if you don’t know something, ask! Nobody knows everything. Nobody can know everything. The software industry constantly changes at a furious speed.
In addition, asking questions from time to time will help you establish a healthy relationship with your co-workers. If junior developers notice that their opinions are being heard, it will help increase their self-confidence.
And by asking questions, we can discover new solutions to problems that we would have never thought of because the longer we work in a certain environment, the more we’re stuck in terms of our thinking.
So I encourage you, beginner to professional, keep asking questions. Not only will it help you personally, but it will also help your environment.
7. Train Your Social Skills
Being a software engineer that knows how to write clean and maintainable code, how to deploy code into cloud services, and how to fix bugs in emergency situations is, of course, a great thing. But in today’s world, that’s simply not enough.
If you want to become a senior developer, you need to work on other skills as well. Most of the time, you’re working in a team. One of the biggest threats for any project is miscommunication. You constantly have to communicate — with other developers, with product managers, with project sponsors, with clients. You have to present new ideas and features and defend measures that your team committed to.
Improving your communication skills doesn’t have to be difficult. Often, it’s the small things that matter. Listen to others respectfully, don’t interrupt when other people are talking, and restrain your ego.
Many companies offer training for their staff that deals with social skills. While many developers think these are a waste of time because nothing will be coded, that’s exactly the wrong approach.
Don’t be that type of person!
A smart developer knows their strengths and weaknesses. Be open-minded, try out things even if other’s try to talk you out of it, and stay in control of your career.
These are some major things I discovered during my career in the software industry. It helped me a lot to work on each of the topics, and I really hope that it will help you too!