Why all the nonsense? In some sense, it helps clear my mind of other projects. It helps me build up energy and excitement in anticipation of this new project.
It reminds me that I'm still alive, and that there are many things I could be doing in my life. While I may be a conduit or wellspring from which projects spring forth, there's no reason I have to be, except for the amount of love I feel for the work that I do.
EDIT: To respond to the issue of the arguable merits of my post — I made my post because the majority of comments here are describing preparatory activities performed on one's computer. I wanted to give some of my non-computer related warmups, since they can also apply to projects that aren't necessarily software-oriented.
But I always find myself going back tot he notebooks once or twice to refresh myself on one detail, look up a particular incantation, whatever. It's nice to have them in reserve for that.
1) Ask why people would use it (problem)
2) Figure out who would buy it (exact names, contacts)
3) Rough Wireframes, 5 slide pitch deck
4) That's all I need to meet with customers and get orders. I won't move forward until orders are secured and signed.
Have you always practiced this, or did it take some realization?
Thanks, - V
By secured and signed, I do mean a signed order for a license, to be delivered at a future date, generally with a discount or longer term to compensate for my clients risk. The delivery date, scope, seats, license term and cheque cutting dates are always pre-defined. Quite often, I'll extend a discount for a downpayment so that the company has some instant cashflow.
I didn't practice this in my first startup, but have since. It's not easy, but always worthwhile in the end, and helps accelerate through that awkward early growth stage, and means while development is going on, I can pitch us with a legitimate client backing.
To clarify: I am almost exclusively in B2B software.
mkdir new_project && cd new_project
git init . git remote add origin git@FQDN.com:new_project.git
git push origin master
git config branch.master.remote origin
git config branch.master.merge refs/heads/master git push -u origin masterOnly after you've searched 3 times and couldn't find it - start your new project.
The internet would be a better place if people were 50% as excited to contribute to an existing project as they are starting a new one.
Not that this is really the most important, it just helps me wrap my head around it if I can start calling it something.
Projects typically grow from an idea that forms over time. It starts with spotting a need or an annoyance, then thinking if a product could solve it, then looking at competition, then considering how to position and market it, then how to make money of it, and lastly - a crucial moment - if it is worth an effort.
You know how they say that "ideas are dime a dozen"? I find that it is simply not true. Ideas that is well thought through are rare and they are worth a lot.
--
tl;dr - the first thing is to develop and validate the idea.
I write a 1-2 page requirements document (and closer to 1, never more than 2). It tends to have two major parts: broad descriptions of what the system will do and very specific "must have" goals (e.g. transactions/second, max users, as well as functional ones; whatever makes sense).
Enough to keep in your mind for the rest of the project. It's a great organizer (I suppose the first is sort of a mission statement without the buzzword bingo), but again, for it to work it must be very short.
As far as ritual (and it helps that I'm starting a new project right now), I do play a certain type of ... determined music when starting. Archetypal for me is soundtracks of anime combat series e.g. Gundam UC (Zeta, CCA, F91 (Victory tends to be a little too depressing) and lately SEED. There are other titles (oh, the New World Symphony as used by Boring Germans in Space (LOGH) for the "empire strikes back" bit), but what they have in common is that my mind associates them with certain types of action. Certain ballet music works well too (my sister danced so I got into that genre well before college).
(Note, though, that I've been big on soundtrack music since a teenager, a bit before I was doing this sort of thing just after exiting my teens.)
Then I spend some time sketching out the main user "actions" on paper, do a quick database table layout on paper (connecting pieces of information), then I sketch UI concepts in my notebook.
Of course, as a designer at heart, I open photoshop and blast as soon as I have some pen/paper wireframes ready.
System.out.println("done");
run that, and then start adding stuff. If it's a web project, and I'm using Grails, I do something like: [prhodes@voyager]$ grails create-app foobar
then fire up Eclipse, import the project and go from there.Sometimes I'll break out a sketch pad, a box of colored pencils, and do some doodling / designing / brainstorming, but it just depends on what it is.
After all that, I fire up XMMS, and get some tunes going... Motley Crue, Queensryche, Metallica, Megadeth, Testament, Slayer, Danzig, whatever... just some good coding music.
Edit: Oh, wait, forgot a step... maybe the most important step. Putting on a pot of coffee to brew! :-)
Just start.
I can't say I've ever done this myself, but actually, now that I think about it, maybe I should. I tend to keep too many balls in the air to focus well on one thing.