Defining projects
Once you have your task or problem, you need to figure out how you are going to approach it. Personally, I start by writing down the problem in a notebook and start taking notes about what I do not know, what I do know, and how I might try and solve it. This research phase often involves searching online to figure out how other people have solved the problem, if there are any open source tools that people have already released that are in the problem space, or if no one else has this problem, why that is.
Evaluating other people's solutions teaches you about how this problem surfaces in different environments. It's also useful to figure out if a piece of open source software could solve your problem or nearly solve it. Every situation is different, but often you can find a software project that does 90% of what you want and you can either expand it or work with the maintainer to see if the software would work for your situation. All of this research will...