I decided to learn python recently. Going through the usual motions of starting with variables to moving to loops, something did not seem right.
This exercise was not fun. So I said screw it, I want to build a tictactoe game in Python.
The rest followed. It was hard no doubt having to learn new paradigms, but having a clear goal in mind helped in gathering the relevant information.
I think a massive shift is needed in how we learn from kindergarten right to grad school and even later in life. Learning by doing is certainly the best way in my opinion. Yet, that is not the way we think natural.
Think about it, how did you come to speak the language that you do today? Did you learn by first learning the theoretical basis and the grammer or by listening and being absorbed in an environment that literally leaked that language (your family).
Building a simple game like TicTacToe taught me valuable lessons.
1. Rome was’nt built in a day, the same goes for software.
2. Gaining skills takes time, Be patient.
3. There is great joy to be gained from building something from scratch and that in itself is reason enough to do it.
4. This is a form of deliberate practice. Pushing yourself beyond what you can do currently is deliberate practice. Building something that you havent yet will invariably involve some aspect that will push your limits.
I still haven’t decided what I will build next. I would love to know what you have built recently?
p.s While building something is natural for programmers, architects, carpenters… There will be analogous situations for people in other professions when equated with deliberate practice. Remember 10000 hours is the magic number to hit.
Fantastic read Harsh! "Learning by doing" is indeed the way to go.
I agree. Couple of points I would like to add :Rome wasn’t built to practice building. I used to go for swimming lessons. After some lessons, I was still hesitant to actually dive in and swim a couple of laps. The instructor beckoned me near him and on getting there, shoved me in. I swam the whole length of the pool. Lesson: when its time to swim or sink, you’ll pull through, but that first shove is important.Sometimes learning about things formally before knowing what they are used for can come in useful too. I think both approaches should be used. Think of it as using a thesaurus and a dictionary. You would use a dictionary when you want to know the meaning of a particular word whereas a thesaurus is used when you know the general meaning of the word and you want another word for it, both are useful tools.
Very well-written, Harsh!
Jp, Excellent Analogy, So I would prefer immersion followed by formal learning.
Thank you Ravi and PJ!
AI is the next big thing in the computer software. It will be used everywhere, especially on your mobile device and mobile apps. Maybe you can build some AI related tools? I recently watched Stanford’s AI course on my iPad. All those algorithms drove me pretty excited. I am thinking of building an app that is smarter or more useful than Siri. One day i will ask the app "what i should build today", and he will give me an intelligent answer. 🙂
Thank you Jiayi, Yes AI done right is a hard problem area.Will explore it and maybe build something. Great to know about your Beyond Siri app plan 🙂 .
I can’t agree more…there’s a post right outside my work cubicle that says – You hear about something and you forget, you work on a customer’s issue and you remember …finally you recreate it in a lab and you learn! 🙂
Pradeep, thanks for your comments. The best way to learn is a problem in itself 🙂
"Learn by doing" is my alma mater’s mantra.
Thanks Rich, That must have been a great experience indeed!