Hi everyone š this blog post kind of different from my usual ones since this is based on a recent talk I delivered at the Adelaide Jnr Developer Meetup hosted by juniordev_io on the 18 May 2022.
The slides can be found at my SpeakerDeck profile.
The following is a short summary of my notes for each slide I spoked about. I structured my talk around 3 main topics.
- Maintaining Motivation
- Dealing with Imposter Syndrome
- Staying Productive
Maintaining Motivation
Put in the work
Developing software is a creative endeavour. This is no secret. Regardless of your background, whether you are coming from a Bootcamp, uni degree, or doing it as a hobby, you have to do the work yourself to gain experience. You can read a 300-page book or binge-watch a 4-hour-long Youtube tutorial on building the next million dollar idea, but it would be a mere waste if you donāt take any action. If you follow a tutorial or do what your professor or instructor is telling you to do, you wonāt grow as a developer if you donāt try things on your own.
Itās so easy to āget stuck in a tutorial hell,ā which can create a false sense of accomplishment. So what should you do about it? My suggestion is to carve out some of your free time, maybe 30 minutes a day. Start small. It might be a simple to-do app that you want to build with a programming language you want to learn. Learn the basics first, then focus on different building blocks of it. E.g., Think about the UI; how would you make it go live? How would you save the data? How would you handle multiple users accessing your app?
30 minutes/day actually ends up being 14hrs/month which is a considerable amount when you think about it!
š” Donāt wait until motivation hits you.
Another correlated point to this is waiting until motivation hits you. You may feel overwhelmed and think that the barrier to entry is high. But once you get through that, your curiosity will grow, and youād learn things quicker. Most importantly, enjoy and have fun.
Adopt a Growth Mindset
Not sure what to focus on next? It is okay not to understand what is going on when you join a company or a new project. Thatās fine. It takes time. Usually, you start small - maybe itās a minor bug or a feature request to change the buttonās color. Start from there and try to understand how things tie together. Ask questions, and reach out to your peers. This is also one of the mistakes I made earlier on. I just put my head down and smash through the tickets. But itās not enough. By doing this, you will begin to understand more and more.
š” Learning has a compounding effect
What do I mean by compounding effect? Simply put, initially will take a lot of time, might seem slow, and your growth will seem linear. But once it picks up the pace, it will grow exponentially. And when you stop learning, that cadence breaks, and you need to get back up again. So, Learning is a lifelong process.
This doesnāt mean you always have to be learning something every minute. There will be days you will feel like you didnāt know anything, just be answering emails or slack messages. Thatās fine. You need to make sure you donāt do that every single day. By the end of the week, I usually just look back and do a small retro to understand what I learned that week. If not, plan for the next week. Consistency is key.
Few more tips:
- On-the-job training is great since you will be spending most of your time during the week at work. Read through technical documents that your team has, code reviews are great to get feedback and also understand what others are working on, run pair programming sessions with your team mates
- Utilize the Learning and Development budget your company provides
- Perhaps you might be thinking of pursuing a certification?
- Network with other peers
Imposter Syndrome
You need to be an expert in something to teach others
As mentioned in my previous slide, you have to make learning a critical part of your life. Thereās a lot to learn and keep up with. During the last ten years, I have worked with many technologies, from Ruby, JavaScript, Java, Angular, Android, iOS, .NET, SQL, NoSQL database; some technologies donāt even exist now - J2ME Java Micro Edition, ActionScript, Windows Phone š. As you can see, itās a never-ending process. You will pick up new things now and then, from your job, your side project, from your colleagues. Even today, I still need to look up certain things, Google stuff, when I cannot seem to figure out something.
š” The most important thing is No one knows everything.
How can we overcome this feeling though? When you are learning something new, donāt feel embarrassed to share anything you learned. Donāt think of it as bragging either.
I initially felt this when I started this blog. I didnāt even think whether anyone would want to read my blog. I just did it anyway. I started it about 2.5 years ago; I initially had 1 or 2 readers ā now I have around 10,000/month users and recently passed 200,000 users, which is not a massive number, but I feel happy about it. Adding to that, itās a great feeling when you get to help someone, and they put a comment saying they have been struggling with it for days, and my blog post solved it. You will get sponsorships and get invited to talks, to name a few.
You mustāve figured out a pattern already - gain experience by doing things. You donāt need to be an expert in something to guide others. You can even share how many times you failed to do something and let others know how you overcame that. Put a unique spin on things. Everyone is unique.
Moreover, you will also learn to say āI donāt knowā and thatās 100% fine.
Feeling āEveryone else is better than meā
On to the second myth. Having unrealistic goals and comparing yourself with others is a recipe for this. Itās in human nature to compare oneās self to another. You wouldnāt know what they have gone through so we canāt really compare ourselves with others. When you set a standard for success, youād think you have to achieve it, and if you donāt, youād think you are a failure. Well, thatās not the case. Because thereās no single path to success, there are multiple paths, and your journey might change from time to time, and thatās totally fine.
If you feel that you can learn from the people surrounding you, thatās a good sign! Maybe you have an idea to start a side project, a blog, or a Youtube channel to share your learnings.
Staying Productive
Donāt obsess about the programming language
When starting, yes, you need to know some programming language. Maybe itās the language of choice of your current employer or a module you are taking currently. The reason is that itās like learning a human language. Once you know the structure of a language, for instance, grammar, syntax, predicate, whatever that might be, it will be reasonably straightforward to understand and transfer the concepts to a different language. Yes, there will be differences here and there, but you can learn them. Just pick one first and run with it. Get comfortable writing code with it. Donāt try to learn as many languages as possible, thereās too many out there.
If you donāt know where to start, JavaScript is a good starting point because you can work on both client-side driven applications (Eg: Vanilla JS, TypeScript, React, Angular when you are comfortable) as we as the server (e.g., with Node.js). Start to identify those building blocks first. You will then form opinions about things, and perhaps start contributing to open source projects
Learn to use a universal IDE
This is where you will spend your time during your day-to-day job. There are many options out there. IDEs range from VS, JetBrains, or even VIM, to EMACS. Sometimes one is better than the other for a particular stack. Usually, pick something you are most comfortable with and learn how to navigate around, interact with the terminal and the key bindings, and configure it the way you want it to function. Usually, when you join a team, you would have a sharable configuration such as an editorconfig file for different IDEs; if not, you can create one. Talk to your peers about what they are using. Not everybody has to use the same IDE too. Also, be mindful of the capabilities of different IDEs as well.
First, try the options out there and get a feel for them. It will take time; eventually, you will land on one. It will become a natural part of your development process, and itās one less thing to worry too. I use VS Code these days since Iām working on multiple projects because I have all the plugins and a familiar environment. Less context switching.
Take regular breaks
This oneās a bit interesting. It may seem a bit counterintuitive as well at first. Research shows that the human mind can juggle seven things at a time. Imagine you have your project opened up, and there are many classes and methods, and you are going through them to find where the bug is? Itās normal to feel overwhelmed. Perhaps you are debugging a notorious bug and where itās crashing if you feel like youāve hit a wall. Just take a break. Go for a walk around the block. You will be amazed by the time you resume your work; you will start to see the answer.
I personally do this very often without being too hard on myself. The same applies to taking a break from your work too. Utilize that PTO, go on a vacation, take some downtime, and take care of yourself. It will pay dividends in the long run and avoid burnout too.
Conclusion
Hope these advice and tips will help you to be a better developer. Until next time š
Top comments (6)
As a birdie in this field I've found myself obsessing over the best language to learn but the path always led to multitasking which ended disastrously .Glad to say right now I'm focusing on aptly mastering Web development before taking up on any other thing .Thank you for such intuitive writing.
Exactly! Weāve all done that at some point and Iām glad that you have figured out what to focus on. You will start to see patterns (both good and bad) which will make you a better engineer overall. Kudos to you š
Nicely put. Junior developers spend a lot of time learning as they try to find the right paths for them.
Absolutely! Pretty much every Jnr dev Iāve talked to are doing that. Itās good to have breadth, but taking on too much without actually learning one thing properly will be detrimental in their careers.
Wow, it is really helpful information. Thanks
Thanks a lot!