Welcome back to The Modern Software Developer.
This month’s issue was inspired by the multiple requests I’ve been getting on LinkedIn from new interns or developers looking for their first role and asking for advice.
With this post, it's my aim to share my experiences, advice, and the wisdom I have gathered over the years. Hopefully, you’ll take away some tips to help you on your journey and possibly get your first job in the industry.
That being said, there a people better placed in our industry who focus a lot more of their attention on this space, some of whom are even career changers themselves…
One such person is
Go follow him on LinkedIn and subscribe to his newsletter, Code Your Future Digest👍
It can be super daunting to start a career in software development; it can sometimes feel like an insurmountable mountain.
You might be thinking:
👉 "Do I know enough?”
👉 ”What if I can't keep up with the constant changes?”
👉 ”How can I stand out in the ocean of similar job seekers?"
These questions and feelings of uncertainty are perfectly normal; everyone feels this at the beginning of their journey. I’d still feel a bit like that now if I was looking for a job.
Breaking into the Industry
One of the beauties of this industry is the several paths available to your first development job.
My Route
I didn’t take the traditional route… I got my break from a non-technical job for a software company. I didn’t know what software development was back then. When I realised it was something I wanted to do, I took home the company technical books every night and studied and built things. I was constantly asking the company software developers questions and asking for guidance on what I should look into next…
6 months later, they employed me as a junior software developer.
23 years later, this quiet, introverted, self-taught developer has worked at every level of the industry, including as a software architect for a global FTSE 100 company where I created standards and reference architecture to help hundreds of developers.
Other Routes into Software Development
The traditional path into software development involves earning a degree in Computer Science, although I’m living proof that you can do it without one.
In modern times, many successful software developers come from diverse backgrounds and take unconventional routes into the field. You might have just received your degree, completed a bootcamp, are self-taught, or are making a leap from another industry; either way, competition for entry-level roles is pretty fierce.
Setting Yourself Apart
In a field as competitive as software development, distinguishing yourself from others is imperative to finding success. There are several strategies you can employ to develop your unique edge; here’s just a few:
Growth Mindset
You’ll probably hear this a lot, but you need to adopt a growth mindset. This will allow you to take joy in a life of learning, which will give you a huge advantage in the software industry.
You’ll be more likely to keep abreast of new technologies as they arise, and more likely to analyse and improve your soft skills like communication, leadership (yes, even at your level!), and being a team player.
A growth mindset will help you deal more positively and constructively with the inevitable rejection that you will feel along the way, too.
Tips for cultivating a growth mindset:
👉 Understand how your thoughts impact your feelings and behaviour
👉 Seek out the positive from any and all feedback
👉 Look at challenges as learning opportunities
👉 Take on new opportunities that arise
👉 Persevere through setbacks
👉 Seek help from a mentor
Keeping up to date
Many people will tell you how the industry evolves so rapidly and that you must stay up to date with the latest tech trends.
Don’t take this too literally. You don’t need to learn every new tech in huge detail. It’s more important that you have the foundations covered and that you can talk about them confidently.
It is, however, worth keeping your ear to the ground:
👉 Follow industry experts on LinkedIn
👉 Follow technology news outlets
👉 Engage in technology forums
👉 Listen to relevant podcasts
This will not only keep you current but also inspire you with new ideas for your own projects.
It always looks good if you're aware of new tech, even if you haven’t yet learnt it.
The adoption of new technology, especially by larger companies, is not as fast as many people will have you believe, so simply having an awareness of the latest trends will show any company that you’re enthusiastic and a self-starter. However, that's not going to make any difference if you can’t talk confidently about the fundamentals of your role.
Networking
Opportunities often arise from who you know, not just what you know.
After the first few years of my career, every job I ever got came from a recommendation from someone I’d worked with in the past.
These days we have platforms like LinkedIn for professional networking. I only started building an audience about 2 years ago, and this is one thing I definitely regret not starting sooner.
LinkedIn allows you to follow, interact with, and learn from industry experts, as well as interact with your potential employers.
It provides you with a platform to create an online presence or personal brand and show the world of software what you’re about and capable of.
You might be thinking that you don’t have anything to post about, but believe me, you do:
👉 You could build your own projects in public.
👉 Share what you’ve learned and what you’ve struggled with.
👉 Share your experience of contributing to open-source projects on GitHub.
👉 Write posts to showcase your knowledge, passion, and continued learning.
👉 Show how you interact with others in the comments - software is a team sport!
Your journey into software development is not merely about acquiring knowledge - it's about positioning yourself strategically, showcasing what you’ve learned, and highlighting your strengths that will add value to any company.
Build your portfolio
Building a portfolio is something I’ve never had to do. With my level of experience, I don’t see it being a valuable use of my time. However, when you’ve not got that experience behind you, having a portfolio to showcase what you’re capable of will greatly benefit you.
You need to recognise that your portfolio on its own doesn’t get you very far. What is going to be most important is how you talk about it.
Being able to talk confidently about:
👉 The tech you used and why
👉 The decisions you made and why
👉 What you learned from building it
👉 What you struggled with and overcame
Now, if you’re wondering about what to build, you’ll want to follow
on LinkedIn and sign up for his newsletter here on Substack.These challenges are great and could be a fantastic talking point in any interview you find yourself in. John provides the requirements for the app, as you’ll build things that many in the industry are already familiar with.
One such challenge is building your own Redis Server. If you think this is beyond your capability, John is also running a 4-week course starting in August where he will actually guide you through the process.
If you’re interested in signing up, you can get a decent discount for being a Modern Software Developer subscriber - use discount code: TMSD25
Check out the course here: https://maven.com/coding-challenges/challenge-redis
Key Attributes for Success in Software Development
Software development is about so much more than just coding, which allows you to lean on your other experience and any transferable skills you might have to stand out.
Here are some key things you can focus on over and above your coding skills:
Curiosity
Curiosity is perhaps the number one attribute of successful software developers. A genuine curiosity will drive you to learn and adapt to industry changes, keeping you at the forefront of your field.
More importantly, it means you’ll constantly ask questions to help you learn from others in your team and get to the necessary details of new features and bugs. I can’t overemphasise how important curiosity is in software development.
Teamwork
Software development is more than what a lone genius does in a basement. It’s a team sport.
Teamwork is crucial due to its ability to foster collaboration, synergy, and efficient problem-solving. By leveraging diverse skills, knowledge, and perspectives, teams can tackle complex projects more effectively, resulting in higher-quality outcomes.
Effective teamwork also facilitates effective communication, enhances decision-making, and promotes a positive and supportive work environment.
Additionally, collaboration encourages knowledge sharing, continuous learning, and professional growth among team members.
Going forward, the better relationships you build with your team, the more comfortable you’ll feel, and the better opportunities will come your way.
Persistence
Persistence plays a critical role in overcoming the numerous hurdles that often arise during the development process. It fuels the determination to tackle intricate problems, navigate through setbacks, and find innovative solutions.
Additionally, software development projects can be extensive and demanding, requiring developers to persevere through multiple iterations, rigorous testing, and tight deadlines. With persistence, developers can maintain their focus, adapt their strategies, and push forward until they achieve optimal outcomes.
Problem Solving
It’s important to remember that the role of code in software development is that of a tool to help us solve problems. Before you get down to the code, make sure you know everything there is to know about the problem at hand.
👉 What is the problem?
👉 Why is it a problem?
👉 What is the impact on the end user?
👉 How much value is there in fixing it?
When you think you fully understand the problem, get feedback on your understanding.
Then consider several solutions for solving the problem… not all problems require code…
Communication
Communication skills are crucial for collaborating with team members, stakeholders, and non-technical individuals.
Effectively conveying complex technical information ensures smooth collaboration.
Being an exceptional communicator sets you apart from other developers, and strong writing or presentation skills are highly sought-after.
Cultivating these traits enhances your ability to deliver high-quality results and fosters professional growth in the industry. Combine these attributes with technical knowledge for a rewarding journey in software development.
Your CV
Technical skills alone won't be the decisive factor on your CV. Most candidates will likely have similar technical experience. Instead, incorporate your technical projects to demonstrate not just your technical skills, but how you've overcome challenges through persistence. Highlight your learning experiences and mention if you've had a mentor, showcasing your proactive attitude and eagerness to learn.
Connect different aspects of your personality and experience to tangible value for the role. If you're changing careers, emphasize transferable skills and their relevance to software development.
What Does the LinkedIn Community Say?
I’ll finish this issue with some snippets from my LinkedIn community…
💚 “👉 Ask as many questions as possible - there are no stupid questions.
👉 Even very senior developers get things wrong, quite often!
👉 Take time to understand problems, not just the technical, but why is it a problem and what it means to the user - learn the domain you're working in.
👉 Most importantly, build really good relationships with your wider team, not just other developers.”
💚 "Be humble".
💚 “Show motivation/drive for learning. This kind of energy is contagious and other people will automatically be more excited to help you!”
💚 “I'd add have a go at solving problems first if you can, then if you run into issues you can escalate and ask further questions. Your team will appreciate your efforts and be more inclined to help.”
💚 “Seek out a good mentor(s) in your organization. Many companies have buddy programs where one or two senior people will help out juniors with their growth…”
💚 "Be the Kind of Employee People Want to Work With".
💚 “Embrace continuous learning.”
Final Thoughts
Getting your first role in software development is challenging. It’s hard enough to learn the technical aspects of the job, and that is only the minimum requirement; most people on the same journey as you will have that too.
When you’re comfortable with the technical side, you need to lean hard on any other experience that will bring something to the table.
Whether it’s your mindset, your communication skills or transferrable skills from another role, it’s your task to specifically relate that to the role of a software developer and paint a clear picture so that the hiring manager doesn’t have to do it for you because the likelihood is, they won’t.
Keep your head up, seek feedback, and look for the positive in every situation.
Remember
It's not selfish to put yourself first; there's nothing more important than your own wellbeing!
Know someone that might find this useful? Do them a favour and share it with them.
Until next time...