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
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.
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
💡 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.
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.
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.
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.
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.
Hope these advice and tips will help you to be a better developer. Until next time 👋