Applying the TDD patterns in learning any framework
For quite some time now I had been researching on how to quickly learn any framework and make it stick forever in your mind in the shortest time possible. During this research I went from the memory techniques being utilized by memory champs to just straight off cramming. Why you might ask? Well in this highly fluid and ever changing field one has to find a way of learning new materials quickly without being bugged down with the nitty-gritty details of the framework and yet learn enough to be able to function efficiently and utilize in the knowledge in an application of any size.
Usually the common way of learning is to get the material(s), then try as much as possible to memorize, cram, understand and make a heck out of what the material(s) is all about. Although this way of learning is typical okay for some body of knowledge, but the problem is that (speaking from experience)trying to learn any moderate computer science course just by reading the material is not usually enough. This is because either as a beginner or a seasoned practitioner, one is usually greeted with a whole new registers that you can’t relate to your old body of knowledge, and even after learning the subject matter through this way, one tends to forget as time goes on. This bitter pill I tasted when I first started programming, then as an aspiring developer with a lot of ambition, belief and desire I discovered that after reading through books I discovered that after 2 months I would have lost about 60% of what I spent 2 months prior studying, 20% will very garbled in my head that I will be very doubtful of what is what and the remaining 20% will be what is left for me to call my own.
So then question I asked myself and that I still ask now (openly) is how can one learn any framework or programming language as quickly as possible and be able to remember and apply most of the knowledge several months after having learnt it the first time? So After much research and deliberation over this question, I discovered that the best way to achieve mastery in any framework or language and yet do so in half the time It would have taken the normal Joe on the street to do is the way of “Test driven learning” in this way your learning will be driven by test and not the other way round. What do I mean by Test driven learning? you may ask, let me explain.
Many of us know what Test driven development is all about as it is one of the key paradigm in agile patterns which have taken over the programming landscape. In TDD before a program is written the 1000 level birds’ eye view of of the project is taken. Now when you must have gotten this knowledge the next step is then to go ahead and write the unit tests/other tests as the case may be for the classes, methods and functions (mind which have not being written. Then codes will be written to pass these tests, the next step will be to re-factor so as to achieve the same result in the fastest and shortest way possible while keeping the code clean and devoid of code smells.
Yeah I know but how does it relate to learning the framework you may ask? If you look carefully you will see that it relates in every way. Most computer texts starts the student off with a highly simplified “hello world” program or task. Although there is nothing wrong with these way of learning but looking closely at it we will discover that taking this way will only give you the average knowledge and then make it harder for you to understand difficult but important concepts. Not to talk about taking more time to get to the level of mastery one needs in other to command his destiny in this career.
In Test driven learning the first thing that one needs to do is to get a grip of the language in other to start off (that is the 1000 level bird view) then the next thing is to go ahead and start up a project that is of manageable size but hard enough to take to the next level of the skill mastery( In TDL the test). The next thing that a TDL practitioner does is that he re-factors his knowledge by learning those hard but difficult concepts that he needs to know in other to accomplish the project. This is done repetitively until the person achieves the mastery he is yearning for.
One thing I discovered from the master developers is that they take this “Test driven approach”. First they take 1000 level birds’view of the framework they want to learn then they start a sophisticated project with that framework and as they go along creating the project, they fill out the pot holes in their knowledge of the framework by reading and researching about the topic as much as possible. By the time the project is completed, they must have not only gained the knowledge but experience. And as time go on they will then polish the project and the skill to a near perfection. That is what I call a double barrelled achievement (killing two birds with a stone).
Taking this path though it has its own series of drawbacks like a very tough learning curve is the best way to gain knowledge and experience at the same time because why you are studying the framework, you are working on the project thereby gaining the experience at the spot and no-matter how dull minded you are the knowledge will stick with you also you would have gotten projects to add to your curriculum vitae and achievements board.
In this present period of time, It is no longer necessary to read a book cover to cover and acquire the skill. Rather it is more important to do both at the same time because the employment system of most major companies is shifting from being skill oriented to being achievement oriented. So what one should now do instead of just reading a text book cover to cover is to try to implement a full working application while learning a certain framework.
One catch though is that it is for the brave of hearts, because this path will take you through hell first before taking you to that point where you turn from being just a learner to being an authority in the field. But do not let me frighten you for with patience and hard-work, wonders can be achieved and as they say “A journey of a thousand miles starts off with one step (so apoko apoko – small small). Am sure this is not the only way to ingest a large body of abstract knowledge in the shortest time possible, please if there are other ways do achieve it endeavour to share it with the community.