Welcome!
Hi this is John with this week’s Developing Skills - Skills for Developers looking to develop their careers.
If there is a topic you’d like to see covered, please let me know by replying to this email📧
Tip of The Week: Pick Your Mentor Carefully
A couple of months ago I surveyed software engineers on what mentoring they would like. Why? Because a number of people had asked me if I provided paid mentoring.
The results of the survey reminded me why I’ve avoided offering mentoring so far. Of the 154 responses I got to the survey, there were 81 different goals that they wanted my help with.
Some were well within my wheelhouse. I’d love to mentor new managers on the core aspects of their role, from stakeholder management, through conducting effective 121s to how to effectively coach their team. I’d be delighted to coach and mentor software engineers on soft skills and communication skills.
Others were bizarre, wanting my mentoring for topics like:
Advanced C# - sorry I haven’t done any C# since 2007, I’m the wrong person for that!
Advanced Android development - Sure, I once built an Android app because I’m curious, but that was at least ten years ago too. So sorry, I’m not the right person for that.
Become a Staff engineer in 1 year - from someone with less than a year of professional experience! I’m sorry, but that doesn’t happen. OK sometimes it happens through title inflation, but that’s just having the title, not the aptitude and skills.
So here’s some advice for software engineers and software engineering leaders who have rightly identified that a mentor can help them accelerate their career.
🚨 Before That, I Have Exciting News To Share. 🚨
I’m re-launching the Coding Challenges Live course series beginning with the Redis edition.
Coding Challenges live is a cohort based intensive course that runs for one week during which you’ll implement a lite version of a Redis server. Starting from scratch we’ll work through building a clone of the original Redis server and extend it to support the RESP2 protocol and some additional commands.
This course touches on a wide variety of topics that are applicable to general programming, for example:
👉 Parsing skills. These can be applied to a variety of problems including data munging, scraping, protocol implementation and more.
👉 Understanding network programming. This can be applied to making more robust, secure and scalable distributed systems.
👉 Experience handling concurrency and parallelism in software. Giving you the core skills to build scalable distributed systems.
👉 Testing. Network servers are complex system software with components that can interact in non-trivial ways. Figuring out how to test them is a challenge. You’ll explore unit and integration testing.
This course is for experienced programmers who'd like to take on the challenge of building systems software, specifically a lite Redis server. Not many programmers actually get the opportunity to write network servers or systems software. So, if you're curious about what writing a network server is all about, this is the course for you.
This course is entirely project focused. The goal of the course is not just to learn how to write a server, but also how to approach the problem of server software. Part of the course involves group discussion about problem decomposition, coding techniques, design tradeoffs, testing, and other related topics. The rest of the time is spent working on individual coding.
Coding examples are written in Python. However, the project involves no third-party libraries, esoteric language-specific features, or language-dependent tooling. As such, you're free to implement the project in any programming language that you wish. Writing a server is a great way to learn a new programming language too.
You might not think that you're ready to write a server, but if you've been coding for a while and know the basics of data structures, it's something that you can tackle. No prior background in network servers is required although awareness of common programming language concepts (e.g., types, functions, classes, scoping rules, etc.) is strongly advised.
You can find out more / sign up on Maven here:
https://maven.com/coding-challenges/challenge-redis?promoCode=EARLYDS
If you sign up before 12th November you can get 20% using the code: EARLYDS
OK, back to mentoring…
Selecting The Right Mentor Is Key
To make it work for you, you need the right mentor and that doesn’t necessarily mean someone you currently admire. Here are some tips to help you choose someone who can effectively guide you in reaching your goals.
1. Define Your Goals
Before seeking out a mentor, clearly define what you’re hoping to achieve. Do you want to strengthen your technical skills, gain insight into industry best practices, or receive guidance on career progression?
Knowing your goals will help you find someone who can meet your specific needs, different mentors may bring different strengths. It’ll also help you make the most of your time with them as you can clearly articulate what you’re looking for from the relationship.
2. Look for Relevant Experience and Skills
Choose a mentor with a background that aligns with your areas of interest. A mentor with this relevant experience can offer insights that are practical and directly applicable to your work. If you’re aiming to move into a leadership role, for example, seek someone who has successfully navigated that path.
3. Find Someone Who Shares Your Values and Approach
A good mentorship relationship is built on shared values and a compatible communication style. Find someone whose approach to work, problem-solving, and learning resonates with you. This alignment creates a foundation of trust and respect, making it easier to be open about challenges and receive constructive feedback.
4. Prioritise A Mentor With A Growth Mindset
Look for a mentor who is invested in continuous learning and has a growth-oriented mindset. A mentor who stays up-to-date with industry trends and emphasises personal and professional development will be better equipped to help you adapt to changes and pursue new opportunities. None of us know everything, there’s always more to learn.
5. Start with a Trial Period
It is hard to know if someone is a good fit until you’ve worked with them. A good mentor should be suggesting that you start with a few trial sessions to assess if the relationship is productive and if their guidance is helping you achieve your goals. This can save time and ensure you invest in the right mentorship.
6. Reach Out with Specificity and Enthusiasm
When you’re ready, reach out to potential mentors with a clear message about why you want to work with them and what you’re hoping to get from the relationship. Being specific about what you’re looking for and what your goals are. It will help them decide if they’re the right fit and allow them to be properly prepared to work together.
How To Ask Them To Be Your Mentor
There’s more than one way to ask someone to be your mentor, but to get you started here’s a template you can use for an email, slack message or social media DM. If you’re asking in person hit the same key points:
Dear [mentor’s name],
My name is [your name], and I currently work as a [job title] for [company name]. I've been following your work and have been impressed by your achievements, especially [mention a specific project, achievement, or skill].
As I am keen to [your primary goal], I believe your insights and expertise would be invaluable in helping me grow professionally.
My main goals are:
[your primary and specific goal one]
[possibly a second specific goal]
[optionally specific goal three, but no more]
To achieve them I believe I need to focus on these skills:
[list at least one specific skill]
[probably a second specific skill]
[and perhaps a third specific skill]
Are you open to taking on any new mentees at this time? If so what would be the next steps?
Many thanks for your time,
[Your name]
If you’re interested in any mentoring I might offer in future, please feel free to reply to this email or fill in the mentoring survey.
Regards, John
Three Ways I Can Help You Level Up As A Software Engineer:
I write another newsletter, Coding Challenges that helps you become a better software engineer through coding challenges that build real applications.
I have a course on building your personal brand on LinkedIn, it explains how I’ve built an audience over over 180,000 on LinkedIn and changed my life.
I run a YouTube channel sharing advice on software engineering.