top | item 2745883

Ask HN: What is the first thing you do before starting a new project?

41 points| smashing_mag | 14 years ago | reply

Starting from a blank sheet of paper is difficult. We all have our habits and we all have our small rituals before we start working on a new project. What is it for you? Is it turning on the music? Sharpening a pencil? Cleaning the desk?

45 comments

order
[+] spiralganglion|14 years ago|reply
I talk. I talk to everyone I know. I ask very non-technical people how they'd approach the technical challenges (if this project has a technical aspect). I ask very technical people how they'd approach the creative/artistic challenges (same comment). I buy a sketchbook and fill it with doodles and diagrams and notes and random, scatterbrained ideas. And I never look at it again. I'll read up on material related to the subject. I'll read up on material unrelated to the subject, and figure out how it could apply (the works of Joyce are great for this). I'll meditate (with or without aids). Sometimes — and I'm not joking about this — I'll pick some completely arbitrary activity and assign it ritualistic significance, with pertinence to the project I'm about to begin. (Once, prior to recording a song, I showered myself with a carton of orange juice while hopping to and fro on alternating legs, ululating wildly — it was significant, by assignment.)

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.

[+] hnhg|14 years ago|reply
I assume from the downvoting that this isn't a very popular approach.
[+] AlexBlom|14 years ago|reply
Speaking as somebody who generally plays a lead BD role vs. programming (but I'm assuming this question is a level higher than programming, with project being a startup).

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.

[+] vishaldpatel|14 years ago|reply
Are you saying that you won't move forward with any development - not even a prototype - until you have paying customers? And what does it mean to have a "secured and signed" order? Does it mean that they're about to cut you a first check as an advance on purchasing / subscribing to the product?

Have you always practiced this, or did it take some realization?

Thanks, - V

[+] hga|14 years ago|reply
As a side note, 1,2 and 4 are the sort of thnig I believe Steve Blank is taking about when he says "There is no truth inside the office".
[+] yuvadam|14 years ago|reply

    mkdir new_project && cd new_project
    git init .
[+] auxbuss|14 years ago|reply
Add the project to gitolite.conf

  git remote add origin [email protected]:new_project.git
  git push origin master
  git config branch.master.remote origin
  git config branch.master.merge refs/heads/master
[+] ecaron|14 years ago|reply
Find if it is already been done. If you find it - contact the developer and figure out how you can help. If you don't find it, keep looking and start asking if other people have heard of it. If you still don't find it, take a couple days off and then start looking again.

Only 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.

[+] winsbe01|14 years ago|reply
I do this too, although I've never reached out to the developer to help because it usually is already a company. But it's a good idea, I will reach out in the future. Thanks!
[+] TikiTDO|14 years ago|reply
I figure out what exactly I am doing, and more importantly why exactly I am doing it. It's easy to sit down and thing "I want to change the world, I want to beat Facebook of Google at their game, I want to develop an awesome game or a tool that everyone needs." Ideas are a dime a dozen. It's the hows and whys of an idea that really define the scope, complexity, and execution of your project.
[+] ca136|14 years ago|reply
I usually forget it for a few days. I have a lot of ideas that seem really great when I first think of them, but after a few days thinking about something else I realize that the original idea was stupid and think of something else! If I have an idea that still seems worthwhile after a week, then I know I might be on to something.
[+] barmstrong|14 years ago|reply
BustAName.com

Not that this is really the most important, it just helps me wrap my head around it if I can start calling it something.

[+] chetan51|14 years ago|reply
knowem.com is pretty great too.
[+] huhtenberg|14 years ago|reply
Don't know about others, but I don't generally have a specific moment that marks the start of a new project.

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.

[+] hga|14 years ago|reply
Hmmm, no, I go right to the "blank sheet of paper" (at least in my mind's eye, but very soon an edit buffer).

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.)

[+] rokhayakebe|14 years ago|reply
I answer the question "Am I passionate enough about this to put at least 3 months in it knowing that it is more likely to fail than succeed?"
[+] nerdburn|14 years ago|reply
Before I hit the paper I brainstorm with someone who might use the project.

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.

[+] broot|14 years ago|reply
I turn on my Boards of Canada Pandora station and do a bunch of research. Jot some ideas down. Think about who would use it.
[+] mindcrime|14 years ago|reply
Depends on what kind of project it is, what state of mind I'm in, etc. But basically I just sit down at the computer, and start. If I'm writing java, I fire up Eclipse, and write a main method, that just does

  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! :-)

[+] Palomides|14 years ago|reply
Try to figure out if it already exists or if there are open source softwares I can use to get there faster.
[+] ulisesroche|14 years ago|reply
I follow the standard "git init ." route, except I follow it with a very long and delicious nap.
[+] awallgraphix|14 years ago|reply
I create the project in my head then transfer it to the computer....its weird...but true
[+] iSimone|14 years ago|reply
Usually buy a new Moleskine or Muji notebook.
[+] albahk|14 years ago|reply
I have one Muji notebook per project. Everything for that project goes in it. It is a great relief to get all ideas and concepts out of my mind and into the book.
[+] sahillavingia|14 years ago|reply
I sit down at my computer (and start). Seriously, anything more and you'll start making excuses, look for competitors, or figure out some way to justify not doing it.

Just start.

[+] ScottBurson|14 years ago|reply
An old friend of mine always says that before starting a new project, he has to get really bored. That is, he has to make sure he spends a period of time doing nothing interesting. That way, when he starts the project he has nothing else on his mind distracting him.

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.

[+] danest|14 years ago|reply
I think about what I am going to make, then if one week later that idea or project came to mind again. I start sketching a basic implementation of it.