Writing similar apps and code across multiple languages helps me understand their various strengths & weaknesses, and allows me to stretch beyond my comfort zone in an attempt to write real [Ruby|JS|Elixir|etc.], rather than just carry my usual OO/Ruby style into other languages. Here's the sorts of things I [am|will|have] writ[ing|e|ten].
- A todo app
- A test framework
- Tic tac toe
- A simple web server
- A sudoku solver
- A fractal generator, e.g. the Mandelbrot set
Also, pretty much any of the CodeKata examples or Project Euler examples, or (if I really want to go deep), any of the suggestions that every cs majors should do.
And I just recently came across a great list of projects. Could pretty much just use any/all of those.
I know a few, and am learning more. Here's some I'm playing with (or have), and my self-estimated competency level (1=written 'hello world', know the basic types/data structures/syntax; 5=could comfortably program in it professionally, but still referencing docs for some of the more obscure functions; 8=a true expert, comfortable talking about the language, how it works underneath the hood, the ecosystem, how popular libraries work, etc; 10=I wrote this language):
- Ruby (7.5/10)
- JavaScript (5/10)
- Python (2/10)
- Elixir (0/10)
- Clojure (0/10)
- Go (0/10)
- C (0/10)
- Rust (0/10)
- Crystal (0/10)
- Elm (0/10)
Over time, I imagine I'll go deep in some areas, but hope to have a great variety of areas in which I have some knowledge and experience. I'm not 100% sure which of these areas I will dive deep on, so for now am continuing to go wide (mostly working off of Google's recommendations):
- Object-oriented programming
- Functional programming
- Web development
- UX Design
- AI / Machine Learning
- Building compilers
- Cryptography