1. Learn How to Learn Effectively
It’s the most important skill in your life. Seriously. Software developers learn all the time. And even if programming is just a hobby to you, you still need to learn efficiently.
The basics are quite straightforward. To learn effectively, you have to build a habit — preferably learn every day. Additionally, use these three techniques:
Active recall — Try to retrieve information from memory instead of rereading it. You can use flashcards or some similar tool.
Spaced repetition — Cramming doesn’t work in the long run. You need to learn regularly and repeat material a few times over weeks or months until you get it.
Tests — There is a reason we had tests at school. When we’re preparing for a test, we’re focused. Look for online tests to solidify your learning. It will greatly accelerate your progress.
2. Have Some Fun
You’ll struggle. Programming is difficult. You’ll fail often. Whether it’s some obscure bug or a concept you can’t grasp, challenges will appear. The best way to stay motivated in the face of adversity? By having fun!
Take a break from your task and find some joy in programming. You can solve algorithmic puzzles, take a look at creative coding, or create some silly app — whatever makes you smile.
Programming is not a chore. You need to have a good time and find something that sparks your curiosity, so look for opportunities to enjoy yourself.
3. Learn to Search for Information
You’ll spend lots of time searching for information. You need to learn how to do it proficiently.
Google, Stack Overflow, and GitHub issues will become your natural habitat, so make sure you can use them effectively. And don’t ever be shy when you need to look for something trivial — we all do it.
4. Don’t Procrastinate (Too Much)
Practice makes perfect. It’s that simple. No amount of tutorials, courses, and boot camps can act as a substitute for it. You’ll be tempted to enroll in another class. Don’t do it.
You don’t need other videos explaining these same subjects over and over again. You need to build things yourself. Every app you build is worth dozens of tutorials. Create, fail, explore — that’s how you grow.
5. Learn the Debugging Basics
There’s nothing more annoying than a bug you can’t find. Sometimes the project stops for weeks because one nasty bug is haunting you. Unfortunately, debugging is a huge part of programming and you have to master it.
Study debugging techniques and learn to use logs and debuggers efficiently. As a quick tip, I recommend debugging by divide and conquer. It’s a technique in which you split suspicious code by half and look at which half seems to be broken. Repeat it on smaller and smaller code parts until you find a culprit.
6. Get Your Hands Dirty
Often you’ll have a problem and no idea how to tackle it. Creating a huge app from scratch seems like an impossible venture. Instead of wondering how to do it, do it. Isolate some small part and start coding.
You don’t need to create perfect code. You need to have something and try out some ideas. It will give you a better understanding of your problem.
Thinking before programming is necessary, but you’ll only know if your plan is feasible at all when you get your hands dirty.
7. Be Considerate — Write Readable Code
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” — Martin Fowler
This quote should be your mantra. Building applications is a team sport and you have to communicate with other team members through your code. Even if you’re working solo on a personal project, you’re communicating with someone else — your future self.
Be considerate. Think about everyone who will read your code. Study code readability and maintainability. You’ll reap the benefits fast.
Photo by Pan Xiaozhen8. Clean Up After Yourself
You’ll make a mess of your code — I guarantee it. Applications tend to grow in unpredictable directions and the code inevitably gets more and more cluttered. After some time, it will become unwieldy and each minor change may require dozens of adjustments.
To avoid that, clean something every time you touch a file. Get rid of unnecessary things that impede code understanding. Remove unused variables, change the names of others. Delete outdated comments, simplify your abstractions. Leave the code in a better state than you encountered it in.
9. Read the Code
Do you know how you become a great writer? By reading great writers and trying to emulate them until you find your own voice. It’s the same with programmers.
Look for open source projects with great code quality and try to understand them. If you’ve got some proficient developers at your company, look at their commits. Study the code of the greats and try to learn from it. Reading their code is like reading their minds —take advantage of that.
10. Blog
You should have a blog. Period. It may serve multiple purposes. You can use it as a diary of your progress and growth. You can learn a lot from writing about the things you are learning. The process will solidify and organize your knowledge. You can help others who face these same problems. Maybe you’ll even find a job or build a community. Just blog.
I didn’t start a blog until I was five years into my programming journey. It’s my greatest learning regret.
11. Understand Why You Write the Code
Your job is to solve problems — not write code. Learn how to identify what problems you are trying to solve: your client or boss's requirements.
As programmers, we tend to waste hours on unimportant things. We polish our code like a priceless car. But the code is just a tool. The product is what matters. Being productive is different from being busy. Being productive is different from being a perfectionist. Being productive is all about providing value. Code to provide the value.
12. Code Daily
Schedule some minimal time for coding every day. You may take a day or two off, but building a habit of programming is essential.
Neil Gaiman once said:
Do what only you can do best: Make good art. Make it on the bad days, make it on the good days, too.
Maybe your code is not art (yet), but you should listen to Neil. Consistency is essential for your success as a developer.
Photo by Adolfo FĂ©lix13. Take Notes
You will forget almost everything you read today. Don’t trust your memory and document everything — the problems you encountered and how you solved them. Algorithms, functions, learning materials. Everything.
You can use your blog as a space for your notes or some of the other countless tools available. Whatever works for you. But please take notes. Build your own knowledge database.
14. Specialize
You can’t be a jack of all trades. Programming is too vast and you will never learn everything. Besides, experts tend to be rewarded generously.
Especially if you’re a junior developer, you need to pick your tech stack. Nobody expects you to know everything, but you should have in-depth knowledge of something.
15. Embrace the Failure
Programming is hard. You’ll fail many more times than you imagine. And that’s fine. As long as you’re encountering new ways to fail, you’re making progress.
The secret is not to be too hard on yourself. Embrace the failure and recognize that it’s an essential part of the process. Extend beyond your limits. Make the failure you friend.
16. Be Lazy
Look for optimizations everywhere. Automate every mundane and boring thing you can. Look for the patterns in your work, repeated code, or similar features. Then automate them.
Every line of code is expensive to write and maintain. Look for ways to write less code, and you’ll find you’ve got fewer bugs and better quality. Use well-tested libraries instead of writing everything from scratch.
Leverage the tools at your disposal to create the most value from the least time and code.
17. Rest
Taking care of your health is amongst the best things you can do for your career. And your life. I won’t go into all the overworking drawbacks, but to name a few of them: raised stress level, lowered energy, troubles with sleep, feeling distracted, mood changes. And you’ll work worse.
Overworking is not worth it, really. Set some boundaries. For some, working 40 hours a week is the maximum. Others can work as long as 50 or 60. It doesn't matter where your limit is. What matters is not exceeding it.
18. Be Curious
Curiosity is what I’m looking for when I’m recruiting junior developers. A curious person always wants to learn more and understand how and why things work. For my company, your long-term contribution is more important than your current skill set.
Be interested. It will benefit your growth and your job hunt. It will also make your life more interesting.
Conclusion
That was a lot of tips, but there are more of them. Maybe you’ve got something to add?