So you want to be a software engineer?
Here are the things you want to think about now
People often ask me about how to think about planning a software career. So I wrote a thing.
1) Are you a dog shit chaser or a pipe dream chaser? Or somewhere in between?
Neither end of the spectrum is bad you just have to decide which one you are.
For example I have some friends who if you paid them $300,000 a year they would litterally pick up dog shit for the rest of their lives.
Making lots of money, and having a high probability of continuing to in the future is literally all they care about. These are obviously the dog shit chasers. They will work super long hours, do really boring stuff, maybe even miss the occasional holiday… as long as you pay them top dollar for it.
(Pipe) dream chasers are the on the other hand very mission driven. They want to impact the world or to take a saying from the great Steve Jobs “make a dent in the universe”. They go to work at early stage startups, start their own companies, work at non-profits, etc.
Basically they have a dream of being a successful startup founder or solving world poverty or something like that. And they structure their careers around being able to achieve those goals or one day start their own project (startup, non-profit, etc.) to do so.
Again neither side of the scale is better or worse. Its just important to figure out who you are and be honest about it. There are many people stuck working high paying jobs they hate and wish to do something more interesting. But by the same token there are plenty of people who spent years on a failed startup and are frustrated with all of the money they could have made working for someone else who did better.
You also don’t have to be at either extreme. There are places in the middle where you can make great money and still like it i.e. by having a good work life balance. There are also places you can get payed little and get none. Watch out for those and avoid them like the plague. Always make sure you have good mentors (at your company) to help you take your career in the right direction. If not leave that company immediately or get your own outside. which leads me to
2) Find and maintain strong relationships with good mentors
Having people in your life you have been or are in the places you want to go is fucking paramount. They can help you not step in the ditches they did, run around the obstacles they ran into, and get to the next checkpoint on your life journey faster.
Make sure you show them appreciation and give them value also but you would be surprised by how many people just like seeing someone get to not make the mistakes they did.
3) Do you want be a pure software engineer or more of a product engineer?
Are you a product engineer (do you want to help shape the product vision?) vs strictly stick with software engineering (i.e more backend focused like helping scale the software or looking at data less dealing with people)?
I personally am more of product engineer.
I love tinkering with tech but ultimately in the service of making something cool that regular people will use. I like being able to point to something on a website or in a app for instance and be like “I made that.” So I tend more towards thinking about how can we use tech to solve problems everyday people have and how people can best use the software I make.
I have friends who are more software focused people though. They only want to deal with computers and deal with people as little as possible. They think about scaling issues, hard technical problems, and clever solutions all day.
Again neither side is better or worse. Just who are you and what makes you happy.
4) Do you want to work in your home town or local market and be close to home/ and family?
Do you want to go to a regional superpower where you will make a good salary and your money will easily go a long way? (i.e Austin, Denver, maybe Portland)
Do you want to be a digital nomad and work from anywhere while you travel the world? (i.e. have some friends who have traveled all over southeast asia, many other parts of the world)
Do you want to play in the big leagues and make it in Silicon Valley or at Top Tech Companies anywhere? Do you want to work with the best of the best?
Based on that you will know is how tough the interview process will be and how prepared you need to get.
I wrote a blog post previously about interviewing
Based on the leveling there up to level 3 will get you a job pretty much anywhere but the San Francisco Bay area and Silicon Valley’s elite.
You need to master level 4 and be really sharp all around if you want a shot at one of the top tech companies. The competition is stiff, lots of incredibly smart and successful people want these jobs. You have to be just as good or better than them to get in the club.
5) Finally pick a vertical but NEVER get married to it.
Pick what you like and seek the master it i.e. mobile apps, web applications, machine learning, data science, or artificial intelligence. Just a few of the many sub disciplines in software.
But never get married to a technology stack (i.e. describe or think of yourself as a specific language or think programmer) and always focus on being a great software engineer in general. Never forget and constantly refresh your CS fundamentals.
People who ignore this do so at their own peril. Technology is evolving everyday. Stay on top of trends and make sure you can learn the new hotness when people eventually decide the old stuff doesn’t cut it anymore.
6) also read this now DEAR GOD do I wish this existed at the beginning of my career because I would have approached it totally differently.
whether or not you are ultimately interested in startups it is still great for helping to plan a career in tech.
I also leave you with another resource a friend suggested
I haven’t read through it fully but it seems to have some good advice on career planning in general.