
12 projects to learn 80% of a new language in a week
- Shem
- January 12, 2020
Hey there! π
So, I found this epic read by Tim Ferriss on picking up foreign languages. Honestly, it’s far from rocket surgery but super cool. It hit me right in the inspiration feels, especially for us web devs. Just like mastering a foreign language isnβt just about grammar and vocabulary but also about picking up slang, an accent, and diving deep into the culture that shaped the language, getting the hang of a programming language involves more than just syntax. π€ You need about 10 clever mini-projects to really get a feel for about 80% of what a language can do. My journey kicked off with Ruby, which is practically the culinary masterpiece of programming languages - it’s got its own secret recipe of 12 herbs and spices, making it incredibly expressive.
With Ruby as my kickoff point, I crafted 10 projects filled to the brim with dense, highly used code snippets from my everyday coding adventures. π Then, I took a leap into other languages, focusing on those practical, day-in-day-out skills over the arcane. But, a quick heads-up: my scope here is web development. Venturing into realms like CNC programming or embedded software with this approach might not be as effective since web dev is a whole ’nother beast, with its vast landscape of tools and tech beyond just the programming language.
And yeah, Iβm skipping over the popular libraries or tools talk. Those bits are super project-specific and, in my book, are things you should dive into just-in-time, as needed. π οΈ
Without further ado, let’s dive into Ruby! And as we move forward, Iβll tackle other languages, aiming to keep things as idiomatic as possible. After all, why write Ruby code in a C style when no Ruby connoisseur would dare to do so? When I say “idiomatic,” think of it like channeling a BBC TV host vibe. We’re aiming for that crisp, universally understandable style, not diving into Scottish or ghetto dialects that leave you scratching your head unless you’re in the know. πΊβ¨
Each language exploration ends with me sharing the coolest features I’ve stumbled upon. π Why this endeavor? I’m on a quest for a quick way to skill up as needed, scouting for the next language to get as cozy with as Ruby, and let’s be real - navigating the web dev scene means embracing the full cultural spectrum of each language, from its “slangs” and “accents” to the underlying principles that define it. Itβs not rocket surgery, but each language indeed has its own secret blend of 12 herbs and spices. π
Disclaimer - I don’t like playing with low-level langs, due to high school CS class-induced traumas. Hence, no Rust, no Erlang, no Assembly,etc.
- Working with Lists - Wrangling data efficiently
- JSON/XML/YAML Mapping - Converting between formats and objects
- Dictionary Reversal - Flipping keys and values
- Handling IO - Getting dirty
- Basic Project Setup - Hello World with options
- AWS S3 Interaction - File operations in the cloud
- OS Communication - Integrating with the host system
- Multiline Strings - Preserving formatting
- Code Reuse with Classes - Structured project organization
- Error Handling - Graceful data transformation inspired by monads
- Multithreading and Async - Maximizing CPU usage
- Testing - be an adult, test your code
- Wrap up