

How To Build Something Real (In Your Spare Time) - thomanil
http://messynotebook.com/?p=1083

======
joshu
I built delicious while working a fairly grueling day job.

\- I had a deck of index cards and a binder clip. Have an idea, write it down.

\- I'd sit down and try to do just one thing. Look through the cards, find
something easy. Even a little thing. After that it was okay to go to bed.

\- Keep the code chunks small. Make it easy to page in all the state for
working on that bit of code. Everything but the file that actually rendered a
single bookmark fit on a single screen.

\- Understand that some days you just won't get anything done. Go with it.

\- Get something out there. Feedback is incredibly motivating.

\- Relentlessly cut things back. What's the minimal amount you have to do.
What can you remove? What can you get rid of? What's the minimal design that
has conceptual integrity? If it's not necessary, get rid of it. I find that
lopping off chunks of the ideas mean that other parts of the code and
interactions with other parts of the system become less and less complicated.

\- Don't start working on something until it's reasonably complete in your
head. It's ok to doodle in code, but don't spend hours building something that
is conceptually fragmentary. Sometimes I think about an idea for months. There
are ideas I came up with 5+ years ago that I'm still noodling on.

\- Keep an idea log. If you aren't working you aren't generating real ideas.

\- Be ready to abandon an idea for another one if you find yourself thinking
about it more.

------
mlLK
I'm so undisciplined sometimes I wish I had my own personal drill-sergeant
(akin to that guy from Full Metal Jacket) to kick my ass as soon I start
losing my train of thought. . .does anyone else here consider their wandering
train of thought a problem?

Usually I spend so much time trying to figure wtf I _should do_ that I either
end-up micro-managing some code snippet that doesn't matter or day-dreaming
about how awesome my hypothetical startup is, which frankly doesn't do
anything at all!

How do you guys manage to do work that really matters on your own time without
anyone else there to keep you on task, implement a set constraints for you to
work within, or tell you what the problem is? i.e. gimme some tips to self-
manage my train of thought.

~~~
trickjarrett
I live and die by lists personally. I will make a list of things to do before
I'm done for the day and I try to knock the list out. But I also have a drop-
dead end of the day time. Don't pull an 18 hour day unless you're so deep in
the zone you don't realize you've done it!

~~~
mlLK
You sound like my Dad. . .which isn't bad but I've heard it all before. I
don't know why I resisted this list making mantra for such a long time, but
nevertheless, I gave in a little over a year ago and started making lists my
college course work.

But a list in college is different since the assignment is my constraint thus
it is much easier to work within because the assignment or project provides
the problem and upstream requirements for me. For some reason reading software
requirements, doing a mathematical proof, or looking over case diagrams for
pre-existing problems puts me on the right train of thought by forcing me to
focus on _how I'm doing it_ not on _what I'm doing_.

~~~
Xichekolas
I often suffer from the same day-dreaming and building castles in the air
problem you described in your OP.

I have found that just writing down all these ideas allows me to focus on
something else. I think the reason I constantly think about them is that I'm
attempting to remember everything. The act of putting it on paper allows me to
rest easy on that front.

I also prefer legal pads to everything else I have found, even electronic.
There is just something about pen and paper and being able to cross out or
annotate that helps me organize my thoughts. I sound like a luddite saying
that, I know, but it's true.

I also spend some time every so often to go through my lists and consolidate
or elaborate on items. Many times I'll find the reason I haven't been able to
start on something is because it's too broad and ill-defined. Thinking about
it and turning that one item into half a dozen more actionable (is that a
word?) items helps get me started.

~~~
tertius
You're a very ready candidate for GTD. Get the book it'll change your life.

------
patio11
Since building something is only 10% of the battle (if that) you're going to
want to apply the same general techniques to the other things -- web design,
marketing, support, etc.

My favorite three words are "Automate, outsource, and eliminate". If neither
you nor your customers require your personal attention to X, you should
ideally not be X-ing, because you and your customers require your personal
attention on enough things as it is.

[Incidentally: Telling your parents and friends about your internal deadlines
as a motivational tool is pretty useful. Telling your customers is a great way
to get unproductively stressed when life gets in the way. Your parents and
friends will still be there later if your schedule slips a week because your
girlfriend needed more face time. Your customers, on the other hand, tend to
be a little more insistent that when you tell them 2.0 is coming out on July
1st that it is actually out on July 1st.]

~~~
bdr
It depends what your battle is. This guide is more directed to hackers who
want to build something cool than someone setting out to start a business.

~~~
benkant
I agree, I don't think the article had 'making a business out of it' in mind.

This is just hacking with a goal to finishing the project. A noble goal, I
think. Though in my experience a difficult one.

------
wallflower
> Unfortunately, [basic project management principles] often seem to go
> straight out the window when programmers sit down to work on their own time.

