Career Advice for a New Software Engineer
In the summer of 2004 I started my first job out of college. I spent almost two years doing low value body shop consulting for various large corporations. I struggle to remember any of the project work I did, nor do I remember any significant accomplishments. But I did learn how to exist in a corporate office environment, dress for business casual, and not appear completely inept in meetings.
It wasn’t a great time to enter the tech industry. The tech world was still in recovery mode from the dotcom bust, and software development had not become ubiquitous in all industries. But the day job did provide a steady paycheck, enough to live significantly better than I did in college, and it allowed me to save almost a year of living expenses.
My first few jobs were pretty tough, and it took awhile for my career as a professional software engineer to really take off.
Looking back on my career almost 20 years later I’d offer the advice below to my younger self, as I think it would have helped avoid many hard lessons that were painful to learn.
- Time spent meticulously planning your career tends to be time wasted, but make sure you know you’re at least headed in the right direction.
- You may not be able to control your luck, but you can control how many attempts you get to be lucky. Intentionally put yourself in situations to receive new opportunities often.
- Gain competency in the technologies needed to do your present job well, but spend the bulk of your time learning skills necessary to grow your career.
- Pick a few technologies that have staying power and learn them thoroughly. They will make you continuously employable. Pick a few more technologies that excite and energize you and learn those too. If they don’t gain any traction it doesn’t matter, the act of continuous learning and exploration is a skill you want to cultivate.
- You will spend far more time communicating with humans than machines. Learn to write concisely and speak clearly.
- Compilers are predictable. Humans are not. If this fact continually frustrates you seek out companies with dedicated career paths for engineers. Management is not the only viable path for advancement.
- You will not be able to avoid people and have a successful career. Any company that employs humans will have politics. Make sure you take the time to learn the unspoken rules and values of a company you work for. You will not find these published on the wiki.
- As you gain experience do not confuse the ability to lead with the ability to manage. Leadership skills are valued far more than management ability.
- Do not take the presence of ping pong tables and beer in the office fridge as an invitation to treat the office like a college dorm. Look at what the people in charge are doing first. It is better to err on the side of treating work as work and nothing more.
- Rarely does “work hard, play hard” mean what you think it does.
- The coworkers you stay in touch with throughout your career are relationships you want to actively maintain. Creating lasting friendships with peers during your career is incredibly important. Having a successful career without strong relationships with your peers is playing the game on hard mode.