I've just started a programming job where I'm applying my 'How to code' knowledge to what I'm being taught of 'How to Program' (They are different!). As part of this, I've been taught how to capture requirements from clients before starting a new project. But...How do I do this for a nebulous personal project?I say nebulous, as I often find halfway through programming something, I want to expand what my program will do, or alter the result. Eventually, I'm tangled in code and have to restart. This can be frustrating and off-putting. Conversely, when given a fixed task and fixed requirements, it's much easier to dig in and get it done.At work I might be told Today/This week you need to add XYZ to program 1 That is easy to do. At home (for fun) I want to make, say, a program that creates arbitrary lists. It's a very generic task. How do I start with that? I don't need it to do anything, but I want it to do something.So how do I plan a personal programming project?Related: What to plan before starting development on a project?
How do I break down and plan a personal programming project?
architecture;refactoring;requirements;application design;project planning
There is nothing wrong with what you are doing if your purpose is to learn. Many developers leave a string of half-written applications behind them when they had finished everything interesting in them.However, if you want to write something and finish it, pick a problem you want solved then do the minimum you need to solve it. Use existing libraries and code examples and hack it together. Once you have something working then go back and clean it up and expand it.[Edit]If you are looking for inspiration, there are lots of places to start. Microsoft has the coding 4 fun site. There are thousands of open source applications out there that need fixes, improvements, automated tests and documentation on sites like github.com and codeplex.com. Reading other people's code also helps you learn new techniques and libraries.