10 Things I Wish Someone Had Sat Me Down and Told Me Before My First Software Engineering Job
I love ❤️ being a software engineer.
I get to build incredible products, impact people's lives, and constantly learn new things.
However, many aspects of the job were surprising at first, and I wish someone had told me these 10 things 👇:
1. Forget about being comfortable.
Even with over 5 years of experience, I still encounter many uncomfortable moments. In fact, I never find myself complacent for 3 reasons:
Once I master one level, I immediately need to progress to the next and begin again.
As a frontend engineer, I frequently need to quickly adapt to new tools.
I often find myself making decisions without having the full picture, and unfortunately, Murphy's Law often comes into play here 😅.
2. Programming is about tradeoffs.
Ever asked a question to a senior engineer, and they replied, "It depends"? Yeah, as frustrating as this response can be, it's often true. Programming involves making tradeoffs: every decision depends on your specific use case and what's most important for success.
For instance, if you're creating a banking app, prioritizing safety and reliability would be more crucial than if you were developing a personal app.
3. You will be on the hook for the code you write (a.k.a. be on call or on support).
I wished someone had told me I would have to hold a phone/computer 24/7 during certain times of the year and be ready for any problem 😅.
4. Your job is to solve problems, not write code.
As programmers, we love to write code. However, any code we write can become a source of future problems (i.e., it needs maintenance, bugs may arise, etc.). Therefore, you should strive to write the minimum amount of code necessary to solve your problem.
5. The perfect code doesn't exist.
Software is written by humans, and humans are not perfect. That is it.
6. One of the best skills you can possess is to learn how to say no.
As a programmer, you are flooded with opportunities/ requests, but only a few will matter. So, you need to learn how to politely decline and do so whenever needed.
7. People > Software.
Great team, great software. Bad/unorganized team, bad software.
8. You will go a long way with some humility.
When I first started out, I was eager to prove myself, so I often made suggestions without fully understanding the context. That was a mistake. Now, I make sure to get the full context before offering any suggestions.
9. Don't take programming books as gospel.
After reading the book "Clean Code," I would go around and add comments everywhere, over abstract logic, etc. Looking back, I could have been more critical and applied the advice only when it made sense.
10. Technologies come and go. Principles stay.
That's it. Those are the 10 things I wished I knew.
What about you? If you're already a programmer, what do you wish you had known? If you're not one yet, what would you like to learn?