Website logo
Pablo Porto
Author photo

Seven lessons I wish I knew as a junior software engineer

Thoughtworks office views

Nine years ago I moved to Manchester to start my journey as a junior software engineer. To mark my ninth work anniversary, I sat down with a nice cup of barista coffee and gathered my thoughts on what I think are the most important lessons I learned along the way.

These are the seven things I think every junior software engineer starting their career in 2023 should start considering doing to create a long and fulfilling career in tech.

1. Optimize for learning over money

Not all experience is created equal

Not all experience is created equal. Doesn't matter how many years of experience you have. What matters is what you were doing all those years and with whom. Treat being in the right learning environment a priority for your first couple of jobs. At the beginning of your journey, learning and growing during your working hours is far more important than money.

The knowledge you will gather during the first years of your career will compound and it will allow you to get higher paying jobs in the long term. Of course, you should only do this if you don't need money for paying off debt or supporting a family.

The best career decision I made by far was leaving my comfort zone, move abroad and start my professional journey in a great working environment. Working with a group of international and passionate people that cared about their craft expedited my learning more than anything else. With remote working, you can now find these type of places without having to leave your home.

Being in a great learning environment during working hours is only the first step. Don't forget to study and train a bit each day. That daily hour of study will also compound fast over the first years.

2. Focus on principles and practices

Invest in learning the principles and practices behind modern software engineering. Tools and technologies come and go, the principles and practices of our craft last longer.

I was lucky to be in an environment where my colleagues emphasized the importance of good practices over tools. Knowing practices like clean code, refactoring, automated testing, and test-driven development will make your code a pleasure to work with.

3. Be the engineer that everyone wants to work with

The degree to which other people want to work with you is a direct indication of how successful you’ll be in your career as an engineer. Be the engineer that everyone wants to work with. - John Allspaw

Making your code a pleasure to work with is important but that is only half of the job. Don't become the engineer that nobody wants to work with. Collaborate with others, help that colleague that is stuck, listen to other people's ideas even if they are not your own, and try be the kind of person everybody wants to be in a team with.

4. Keep the balance

You cannot be really first rate at your work if your work is all you are. – Anna Quindlen

Try to adopt the habits and rituals that allow you to have a decent work-life balance if you want to have a long and fulfilling career. Investing additional time early in your career, like that extra hour studying every day I mentioned, doesn't mean that you should forget other areas of your life like your health and relationships.

To avoid burning out, you should balance times where you invest more in your career and others where you can just relax and just do your 9 to 5 shift. These are some of the rules I set:

  • No work related stuff on the weekends
  • Disconnect from the computer in the evenings
  • Remove any work related stuff from my smartphone
  • Reduce my screen time after work
  • Find hobbies that get me out there, like traveling and MTB

Of course, there are periods where we break these rules and put more time into career related projects or self-learning. That is totally fine as long as you are aware and you are willing to make that compromise for what you are getting out of the time you invest on them.

5. Feedback is gold, mine it!

We all need people who will give us feedback. That’s how we improve. - Bill Gates

Constantly ask for feedback. Feedback, especially constructive, will help you identify your blind spots and get to know yourself better, faster. Feedback will boost your growth more than any other thing.

I am lucky to work for a company with a well established feedback culture. I treat feedback as gold. I consolidate and curate the feedback I received in digital notes. This feedback allows me to spot trends, reflect, and write down some actions I want to take to become a better professional. I set a reminder every month to go over this list of actions to check if I am improving.

If you are not asking for feedback, start now! Here are good tips to get started.

6. Go broad first

To be a successful professional these days, I believe that one should go broad first (master the 20% that will allow you to deliver 80% of the tasks) and go in-depth only when there is a big need, a big opportunity, or a strong interest in keeping developing your skills further in a particular area. - Thiago Ghisi

Don't just stop at the tech and the tools. Learn about product management, agile and lean ideas, the business domain of the problem you are trying to solve and how to work with people and lead a team. Be a product engineer and question what you are helping to build.

My most productive learning experiences came from leaving my comfort zone and pushing myself to wear other hats. The better you understand the other roles in a team, the better you will be able to collaborate with them and contribute on building a high-performing team.

There are always opportunities to explore and cross the frontiers of your current role. You can volunteer to do the exploratory testing of a new piece of work, work with the operations team to build observability into your service, or pair with the product manager of your team to understand why the users are not liking the latest feature you shipped.

This can be a bit of a controversial advice, but I believe the best engineers I worked with were well-rounded. They understood the end-to-end software development process, the product and the business problem they were trying to solve. They were not afraid to speak up and suggest improvements in areas not related with their main role.

Becoming a generalizing specialist allowed me to make an impact quicker when starting a new project from scrach or jumping into an existing one. Going broad and learning how to be well-rounded is the second best super-skill you can spend time on after learning how to learn.

7. Share your journey

Become a documentarian of what you do. - Austin Kleon

Build a habit to document, curate, and share your work early in your journey.

My biggest regret is not starting to capture and share what I learned earlier. Don't become the engineer who only consumes, contribute back!. Write that comment or appreciation in an article you like, publish that article that you were thinking of writing for a year, and sign up for that talk you are so afraid to give. There is always someone that can find your current challenges and ideas useful.

Writing your ideas and learnings down and sharing them with other people will allow you to get feedback faster and develop a better understanding of a topic. I really like Thiago Forte's idea of building and sharing "intermediate packets".


These are the lessons that have resonated the most with me over the last nine years. I hope you find them useful to set the foundations for a long and fulfilling career as a software engineer.

What's the most important lesson you've learned since starting in tech as a junior engineer? Feel free to ping me at @portovep and share it with all of us.