15 ways to transform you in the greatest software engineer
Easy actionable tips that will get you that promotion now!
I have been working as Software Engineer since I was 20, during this time I did and learned a lot of things and I always tend to keep track of such “life lessons”, so, I thought it would be a good idea to share the most related to our work life as software engineers.
1. Chase responsibility and money will follow
I’m sad that too many people are focused solely on money and not to build a strong skillset and brand for themselves.
Why do you think you will have better monetary prospects in the future if you are an underpaid CTO or an overpaid Junior engineer? Choose your jobs wisely.
2. Keep the fire in you alive, at all costs
Everything the man has accomplished always comes from a thought, a desire, and an unquestionable determination. You need to think about what you want to become, and have a consuming obsession, a burning desire to accomplish it.
You should have a vision of where you want to go so that you know if every decision you make (not only career-wise) will make your ship move faster and safer. As the famous British row-men medalists in 2000 used to say, will it make the boat go faster?
3. Work hard
No one will grant you a promotion, salary increase, or a better position for nothing. And plain hard work is not enough; you need to be efficient as well.
Working hard and delivering no value is useful for no one, avoid people who count productivity by the number of hours you sit on your chair, the companies they work for are usually super-toxic and will make you miserable. Thankfully, those are becoming extinct in our field.
4. Learn new things every year
Try to learn one new language (ideally a language that is popular and pushes you out of your comfort zone) every year to keep your brain sharp and keep up with the trends of the market.
If you neglect to sharpen your skills, they will eventually abandon you too. Many people think that a computer science degree made them some kind of prince/princess, where the companies will beg them to join them and everything will be handed over easily, just because they have a piece of paper on their walls.
Don’t get me wrong, I do believe a degree can give you loads of useful knowledge (for instance I have a bachelor’s degree in SW Engineering and a master’s degree in Administration) but too many people stop there.
This is why I admire self-driven/self-taught programmers, because they may lack some knowledge on a given matter or have some technical gaps, but they know for sure that no one will give them any piece of success for free.
Also, if you don’t know (at the bare minimum) some basic things about the most popular trends, you are doing something wrong. You don’t need to be an expert to have a grasp of the world around you.
5. Take full responsibility for your career
You had a tough childhood, your ex-manager (or the current one) was a jerk, you had 5 divorces in 3 different marriages and the web framework you invested 2 years to master is not popular anymore. Things are a mess in your life. There is no positivity around.
But you are an adult and you should fight this battle yourself. Having a tough past is not an excuse for not being your best self now. Focus on what you can do to make things better and make sure that you… =>
6. Avoid hatred
If someone is better than you on something don’t hate them, learn from them. We consider people that are better than us, as threats. It’s your choice to treat them as potential sources of improvement and you should do the same.
I remember a couple of colleagues from past employers who were extremely good to handle pressure and come up with solutions on thin-ice-problems. I have learned a lot from them, I never felt envy, because I knew I could acquire that skill as well.
Beware, if for any reason there are no better people (technically) than you around, it’s time to find a better place for you and your career. Trust me you don’t want to be the best unless you are the CTO or something similar. But even then, as the common saying goes, “you need to hire people better than you”.
Hatred can ruin your personal life too, in terms of mood and reduce positivity in your life. You have nothing to gain by hating people.
7. Invest a fair amount of your income in professional education
If your company can afford that for you, that’s even better.
YouTube is a fantastic resource for learning but if you are serious about your craft and of course, your income allows you so, you should have a subscription to a high-quality training service like O’Reilly or Pluralsight.
Find the learning method you like better and exploit it. Speaking of professional education =)
8. Avoid companies which have no training policy
I might be very hard and biased here. You may allow exceptions where the company is fairly new to the market or have low funding.
Given that the field requires constantly updating your knowledge and being up-to-date, I tend to not take companies that don’t have a proper training/education policy seriously into consideration.
The bare minimum of proper education policy for me is, each employee to have a dedicated budget, which can at least cover (annually)
- Attending a conference
- Buying a couple of books
- Buying a subscription to a high-quality training service like O’Reilly learning
- Do a certification
Of course, most people will not do all those in a year for many reasons; maybe because they have settled or because they have a family and they cannot dedicate much of their free time, but the thing is that the company should not be an obstacle if the employee wants to do so.
I am more demanding for big companies where I would expect (additionally) some invited lectures on-premises, especially on domain critical things. For example, if the company is migrating to Scrum it is good to bring an Agile coach around to set the stage.
9. Use the best tools money can buy
For example your IDE, in the same logic as in hardware; don’t go cheap on your IDE. As it is said in the pragmatic programmer book, pick an editor and learn it very very well. High-quality tooling can save you hours.
Don’t forget that money are pretty much compressed time. You pay a higher monetary price now and you save time later.
Some tools you can use are Visual Studio Code which has a lot of plug-ins and extensions totally free. If you have a few bucks, Resharper is a very good option.
10. Having a great manager is the best denominator to having a healthy work-life
You probably already know that if you have a supportive manager with whom you can communicate effectively and you like the tasks you have in your job it would be a blessing.
People don’t leave companies, people leave their managers. Make sure your manager will try to make you enjoy your stay. Ideally, do so before accepting an offer.
11. If you stop learning you are already obsolete
The relatively high salaries that are connected with the software sector are correlated (among others) with the level of change that occurs in this field. The sector is moving so fast that if you stop learning you are already obsolete.
That doesn’t mean you should spend every waking hour reading and coding, but don’t go on the other extreme where you have settled and neglected the changes that are happening.
12. The only way to make sure you know something is to teach it
That is the reason I initially started writing here. If I learn about something interesting (even as part of my training plan or on the job), I try to explain it here and share the knowledge with everyone.
13. Consistency is better than intensity
Connected to your learning mentality above, reading about your craft 30–40 minutes per day is better than spending the whole Sunday in front of the monitor to cram unreasonable studying workloads.
You knew that from college, didn’t you? Stress levels were way better when you did were doing your homework, bite by bite and not in the last evening.
14. First make it work, then make it right, then make it faster
That famous expression from Kent Beck is one of my (and Unix’s) favorite mottos. I am shocked by the lack of pragmatic thinking in the industry.
People giving too many fucks about spaces vs. tabs, about snake case vs camel case, about how to name an interface, etc.
No one (?) disagrees that those are important things but they are important only if we have something that works.
My favorite is watching people, putting extensive documentation to code that is not even compiling. Be pragmatic, friends.
15. Unit testing is boring but…
It can be life-saving when things are going tough like the product is growing big very fast or a big scale refactoring is coming.
And remember: If ain’t tested is broken.
And one more just to thank you for reading all the way down here:
15+. Don’t forget your soft skills
Unless you are a freelancer accepting faceless bids or someone who delegates the sales and customer handling stuff to others, you need this.
We work with people all day and we need to know how to communicate effectively and speak an acceptable business language, with all due respect to people not being identical to us.
It might not be a problem if all people had low soft skills competency, but as this is a bit dystopian and I asked you to be pragmatic above, you need to become better in this field too.
You might be doing this already and I can certainly tell you this is the right path. I had asked leaders, managers, directors, and CTO’s around, and they all agree this is the recipe for success.
If you consider these tips, like guidelines to follow every day in your career, I’m completely sure you will be better than you are right now.
Feel free to ask anything in the comments below. I appreciate any kind of feedback you might have.
If you like this, or not, either way, I’m sure you are gonna love this: https://medium.com/swlh/c-lean-code-db84f8e312d4