Algorithms: Pain and Pleasure
As soon as I became serious about not sucking as a programmer anymore, I developed some learning strategies. By developed I obviously mean lifted them from other people's good ideas and pretended they were mine all along. Great strategy. Highly recommend.
So I've been doing katas on codewars for a while. And since I've recently discovered pleasures of JS I've been devoted to ranking up and finally feeling good about myself. Thats didn't last long. Pretty soon I hit the ceiling of my abilities. Bruised ego made me unhappy. Code wars is not perfect, it ranks katas in a very weird way, so someone like me can crack kata of level n in under 2 minutes and spend and hour on kata of level n-2 without any sign of relief. It became clear that I found another source of suck: I didn't know algorithms.
Luckily I stumbled upon a medium post on best ranked online courses (wow online courses people really love python). So there is was Algorithms: Design and Analysis, Part 1 conveniently starting in just couple of days. So you can guess what happened next
Impression
First impression is just how much i've forgotten math. It is a pretty strong impression so it took me two weeks to formulate the rest of my thoughts.
It's pretty wonderful how just a small injection of algorithms made me think very differently. I use this new tool to analyse other people's code, to construct my own and it is a fun brain exercise even if you don't use algorithms for work.
I am yet to experience all the fruits of this course, and I believe it will keep on giving for the next 5 week (and through its second part).
The best part about algorithms is the feeling of satisfaction. It is very similar to how it felt the very first time I wrote a recursion. It was such a small elegant thing. Mmmm, wonderful.
Some course critique
Tim Roughgarden is lovely, he has a great voice for the online-course, pleasant but still keeps you awake. He speaks relatively fast, so I did not speed up any videos. In fact combined with the workload (several hours of video a month) this course maybe a little bit too demanding for some people.
I feel like a lot of time I don't grasp a subject fully because of my rusty math skills. So far I managed to catch up, but maybe I will exhaust my math resources at some point.
I'd say this course is not complete beginner friendly. There is code to none introduction to many important concepts, so for people with no programming or math experience it would be too much.
I'd also love to have elaborate reading material section or a reading list recommendation outside to mentioning of a couple of books. That was always the best part of studies for me, one can stop at the line or go as far as they want to.
Also programming assignments suck. This week one requires submitting calculating number of operations (no matter what language one uses), last week's required submitting a resulting number. I wish they just provided a code editor for some popular languages instead.
Despite all that I'd still recommend the course. Algorithms intimidated me. CLRS looked way to menacing. This course requires some work and compromises, but it does it job and opens the student to a new way of thinking.
Next?
Thanks to this course I'm reminded to pick up my code complete reading again. And well, after that I need to look for a mooc on math.