Advice to a Junior Software Engineer, from a Junior Software Engineer
My name is Joshua and I’m a Junior Software Engineer in the Microsoft Applications and Cloud Engineering Team (MACE) at Capgemini.
Like many of us new joiners, I came in with many preconceived ideas of how things would be and what would be required of me to successfully deliver on my projects. Some of those notions were correct — but quite a few were not. Those will be the ones that will be discussed in this post.
Finding the solution to a problem?
So let’s begin! When I joined, the first thing that came into my mind was:
- “CODING!”
- “What’s the tech stack?!?”
- “Wheres the documentation to set up my dev environment!”
- “I wonder what tasks I’m going to be able to pick up…”
Whilst these were necessary questions for when I first joined the project, It didn’t take long for me to realise I had no idea what the system was built to do nor did I understand the problem I was brought in to help resolve. And expectedly, I hit a brick wall fast.
Now I know this sounds obvious but the following sentence is easily done by inexperienced devs:
Running to CODE, without having the right understanding to PLAN.
One of the best pieces of advice that I ever received, said:
“Before even touching the keyboard, understand plainly what you’re being asked to solve, and even when you think you understand… plan it out on paper first.”
On my most recent project, the business processes for which the developed systems worked were quite complex and the main struggle with delivery was understanding the business’ needs! Not the actual programming.
It wasn’t until I spent a good amount of time to understand the core business processes and business needs that I was then able to understand the problems — then.
All-in-all, we are problem solvers first — Developers/Coders second. So understanding the business first is key.
Developing your communication skills for maximum effectiveness
The next thing that can easily be overlooked by juniors coming in (I was guilty also) is the ability to communicate effectively with colleagues both technical and non-technical.
When I began, I thought that working as a developer would just be me being handed a bunch of tasks to complete and then left to get on with it.
While we developers typically pick up tasks that have already been predefined, navigating them oftentimes requires team collaboration, whether you’re speaking to a BA or a fellow Dev.
One issue I had when I started as a Junior was “rambling”. Especially during meetings.
I would go round in so many circles that the person who the question was directed at would be left confused, and that did discourage me slightly (incoming imposter syndrome). However, that later made me realise that I didn’t fully understand what I needed help with.
Which leads on to a few tips have helped me get better at communicating effectively within my team:
- Write your questions down on paper before you ask — Doing this gives you a script (and cures rambling). Reading it back before asking also lets you know whether the question makes sense and is effectively laying out your query.
- Understand what problem you have and think ‘what do I need to solve’ — Doing this will help you to be concise and effective because you 100% know what issue you’re having at that given time.
- Learn your team’s lingo and speak it — They might abbreviate the name of a system, call entity a table or vice versa. Following your team’s conventions, where you can, will cause more efficient and effective collaboration and team problem-solving.
- Don’t stop — Speaking from experience, don’t stop asking questions. Do keep trying to communicate with colleagues to get the job done. If you feel as though you’re speaking a different language — go away, rethink and try again!
Conclusion
As Juniors, we are all in this together and I hope my advice has been of some help to you all. Hopefully we can all connect soon!
Finding The Right Path for You
Capgemini has programmes and paths tailored for Apprentices, right up to Experienced Professionals. Below are some examples and links to learn more: