Well, you might have guessed it. Writing code. Hands down the best way to learn is hands-on (see what I did there? 😏).
There are plenty of ways how you can deepen your knowledge about software engineering. Here are a few:
Online courses are great. They are made by very smart people who (usually) know how to share their knowledge.
Youtube/video tutorials are great. Often short and sweet, very accessible, and many of them are free.
Reading documentation is great. That's the real source of truth in any project. It goes deep into whatever technology/framework/library you want to use.
Each one of the above methods has drawbacks, which in my opinion make them very good learning support, but make them less than ideal as a core learning activity.
Online courses tend to be long. They require a lot of dedication. If you happen to be a bit on a lazy side (I know I am), you might end up just watching the course without actively writing the code yourself. Who's been there? I know I have.
Youtube/video tutorials - same problem as with online courses. Also, the closed nature of this communication makes it difficult to solve your problems if you get stuck or face a concept that is foreign to you.
Reading documentation is a very good way to familiarize yourself with the code. I love it. But for a junior developer, it can be really scary. Reading documentation or source code is a skill that you need to learn. I know it took me a few years to be able to get the most of it.
My solution is to write code. Let me explain.
- You work on what you love.
This is super important if you want to keep your motivation high. You're into movies? Play around with The Open Movie Database API. You're into science? Try to analyze or visualize some interesting pieces of data. I encourage you to make coding fun. It will get you a long way.
- You make mistakes and then figure out how to fix them.
You're average youtube tutorial presenter usually doesn't make mistakes, does she? How about you? Trust me, all of us in this industry do. Making mistakes is crucial for effective learning. They make you focus, go deeper into the problem, look for possible solutions. It's much better than just taking someone's solution for granted.
- You get the pleasure and benefits of The Eureka Effect.
Puzzle-solving is a special way to learn and it encodes information into the brain in a different way than other learning. Puzzles and knowledge gained through our efforts are incredibly rewarding and also come with a hit of dopamine, the brain’s pleasure drug, as a reward.
- Tell me and I forget, teach me and I remember, involve me and I learn.
I couldn't agree more with this famous quote. There have been multiple studies that show the benefits of experiential learning. Take for example Kolb's learning cycle theory:
Effective learning is seen when a person progresses through a cycle of four stages: of having a concrete experience followed by observation of and reflection on that experience which leads to the formation of abstract concepts (analysis) and generalizations (conclusions) which are then used to test a hypothesis in future situations, resulting in new experiences.
Read more here. Or watch this short but sweet video:
Grab your favourite IDE and start coding 🙂. Apart from that you can (and should):
- Get inspired to find the right project.
There are many resources online which can give you ideas on coding projects. You can start at adventofcode.com or gitlog.pub, which is my mentoring project with fun and engaging code challenges. Shameless self-promotion 😬.
- Share your code.
This is very important. Don't be ashamed of your code. Let the world know that you're learning. Share your code, show it to people who you look up to, ask for feedback. I'm planning to write an article on this topic, so stay tuned!
- Find a mentor.
Having someone, who can guide you and help you find answers (or even more importantly - who can ask you the right questions) can be a huge career booster. Find one in your company, or reach out to people online. A great resource to start your search is Coding Coach community.
This is probably just the beginning of your journey. A journey on which you don't have to go alone. Explore, experiment, share. And always have fun! That's the key to becoming a happy software developer 🙂.