As a self-taught programmer, projects have always been my biggest tool for learning. Not having gone through formal education in computer science is both a blessing and a curse. On the one hand, it means I sometimes encounter gaps in my knowledge, but on the other hand it has taught me to be an active learner.
When you've never been obligated to sit through long lectures on data structures or compilers, your natural curiosity has space to grow. Similarly, when you're not graded on the quality of your work, it encourages you to undertake larger and more difficult projects.
I'll freely admit that only a small fraction of my projects ever reach something resembling a finished state. Once my curiosity is sated, I move quickly onto the next thing, often something radically different.
After five years of programming, I have noticed a few topics that I keep coming back to, namely:
- parsers, compilers, and interpreters
- programming language design
- functional programming theory
I also find myself practicing the skills that I use professionally, like:
- front-end frameworks
- software architecture
- API design
Rye programming language
A functional programming language designed to be readable even for FP novices
Language Workshop
A platform for creating fictional languages
For creative writing, learning about linguistics, tabletop role-playing games, or just for funGodash
A compact library of utilities for working with Golang slices, inspired by JavaScript's Lodash