One of the best things that I’ve done for myself, career-wise, came during a 6-month sabbatical between jobs. I had a bunch of projects that I wanted to do, but I kept finding myself stymied by scope creep - when you don’t have any constraints, it’s hard to decide how big a project should be, and the projects would grow to these massive unfinishable beasts.
I decided to constrain myself to one week per project - whatever I could get done in a week was what I’d do for this project. The experience of going from zero to something useable in either a new language or a new framework or a new field in a week was enormously confidence-building - learning that I was actually pretty good at this whole programming thing and breaking through a bunch of walls I’d run into previously in my professional career gave me an incredible amount of trust in myself to be able to take on new challenges that really helped me when I was looking for a new job. At the same time, it reminded me what I loved about programming - in a week, I was able to build something that solved a problem I had or that someone I knew had, and I got to do so in a creative and intellectually challenging fashion.
If ever you find yourself in a position to take a couple months off between jobs, skip the leetcoding or whatever else and just build some toy projects - you’ll be amazed how much you already know.
I ended up migrating to fixing things in the libraries I use because they piss me off.
Bad onboarding docs, broken or bent SDLC, major performance issues. I spent all day yesterday fixing perf issues in a library that competes with one I loathe for trying to complect an entire problem domain.
You probably have the same thing I do. Teamwork is a very different motivation than working on something either never intended for others or with a long MVP cycle that makes it too easy to get bogged down with side quests. "It would be way less tedious to deal with X if I did Y first. But now Y is blocked so I do nothing."
Versus 'someone is waiting for this.'
In my younger years, classic ASP + SQL was easy, and I had IIS + SQL Server set up on a server at my house. And I could write HTML/CSS/JavaScript.
Deployment was... run update scripts, push ASP files via FTP.
Now I know there are newer ways to do things, and I'd love to set up CI/CD in my personal life, but every time I want to do a "toy project" I get hung up researching and thinking about my own personal software development life cycle.
What you choose for hosting and deployment for your toy projects?
I am in such a phase as I write this. What should have been a week-long project has already gone through three and not finished. This is a simple multi-platform app I am building in Flutter.
One challenge I face is to be able to build something useful within a week. In two projects, I could make wirhin two days each.
For the Flutter one mentioned above, it took me two-three days just to get the tooling/SDKs to work and get me to a hello-world program working on Windows. Then it took about a week to program with all features I needed.
And then, damned again -- Took me a couple days to get it to build APK (random errors; the issue in the build tooling is still open). And then a week of craziness to sort out Android permissions. I still have the latter unresolved.
Out of curiosity, how did you end up with 6 months off between jobs?
I would love the opportunity to take ~6 months off, but I feel scared that if I just quit, it might take me a longer time to find a job again.
I've done the same, but with AI generating a lot of the boilerplate, and helping generate automated tests, has accelerated this process considerably.
I would just add that gen AI can actually be a fantastic aid when you're building some toy projects just for yourself.
I am primarily a backend engineer, though I am capable on the front end, just not particularly fast. I am especially slow at the voodoo that is CSS. In the past, I would have been turned off from doing some end-to-end personal projects because I know I would have been bogged down just battling CSS for hours and hours (it's particularly problematic that I'm slow at CSS but also a stickler for how I want things to look). With AI tools I can literally just say "make it pretty". It gets me about 85% of the way there, but importantly it gets me to the point where it puts in all the styling framework and then I just have to fix bugs/edit/tweak it, which goes very quickly.
So now I've found myself much more likely to build personal projects because I know I can get past things that in the past felt a bit like quicksand to me.