Well stated. When you are working on your side project and not being
paid/accountable to others, its easy to mismanage your resource (yourself).

Does anyone use the free 1-project version of Basecamp for hobby project
management?

~~~
imp
I tried Basecamp once for a side project, but I quickly found myself not using
it. No particular reason. I just didn't feel like I got much value out of it.

Trac is pretty nice because it's lightweight and is tied right into my
repository (if you use SVN). It seems to fit my workflow better.

------
abstractbill
This sounds like it would turn my hobbies into yet another job. I understand
where it's coming from, but sometimes I _like_ working on things that I don't
have to finish.

~~~
prpon
Most of us are trying to create something of value that will allow us to get
away from the corporate job frustrations. In the end you might be working
longer/harder than that frustrating job, but at least it will a) provide for
you and your family b)something you are proud of c) enjoy while doing it

A finished project will help in that direction.

~~~
abstractbill
Oh, I can definitely sympathize with that position, having been in it myself,
and I didn't mean to belittle the efforts of those currently trying to escape.

I was speaking as someone who is already doing a startup. I've made the
mistake of trying to have "serious" side projects at the same time... it's not
a good idea.

------
fefzero
At first, some of these items seem to conflict (like "something every day" and
"let life intrude"), but these are great rules of thumb. From what I've seen,
too many developers just set out on a path without really mapping it out
first.

In my own experience I have often used the excuse that my project is so small
that I don't need to write anything down for it, but that always comes back to
bite me when I have to "let life intrude" for a week or so - I come back and
I'm totally lost as to where to go next. Having lots of little milestones
makes things go much more smoothly.

~~~
sunir
You can do 10 minutes every day. The important thing is to _feel_ progress
every day, or else you get depressed. The same advice is given to writers for
the same reasons: write something every day, even if it's terrible. It keeps
you feeling like you're moving forward, and that helps you break through any
mental blocks.

------
axod
I'd say the number one bit of advice would be "Get people to use it".

Looking back at side projects that are sitting on a disk somewhere, abandoned,
they went that way because no one was using them.

Once you manage to get some people using your side project, it's a lot harder
to just shelve it, and a lot easier to iterate and grow.

------
samlittlewood
... and leave an easy task to pick up when you resume.

~~~
benkant
I think that's an important point. I tend to have a few recurring ideas that I
come back to. The trouble is, I have a bad habit of not keeping each project
in a well maintained state. Most times when I come back to something I pretty
much start again... ugh.

------
ngsayjoe
You know how I motivate myself? I would subscribe to an oversized slice @
slicehost to remind myself everyday, I'd better get this thing out as soon as
possible, otherwise I would end up paying those un-utilized resources as
everyday passed by. It works magic, I ended up releasing my beta version
within 4 months instead of the planned 8-12 months.

------
jnovek
For me and my company, my ability to finish things has had a lot more to do
with me believing in the project.

In my limited experience, you don't invest your time or your money into a
startup. You invest yourself. You sacrifice your health, your relationships,
and your political capital to make it work. And you don't do that because you
have to or you want to. You do that because you only have one goal, and that's
getting your company off the ground.

There's nothing that I've ever invested myself in so fully as my company,
aside perhaps from my marriage.

------
debsdell
First, know when "your spare time" is. After "completing" something (or just
calling it quits for the day), go for it. Doesn't matter what gets "built".
Just knowing you've done something enjoyable for yourself, whether it's
tangible or not, is an accomplishment in itself. Second, if serious about
building something others can benefit from, create that list...a plan in
action...whatever you want to call it. Then you can measure your progress
until it's DONE. Good luck.

------
antirez
I think the golden rule here is: build something that is going to be useful
for yourself too, for the next years. If you are not an user of your own
programs it's hard to get motivated. For example this is how I abandoned the
development of hping. Because I stopped doing security for work I started
using hping rarely, and I was no longer motivated to continue the development.

------
nitrogen
The "something real" that was created in the article is a mind mapping web
app. Clearly there is a need for a really good mind mapping and idea tracking
software, since so many people are taking a stab at the problem (myself
included).

------
ptn
Personally, what I lack the most is that "small amount of external pressure",
but I've been trying to fix that, trying to get out of my vacuum and start
collaborating with people.

------
ahoyhere
Nice post. Great reminder for those of us who tend to put big, imaginary
barriers between ourselves and finishing anything!

------
c00p3r
It seems like so-called project management is mostly ideas adapted from the
the great eastern traditions - yoga, buddhism, zen and eastern way to live in
general. You can get almost any old book and you will find something called
'the way' - 'do'. Aikido is a good example, Bushido, and related teachings.

btw, I admire those genius who drawing users-guides and promote projects in
anime style. =)

