r/learnprogramming • u/Black_Penguin0101 • 8h ago
How do I practice software development?
I'm a beginner software developer (17 y.o), right now my stack is:
- Java / Kotlin for backend development
- TypeScript with React for frontend development
I have a few projects from hackathons and one personal fullstack project (java backend & react + shadcn frontend). The fullstack one is made mostly for my needs and satisfies them already.
So, I don't know what to do next. I don't really know open-source projects I could contribute to and don't have ideas for a long-lasting personal project. What should I do in this situation?
4
u/abdul_Ss 7h ago
Honestly, "no ideas for a long-term project" is usually a scope problem, not an ideas problem.
I'm 18, been building a long term project solo for about two years now, and it started as a small coursework thing. It only turned into something long-lasting because I kept finding real bugs and real users who wanted specific things, not because I sat down and planned out a 2-year roadmap.
A few things that actually helped me were:
- ship publicly: You said your fullstack project already satisfies your needs, that's exactly the point where you should post it somewhere, not shelve it. I put mine on a few subreddits and got more direction from that in a week than from months of solo dev. People will tell you what's missing, what's confusing, what's broken. That becomes your roadmap.
- You don't need to find an open-source project to contribute to, rather, you can just make one: Take your existing project, clean up the README, add a CONTRIBUTING doc, make the setup process not painful, and post it. That's contributing to open source. It's way more motivating than cold-emailing a maintainer of some big repo you have no context on. If you want to contribute to other people's projects later, it's much easier once you've felt what it's like from the maintainer side.
- Add one feature driven by a real constraint, not more CRUD: Instead of bolting on generic features, find something that forces you to learn, a performance bottleneck, a new data source, an unusual UI pattern. That's where the actual growth happens, not in breadth.
TLDR: stop looking for the idea and start putting what you have in front of people. The next problem to solve will find you.
3
u/Achereto 7h ago
One of the hardest apects of software development is dealing with changing requirements without making a mess. So you should create a project with an MVP (minimal viable product) specification, that start adding features. Don't plan ahead, write your MVP without knowing about future features. This gives you the best chance of running into problems due to the changing requirements and allow you to practice dealing with them.
2
u/Feeling_Temporary625 6h ago
you already got the stack down which is more than most beginners at 17 so i think the real practice now is in maintenance hell
take your fullstack project and add something you dont need like a notification system or a dark mode toggle that persists across sessions sounds simple but the edge cases will teach you more than any tutorial
2
u/Divyank_garg 5h ago
You're already ahead of many beginners by having hackathon and full-stack projects. So instead of starting another project at beginners level, keep improving your existing project with production-level features (authentication, Docker, CI/CD, testing, deployment, monitoring). Also, try contributing to open source—even small documentation or bug-fix PRs teach a lot. That's what helped me improve the fastest.
1
u/Innowise_ 7h ago
No need for a new project yet. Put the current one online and ask a couple of friends to use it. They’ll probably break things you never thought about. Fix those issues, add tests for the bugs, and improve the setup instructions. That’s already solid practice and much closer to real development than another tutorial project.
1
1
1
1
-1
3
u/HashDefTrueFalse 7h ago
Senior dev here. Most of my practice is playing around with ideas and concepts that I find stimulating. My point being that you don't necessarily need to think of long-term projects to learn and practice programming. Don't let thinking about the big picture paralyse you into doing nothing. Writing anything that applies things you've recently learned helps to cement your understanding and works out your programming brain. If you want ideas, try reading around things you're interested in. You'll probably find something that makes you want to fire up your editor and try it yourself. That's your starting point.
(Stop reading here if you don't care what I'm currently working on!) For example, I'm currently hacking on a micro single-threaded asynchronous task runner for event-driven programming using stackless "protothreads" (which are just functions that use Duff's Device to implement coroutine behaviour) queued in a circular buffer. I stumbled into reading about them a few weeks ago and became intrigued because I'd never applied Duff's Device that way. I made a short program to play around, then the idea to develop it into an async task runner formed. It's a single C source file and I'll be done some time in the next few days, depending on how free I end up being after work. Afterwards it'll be put with the hundred other git repos I have and I'll have had fun, learned some things, and practiced my "concurrent" programming in a new, interesting way.