The challenge with MOOCs and online learning

When it comes to software engineering and computer science, almost everything can be learnt online. Whether it be C++, Java, Scala, or algorithms, data structures, or even building REST APIs, there’s a 20 hour video course that shows you exactly how to do it.

In the early 2000s, I learnt programming by reading little and experimenting a lot, and that was the case for a lot of other kids in those nostalgic IRC channels. After reading an article teaching something interesting, I would dissect it for hours in my C++ editor.

Experimentation and concluding for yourself teaches you a lot more than passive acceptance of an MIT video. We could learn core concepts in an hour and spend 19 hours experimenting, but that doesn’t sell. People buy courses that have more hours of videos (especially on Udemy) because that’s supposedly more value for money. Time isn’t money after all.

Every person is unique and can contribute to the world in very unique ways. The next time that you take a HTML/CSS course, how much time do you spend creating your own layouts, as opposed to mindlessly recreating the ones from the course?

Learning Python the hard way, or maybe not

Learn Python the Hard Way is a great introduction to the Python language. Back in the days, it was one of the books that I occasionally used to refer to. However, in retrospect, I’m not a big fan of the premise.

The “hard way” is typing each exercise in the editor by copying it verbatim, so that you pay attention to details, rather than just skimming. The point is valid, but not very useful. This is exactly what people do with written assignments in college, and it doesn’t lead to better understanding.

Looking at an exercise and writing something similar (but not exactly the same), wherein you really need to understand the concept, is a much better approach.

The book is a great introduction, and you surely can use it. But I’m not a big fan of the methodology.

Engineering - The purposeful use of science

“Engineering is the purposeful use of science.” I remember Anant Agarwal defining it in MIT OCW’s introductory electronics video. As an electronics student at the time, this statement immediately struck a chord.

This is where science and art come together. While science provides an explanation of phenomenons, it doesn’t tell you what you should build. It will only tell you if something is possible. Sounds a lot like prime numbers. Easy to know if something’s a prime, but hard to find them. The physics behind sound could be deterministic, but that doesn’t help you compose the next Stairway to Heaven.

A lot of times, we get stuck on science. Which language/framework do I use? Where do I host it?

Those points are important too. However, also ask, what is it that I’m building, and why? I remember writing a 10 line python script that helped my dad organize his medicines. I still consider it to be more valuable than many of the larger applications that I’ve written.

What is your purpose behind engineering things?

Learning algorithms is worthless

Or so it might seem, especially after skimming through 500 pages of different types of sorting algorithms. It’s immensely frustrating to purchase a mint copy of CLRS, only to use it as a hood ornament for your table.

Did you know that sorting forms the basis of every data management system that you’ve ever seen or used? Databases, your favorite key value store, graph databases, and even search indexes.

The principle is simple. If things are sorted, then it’s easy to find something within it. There are data structures that make mutating a sorted list efficient.

Are algorithms worth learning? Search GitHub for any algorithm and see if the matching projects are interesting. My answer is, they are.

A new blog & a writing challenge

Starting something new is always easy. Continuing with it is a challenge. We see this pattern everywhere. What do newly hired architects say?

Let’s throw away everything and rebuild this. It’s a mess!

This blog is me starting to share nuggets of wisdom every day. The objective is to write every day, which is highly inspired by Seth Godin’s blog.