Hey folks,
I’m reaching out because I’ve hit a bit of a wall and I reckon a few brains from this crowd might have the insight I need.
I’ve always been a big believer in learning by doing - give me a real-world problem and a keyboard and I’ll bash away at it until I get the thing working. But I’ve been finding that in my day job, I don’t often get the chance to really experiment. Business needs and project timelines get in the way.
So here’s what I’m thinking. I want to dive into a few short-term, project-based learning adventures where I get to be the architect, the engineer, the QA… you get the idea. I don’t want to start a new business or anything - just want to get my hands dirty and build something from the ground up.
What I’m hunting for are some solid software system specifications. The kind of thing you might get from a client or stakeholder that has enough detail to get going but leaves room for you to make some design and implementation choices. Basically, I want to flex some creative muscle, test out new architectural patterns, and make my own mistakes - and learn from them - along the way.
If you know of any resources, repos, websites, books - anything where I could get my hands on something like this, I’d be super grateful for the heads up. And if you’ve done something similar, I’d love to hear about your experiences and what you learned along the way.
Looking forward to hearing your thoughts and ideas, and diving into this new challenge.
I knew I’d seen something like this, and was very happy to find this in my notes from a few years ago: https://devchallenges.io/
There are a few full-stack ‘challenges’, ultimately building up to a twitter and then trello clone. Maybe it’s the kind of thing you’re looking for? I’m not sure if the submit + review portion of the site is still a thing, but w/e, you can still take the ideas and build your own thing.
Here’s a quick article on it from the creator: https://dev.to/nghiemthu/8-projects-with-modern-designs-to-become-a-full-stack-master-2020-14j9
One thought I had when looking through these is that keeping the project small (e.g. an image uploader that adds a filter and renders it) might be preferrable to an otherwise larger/never-ending project. OR you could do more design work for a larger site if that’s the part of software you want to practice.
You might also look into coding ‘kata’ or something like advent of code, tho that’s definitely a different direction and lower-level scope.
Building stuff is fun! Good luck with it!
some solid software system specifications. The kind of thing you might get from a client or stakeholder
🤔
In all seriousness, sounds like a fun exercise. Have you tried to contribute to open source? That doesn’t mean just bug fixing, many popular projects accept contributions in issue tracking and QA. Many are great ways to get to know a new technology and solve novel problems.
I’ve had a very similar issue recently - when I joined my current company, it was a start-up and had a lot of room for growth and experimentation. Now it’s maturing and I’m looking for personal projects in a similar way.
Funnily enough, I’ve actually been using ChatGPT to generate specifications for me which are usually fairly good. If I’m looking to play with or learn a particular technology it also does an okay-ish job of suggesting a ‘product’ with a specification that works well for the given technology too.
Outside of ChatGPT though, I occasionally just browse through GitHub for open source apps that I can get a rough idea from and attempt to reproduce as well. There’s also lists like this one which suggest different project/app ideas at varying levels of difficulty: https://github.com/florinpop17/app-ideas
I can’t say I’ve found anything on GitHub that’s a proper list of specifications though.
I from time to time do something like what you are looking for, I believe. But I also think that it’s going to be difficult to find those “solid specifications you might get from a customer”.
What I do is to start a project that usually reinvents the wheel, so you know exactly what is needed, and focus on experimenting at different levels as you said: architecture, project management, design, UI, coding, CI/CD, pipelines, quality, etc. You also end up learning a lot about the problem itself.
For me the goal of those projects has not traditionally be to release something and create the next startup, but to experiment and have some fun. In my last project I also tried OpenFastTrack, which is a tool for gathering requirements and tracking their completion in the repository.
It was a lot of fun. Maybe this sounds good to you, and the truth is I have been looking forward to collaborate with others with the same approach, to also introduce the “autonomous team” factor to the experimentation 🙂.
Yes, this is exactly what I’ve been trying lately.
I’m currently working on a Twitter/Reddit clone to test out CQRS and Event Sourcing.
My focus is on making it in a way that moves from a small MVP (make a post) to a full scale clone, in a very “agile” way, e.g. the skateboard > bike > car idea.
BTW, if you want to collaborate on a project, feel free to send me a message 😁
Are you in the US? Try searching https://sam.gov/search for things like “platform”, “application”, “software”, etc and look through the RFPs. States and local governments pump them out, too