Software engineering is different from other fields.
Someone may claim to have five years of experience on their CV, but only 3 out of 5 were organic experience. By "organic", I mean time when you're actively involved in the software development lifecycle, you get to experience different problems, and you're constantly challenged.
You get good at software engineering by experiencing things.
The software engineering career path involves many "levels": junior, mid, senior, etc.
Each level requires different skill sets and a certain level of experience.
These definitions vary a lot from company to company.
Someone can be a mid-level engineer in one company but a senior in another company, and vice versa.
Even though we are brought to believe that you should be X by Y amount of years, this doesn't have to apply to everybody.
There's no set standard to "how long should someone stay at X position" or "where should someone be within X years".
Everyone learns at different speeds. It can take months, if not years until some concepts finally click and stick.
Not everyone is interested in climbing the software engineering career ladder as quickly as possible.
Overall, a career is not a straight line for everybody. It may be for some people. Other people must face multiple roadblocks before reaching a certain level of stability.
In the end, only you know how much progress you're making.
Comparing yourself to others is unfair because everyone has different backgrounds, work experiences, etc.
You can only compete against the older version of yourself.
Software engineering is a relatively high-status job.
Many people know that it's a high-paying role which offers many perks and flexibility on top of the high salary.
The market for software engineers is candidate-driven. Candidates receive a vast number of opportunities. There are more opportunities than there are for software engineers. This leads many software engineers to identify themselves with the job we do.
I believe this is a mistake.
In the end, software engineering is a profession. And your profession is not your identity.
It's a means to fulfil a higher purpose. This could be to provide for your family or fund your hobbies or side-project.
Even though we work in Sprints, I consider software engineering a marathon, not a Sprint.
You cannot learn it all within six months.
I see software engineering as a long-term game.
"It takes ten years to become an expert" - cit.
Being a software engineer goes beyond coding.
It also involves:
- Project management.
- Incident management.
- Technical Writing.
Coding is just one part of the entire software development lifecycle.
These are only a few things I wish someone had told me before getting into software engineering. The list can continue.
What is something you wish someone had told you? Let me know in the comments.
Until next time!