Over the course of my 14 year career in Software Engineering I have made some really great decisions as well as some really bad decisions. I hope you can take some knowledge from this and apply it to your own life so you can avoid some mistakes as well as optimize the path you take in your career!
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2ef7288-13a9-4da9-b187-88f34ababc2d_800x533.jpeg)
Best Decisions
Getting an internship before starting work
While I was still in college at Texas Tech, I applied to several internship programs during a biannual job fair.
I thought it would be a good opportunity and I’d make a little bit of money that I could then use to splurge on car parts (I used to be really into cars as a hobby).
I ended up landing a summer internship with a large Defense Contractor in Denver, CO, which I did two different summer internships with.
I learned many valuable skills AND I got to experience what the job would be like well before starting a career in software engineering. This added great experience for my resume and I met many new friends that I have to this day.
If living in a different place also sounds nice then that is also a benefit of an internship. Colorado was a great place to be in the summer and I got to experience a ton of outdoor activities that I wouldn’t have otherwise had.
Maybe the biggest benefit of all was I had a full time job offer once I got out of college and didn’t have to fret about applying to other companies or having an unknown of what I was going to do or where I was going to get a job.
Pro tip: when applying to internships, apply to them in the Fall since many companies like to be ahead on their hiring and if you wait until Spring then you will likely miss out on a large portion of the opportunities.
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e439c4f-871a-4430-853a-33c03e9fc7f3_800x530.jpeg)
Getting a Masters & Bachelors Degree in 5 years
One college hack that I made during my time in school was to go through an accelerated Masters program where I was able to get dual credit for a few Bachelors and Masters classes at the same time.
Not only did this save me a whole year of tuition but I graduated with a Masters degree and received a nice pay bump in my full time job offer.
Personally I wasn’t really ready to graduate just yet (I used to play a LOT of World of Warcraft) and this gave me an extra year to get all my gaming in while also getting some nice benefits.
If you are ever able to earn dual credit between high school and college OR between your Bachelors and Masters degrees then definitely take that opportunity so you can get ahead from a financial aspect in multiple ways.
Changing jobs every 2–3 years
You have probably heard this before but honestly changing jobs every few years early in your career is truly the way to get raises and make sure you are well compensated for the work you are doing.
By switching companies every few years, you keep your interview skills fresh and instead of getting 3% or 4% raises, you can get 10 or 20% relatively easily. Especially if you can get a promotional title at the new company.
Companies tend not to reward employees that are there and are always looking for the next round of new talent to join and make an impact.
The fact of the matter is you are far better off earlier in your career switching, getting experience and getting those additional pay bumps. When layoffs come (as we have seen over the past couple years already) companies will not think twice about reducing head count and cutting their biggest expense.
People.
Note: you shouldn’t just expect promotions, you need to earn them and the best way is to set goals and have a conversation with your manager. If your manager sucks then it may just be better to look for a new job anyhow.
Later in your career you will probably want to stay at companies for longer periods of time to gain experience and solve harder problems, there is a stigma of being a “job hopper” that feels like a larger barrier at higher levels but take this with a grain of salt as it depends on the company. I’d love to hear from anyone later in their career that has continued to swap every few years and know whether they had any friction in getting their next roles.
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88ea595f-f341-4660-b737-50278233b079_800x450.jpeg)
Worst Decisions
Getting a degree
Ok, this one is definitely a hot take.
I just finished telling you that getting my Bachelors and Masters in Computer Science was one of the best decisions I have made.
However.
I think this path was a good decision for me personally because I simply wasn’t mature enough or ready to start my career and be serious about working full time until I had gone through school and was older.
Some of the smartest people I have ever worked with either didn’t have a degree at all or went back later to get their degree after many years in software engineering.
Software Engineering in my opinion is a lot more of a trade than something you NEED a degree for.
Sure there is a lot of theory and you will run into this during the interview process with sorting algorithms, Big O notation and other concepts.
But the people who could build software. And I mean really build software and loved coding and building applications for millions of users didn’t always have a college degree.
Depending on the industry or company you are going for you may be obligated to get a degree. But if you just want to build software and make a living and don’t care about working at big companies like Google, Meta, Netflix. Then you likely are wasting your money and time IF you are mature enough to just into a software career (maybe a boot camp).
If you are sold on going to college and getting that experience, consider ways to reduce your debt load or eliminate it altogether with scholarships or Research Assistant roles (this is how I paid for my entire Masters degree without any loans).
If you can come out of college broke (e.g. not negative and in debt) then you can invest that money early and retire in your mid 40s or 30s.
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c8c3cf6-44e4-4526-b2bc-9ca27e6aec82_800x536.jpeg)
Being late on writing automated tests
Early in my career testing was not really a thing. I learned some JUnit in school but really never dug into it and certainly didn’t write any tests when building projects or assignments for class.
This was a mistake.
I wish I had started learning to write automated tests sooner and not try to have all the logic be in my head.
Write a failing test. Make it pass. Refactor.
With those simple steps you can build incredibly complex systems and build them incrementally with tests at your back to help you revert your work and get back to passing tests to try again.
Testing is a skill all by itself and the sooner you can get familiar with testing and better yet, Test Driven Development, then you will be far ahead of the game and your peers looking for jobs.
Picking the wrong place to argue
I’ve struggled most of my life with a really bad temper. I grew up with 4 younger brothers and they knew how to push my buttons and get me riled up.
Most people have no idea because it is something I work on every single day.
But in your career, regardless if it is software or something else, you need to work well with others and work well on a team. You can simply create so much more and such a better product when working on a diverse team.
There have been a few times where I picked the wrong time or place to have an argument and burned bridges or caused more harm than good.
Generally if you have a disagreement, standup with the whole team is not the place to get into the weeds and have it out with a team member. Handle those discussions 1–1 or in a smaller group. Everyone will thank you for it. Ask questions first and try to avoid making assumptions.
One of the best books I’ve read on handling these type of conversations is Crucial Conversations. Check it out if you struggle with confrontation and want to work on your communication skills.
Crucial Conversations: Tools for Talking When Stakes are High, Third Edition
Crucial Conversations: Tools for Talking When Stakes are High, Third Edition [Grenny, Joseph, Patterson, Kerry…amzn.to
Not investing more in 401k right away and not investing at least enough to get the employer match
If you ever are thinking about not contributing to your 401k, at least the bare minimum to get your employer match, please reconsider.
My wife and I were renovating our house and I stopped contributing to our 401k for awhile during that time.
One of the worst financial mistakes of my life.
I could write a whole other article about my financial mistakes (maybe I just will), but this is one that would have been easy to avoid. I wish I could go back and not make this mistake that cost me thousands of dollars.
Pro Tips if I could go back
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1425870d-12d5-4b5e-9ec3-da814affae47_800x533.jpeg)
Keep (digital) notes
I have recently read a couple note taking books and have REALLY gotten into note taking and organizing notes digitally. Taking notes is something that helps our consciousness and lets us internalize and reason about the world around us and how we truly feel.
One great thing to internalize and capture is what you enjoy about a company or role you are currently in. This will help you answer questions later in your career on what type of company or job position you would like to be in and enjoy the most.
What company size works best for you?
- Do you like wearing multiple hats at a small company?
- Do you like going deep in a specific problem space? (e.g. frontend, backend, databases, etc.)What do you enjoy the most during your day to day?
Do you see yourself in this position in 5 years?
Capture your thoughts and notes on these questions and revisit them every 6 months to see if anything has changed.
If you are looking for a digital note taking app, I would highly recommend Obsidian (bonus points if you use Neovim too).
Network more
Having hundreds or thousands of connections on LinkedIn isn’t the goal I am talking about here.
Having maybe a 100 true connections in LinkedIn or in your personal life that you can rely on and can give back to is what I am talking about.
Meeting people from all walks of life and getting to know them at conferences, jobs, meetups, coffee shops, etc. can expand your network and help you navigate your career.
My past 3 or 4 jobs I have gotten mostly from just knowing people and talking with others in my professional network. In addition, I have helped many others land jobs or find a gig after getting laid off from their current employer. If you do good work and are a kind and motivated person then people will look out for you and come to you with interesting business opportunities. Don’t think only about what someone can do for you, instead get to know them as a person and how you might be able to provide value to their lives.
As a side note, have a professional looking LinkedIn page (with an up to date picture of you), people will constantly look at your LinkedIn page and will sometimes make hiring decisions based on it. This is an easy win so don’t mess it up.
Conclusion
Although I feel that my choices could have been more optimized, those same choices are what got me to the point I am at today in my career and in my life. I hope that sharing some of these decisions can help someone with their own career and if you have questions on what you personally are trying to decide then feel free to ask in the comments!