Over the past few months, I've been contributing to both Wikipedia and Stack Overflow, and working on open source software projects. However, I've found that my obsession with software development has interfered with my college education, since my enthusiasm for software development has begun to overshadow my desire to work on college assignments. How can I regain focus on the tasks that I'm actually obligated to finish, while also finding time for all of my personal software projects?
I can empathise with you in your current situation. I'm a part-time student studying for a Masters degree in Systems Engineering. I also have a full-time job and lots of other interests, amongst them software development, coding paradigms, game design, etc. The first thing I can say is that you must learn to prioritise, if you haven't already. Work out what's important and what the deadline is and, if need be, put things on hold until that deadline happens.
CONNECTIONS AND PERSPECTIVES
My main piece of advice, however, would be to look for connections between your different areas of work. By doing this, as with connecting work with anything personal, you will have an angle which will be different to everything else. So to give you an example from my studies--my background is Literature and Philosophy and that gives me a different perspective on my studies now, which few other students seem to be able to understand. But it seems to have paid off in terms of the quality of my work.
In one of your comments you wrote about creating websites about the subjects you have to study. This to me seems like exactly the kind of thing you should be doing. It will mean you have to learn your subject pretty well in order to structure the website, that you will have to look at what else is out there (thus increasing your knowledge and understanding of each field), and that you will have something you can use towards your college assignments. Completing the websites isn't important but working on them will be a great way to focus on your subjects whilst indulging in what seems to be one of your passions. If you ever do finish them, you will have a potentially useful piece for a portfolio of work that you can then show to prospective employers.
If you don't finish them you will have learned something and can talk about the experience. And here is where I must bring up a warning to go with this advice. It's important not to feel too much pressure to finish these things which will essentially be extra-curricular. Going back to the first piece of advice, always keep sight of your priorities and that way you can avoid burn-out. I say this because you mention 'obsession'. It's really easy for some people (I include myself in this group) to get fixated on work, especially in an area like software development which if you have that inclination can feel like very rewarding work. But it is still work. Never forget to relax and do something totally unrelated to whatever you're working on now and again. This is especially important when you start connecting things you have to do to things you want to do; after a while it can feel like even the things you want to do are just things you have to do. Relaxing and/or doing something unrelated will prevent you from getting properly exhausted (which, much more than being tired, is a terrible feeling, akin to madness) and it will help you keep things in perspective.
I don't usually give advice but I hope this is of some use. Best of luck.
My co-founder wrote up a brief essay on the topic of time management for college students a few months ago. These are his main points, but I won't copy the whole thing here:
The best thing you could do is try to organize things out so that you could manage life/work balance. You could list your entire tasks and organize it depends on their priority level. Another good thing to do when working is to set an estimated amount of time when working on each task, which could also help you improve focus, limit wasted time and finish tasks on time.
It personally helps me balance life and work. I use Time Doctor to track time accurately at work. At the end of the day I feel the fulfillment at work each time I see finish tasks.