Into event-driven architectures? I'm have a book to help! →
twitter

experiencedevelopment

Published on

A journey from Junior Developer to Technical Lead

My experience moving from Junior Developer to Technical lead and advice to others.


  • avatar
    David Boyne
    Published on 17 min read
Blog cover

Photo by Charlotte on Unsplash

I have been working within IT for 10 years now, starting my career as a Junior Developer and now as a Technical Lead at comparethemarket.com.

The journey has been bumpy, fast and exciting.

Through each stage of my journey from Junior through to Engineer, Senior and Tech Lead I have learnt and grown, every step along the way.

In this post I want to share with you what I have experienced and lessons I learnt to hopefully inspire you or help you on your journey. I hope something in this post resonates with you and adds value to your life.

So sit back and lets go back 10 years to the start of my journey as a Junior Software Engineer.

•••

#1. Junior Developer

Blog coverPhoto by Chris Hayashi on Unsplash

I remember just finishing my degree and landing my first job in Cambridge, UK. Going into the job was very exciting but also very apprehensive.

After the first few weeks I remember thinking everybody around me is an industry expert and I was struggling to get an understanding of how I could fit into this world?

The next two years was an emotional rollercoaster. The learning curve of software development was huge. I was introduced to deadlines, SCRUM, stories, bugs, pressure and the list goes on. I didn't really know if software development was for me.

I remember feeling like I couldn't ask for help as maybe this was a sign of weakness? Everybody is busy doing super complicated things right?

I didn't want to lose my job.

But with all the confusion set aside I had a great couple of years learning, growing, finding mentors and developing my skill set in JavaScript and Web Technology.

Its easy now to sit here and reflect on the time I was a Junior Developer.

Lets go back into areas I have already discussed and highlighted.

•••

"everybody around me is an industry expert..."

At every stage in our career we are surrounded by people who know more and less than us. At the start of your journey you may always find yourself as the person that knows less than everybody else, this is good thing.

Don't worry about being surrounded by smart people. In fact you WANT to be surrounded by smart people, this the perfect environment to learn and soak as much up as you can. Embrace it.

Even 10 years on I still aim to make sure I'm not the smartest person in the room to make sure Im learning and growing.

Being a Junior Developer isn't a bad thing. There is no race to become a Software Engineer, you are at the start of your career. The key is to keep learning and challenging yourself. If you focus on this, the rest will come in time.

"The learning curve of software development is huge..."

