Ten Ways to Have a Successful Early Software Career
By Michael Hedgpeth · July 19, 2023
Ten Ways to Have a Successful Early Software Career

Great careers start with the actions people take in their first four years. Some people unknowingly get sucked into the wrong course and end up in a place they don’t want. Others avoid the distractions and make the right decisions. Here are ten common characteristics of those who do it right:

  1. Focus on the technology and code. The core expertise you’re building is that of a technologist; everything else branches off of that. So use this time to focus and deeply understand your technology and code. Don’t get distracted by meetings, promotions, workplace drama, or company strategy. You should spend the majority of your day either pairing with someone or heads down in an important, deep problem.
  2. Plan to Learn. Sit down for an hour or two without distractions and ask yourself what you need to learn to be like the people you admire on your team. Create a plan and timeline for accomplishing that. Learn how you learn. Do you learn best by taking a class? Watching a video? Reading a book? If you don’t know, find that out with some experiments, and incorporate learning into your everyday activities. Don’t wait for your manager to allow this. Do you think a professional basketball player asks permission to practice free throws? You’re a professional now; practice is included in the job!
  3. Ask, ask, ask early and often. There will be a voice inside of you telling you that you’re clueless about this stuff and that people are going to think you’re dumb for asking questions. Don’t fall victim to that! A key source of my success is learning how to ask the right questions. Now is a great time to start! Ask questions, take notes, review your notes, and continue to ask more and more. Curiosity is the central trait that drives people to senior positions in our industry. And unfortunately, your fear will be the enemy of curiosity. If you take my advice here, and it’s still not working, you should strongly consider switching jobs.
  4. Avoid distractions (for now). Don’t focus on the company’s performance or making sense of what leaders say. Don’t get sucked into your colleague who hates your manager and wants to vent. Also, don’t waste time on Slack trying to include yourself in every conversation. As I say above: spend most of your day with either your headphones on coding or in a pairing session in person or on Zoom. You should focus. That will build the context needed to get to the next level.
  5. Manage your manager. I have some sad news: most managers do a horrible job managing early-career employees. Their advice might be, “Keep doing what you’re doing.” Don’t settle for this. Manage your manager’s expectations and work to get aligned with them on your contributions to the team. Ask the right questions.
  6. Know the career path. Your goal during this phase is to get to a Senior Software Engineering (or equivalent) position within the first 4-6 years. If you’re at a large company, the path from where you are to that position should be clear, with clear leveling guidelines. If you’re at a smaller company, it’s much more fluid. Whatever the case, figure out what these expectations are, so you can be aware of how your actions contribute to your promotion journey.
  7. Don’t Prematurely Optimize. The temptation is to hurry to the next stage. You want a great career, so you want to get promoted as early as possible. Perhaps you want to figure out why no one is listening to the customers. Or figure out whether to go to that fancy new technology everyone is talking about. Don’t fall into that temptation! Instead, focus on getting things done and building context. Don’t allow yourself to be pulled away from that.
  8. Become an expert at something. As you progress, and do the things that are above, figure out what learning and experience will make you the go-to person for your team. Sometimes this involves someone leaving the company or having the grace to give you some room. It involves you being intentional about deeply learning a section of your software, so you can speak authoritatively about it. Take a certification. Solve every bug for a particular component. Whatever the case, seek to be a deep expert on something. From this, you can build on more and more things.
  9. Collaborate, don’t compete. At this stage of your career, there is plenty of room for everyone to progress. Someone might be better than you at this, and leadership might promote them before you. That’s great! Celebrate it! Support them! Creating a habit of collaboration will help you down the road when collaboration becomes the job. So your colleagues are your teammates, and you win together. Don’t compete with them or seek to take credit. If you follow the above advice, you’ll naturally succeed. Guaranteed.
  10. Have fun. Remember why you chose this profession. This is hard work, but turning an idea into a solution becomes addicting. Remember to celebrate those moments when you learn something new, fix a bug, or implement a new feature. This work is filled with negativity (compile errors, broken tests, bug reports, production incidents)—don’t let that swallow you up. Find the fun in it, and have fun!

Those who follow these guidelines are destined to have a solid career. To summarize: your early career is about building the fundamentals of creating software. With those fundamentals in place, you can decide if you go to management, be a principal engineer, or even go to sales or consulting. Let that all come to you as you build a solid foundation for your career.

I’d love to hear from you if you’re in your early career and this resonates. I’m interested in creating a community of people who are supported to optimize their career progression.