The number one advice when you’re learning a new subject or a new skill is to master the basics. The best approach to effective learning is to divide and conquer. You divide the subject into small building blocks and then you make sure you’re really mastering each and every building block. One by one.
By mastering the basics, you set strong foundations, on which you can build complete mastery of a whole new competence.
If you don’t master the basics first and then move on to more advanced topics, you always have to keep coming back to the basics when you get lost. You can easily trip if your core is weak and if you’re making unsure steps.
Even though practice makes perfect, there is always a big dilemma present when you’re learning something new. You don’t want to practice the basics or even any more advanced block of knowledge too little, but on the other hand, you also don’t want to practice it too much.
You have limited time and you don’t want to waste it on something that you’ve already mastered. Thus an important question comes up – how much to practice when you are learning something new, and when to stop it and move on.
We can get a very good answer to that question in, who would have thought, advanced coding principles.
Test-driven development gives us the answer
Test-driven development (TDD) is a special approach in the software development process, where you first code a test based on software requirements and only after that write the shortest possible code that will make the test pass.
First, you write a test to see whether the code is doing what it’s supposed to do, but you know that the test will fail, because there is really no code written yet.
Then in the second step, you write the simplest possible code that will make the test pass. It’s a similar concept to the lean startup, where you visit your potential customers even before you have a finished product.
Writing a unit test ensures that a developer understands the software’s feature and specification really well. This kind of an approach also ensures that the developer isn’t adding unnecessary code to the project. Last but not least, the code is better written in small units that can be easily managed.
There are many interesting principles that follow test-driven development, absolutely worth mentioning:
- Get something working now and perfect it later
- Keep the test units small and manageable
- KISS: Keep it simple, stupid
- YAGNI: You aren’t going to need it
- Fake it until you make it
- Refactor: Regularly clean the code and avoid duplication
There are many lessons we can take from TDD and implement it in personal lives, similar to those from agile development, since they go hand in hand.
- First think about what exactly do you want to do – have a use case
- Put everything to the test first
- Expect to fail first
- Do small tests and constantly adjust
- Don’t waste your resources
- Do immediate implementation
That’s all good, but let’s go back to the original question. In more complex programming cases, an important question comes up – how many tests to write, how to know that you’ve done enough?
There are, of course, many tools you can use that measure the accordance of unit tests with code (it’s called code coverage). But there is also a rule of thumb of how many tests a programmer should write, and this rule of thumb also gives us the answer to how long you should practice a new block of knowledge.
How long should you practice?
In test-driven development, there is a rule of thumb to “test until fear turns to boredom”. You can use the same exact principle when you’re learning a new block of knowledge – practice until fear turns to boredom.
Practice a new skill or block of knowledge until fear turns to boredom.
Let’s parse this statement a little bit. When you’re new to something, the probability of making mistakes is great. There is always some kind of fear present that you will do something wrong or fail.
There may be a few examples that you don’t understand very well yet, there may be a tricky way of asking you a question regarding the topic that may quickly confuse you, or part of the knowledge may still be completely alien to you. We can all put that under “fear”.
But after you practice enough, soon there is nothing new to understand and master in that specific block of knowledge. A challenge slowly starts changing into boredom.
When there isn’t a single drop of fear anymore that you might make a mistake, and when every exercise and revision turns into boredom, you can be sure that you’re mastering the knowledge. Then it’s time to move to the next block.
No fear and boredom, these are the signals that you’re a master at something.
This is what super learners do
In the fast food society, we want everything quickly. Learning is no exception in this. People in general don’t want to learn at all after they finish school, but when they do, they want to learn everything fast and easy.
Learning anything worthwhile takes time, effort, energy and a systematic approach.
If you’re serious about acquiring any new knowledge or skill, do it the right way. Slice and dice the subject so you don’t get overwhelmed. Break the subject into small pieces you can master in a respectable amount of time.
Learn the theory and then immediately apply it in practice. Practice each and every block of knowledge until it becomes a part of you, until you can do it in seconds. Practice until fear turns into boredom.
If you master building block by building block, you will soon progress from the beginner to the intermediate level and then all the way to the advanced and master level.
But remember, it takes years to become master at anything. Like Sisyphus, you have to move block by block, repeat the boring stuff again and again, and only then can you shine as an improved version of yourself with a completely new competence. But once you acquire it, nobody can take it away from you.
Use this principle in any area of life
You can use the “building block” principle together with “until fear turns into boredom” in any area of life. No matter what you’d like to learn, this approach works. If you make the building block small enough, it will motivate you to move on. Basic and easy building blocks are early wins that keep you going.
Building blocks start to accumulate and soon you get to the domino effect when things start to make sense. You’re enjoying it more and more. With mastery, passion also slowly develops. Then you want to master even more complex blocks of knowledge.
Want to learn more about a healthy diet? Slice and dice. Shape building blocks like macro-nutrition, micro-nutrition, calorie calculation, food combining, healthy shopping list, food supplements etc. Master them one by one.
Read a few books and a few hundred articles regarding every building block. While you’re mastering every block by itself, you of course also test different things and see what works best for you.
Want to learn how to invest? Again slice and dice. Microeconomics, macroeconomics. Basic investing principles. Different types of investments and different types of investment approaches.
Risk, reward, liquidity, costs and other factors. Trading platforms etc. Master one by one. Make your first small investment. Talk to other investors. Step by step, while keeping a long-term perspective.
Want to learn how to build a successful business? It’s a complex subject, so slice and dice. First learn to brainstorm business ideas and do a simple analysis. Then how to test ideas with customer discovery and other lean approaches.
Then we have team building, fundraising, marketing and sales, and the basics of finance and accounting. First you have to learn how to sell the product, then how to build it and how to form a successful team around it, then other supporting functions.
Want to learn how to code? Again slice and dice. You educate yourself about different programming languages and what they’re used for and dive into one of them. Then you learn the basic fundamentals of coding – syntax, data types, conditions, iterations, collections, debugging etc.
Then you get to know different frameworks and basic coding principles and approaches like OOP, TDD and MVC. And then … well, I don’t know, here’s where I currently am.
You won’t feel overwhelmed with such an approach. You can shape building blocks that fit into your schedule. You can simply timebox learning periods in your calendar. You will train your attention span. You will train your brain. And most importantly, you will acquire a new skill you want to master.
Pick one subject or skill you want to master, outline the first building block and get going. Revise the building block until fear turns into boredom. Then move to the next one.
Vsebina