Nine Rules for Software Engineers
If you had told me five years ago that I would be a software engineer in 2021, I would have had a hard time believing you. I have been very fortunate to have in a relatively short time managed to grow not only as a software engineer but as a leader and ultimately as a person.
In the last five years, I have:
- More than quadrupled my salary, as well as finding ways to generate recurring wealth through my website and investments. This has given me financial flexibility and freedom that I have never experienced before.
- Grown a network of extraordinary and inspiring people.
- Challenged myself mentally and taught myself about subjects that I had never even thought about before.
- Most importantly, found happiness. I think this is due to an accumulation of the above things, but also changing my perception of the definition of what happiness is. In a sense, having more has taught me the value of appreciating the smaller things in life.
In giving a talk a couple of months ago to a cohort of bootcamp attendees, I wanted to give as much value as I could and I came up with these nine ‘principles’ or ‘rules’ for aspiring software engineers. These are the most valuable lessons from my transition into software engineering. I learnt these the hard way, through trial and error, and I think embracing the following will massively help anyone going through a career change, graduating university or generally making their way into the role of a software developer. Ultimately I believe, if you are trying to break into the tech industry by learning code - then these are the principles you should follow. Keep them pinned above your computer, revisit them regularly, and let them guide you on the right path.
There is more to being a developer than developing.
Technical ability alone will only get you so far. Soft skills, such as communication, productivity and leadership are equally, if not more, important. Past jobs and experiences, even if they are not software related, are very attractive to hiring managers for these reasons. If you are a career changer, don’t hide your past, shout about it.
Double down on your strengths.
Everyone has weaknesses, and it’s ok! It is a longer process to improve weaknesses, (and actually many times they are just part of our personality and cannot really be improved), so stick with it and don’t let fixing them overtake doing what you excel at.
Never stop building.
You can’t learn or improve at a musical instrument without playing it. Similarly, you can’t improve code without actually coding. The quickest way to get good, is to build stuff, again and again. Also, the ‘Tutorial Loop’ is a real thing!
Open Source projects are your gateway in.
Open Source gives you the opportunity to work on large, real-world codebases. This is the best experience you can get as a beginner and having a portfolio of features & bugs you have contributed to projects is super valuable.
Always ‘under promise’ and ‘over deliver’.
For your own sanity, if nothing else. Protect your time and mental wellbeing, you never know when an obstacle might pop up or you have to wait on someone else to get something completed. This is the best rule to live by when you start your new role as a developer.
Networking is undervalued.
A support bubble of like-minded people is one of the most valuable assets anyone can have. Take the time to grow a network, whether it is on Twitter, LinkedIn, Instagram, GitHub. All but one of my jobs have come through connections on LinkedIn, and I got a handful of clients from Instagram when I was a freelancer.
It is more than OK to not know everything.
There is so many interesting technologies, but learning them all will slow you down. It is better to be a master of something, than a jack of everything, especially early. You should be able to count the number of technologies you are learning on one hand.
Working smart > working hard.
It’s honestly better to spend 1 hour a day working at 90% capacity on meaningful work, than to spend 7/8 hours working at 20% capacity on meaningless work. Forget the mindset that you can’t learn software engineering if you don’t have loads of free hours to study in a day. It is very possible, as long as you work on the right thing.
Growth Opportunity > Salary.
Don’t let a higher salary tempt you into taking a role that offers no opportunities for growth. It is simply not worth it.