5 Inspirational Tips for Junior Developers
Everything will initially feel overwhelming. Do not expect to know everything quickly. You should take your time and pace yourself. You may well feel out of your depth but feeling this way is normal – all developers have felt this way at some point early in their careers. Try not to feel insecure, make a plan, use our tips, and motivate yourself whenever you can.
Our first five inspirational tips
This is the first in a series of blog posts with inspirational tips for junior developers.
1. Ask questions, lots of questions
The starting point for any junior developer is to ask questions. And don’t be afraid to ask lots of them. There is nothing worse than sitting in silence and struggling with a problem. Learn to understand what your threshold is for trying to resolve a problem – thirty minutes, one hour, four hours, one day? After that, it’s time to ask questions and get answers. Don’t just go to Stack Overflow.
Firstly, make sure you document what you have already tried so the person you are asking doesn’t have to waste time. If you have multiple problems/questions, consider their priority and whether some could be gathered together and asked at the same time, which helps with everyone’s time management.
If you have multiple tasks, could you work on a different one to allow for the best time to ask the other person the questions? The key is to know who to ask, when, where and how to ask the questions. You have to balance these elements.
Don’t just get answers – always try to get problem solving techniques rather than straight answers. And try to understand what you are working on – understand your code, don’t just copy and paste.
Finally, don’t be afraid to ask the same questions that you may have previously asked if you don’t understand the answers. Getting multiple answers from multiple people can help cement in your mind the techniques and solutions that have been provided.
2. Take notes
Life comes at you fast! You need to learn, and you need to learn fast. And you will get plenty of opportunities combined with an information overload. But how to suck all that information in and process it efficiently? The answer is to write it down – take notes – get organized. And we don’t mean just the code, consider making notes about your company, processes, people, the business, etc. It may feel like you are not learning much, but I guarantee by doing this you are going to learn much faster than someone who does not.
Work out which technology works best for you whether it be a pencil and Post-it notes, a pen and paper pad, your smartphone, tablet, computer, or a full blown, cross platform note app like Microsoft OneNote, Notion, or Evernote.
Anything new or not familiar that you need to learn should be prioritized for note taking. Document solutions and make notes around them so that when you look back on them you have a better chance of understanding them. Take special notice of your department’s/company’s workflows, the DevOps stacks used, software and any available documentation, and the culture of your department/company.
The worse thing to do at this point is to make notes and then never look back. When you have time always go back through those notes you made and research them if you need to expand your knowledge. If you don’t have time you may need to use some of your spare time to do this but if you’re lucky enough that your company allows you, consider blocking out a regular timeslot in your calendar for this learning process e.g., once a week on Monday or Friday afternoons, or once a month such as the last Friday of the month.
3. Read books
Don’t sit and work at your computer all day. Sometimes you just need to stay away from the keyboard. Step away! While you are away, read. And read some more. Read lots! If there is just one book that I recommend that you really must read, it is Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin. The book helps you with:
How to tell the difference between good and bad code
How to write good code and how to transform bad code into good code
How to create good names, good functions, good objects, and good classes
How to format code for maximum readability
How to implement complete error handling without obscuring code logic
How to unit test and practice test-driven development
4. Do not be afraid to tackle tasks you are not sure how to do
Learning means doing stuff that you have not already done before. Don’t always pick the easy jobs/tickets/tasks – the ones you already know how to do. Sometimes it is wise to pick ones you don’t know how to do because that way you will learn something new. Set a standard for yourself beyond your current capabilities.
Consider trying to become the go-to person for something in particular. Pick a development area that does not already have specialists in your team, learn it, learn it really well, master it and become the “person that knows everything about widget_code_v2”!
5. Learn to test (and debug) your code
Testing is hard, really hard. The quality of your testing ability indicates the difference between junior, mid-level and senior developers so it is really important that you learn to test and debug your code.
The basic steps for debugging are:
Know that a bug exists
Isolate the source
Identify the cause
Determine a fix
Apply the fix and test it
Repeat steps 4 and 5 if necessary
You will need to learn how to test with the toolsets you have. This will not only help you build better more reliable code but also improve your overall developer skills too. Excellent developers utilize a testing method known as Test Driven Development (TDD). The process is simple:
Before you write implementation code, write some code that proves that the implementation works or fails. Watch the test fail before moving to the next step (this is how we know that a passing test is not a false positive – how we test our tests).
Write the implementation code and watch the test pass.
Refactor if needed. You should feel confident refactoring your code now that you have a test to tell you if you’ve broken something.
Source: Eric Elliott’s TDD Changed My Life blog post.
This method implies “unit testing” which is invaluable. Unit testing forces you to test components in isolation from other units and also from any input/output. Ultimately, this helps simplify the debugging process and can save overall development time and money.
What next?
When working as part of a team always adopt a positive team-player attitude. This requires strong communication skills which are part of a set of skills known as soft skills – check out our previous 8 Soft Skills That Are Valuable for Software Developers blog post.
We’ll be posting more blogs in this series of inspirational tips for junior developers so why not bookmark our resources web page or follow us on social media (LinkedIn / Facebook / Twitter) to hear when we post them.