Writing working software is the "easy part". Writing scalable, testable & readable software is challenging. The learning never stops, you will continuously be learning throughout your career as a developer (that's if you want to remain valuable).

At the start I thought writing software was the most important part of the job, but as time went on I realised I was wrong. The most difficult part of software development is working with humans, so this is something you will have to work on (more on this later).

There is plenty of reading material out there. Start reading and applying what you learn, the curve is big, but it does get easier over time.

As long as your learning and applying what you learn, you cant go wrong.

"I felt like I couldn't ask for help..."

This thought still enters my mind today. For some reason we sometimes hold ourselves back from asking for help. But once you put that aside and reach out to others, doors open and more learning begins.

At some point along the way you will need help, either with software or your career. The requirement for support starts as a Junior Developer and will continue throughout your career.

Seeking advice and help is one the best things you can do. It helps build relationships and can help your grow and evolve in your career.

I have created great relationships with people asking for help, that has shaped me as a person and my career.

I highly recommend you seek a mentor or have regular 121s (we will come back to 121s later).

Some quick takeaways for Junior Developers

  • Stay humble
  • Keep open to learning new things.
  • Take everything in, learn and don't stop learning.
  • Its OK not to know everything. Don't worry.
  • Find a mentor & build relationships.
  • Its OK to ask for help.

Hopefully that has given some insight into my experience as a Junior Developer, lets now move onto my experience as a Software Engineer.

•••

#2. Software Engineer

Blog coverPhoto by Blake Wheeler on Unsplash

I finally got promoted from Junior Developer to a Software Developer. Unfortunately a few months later I was made redundant; however this ended up creating new opportunities for me.

Over the next 4 years I worked as a Software Engineer using JavaScript to build web applications and was also introduced to Agile Development.

I started working in cross-functional teams built of QA, BA, Product Owner, Technical Leads and Developers ranging from Junior to Senior level. I also had the opportunity to work with, and be coached by, awesome people along the way.

I was in an environment where we practiced some extreme programming techniques and paired on a lot of the stories we worked on. For me this was a great learning and teaching platform.

Pair programming allowed me to participate in driving and navigating the direction of the code. In the early days this forced me to step out of my comfort zone and also I started to feel a sense of ownership on the value I was delivering to the organisation.

I started to feel I had a role on the team.

But I still felt overwhelmed and the learning curve felt like it was getting harder.

So I started to develop a list of ways to keep up to date with the latest web technology. I started following people on Twitter, signing up to news letters, and attending courses.

Outside work I also started to attend local meetup groups.

Having a plan on how to keep up to date and attending events took my learning to the next level, and I felt like the learning curve was getting easier.

Overall my time as a Software Engineer was great. I acquired a deeper understanding of the software development life cycle and started to specialise in an area.

So again, lets go back and look at the areas I have highlighted as my time as a Software Engineer and advice I would give.

•••

"created new opportunities..."

Opportunities are everywhere. At the start they are hard to see, but as time goes on you soon realise there are many things you could pick up. For example maybe the build process of your application is slow but nobody is currently owning that? Or maybe you can see your team is struggling with something? These are areas you could own!

Keeping an open mind and owning opportunities is a great way to build your confidence and your career.

Opportunities throughout your career will come in all shapes and sizes. Its taken me awhile to learn how to embrace them, I recommend keeping your eyes and ears open about what opportunities are around and try and pick some up. I think you will be surprised with the results.

"introduced to Agile Development"

For me this is something I hold close my core values. I'm a huge believer of Agile and what it can mean for people and businesses.

Studying Agile methodologies and the manifesto has helped me as a engineer, mentor, coach, father and overall person.

I could talk about this area for the rest of the blog post but I highly recommend going on your own journey with Agile development to find out what it means for you.

There are plenty of meetup groups, books and courses you can attend to learn more. You could even come to Agile Peterborough the event I co-host (shameless plug).

"coached by awesome people..."

There will always be people that come in out of your life, and opportunities to find some great relationships.

I only started to seek out a mentor when I was a Senior Software Engineer but I recommend that you start at any stage of your career. The conversations I have had over a coffee or quick walk have been invaluable and helped shaped my career and life.

Take some time and think about what areas you would like mentoring on and reach out to people. I think you may be amazed by the result.

Start thinking about what you can do to mentor others. You don't have to be an expert to be a mentor, everyones expertise is in different areas. Reach out and see what you can offer others. Be confident and believe in yourself, their will be someone that can benefit from your knowledge.

"great learning platform and teaching platform."

I have already mentioned this, but as an engineer you will need to be continuously learning to stay in the game. The learning never stops.

Take time out and find out what works best for you, are you a visual learner? Do you learn by example? Figure out what is best for you and make sure you apply it.

Software development is forever changing and adapting, we cannot afford to stop learning. And why would we want too? Its will only get boring if you do.

Some quick takeaways for Software Engineers

  • Seek opportunities. Take them. Own them.
  • Step out of your comfort zone. Its the best way to learn.
  • Take everything in, learn and don't stop learning.
  • Start to give something back to your community. Teach others.
  • Find a mentor / coach
  • Its OK not to know everything.

Hopefully that has given some insight into my experience as a Software Engineer, lets now move onto my experience as a Senior Software Engineer.

•••

#3. Senior Software Engineer

Blog coverPhoto by Alexis Brown on Unsplash

So I started to seek opportunities inside and outside work when I was a Software Engineer. This allowed me to grow.

I started to own certain areas of the code, and promote ideas and solutions back to the team. This ownership felt good as I started tofeel valued and ownership of my growth and career.

I soon got a promotion to a Senior Software Engineer and I continued to master JavaScript, Web technologies and Agile development.

I soon realised as a Senior Software Engineer the role was naturally dividing into two. The code and the people.

I felt my core values changing over time, I started to care and value people as much as I valued the code I was writing. As I said before coding is half the job, people is the other.

At this stage I was fairly comfortable with JavaScript and started to mentor others.

I continued to explore Agile development and also started to experiment with ideas and solutions within the team which made our team stronger.

I learnt a great deal as a Senior Software Engineer. It was great to see how my core values had evolved and how my career changed.

So lets drill down into some of the areas I have highlighted:

•••

"ownership of my growth and career."

This took me a few years to realise.

As a Junior Developer and somewhat a Software Engineer my natural thought was "my employer owns my career and growth".

This is not the case at all.

Once I realised my career and growth was in my own hands I created a plan of action to keep learning and areas I want to grow in. Hopefully you are already in this mind set but if you aren't I recommend taking some time to think about that.

What do you want from your career? How could you grow?

Invest in yourself and it will pay in the long term.

"The code and the people..."

I started to see this as a Software Engineer. Software development is difficult. Coding is difficult and dealing with people is difficult.

Throughout my career I have met two types of Senior engineers:

  1. Einstein Engineer but cannot communicate with humans.
  2. Engineer that writes code and can communicate with humans.

Have a think. Which one would you be?

There is no right or wrong answer, but I believe there is more value to businesses and teams if we have a Senior Software Engineer that can deliver value and communicate to humans.

I believe its good to take our head out the code from time to time to work on our "soft skills". Every day in an Agile environment we are talking to people. Its key we can communicate with our team and stakeholders.

I recommend working on communication skills.

"mentor others..."

This is the key for me personally. The drive to mentor and help others.

If you're a Senior Developer you probably know what you are doing and have got experience. This is the perfect time to reach out and start to mentor others. Hopefully you are already!

Spend time, build relationships with people and start helping them. I have found it very rewarding and its a great way to develop others around us.

"I own my 121s..."

Hopefully you have 121s. Over the years I have realised the key to a successful 121 is to own it.

Your career is in your hands. Own it.

Take discussion points to your 121s, find areas in which you can improve. Get feedback from your peers and continue to grow.

So many times I see or hear about people not really owning their 121s as they believe the company they work for owns their career. Try and step out of that mindset and think differently.

Give it ago and see what results you get.

Some quick takeaways for Senior Software Engineers

  • Seek opportunities. Take them. Own them.
  • Take everything in, learn and don't stop learning.
  • Own 121s
  • Develop other skills not just code
  • Teach others, share what you know.
  • Its OK not to know everything.

Hopefully that has given some insight into my experience as a Senior Software Engineer, lets now move onto my experience as a Technical Lead.

•••

#4. Technical Lead

Blog coverPhoto by Margarida CSilva on Unsplash

As a Senior Software Engineer I wanted to take on more responsibility. I wanted to start adding more value across the organisation and overall I wanted to develop and help others around me.

I now believed I owned my career and I searched for opportunities for me to grow in the organisation.

So over time I started to add value across the business and take on more responsibility. I started to mentor others and started to lead a small team of engineers.

I started to deliver my first project as a Lead and found I needed a balance between code and leadership. I then spent more time out of work learning not only about code but also about people.

I was then promoted to a Technical Lead.

I continued to apply what I had learnt into my job. I continued to read books, watch videos and push myself into the new role.

Over the next couple of years, visions were set, teams were built and value was delivered.

For the final time lets go back and review some areas I have highlighted:

•••

"develop and help others around me..."

This is the most challanging part of the Technical Lead role I think I have faced. From my experience I have found there are two types of leaders:

  1. The Micro Manager
  2. The Leader

When I was promoted to a Technical Lead I knew exactly what I didn't want to be. That was a micro manager.

I truly believe anybody can "lead" a team and tell people want to do, but to give autonomy, mastery and purpose to each team member and lead a vision is something else.

Luckily I was clear on what I didn't want to be, which has allowed me to focus on what I want to be.

So my advice to other Technical Leads would be try and drive autonomy, mastery and purpose in your team. I have seen some of the results on the teams I have been part of and the results are amazing. Its inspiring to see people care about what they do.

"learning..."

I have said this many times now, and it never ends.

Continuously learn and explore ways to teach others. Teaching is a great platform to learn something.

"visions were set..."

Leaders have visions. Taking people on that vision is the key.

I have learnt that I cannot deliver vision on my own, but I can inspire others to help deliver a vision and be part of a journey.

I have also learnt giving others control of the vision helps is success. Let others own it and drive it.

I have witnessed teams that share the same vision and goals and seen amazing things.

Give up control and let others grow.

Some quick takeaways for Technical Leads

  • Give away control. Allow others to grow.
  • Drive for autonomy, mastery and purpose.
  • Give opportunities to others. Let them grow.
  • Set visions, take people on journeys.
  • Allow your team to fail. Through failture we grow.
  • Learn and don't stop learning.
  • Teach others, share what you know.
  • Its OK not to know everything.
•••

Conclusion

Blog coverPhoto by abednego setio gusti on Unsplash

The world we live in is forever changing. Technology is growing fast. Keeping up to date and remaining relevant is difficult but also exciting.

At the start as a Junior Developer I thought things would get easier and I would know everything I need to know in a few years time, but in reality the learning never stops.

I believe its a truly amazing time to be working within this industry and opportunities are all around us.

I hope you have found this post useful and areas can help you shape your journey.

As for me, I will continue my journey and see how much more I can learn and share.

•••

⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️✨

5 years ago I wrote this post from my journey from Junior to Technical lead since then I have shared even more experience about being a Tech lead.

Time Machines & Leadership: 10 things I wish I knew at the start

In this post "Time Machines and Leadership" we cover all the things I wish I knew at the start when becoming a Technical Lead.

If you are interested or on a similar path check out that post.

⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️⭐️️️️️️️

•••

Thanks for reading.

signature