I recently found out about the esteemed Shamus Young and exploring his work has been gratifying and eye-opening. His skill at writing, transparency, and technical prowess makes one want to be a better engineer and person. One of the nuggets of knowledge found in his volumes is the benefit the act of writing itself has. And so I’ve explained why this series exists.
At this point in my software career, I’m fluent in Python and can deal with some C (technically got paid for C development for 2 years, but in reality I didn’t write much). I’m literate in JavaScript and spent quite some time with Solidity, the language of Ethereum smart contracts.
Python is the only one I enjoyed.
Deciding to learn a computer language is not a light endeavor. Choosing the right language is especially tricky. Zealots will yell from corners, hawking their language as the Supreme Language and try to seduce you from trying others. The student should pick a language that balances the various tradeoffs for their situation. I want a powerful, mature, fast, marketable language that’s fun to use.
Go: Go (okay that’s the only one).
Created by Google in 2009 by a team that had Ken Thompson on it, the language has matured generously over the past decade and whatever years. It’s been strongly adopted by the DevOps community and has several attractive features to explore.
Go, as a modern language, can benefit from mistakes of predecessors. Things not often thought about, like tooling support, are first-class citizens in the Go ecosystem. Specifically what caught my eye:
- Compile down to single statically-linked binary. No more slugging around dependencies with a lockfile and hoping users install them correctly
- Fast and elegant CLIs. CLI apps are the type of program I’ve probably built the most
- It’s typed and compiled. Only being fluent in a interpreted language makes me feel like my toolbox is missing a tool.
The first steps are complete. I’ve thought long about which language to learn and feel confident in my reasons. The rest of the series will document my struggles.