Advice to a Junior Developer

9 min read Original article ↗

Awasum Yannick

I made a statement on Twitter the other day about the explosive growth in Technology usage and the need for more skilled Engineers who will build scalable systems and I got a question from a friend asking what advice I will give to a Junior Developer.

Press enter or click to view image in full size

I did answer the question on Twitter but as I wrote down my response, i realized there were a lot of them and I thought these recommendations might be valuable to someone in the future. Twitter is not really great for disseminating information that will be searched and referenced in the future. Tweets are consumed in the moment and most people usually forget to save links for future use.

Over the past few years, I have learnt a lot from people with experience in the Computer Industry and have received advice and recommendations. Some other times, I have learnt some lessons the hard way. Most people regard Software Engineering and Programming as a complex field and with this assumption, most run away or give up halfway through their learning path. I have come to realize that if you are self motivated, ambitious and hardworking, you can survive in this field and make a living out of it. It takes persistence and constant progress and not giving up. The following approaches have helped me over the years. It will also help you along your journey to becoming a Professional Software Engineer.

1.) Reduce Social Media to a Minimum

Social media is addictive and takes a lot of valuable time. Except your job involves using a lot of social media as a result of being a Marketer, Researcher, Advocate or CEO. It does not offer any real benefit to have any social media platform open while you are programming or architecting a system. Social media is a big distraction and you should avoid it at all cost. You might follow my approach and reduce social media activities down to 1 hour a day (30 minutes during break and last 30 minutes before you sleep). You can also use Sundays as a time to relax and catch up on social media. But if you really want to be productive, just quit social media.

2.) Deliberate Practice

Kill procrastination by actually getting your hands dirty. When I started coding back in the University, I got into this bad habit of reading textbooks without actually doing end of chapter exercises. This was so because most often you could pass the test or exam with good grades with just the theory in your head. You could survive without practicing in some schools but you cannot keep this up for long when you get a job. In fact you might not even be able to get a job or create a product of your own without any practical experience under your belt. The reason for running away from solving exercises is because of Laziness and Procrastination. You think you will get back to practicing in a couple of weeks before the exams or before a new project but that never happens as you always underestimate the power of deliberately doing what you have learnt and taking action to get better. To tackle this problem, you have to get into the habit of actually understanding the fundamentals and practice solving lots of problems in the given programming language you are currently learning. Iteration, Logic, Arrays, Files, Strings etc should be well understood and solve all programming problems you can find on the topic you have just studied. If you are really new to the field, get a programming book in any language with plenty of exercises for you to practice. If you are already proficient with a programming language, then learn a framework and work on a couple of projects. There are many project ideas, pick anyone and try building it. Even ones which already exist. Build a Twitter, Facebook, WhatsApp, Kernel MVP etc. Try to pick problems which exist in your local community and solve them with your new found knowledge.

3.) Deep Work and Focus

Deep work is the ability to focus without distraction on a cognitively demanding task. Shallow work is non-cognitively demanding, logistical-style work, often performed while distracted. Deep work is like a superpower in our increasingly competitive twenty-first-century economy. If you want to go far in the Programming field, you have to learn how to be productive and to do that, you need to be focused. When doing creative work like programming, you need to eliminate all distractions and completely focus on the tasks at hand. Slack should be snoozed or closed, Phone should be on silent or off, social media should be closed, Email should be closed. This will give you the room to completely immerse yourself in your work and your productivity will increase. Don’t be afraid that you will miss something as a result of not been accessible because emergencies hardly happen in the real world. Just look back at the past few months of you life, how many times have you been called to respond to a life threatening situation? I guess very few or non at all. The news, updates from friends and family can wait till when you close work. Do deep work in time blocks, that is to say, you could focus fully on a task for 2 hours and then make yourself available for 30 minutes to rest and then move back into the focus state. Do this 3 or 4 times throughout the work day and you will see your productivity and skills improve exponentially. You will be able to get more done within very short intervals.

4.) Learn the Fundamentals

There is no growth without relying on a strong foundation. There is no way you are going to be a great Software Engineer if you don’t know the basics of Programming and Software Design. Spend a good amount of time studying and practicing the basics of your field. Learn one programming language very well and get good at it before moving to the next one. Learn a framework at a time before picking the next one. Do not be a promiscuous programmer over short periods of time. You cannot start learning C this week and next week you hear that your friend has started doing Laravel and you abandon C to go learn Laravel. You will just be fooling yourself. Know that over time as you learn one technology very well, it will serve as a foundation for you to understand the more complicated and complex technologies in the future. So focus on learning the fundamentals in one given language and it will make it easier for you to master more difficult technologies in the long run.

5.) Contribute to Open Source

Open Source leveled the playing field for up and coming developers to gain skills and showcase themselves while contributing some real value. There is no way you can lose from contributing to Open Source. There are many advantages to taking part in Open Source Development. Firstly, you get to read a lot of high quality code from experience developers and from that you learn from their experiences. Open source is very lucrative and you can leverage your experience in Open Source to get a Job or hire good engineers for your company. You get to show your skills and feel proud about yourself. There is also the pride of creating a real impact by coordinating with others across the world to solve real problems across industries.

6.) Find a Mentor

If you already work for a company or contribute to open source, chances are you already know someone or have access to someone with lots of experience in the field to help you grow. A mentor will help smoothen your learning path by offering real world and practical tips on what to avoid and how to efficiently solve problems. They will support you when you are down, encourage and motivate you when you think you are not ready for the Engineering field. They will act as role models and push you to be the best of yourself. It’s like having ready made questions to your exams and all you have to do is answer the questions before time so you can face them on the examination day.

7.) Communication

Software Engineering is a social and team process. There is no way you are going to get good if you cannot effectively communicate with your coworkers and mentors. You need to learn how to read and write simple English. Invest the time to learn English very well if its not your first language. Be humble, empathetic, open minded and clear in your communication style. Learn how to draw and explain Engineering and Technical diagrams like UML, ER diagrams etc. Learn how to use Project management tools like JIRA, Confluence, Trello etc. Also make sure you understand how to use email(bcc and cc, the difference between reply and reply all). Present yourself explicitly and clear. Make sure to use proper spellings and simple and clear vocabularies. Ask smart questions and make sure you do your homework before asking questions. If you ask nicely and clearly, someone will be encouraged to help you. If you are great at communicating, doors will be opened for you.

There is an infinitely long list of recommendations and advice I and others in the industry can offer to you. I will keep adding more as they come to me. You just have to start with whatever advice you are given which makes sense to you and move from there. If you forget every other thing here remember that having a good character, hard work, persistence and ambition will take you to the top of the world.

Keep learning and make progress.