Exercism.io challenge — intro to polyglot programming
Exercism.io is a place where you can learn and practice different programming languages by solving small tasks. Each track has been divided into many exercises at various complexity level.
I’ve visited exercism.io a couple of times since its launch, and I must admit I wasn’t too sure if that’s something I want to spend my time on. I had a deep understanding of programming languages I use, at least I always aimed to do so. Also, web development was my area of interest where a solid choice of technology stack might be enough for a few years. So why would I want to try this challenge?
Ah, you might wonder what the challenge is? The idea is to go through all of the tracks and summarize them in here. I hope it’s not too ambitious, but let’s give it a go first.
Expert vs. Geek
Being on the market for some time taught me that narrowing the area of expertise helps to stay focused and raises the chance to be seen as an expert, because who wouldn’t like to hire an expert, right?
On the other hand, not going out of your comfort zone might put your sanity at risk. Leonardo da Vinci once said:
Iron rusts from disuse; water loses its purity from stagnation… even so does inaction sap the vigor of the mind.
Makes sense, Leo— if you’re not curious enough your ability to learn new things will drop over time.
So how to stay in the loop, while still keeping the great chance to get hired? Be an expert at work, be a geek after hours — it’s not a silver bullet, but that’s what I try to do. Pro tip — use some time during the day on yak shaving, when you feel stuck with your work!
Is it worth it? Can use it and keep up?
The IT world evolves at a dizzying pace and running into too many directions might kick you out of the loop in days. Imagine you’re a full-stack developer and you’re working on an API. You’re far enough with a backend work, so it’s time to switch to your frontend consumer — you’re your first client, and you value your feedback the most, don’t you? Two weeks later most of an API has got integrated, but there’s something wrong with the performance of one of the key-endpoints. You go back to the backend work, and you find out that this is a framework issue which has been fixed by the newest version released in the meantime. All right, quick update and you’re good to go. Yeah, that’s what they say. That wasn’t just a minor patch, but it introduced some breaking changes — FML!
You see my point? It’s been two weeks since you switched between technologies you’re assumed to be an expert at and it caused a severe issue and delayed further development.
It gets even harder when you’re working with technologies best for a specific domain, but not necessarily ones you know the best. Flirting with too many technologies at a time might lock you in a decisions stalemate — should I pick the best tool for the job or rather stick to one I feel the most comfortable with? The X is better for fast prototyping when Y gives better performance later — what to choose? How about the community, human resources, documentation?
Well, I think I’ll stick to the stack I already know…
Back to the challenge
All you’ve read above is precisely an opposite of what I’m expecting from this challenge. Being the one-man army sounds cool, but only in theory. I don’t have any goals or expectations regarding this run through different languages. If I’m going to learn something I can use later — perfect! However, if this is going to be a massive waste of time — well, let’s call it a risk I can take. All in all, I hope to have at least a bit of fun and quite a few interesting discussions regarding my opinions. Also, yes, this is going to be very subjective series.
Approach
I was wondering where to start. Should I go alphabetically? Group the languages by popularity, core methodology or number of issues on Github? Each of those ways had some cons that could make the series boring or hard to follow. I have even written a small lottery script, but I didn’t like the results. What? That is my series! I ended up with the quick and quite satisfying solution:
We’ll go left to right. Clever, huh?
Let the challenge begin.
I feel like it’s going to be a refreshing experience. Let’s see which of those languages has a low entry barrier, what are the most intriguing concepts and what are the most obvious use cases. We’ll see how it goes!
Crystal — this is where we start!