The learning process
Learning is always a challenge, even if you are already experienced. Today we’ll talk a bit more about the learning process.
I have already helped some developers to learn and grow their careers, in other hand, I had help from good developers/architects to learn a lot and get in a good position.
Practice vs Theory
Which one is more important, practice or theory? There are lots of people whose brains only learn by practicing, is that true? Yes … and no :)
Different people learn in different ways. Some are visual, others need practice, others prefer to watch a video, others need to draw on a note book to understand. It works with both practice and theory.
IMHO both are very important, you don’t learn only by practicing or only by absorbing theory. How do we learn java without understanding polymorphism, heritage, encapsulation, etc? How to understand it? Practicing? Reading?
The theory is very important to understand the very basic concepts, but the practice is also very important, because without the practice you don’t apply the concepts you just studied, and you will not learn and be productive without the practice.
Learning only programming languages is not enough. Methodologies, patterns, architectural styles and designs guides every system, be it a legacy or a brand new system.
How can we work with micro services without understanding REST or events or topics? Even though I saw it happening, sadly, the result cannot be good. Another example is a company working with scrum, even when higher management or even the teams don’t buy it, even the culture not being on people’s minds.
Once you learn what object orientation, it becomes much easier to learn any other object oriented language. Same thing with functional programming. Same thing with messaging. Etc …
The theory is very important, everyone must speak the same language. If I’m creating a endpoint on my RESTful API, it should respect REST’s principles.
As I former co-worker used to say:
You don’t do something just because someone told you to do so, you shouldn’t just do it, you must understand why doing it and how it impacts the rest.
Learning how to learn
Once you know the concepts, you are able to learn other things in a easier way.
Each person has its own way to learn, because people is different from each other. Deep, right? :)
I like to use Trello, to set goals, deadlines, define a methodology. Most of the code I write studying is on my github or bitbucket (practice). Most of the theory I absorbed studying is on blogs or personal notes (theory).
Teaching is a way to learn
Writing blog posts with things that you learned is a good approach, because you’ll write about these things you learned, which leads you to study more (you don’t want to write something wrong, right?). You can ask more experienced people to review what you just wrote. Medium is a good place to do it.
Other way is to do short presentations like LTs (Lightning Talks) to your co workers/friends.
Talk to more experienced people
Let’s say you just studied about Kafka, it’s all fresh on your mind, you coded some examples and wrote about it. But you know you have a friend/co worker who knows a lot about Kafka and already used it.
This is a good way to learn. Tell this friend what you just learned, ask questions, invite to write a blog post together, invite to do a pair programming, ask how was his[her] experience with it.
Not just more experienced people. The ones that are starting are studying a lot and may be on the same page.
Communicating is very important.
Thanks for reading until here. Please feel free to write your comments and let’s discuss more.