Exercism, and why we have a love/hate relationship.
So, I was browsing the internet yesterday, looking for great ways to help motivate me to continue along my current learning path with Python. This is how I stumbled upon http://exercism.io. Upon first glance, it seems to be a resource providing exercises in many different languages for you to complete.
Looking deeper, that’s exactly what it is, and it does this in an incredibly neat fashion. Providing a CLI (command line interface) for all major operating systems (Windows, Mac OS X, and anything using the Linux kernel) they allow you to use a simple command to fetch your new exercise, and then submit it to the site, which is sort of a social network for developers.Here on the site, you can view recently posted solutions to exercises, and even filter by language. Upon viewing the submissions, you can leave feedback, offering a simpler, more efficient solution, or just discuss the project in general. It also has a Facebook-esque ‘Like’ functionality.
The completion of exercises is based on the idea of TDD, or Test Driven Development. The idea is that with each exercise, they provide a README and a test file. The test file, when run, flags errors in the program you have written, so you can go back and fiddle.
So far, it sounds great, right? And it is. I have no complaints about the implementation of this system, and think it is incredible. The reasoning behind the hate part of my relationship with Exercism is that I feel completely lost while working with it. I’m left floundering as quickly as the second exercise, called Bob. I think this is a testament to my programming ability more than anything else.
Now, the general idea is that when the test sends a question, you reply with a special response, and the same goes for yelling, basic statements, or nothing at all.
I was completely lost with how to go about doing this. Granted, I’ve never really gotten good with any language at all, I’ve always jumped back and forth between them, never getting an understanding of their functions or classes.
Turns out, with Python, there are some really useful functions, such as .isupper() and .endswith(). So yes, I ended up learning a lot through this one exercise, but perhaps some basic mathematical operations would be better to start. Maybe Exercism isn’t built for those who are learning a language, but instead for those who have learned a language and are interested in improving the readability of their code.
Either way, I love it, and after Bob, was Leap, which sends years to the program, and counts on you to compute whether or not it is a leap year. This was much more up my alley, as I already had an understanding of Modulo, due to Fizz Buzz and all that fun stuff.
That was a lot to type for me, and tons of fun to pour out my feelings. I hope I can keep the discipline to post here often.