I like to challenge myself to learn something new. But – to be honest – learning from books is nice but if i really want to understand and remember things i need to practice. Try. So here we come with dojo.
Typically at books or tutorials or … whatever. On the internet ;-). We have these small chunks of code, extracted to show EXACTLY what we are talking about. And its great to talk about abstracts. But it is horrible when it comes to learn from it.
How the hell one can understand dependency injection and get “why” while you are making a project with one dependency only? How one can understand Factory patern with only one type of object that is created… and it have one small property inside.
If you want to teach something and to make it a proper way you need to create something bigger. That makes using of this stuff that you are teaching – usable and understandable about WHY and HOW to do it in real life.
Thats why i love creating these “dojo” – learning only – clones of existing stuff. You know, “how would i design twitter clone” for example or “implement 1:1 clone of strava api” and stuff like that. Sometimes its mind experiments like with designs. Sometimes they even goes into Confuence pages where i describe full process and everything including ADRs and dependencies. And sometimes i put my fingers on keyboard over an IDE and code it.
And… it is very important to remember – DOJO like PoCs are NOT a production code. You can NEVER copy code from that to any application that will be published. Because while creating them we are making too much shortcuts on security, on speed, on memory usage… So just don`t do that.