Programming/Computer Engineering as a career is pretty much exactly like playing World of Warcraft.
You spend a year or two desperately trying to catch up with the people doing end-game raids. You petition, desperately, for the attention of a guild recruiter, and ultimately one of them has an opening and decides to give you a shot.
For the first two months, maybe even a year, this is amazing. You strut about Orgrimmar in your purple gear under the dragon head your guild put up on a spike and you wallow in the attention of new players who dream of being you.
… and then one day, you realize that you’re bored. You’ve been casting the same damn spells in the same damn order in the same damn boss fights for four consecutive months. You’re not learning anything new. Your character is no longer evolving. Your job is now primarily helping other characters to evolve.
You go through a bit of an existential crisis. Perhaps you change guilds a few times, try to find greener pastures. It works for a few months each time, and then you find yourself in a new rut. A new routine.
You try starting your own guild, convinced you can do it better, avoid the mistakes of your predecessors. You fail, because running a guild has very little to do with being a Tauren Shaman. It’s mostly about people skills and business acumen.
Fortunately, here’s where the metaphor begins to break down.
Programming isn’t like being a Tauren Shaman, because programming doesn’t have a max level and a limited number of possible talent point layouts.
The rabbit hole never ends. You can grind xp forever.
This is your salvation.
Find a place where you can learn constantly… where your evolution as a programmer is encouraged, even required.
Personal growth is your job, and if it isn’t your job, you need a new job.
Never, ever stay in a company for longer than a year if you do not feel like the company is making you better at the things that you do and providing you with opportunities to add to the list of those things.
Tips for working as an engineer:
- “Any engineer can solve a problem given enough time, a good engineer solves a problem in the least amount of time”.
- “Engineers try to solve a problem in the right way where they should be trying to solve the right problem”
- “Learn to say no to things that might block you or bring you down.”
- “It is okay to not know all the answers. ASK.”
- “There is no point in having tightened security if there is no functionality to the product”
- “Understand the problem you are trying to solve before solving it.”
- “Any engineer can write code. A good engineer knows when to write the code or if it is necessary to write the code”