Teaching an Old Dog New Tricks
There are two things I miss about working as a software engineer at a small tech company:
- Working in a team with more experienced engineers whom I can learn from.
- Getting paid to keep up with new technologies, best practices, and workflows.
These perks don't come automatically when working solo on a single product for almost 8 years. My frontend is still stuck on React 16 from 2018. The backend is all Python, which was great in the beginning, but is now starting to give me a headache. I still haven't embraced Docker or CI because there hasn't been a pressing need to replicate my environment; as long as the code works on my laptop and in production, I'm okay. I haven't kept up with the latest innovations in CSS. I'm still married to IntelliJ even though I'd like to move to VSCode. I've barely adopted AI. Simply put, keeping up with the changing tech landscape has taken a backseat to growing revenue, shipping fast in the short term, fixing bugs, and growing the non-tech team.
That's about to change now. Over next two to three months, I need to build a fairly complex internal tool which will be used by almost everyone on the team. One of our users has also offered to help us in a volunteering capacity. So for the first time in 8 years, I might be working with another developer on a fullstack web app. I've decided that instead of baking it into the existing monolith, I'll separate it out into it's own microservice. This will free me up to start with a clean slate and build with multiple developers in mind, without being bogged down by legacy tooling while giving me an opportunity to elevate my skillset.
For the frontend, I want to use React 19 plus also learn Next.JS and Typescript. For the backend, I want to move away from Python and embrace Go. I also want to code in VSCode to get a feel for what it's like. And finally, I want to integrate Docker and CI into my workflow.
I expect a steep learning curve in the beginning learning all these new things. I want to use AI as a smart Q&A tool rather than something that writes code for me. Once I'm comfortable with the new design patterns and what good code should look like, I'll consider having AI write code for me. One reason I want to move from Javascript and Python to Typescript and Go is because I believe they'll be easier to work with in the age of AI.
To make the transition more manageable, I have two simpler pet projects which are unrelated to my business. Those will be my training wheels until I'm ready to embark on the internal tool. The first project is a social media testimonial generator. It will be all frontend. The second project is a crowdsourced directory for Ashtanga studios. This will have a backend component and database as well. I plan to open source both projects. It will be my first time contributing to open source. It's about time I give back to the community which has given me so much. Even if zero people use these projects, I will learn a lot from putting them out. And most importantly, these learnings will then be applied to the internal tool which will help my business.
Unlike 8 years ago when my bank balance was precarious, I have a bit more breathing room now to hit the pause button and focus on skill building. Multitasking is not my strength, so I'll have to largely neglect my core business while executing on the above. I'm looking forward to the change in scenery.