Here’s my next post which appeared first on Simple Programmer..
As I look back on my first full year of working as a developer, I have realised a number of things that are essential to this position.
Daily, a developer needs to think mostly like a developer, but partly like a business analyst to get the reason why the business wants the new feature. You need to think partly like a product owner to understand its value of this in the team’s roadmap, and partly like a tester to defensively code around the ways they will think of breaking your beautiful new feature by anticipating users’ behaviour. That’s before you consider all the tech skills developers need to accomplish fulfilling the tasks these different ways of thinking will bring.
These different ways of thinking and the abundance of skills are things that I didn’t consider when deciding to switch careers into development. Taking all this into consideration, I thought back over my first year and came up with a short list of tips that I think will help anyone entering as a junior developer in any industry. If you implement any of these tips below, I am positive that your first steps into a development career will be a lot less daunting, a lot more productive, and get you off to a great start.
Embrace debugging and improve your debugging skills
You will always need to debug no matter what level you get to. Most of a developer’s job is reading code, figuring out how and why things have been made the way they have, and fixing bugs. But it can take you a longer time than most developers if you’re not as experienced at reading code. And even if you are, trying to navigate archaic code or “smelly”, “unclean” code isn’t a task you enjoy. Because if you’re a good developer with a conscience, you know that you’ll have to fix the issues in the code that you’ve found on top of your original task.
Practice reading code
The best way I’ve found to improve is to read code as often as possible. Just like any language, the more you read and write it, the more you’ll improve.
Always be asking “How does this work?”
Delve deep into how something works the way it does. For extra credit, learn the reasons behind the technical methods that were chosen to fulfill this feature.
Diving deep
Walk through the code and see if you can understand why it works the way it does. To understand what technical techniques were used, speak to any long-standing members of your team that would know why they made those technical decisions. It may be that the methods they used are now outdated and you can suggest newer techniques that will save time, save money, or improve performance and ultimately make your company more money. This is always a big win in your favour.
Understand the value of your task
There’s no point in spending time implementing a new feature if you don’t understand why you’re doing it, how it’ll be used, what value it’ll provide the end user, and its impact on the business itself.
Look at the bigger picture
Make sure you talk this through with your line manager about the larger value of the product you’re working on. It’s their job to ensure you get all the help you need in order to produce the best results.
This is usually discussed before you even start developing. But if you’re unclear, make sure you ask why you’re doing what you’re doing. You could have a new way to approach the task that hasn’t been thought of which would deliver more value.
Find what you enjoy and become an expert
Let’s be honest. During the first year (or maybe longer) of your development career, you’ll feel stupid.
The sheer amount of technology that you’re supposed to be able to use competently will overwhelm you. What will keep you optimistic, even on those dark days where you feel everything is breaking and you’re powerless to stop it, is finding something you enjoy.
When you enjoy something, it doesn’t matter how inexperienced you are in the topic, you’re just learning, so it’s all fun and games. You don’t expect to know everything, but you’ve got the confidence that you’ll get there eventually.
Become the expert in this topic and make sure you share your learnings with the team.
Explore your interests
Keep a log of the different skills that you use daily. Make a short list of the ones that you enjoy, pick one and deep dive into it.
Picking a skill that you use daily means that it’ll continuously be useful to you and your team. Whereas, if you pick a tool that you’ve only used once or twice i.e. a really cool bit of new tech to solve an edge case business problem, it may be fun, but there might not be any long-term use. So although diving deep into a specific skill is a good idea, make sure that you gain a return in the long term for the time you invest.
And picking one means you won’t spread yourself thin. You can focus on building that one skill up so that you are confident using it.
Keep a log of your activities
I think I learned this skill from one of John’s YouTube videos. Keeping a log of your activities helps you to recall what you’ve done and learned in your role. It also gives your manager an insight into your daily activities if you’re not in regular contact.
The format of this log is up to you but remember, this log should not take time away from your actual role.
Create a template that’s quick to fill in but extracts the important information for you or your manager to peruse. I would also advise that you send these logs to your manager on a weekly basis as opposed to daily.
How I do this?
I experimented with completing daily logs then compiling these into a weekly report for my manager. But in the end, this took way too much of my time. So I ended up just completing a weekly log and I email this to my manager every week.
In my template I include:
- My feelings for the day
- Weekly goal
- Daily tasks
- General daily summary
- Numbers for work items
- Anything unexpected
- Anything I’ve watched, read, or attended that improves the skills I use in my role
- My next week’s goal
- Lessons learned
Find out what skill or role your team lacks then throw yourself into it
Every team has their own strengths and weaknesses. Your team is no different.
If you’ve created a shortlist of topics you enjoy or, if you’ve been compiling your list of daily skills in your weekly report, you may want to figure out what skill your team is weakest on.
How to do this?
After identifying this list, you will be able to see if the skills that you most enjoy cross with a skill that the team needs. If so, great! You can kill two birds with one stone, finding something that you enjoy and provide the team with valuable knowledge in an area.
If not, then pick the skill that you believe will give the team the most value.
Try and pick a resource or medium that you learn from easily so that the information can be absorbed quickly.
Keep a log of anything you do above and beyond your job in a ready to view format
In every permanent, big company role that I’ve had, there is always a process in place to review performance of employees.
But, when you’re sitting in front of your desk looking at a document asking you what you did six months ago to contribute to the organisation, it’s not surprising if your mind goes blank.
Everyone finds recalling information like this challenging. Sometimes people can’t remember what they did the day before, let alone six months ago!
Compile your list in a single file
I’ve tried a few different ways of keeping track of my extra activities. I first tried keeping a list with pen and paper noting down the task I did and the date. I found that at this stage, you don’t need to mention what the outcome was, as you’re just noting it down so you don’t forget all of your examples.
But, this list suddenly became quite long and random bits of paper tend to get lost or deteriorate over time. I needed a more durable and easy to edit solution. Enter Excel.
My second solution was to use Excel and use it in the same war as the pen and paper. But I found that maintaining the dates and accounting for ongoing tasks wasn’t so simple in this format. So, I searched the internet and found this free timeline software. It’s really simple to use, and exports to PDF.
I’m still using this piece of software now (although I’d love a Mac version).
So, what should you track?
Note down everything you do inside and outside of work that either directly contributes to your role or strengthens any other skills you’re interested in.
If you’re working with a backlog, you may find setting this up is a bit tedious, but have patience. Once it’s done, it’s done and very simple to update.
As a junior, you may feel that you’re constantly learning and never gaining knowledge. But this will paint you a very different picture. After six months, looking back on your timeline will make you feel really awesome. Your confidence in your abilities will soar because the timeline clearly shows you exactly what you have achieved.
Make time to train yourself everyday
It’s important that you keep up your skills in a software development role, because the technology in this field is ever-changing. So don’t wait to be offered training by your manager –– seek it it out yourself.
Finding time even on busy days
Carving out time to learn will be another challenge. It takes a lot of discipline to stick to a training session every day. You need to make sure that you don’t take on too much day-to-day work so that you’ll have to skip a session. The danger of this is that once you skip one session, you’ll be more likely to skip another.
To combat this, schedule this time into your calendar and set yourself as busy. This will deter anyone from contacting you during this time, remind you that your session daily will be commencing soon so you can prepare, and get you into the routine of training yourself regularly.
What do you train on if you don’t have a focus?
If you don’t know where you should start, you can either focus on:
- skills that your team needs, or
- improving your weaknesses
There are many resources online that you can use to train yourself. These range from free, online courses to paid and subscription courses like Pluralsight, Udemy, and Coursera.
Like everything you want to improve, you should do this everyday. Even if you do one coding challenge, read one page of a chapter of a book, or watch one video that will improve the way you work, it all adds up in the end.
Share your challenges and how you came to the solution
This is invaluable to show how you learn and solve problems. Try and share solutions with others in the same position as you, with the same problem. Sometimes learning from someone at the same level as you is far easier than learning from a senior.
How do you do this?
Try and keep this in an easy to search format, so if you find the problem you solved months ago reoccurs, you’ll be able to save time searching Google for the solution.
Blogs are the easiest way to store this information (and one of the things John recommends every programmer has), because they are easily accessible by everyone.
Make sure your posts are properly tagged and are SEO optimised. Doing this in a public medium does mean you’re more vulnerable to negative feedback but it also publicly builds up your authority and shows your growth to the community. So ignore the haters and keep blogging.
Find a mentor
Everyone knows that you learn best from making mistakes, but it can be more beneficial sometimes to bypass your mistakes altogether.
If someone else has already spent time making the same mistakes, has learned the lessons, and is willing to share their findings, wouldn’t you want to skip the mistakes and go straight to the lessons learned? This is exactly how a mentor can help you.
Among other important things like guiding you in your career, you can use mentors by listening to their experiences and what they’ve learned.
How you should do this?
A mentor can be someone within your team or outside of it. To be honest, they don’t need to be within the same field you work in. They just need to have gained the skills that you want to acquire or level you want to reach.
In some companies, pairing juniors with someone more experienced is a structured programme, so take advantage of this if you think you’ll benefit.
However, for many, finding a mentor can be tough.
Being a mentor can require a lot of time to deliver the best value you can to your mentee and sadly, some people just haven’t got the time. So if you are one of the lucky few who get a mentor, make sure you’re clear on what each of you expect, the time you can both put in, when you’ll meet, how often and what you’ll discuss in each session to ensure neither of you waste your time.
If there’s nothing formal set up in your company, ask your manager if they can arrange something. If you’re not able to find anyone within your company, there are a few sites that match mentors with mentees, like Mentorsme.
If you do manage to find a mentor, don’t accept someone without first asking them about themselves, their skills, experience and their time restrictions. Also keep in mind that your mentor should be someone you get on with as you’ll be spending your precious extra time with them.
So there you have it
I feel that recording your progress, sharing your newly found knowledge, knowing where you’re going, and getting the guidance by more experienced minds is crucial to starting off well as a developer.
Being able to reflect over your accomplishments throughout your early days as a developer is crucial in building your confidence. It may also give you an indication of which path to specialise in. But, you can’t do that without keeping logs and recording your progress. Recognise that at the very least this task will help you identify your own achievements and be a physical reminder that you have grown in your field.
I’d love to know what you think. Which steps do you think are more important? Have I missed something that you’ve found was integral to your progression and growth? If so, feel free to leave a comment or message me so we can discuss our junior developer challenges and hopefully overcome them together.