5 Years Experience in 3
In life, very few things trump “I’ve done it before”. This is especially true for software engineering.
In my years of interviewing candidates for a software engineer role, I have seen people who have only been working 3 years, and yet have the equivalent of 5 years of experience.
The surest way to gain experience in software engineering is by doing and by doing only. Experience does not come naturally from long tenures.
If anyone spend 6+ years in a place where all they do is edit an HTML page to update its content, they’ll become an excellent HTML editor. However, the day they get a job at a SaaS company, where they’re expected to expose an API, they’ll struggle.
It’ll even be a miracle if they get the SaaS job in the first place because their current experience will not match the job requirement.
If you’ve never been on a football (soccer) pitch before, no matter how many tutorials you read or watch, you’ll struggle the first time playing. In the software engineering profession, it’s not enough to read and watch, you have to put to use that which you’ve learnt.
There’s so much your workplace can offer inherently, after the first one year, you will probably know every in and outs and become comfortable.
Seun are you saying I should leave my stable and comfortable place into the unknown because of the experience 🥺? Not necessarily.
You can equip yourself by learning new technologies and finding ways to incorporate these new technologies into your current job.
If you’re not able to use it in your current employment, you can find open-source projects written in that new technology and contribute to it. Side projects is also another way of gaining the experience beyond your current job. It doesn’t have to necessarily be a paid one.
In fact, I paid for my own 😁. I remembered when I was learning Spring Boot, I read tutorials and practiced sample projects. I felt something was still missing. So I started by building an open-source blog application using Spring Boot.
It did not end there. I deployed that application; first to Heroku and then a production version to DigitalOcean. Deploying it gave me the experience of building an application from scratch to production.
In the process, I learnt how to manage database migrations, since I can’t just wipe the database as I hitherto do on my local machine. I learnt CI/CD, setting up a Server from scratch, Linux commands, and configuring ip tables.
I learnt how to preserve settings when restarting the server, how to get SSL certificate for a domain, DNS management and so many more vital lessons that add greatly to my overall competency as a Software Engineer.
If I had stop at the level of sample code here and there, I will be missing out a lot of the other learnings. smattme.com was running that SpringBoot application until few months ago when I have nothing to prove again about building and running a SpringBoot application.
If you’re just starting out your career, you need to produce a lot of quality output.
This is because in software engineering, you grow by solving challenges.
If you have not built an application that requires updating the user’s profile, where the email is unique. You may not know to ignore the record you’re currently updating when checking for duplicates 😃.
You may not really appreciate the importance of paginating your GET results until the day your customers start complaining your page is taking too long to load.
Trust me, you’ll think indexing an existing column in a table is a walk in the park until you have to do it in a table that’s 100 GB in size. That thing will humble you.
As you increase your output by coding more, you need to be cautious of the work ethic you’re building alongside. A mentality of “quality does not matter as long as it works” instead of “I need to build this to the utmost standard” will become a problem in the future.
While you’re an Associate Engineer, it may not matter the quality or following the standards, so long it works. But you see, that trait will become a muscle memory and then will haunt you when you are looking to become a Senior Engineer.
It is hard work, and there’s no shortcut.
My guiding mantra has been to know as much of the inner workings of the tech I work with as possible.
Your team uses OAuth2.0 security framework which was built before your time. The onus is on you to ask around how it was done, study the codebase, solve bugs about it, and add new features to it.
This is so that when you leave the company, and you’re in a position where you need to implement OAuth2.0, you are able to find your way around it and get it done.
Someone doing the barest minimum in a company, will definitely miss out on this.
The biggest benefit of working for a company is the experience you gain. It is your bargaining chip for the next promotion or the next job.
In all your getting, ensure you get the experience - good experience. Which will come when you actually code and solve challenges. Certifications are great, but certificates with no commensurate output demonstrating know-how is not.
All the best, and Happy Coding