I've been involved in different kinds of software processes, and the most effective for small projects seems to be:
1. Talk generally about what we want to achieve.
2. Mock up some screens.
3. Agree on relevant technologies (language, platform, data store).
4. Assign responsibilities.
5. Commence.
Needless to say, this is not your typical "big company" software process. I've also been involved in more complicated processes that would involve multi-month-long documentation orgies, in which 50-150 page requirements and design documents would be made, remade, and remade (often for code that would total less than a thousand lines, and that was conceptially just a CRUD app).
Can any of you small-company types describe your process, if any? What is most effective for you?
In all seriousness though, this is truly the case. I surmise that most of us already have a platform of choice. I know I do. So once that is taken care of, just go ahead and start.
In terms of how do you start, I think it is most effective to work on the critical functionality path. Just do everything that is absolutely critical to make it functional.
In terms of where do you start along the critical functionality path, I approach it from the user perspective. First I need the login screen or whatever. OK, I need to build the ability to login. Then the next thing the user is going to want to do is X, so I need to make X work.
With this process you get from nothing to something functional in little time, and then you can just build from there. I have been on projects where we talk it through first, and even spec, but in my experience this is a waste of time for small projects at all but the highest level. Almost immediately when you start building it you notice things you didn't in the talking stage.
I'm interested in what other people do, but this has always worked for me. Of course, I like to work alone :). But it has worked with other people too. You just break up critical functional tasks the way they naturally break up.