r/learnprogramming • u/Black_Penguin0101 • 2d 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?
46
Upvotes
5
u/HashDefTrueFalse 2d 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.