July 26, 2025 | 🧑💻 Two Years In: Becoming a Programmer
My Github contribution graph for 2023
A Personal Development Goal
On July 26, 2023, I wrote that I'd started a journey to turn my hobby of coding into a profession of programming:
For a long time, I've been a coder, but not a programmer (see: Coding). One of my goals for this year is to build an app. Nothing useful, fancy, or impressive. Just to get from zero to one using modern tools. I wrote a handful of Windows apps in C# in the mid-aughts circa 2008, and a variety of data analysis in R, Python, SQL, since then, but no one has ever paid me to write code.
I want to at least have the capability to earn an income by developing software, even if I never do.
Completed Projects
Since then, I've completed many projects that includes command line tools, text based games, graphical games that I also made playable in web browsers, open source projects, some AI / LLM development, and more. Specifically I:
- Launched a game that I ported to Rust from Python (more on this in a future post)
- Wrote an AI formula function for Google Sheets more than a year before Google finally added the =AI() formula function themselves (you can use mine for free instead of paying Google if you want)
- Contributed to an open source project called "TaskWarrior"
- Programmed a dungeon crawler game in Rust following a project from Herbert Wolverson's Hands on Rust, which is an excellent book.
- Built
gq-cli
which is a command line interface to the Gqueues task manager service - Programmed a "Clock Stopper" game on a Raspberry Pi Pico
- Programmed a "Blinky LED" program on a Raspberry Pi Pico
- Made a couple other prototype applications including a game in Rust's Bevy game engine, a simple text-based game, and a locally hosted LLM
Programming Concepts
Though I've definitely learned enough Rust to confidently say I'm at least at an intermediate level of proficiency, I've also learned so much more about specialized areas of programming, domains, supporting parts of the software development lifecycle, collaboration, and more:
- CI/CD with GitHub Actions
- WASM
- Implementing Entity Component System in Game Development
- Embedded Development
- Logging (with Grafana)
- Build Scripts
- Binary size optimization
- Async and Parallel programming
- Cloud workers
- GitHub Best Practices
- ... and lots of stuff about data structures and algorithms, Rust syntax, Crates, etc.
Tools Adopted
In the process, matured my use of supporting tools:
- Switched to Linux (first on Mint, then Fedora with KDE Plasma)
- Learned much more about Git and collaborating on GitHub
- Developed a preference for shell (Nushell) and terminal emulator (Ghostty)
- Upgraded my laptop to a Framework 13
Joined Communities and Attended Events
I've also joined and attended a few virtual and in-person communities and events:
- RustConf 2024 in Montreal, CA
- Seattle Rust User Group
- Several Discord Communities
- and more one-off or ad hoc meetups
In Pursuit of the North Star
However, the underlying goal of being paid to produce code is still unmet. In my consulting work, I've delivered SQL projects, and developed dbt models, low-code and no-code workflow automation, ETL configurations, and more. But thus far, I've not been paid to contribute to a binary in production.
There is also a lot of uncertainty if and to what extent my goal of being paid for code will remain possible given the significant progress and adoption of AI Agents and "Vibe Coding". When I first interacted with LLMs (RIP "Bard"), I found them entertaining, but was mostly underwhelmed and dismissive of it.
My intent is to continue developing my programming skills, though. I suspect that my knowledge and experience will be valued in a future where LLMs produce good prototypes, and organizations need them built into production-ready applications or integrated into legacy systems.
If you have any questions, comments, ideas, or have some suggestions or want to help in some way, please contact me on Mastodon at https://hachyderm.io/@iw .