Tackling New Languages
What’s next?!
One of my first blog posts had the heading “Ruby, JavaScript, and all the languages to come…” And I’m starting to encounter the latter part! As I’ve interviewed with companies who use languages or frameworks I’m unfamiliar with, I’ve worked to familiarize myself with their stack on a syntactical and conceptual level. Partly because it’s always enjoyable to explore new languages, but also because it shows that I do know how to acclimate to a new stack on some level. And as I’ve explored new languages, I’ve started to develop a routine for my exploration.
First, I install anything I would need to successfully run programs in that language. Then I explore the file structure of programs or apps created in that language. In my exploration, I’m checking to see how variables are declared and assigned, how classes are created and objects instantiated (for object-oriented languages), and checking for any unusual syntax or patterns which immediately jump out at me.
After some cursory exploration, I try to locate reliable resources that cover the basics, so I have a firmer understanding of the language’s structure. This includes cheatsheets, like this fantastic Java one or this GitHub repo, and reference cards that break down keywords. In exploring those, I look for the function and method syntax, more details on data types, the syntax of if and if/else statements, while statements, switch statements, etc. In this phase, I’ve found taking written notes or coding in something like repl.it to be most helpful for long-term retention.
Once the high-level syntactical overview is complete, I dive into exploring any oddities I noted. This includes keywords whose use case seems unclear to me, concepts I haven’t encountered in other languages, and data structures I’m unfamiliar with. In this phase, exploring the language’s documentation is usually most helpful as it ideally provides the deepest explanation and best examples. Often, that’s clarifying, but if it’s lacking, I search for other in-depth resources (ebooks, programming notes, etc.).
The final stage is practice. If I know someone who is familiar with the language, I try to pick their brain a bit as I start writing code post-research. This allows me to double check that I’m adhering to the language’s best practices. Otherwise, coding along with a tutorial or other video helps me become more familiar with actually writing in the language, while also, hopefully, adhering to best practices.
While the above has proven helpful in preparing for interviews, or preparing to attend meetups related to a technology or language I’m unfamiliar with, nothing is more useful than practice, more practice, more practice, building a project, deploying a project, and beyond for long-term growth!
Per the usual, while I work, this one naps…