
There are too many shiny objects and it is killing me - Magpies
https://yetanothergreatidea.wordpress.com/
======
chipsy
Simply put: You're shopping, not creating. I went through a phase like this,
too. It also had some relation to being stressed, or not socializing enough,
in my case.

The healthy thing you want to be doing is practicing. Ground the big idea
within the question, "what part of this can I start implementing now?" It
doesn't matter how tiny or trivial that part is, as long as it has a clear
link to the big project - the more direct, the better. Allocate time to
implement that, instead of shopping for best practices. Allow your
implementation to be a little bit cruder than you think it should be.

If you're doing anything worthwhile, you'll soon land in a zone where tools
and tutorials don't really help you anymore. There's just the project you
have, and your will to work on it. You can still fall back into the shopping
cycle at this phase by rewriting things with a different tool or technique,
but that's where you should reassert the part where it's "a little bit crude."
Focus on concrete, measurable metrics, and you will get away from the spell of
"best practice."

~~~
javajosh
_> You're shopping, not creating._

It's very hard to stop shopping, and if you don't stop, you lose. There's a
fantastic SF story that is the perfect allegory (Arthur C. Clarke,
_Superiority_ ):

[http://www.mayofamily.com/RLM/txt_Clarke_Superiority.html](http://www.mayofamily.com/RLM/txt_Clarke_Superiority.html)

EDIT: It angers me that this comment was down-voted. That story was difficult
to find, and it really is the perfect allegory to the OP's problem, and the
more general "worse is better" notion. What is this, some sort of prejudice
against Golden Age SF as a cultural touchstone? Would I be similarly penalized
if I mentioned "Sisyphus" or a "Gordian Knot"?

~~~
swayvil
Good story.

Re anger : Have you met the internet? He is 14 years old and hates everything
except tentacle-porn.

~~~
lazyhummingbird
When you know what you like, you know what you like!

I AM 4CHAN. EXPECT ME. DOSE ANYONE HAVE GOOD HACKER TUTORIALLS I HEARD THIS
WEBSITE CAN MAKE ME 1337 XD

PLEAS JOIN MY MINECRAFT SERVER DONATING MEMBERS ONLY

------
scarygliders
Forget what most here are saying about Adult ADHD, ADD or whatever fancy
schmancy TLA is this era's Mental Illness Du Jour.

You, my friend, are suffering from Procrastination.

You have the idea - but you're putting SO MANY barriers in front of
implementing that idea. You're finding excuses NOT to just sit down and write
code. You're procrastinating.

I know this because I too am guilty of it - been guilty of it all this week in
fact. I have an application to write for a business client - it's Wednesday
already and I'm still "thinking over it". I should get started on it,
preferably before this week is over.

Listen. Forget TDD. Especially if you're a team of 1. Just sit down, decide on
an IDE - vim will do, even! - and start writing Code That Does Something for
your idea. Got stuck? Google for "how do I <do this in $language>?", see how
to do it, then write the Code That Does Something.

"But, the TESTS!" \- here's my method of development (as I'm on a team of 1) :
A) Write the Code That Does Something. B) Run it and see if it Does What You
Wanted It To Do. If it does, great, carry on. If not, sort that bit out until
it does. Then carry on.

Oh and stop procrastinating.

~~~
iak8god
_Ctrl-f procrast_

> You, my friend, are suffering from Procrastination.

1000X this. I recognized this immediately because I see the same pattern in my
own behavior. OP starts out doing a bunch of things that will need to be done
_eventually_ for the project to succeed, but that are essentially a waste of
time and other resources at the initial stage. OP does this (I do too!)
because those steps are familiar, easy, and very well defined relative to
actually working on the project. Actually making progress on a novel project
falls outside our comfort zone. Stop procrastinating.

~~~
slight
Also try grabbing what you think you'll need then taking your laptop if you
have one and go and work somewhere without internet. If your laptop has a 3g
modem leave the sim at home, leave your smartphone at home. You don't need the
internet all the time.

~~~
copperx
Not when using tools that are unfamiliar. It's really really hard to fight the
urge to Google "how do I XXX in YYY". Even though I have an online
documentation browser (Dash), I still Google first; it's much faster.

------
smacktoward
This sounds like the tech equivalent of FOMO, "fear of missing out":
[http://en.wikipedia.org/wiki/Fear_of_missing_out](http://en.wikipedia.org/wiki/Fear_of_missing_out)

 _> If I am going to build this in React.js (which I totally should do) then
I’ll spend less time in Visual Studio and more time in Sublime Text. Before I
can start, I should first verify that my Sublime color scheme is up to par._

The problem is the leap from "I'm going to be spending time in Sublime Text"
to "my Sublime Text environment must be perfect before I can get started." I
used to have the same problem, constantly fiddling with my tools to try and
get them Just So. It was an enormous time sink.

Eventually what helped me get past it is learning to be OK with the idea that
your tools are sub-optimal, because _they will always be sub-optimal,_ no
matter how much time you spend bikeshedding them. There's always one more
font, one more plugin, one more color scheme. You're always one step away from
perfection, no matter how many steps you take.

(If you want to get philosophical about it, we humans are all imperfect
creations too, right? So it makes sense that our works, the things we make,
would be flawed as well. Perfection is not a quality of things made by human
hands, no matter how skilled those hands are.)

So the only way to be productive is to take a sort of Zen attitude and learn
to be OK with imperfection. Accept your tools as you accept yourself, flaws
and all.

It reminds me of one of my favorite quotes, from Stephen Mitchell's
translation of the Tao te Ching
([http://acc6.its.brooklyn.cuny.edu/~phalsall/texts/taote-v3.h...](http://acc6.its.brooklyn.cuny.edu/~phalsall/texts/taote-v3.html)):

    
    
       Fill your bowl to the brim
       and it will spill.
       Keep sharpening your knife
       and it will blunt.
       Chase after money and security
       and your heart will never unclench.
       Care about people's approval
       and you will be their prisoner.
    
       Do your work, then step back.
       The only path to serenity.

~~~
Magpies
Thank you for giving it a name. I do believe you nailed it with FOMO.
Interesting.

~~~
darrennix
It's interesting that you "have tons and tons of ideas for mobile apps, web
applications" but don't see them through to completion.

I'm the opposite: few worthwhile ideas but consistently finish the side
projects I start, however minor -- I don't allow myself to start a new one
until I've finished the last one.

We should trade.

~~~
cossatot
Maybe you all shouldn't trade positions but contact info.

In my experience, I'm much more productive if I'm collaborating or otherwise
have obligations to someone. It sounds like the OP needs some human
interaction, which is often good for minimizing certain bad self-indulgent
habits. For example I eat much healthier when my wife is around then when
she's not, even if the meal is just for me.

------
egypturnash
Stop caring. Make something messy and shitty. _Tell yourself_ you are going to
make something messy and shitty; gleefully ignore any "best practices" that
make it a pain in the ass to just slap something together.

Don't worry about a name or a domain or a hosting or whatever. Just slap it
together in the stupidest way you can. You wanna make a game? Build the
gameplay with colored blocks moving around in some crappy toy game-making app.
You wanna make a web app? Shit something out in PHP.

If your utterly shitty implementation of the idea feels like something worth
pushing further, _then_ you can start investing in Doing It Right.

This goes for any field, by the way. Obsessing too much about a painting? Grab
a crayon or a highlighter or whatever and some cheap paper and make a few
messes until you have something that actually works, even in its shittiness of
execution. Making music? Just plop down a few chord progressions or some
little doodles of melody or rhythm, until something has that spark. Writing a
story? Scribble down the barest outline of the plot and ask yourself how many
cliches you can count, sit down with a bottle of wine and a notebook and a
list of interview questions to pick from to ask that character who's sitting
in the back of your head and won't go away.

Whatever you want to make, make the crappiest version of it you can, and then
start refining it.

And if all of your ideas are too good to sully with this, don't sit there. Put
them in a notebook, and come up with some throwaway ideas that you're
perfectly fine with doing shitty versions of; this will hone your skills, and
eventually you can look at that one shining, amazing idea that still seems
like a good idea twenty years later and decide that it's time to have a go at
it.

~~~
codecurve
This is really good advice. This is what I get out of hackathons. It doesn't
matter whether it's clean, if you want to win, all that matters is that it
works. You'll do whatever needs to be done to get there, rather than resting
on some set of ideals. I just haven't quite figured out how to create the
sense of urgency in my side projects.

~~~
egypturnash
Thanks!

I'm not sure urgency is always what you need for a personal project. I've been
working on a graphic novel[1] for four years; there are some days where I get
several hours in, there are other days where I only manage a half hour. Even
if I only get a half hour's work in, at least it's a half hour closer to the
end than it was when I got up that morning. Past a certain point, what matters
is not that you burnt the midnight oil; what matters is that you got it _done_
and that the end product is a full expression of your vision.

(I mean, if you've got a deadline with hundreds of thousands of dollars worth
of ad buys and manufacturing lined up for it, sure, you end up crunching to
meet that deadline. But if it's just for you? Screw deadlines. Just keep
working on it; it's Done when it's Done.)

1: [http://egypt.urnash.com/rita/](http://egypt.urnash.com/rita/)

------
codecurve
My GitHub profile is a wasteland of dead side projects and my Gandi account is
full of .io domains that I never quite got round to using. I very much
identify with this post and I don't know why it happens.

When I'm at work I have no problem knuckling down and finishing a piece of
software. However, in my free time, I'll come up with an idea, buy a domain,
design a logo, create a repo, spin up a Digital Ocean instance, pick a stack,
tune Vim, weigh over monetization options, consider open sourcing, the list
goes on and on. Finally, I get started and it goes great, the code is really
elegant, I put a new programming technique/trick to use, and then I think of
something more interesting to do. The cycle goes on.

I enjoy writing music almost as much as programming, so developing games goes
a whole level deeper. I'll get hyped up doing the game art, then start writing
the soundtrack and by the time I get to writing code for the game, I'll lose
focus.

The only times I have ever beat the internal system, is when I've been forced
to focus on MVP. Hackathons, proof of concepts and toys. Once I have something
working and demonstrable, I can often motivate myself to go back to it.

I don't have any other advice, but just know that you're not the only one who
suffers from shiny stuff syndrome.

~~~
ashark
About 50% of my projects die in the following way:

1) I've got an idea for a useful library that might finally make my GitHub not
look so lame!

2) Search github: (idea) language:(language)

3) Oh, there's the exact thing I was going to build. Never mind.

Another 49% die this way:

1) It'd be so cool to have X!

2) (thinks about time to actually develop X versus real value it would give me
and likelihood of anyone paying me for it to make up the difference)

3) Oh man, screw that, it's not even worth 1/100 that amount of effort.

I'm terrible at generating projects for "itch scratching" reasons because I
cost/benefit them to death first, or I think of them 6 months after someone
else already had the idea :-/

[EDIT] cleanup

~~~
ToastyMallows
> "...I think of them 6 months after someone else already had the idea :-/"

So true. That's why one of my first steps is to Google my idea. If I can't
find a viable competitor, then I move on to the design phase.

~~~
sejje
Ever think you're doing it wrong?

An established competitor guarantees there's a market. You'll just have to do
it better than they do.

~~~
ryandrake
Bingo. If there's nobody else already out there selling what you're thinking
about doing, there's probably a reason. And the reason is probably not "nobody
thought of this yet".

------
PaulHoule
Something people forget is that we have a finite learning capacity and
learning just for the sake of learning can wreck your mental health.

I can read hundreds of pages a day but if I do this on a sustained basis it
overcharges my brain and I have problems with anxiety and can't sleep. A
modest dose of video games helps me chill out since I am working with the same
patterns over and over again and not needing to sort through a lot of stuff.

In the book "Have Fun at Work" it says that people can read about 60 pages of
technical stuff a day.

I have standardized on Java for a programming language. I've put a huge effort
into making peace with Maven, Spring, and my IDE. I have a framework that
deals with a lot of the BS when you do command line apps so that I can bang
out little apps almost as fast as a Python programmer can.

A lot of my getting there has been getting in the habit of reading the same
stuff over and over again until I know it like the back of my hand. For
instance I went through a year of hell with Maven and Spring because I was
working on systems where whenever somebody had a problem they looked it up on
StackOverflow. Nothing was ever done the same way twice and builds and
configuration was a continuous source of frustration.

After reading the manuals for those products cover to cover multiple times I
understand them in a holistic way, I use them right, and I can understand what
is happening when people do strange things.

There are certain areas where I am pushing the start of the art and learning a
lot and frankly that means I am working on certain things and I think as
little as I can about Javascript frameworks and the like. For instance I think
Clojure and Ruby are both cool languages but I don't have time to look up how
to find the length of a String and stuff like that so I only write Ruby to
configure Vagrant.

~~~
rinon
While it may be true that we have a finite learning cap per day, different
people have a different cap. I know folks who voraciously read everything and
learn many new (and different) things per day, and I know people who can't
handle that pace. It's dangerous to slap an average number on this and say
that everyone is limited to that.

Appreciated the rest of your post, it highlights the importance of good
documentation in optimally using systems.

~~~
PaulHoule
I agree the 60 pages number is arbitrary, but I think if like the reader you
are feeling overwhelmed it is a sign you are trying too much.

I certainly read much larger amounts of new stuff every day when I was
younger, but I was also anxious as hell to the point where I blew many good
opportunities and even had blood pressure higher than it is today despite the
fact that the objective level of pressure in my life is higher than it has
ever been.

------
drawkbox
You aren't able to get out of the sketchbook or notes in your over-
architecting phase. It is normal.

It is a typical developer arc. You are probably around 4-8 years in.

\- The first 2-3 years are focused, prototype like, just happy it is working
phase. Piles of crap code here and a few successes. Underplanning is the key
problem with a focus on proving you can do it.

\- The second phase it the overly architected phase. Years 4-8 or so. Piles of
crap designs, plans and notes here, a few solid projects and products here.
Overplanning is the drag, lack of focus on shipping due to overly focused on
tech, bouncing from idea to idea. Experimenting... (I bought about 100 domains
in this phase myself, lots of people write their own string class here if you
are doing C++ instead of finishing the project, too much focus on tech here
over product). This phase is focused on proving you can do it right.

\- After 8-10 years, that is where the balance kicks in Daniel son. Hype is
kept in check, learning that monolithic frameworks are an enemy to good
products, sketching only when you can't prototype it, prototype based but fast
to switch to product/live mode when ready. Do all that extra fluff ONLY if it
is a viable idea or product. Focus is the key here. This phase is focused on
balance.

You have developed a good pipeline, but you are using it too early on ideas. I
like setting up the system all the way to the end like the url, server, etc.
But only do that on ideas that are a good time in, after days or weeks and
great strides on the actual product, not the surrounding support.

Good news for you is you realize your problem and you may be leveling up.

Let new ideas simmer, learn to use your excitement and thoroughness to deliver
fully finished products. It is a battle but one that you can win with
discipline, there are too many toys but lots of toys are a waste of time. They
can't just be cool, they have to mean useful to your current project/product.
But definitely stay up on technologies and do things right, just make sure it
is something you are going to go the distance for.

~~~
groby_b
Huh. And here I am, having spent 25+ years doing this, and new things _still_
attract me. I've learned to watch this behavior (mostly - I'm here commenting,
aren't I? ;). But I have not yet reached a stage of "balance".

Granted, the shinier things are more high-level this time around - but this
seems to point to the fact that this is a repeating pattern, not something
that you conquer and forever solve.

~~~
toddkaufmann
Me too. Maybe 30+. I have alternately thought that it was procrastinating,
ADD, FOMO, the distraction of shiny objects, etc.--new terms keep appearing.

In the past this has been "useful", because I learned a number of tools before
I had need for them. "Useful" in quotes because I might not have been most
productive at that moment but maybe it amortizes over time (ie, maybe I "10x"
for spurts at later time), and it got me skills and opportunities that I
wouldn't have otherwise.

If I don't a creatively productive day in doing what I'm "supposed" to be
doing, I need to feed that hunger by learning something new. Sometimes it's
shopping for shiny things, other times it's going deeper into something...
still looking for the balance.

------
twic
I don't think this is a problem. I think what you're doing is totally okay.
The only problem is that you feel shame about it, and the solution to that is
to stop seeing it as shameful.

Why do you keep picking up new things rather than finishing things? Because
_you enjoy picking up new things more than finishing things_. And that's
totally fine! It's fine to enjoy playing with shiny new toys. It's also fine
to enjoy sticking at one boring thing and finishing it. And largely, it's not
your choice what you enjoy, it's just one of the many things you rolled up
during character generation.

It may be true that sticking at one thing is a better technique for starting a
hojillion dollar business. Or it may not - if you weren't such a magpie, how
many ideas for hojillion dollar business would you have? And it may be that
flitting between things is a better technique for other things - journalism,
freelancing, meeting people? However it is, you have a choice between either
struggling to do something you're just not suited to, and being miserable, or
ditching the shame, doing something that you are suited to, and being happy.

------
karmajunkie
There's a concept called (in various circles) a spike, proof of concept, etc.
You don't write tests, plans, requirements. You just code.

Its a terrible way to write production software. Its a rare thing in my life
to spike out an idea and put it unmodified in production. But when i find
myself doing what you're doing (which does happen from time to time) I find
its a crucial part of breaking myself out of the cycle.

And not for nothing, but you sound like you're isolated. Working with other
developers as part of a team (or better yet, a pair) can also do a lot for
breaking out of this kind of cycle. ADD drugs will help, but they're not all
of the solution. Stop "preparing" to write software and just write some.

~~~
Magpies
You are right. I am totally isolated. This consumes me to a point where I sit
here for 16 hours a day, learning, coding, dicking around (like another
commenter said).

I _know_ I need to break the isolation, but I fear I'm too deep into my own
world. I'm The Lawnmower Man (just less evil)

~~~
jimbokun
"I know I need to break the isolation, but I fear I'm too deep into my own
world."

You're not. You're just afraid you might be.

I feel like I'm breaking through a similar feeling in my work place, so I can
relate to the feeling. But talking to coworkers is helping me to see the
similarities between how we think and lessen the feeling of isolation.

So just try talking to some people who might share your interests, and see how
it goes.

------
mikelyons
Dealing with Adult A.D.D. is more than just taking medication and "forcing"
focus. You have to use your working memory or supplements to it, like a note-
pad, to coach yourself about what is the best use of your time. You obviously
know that none of these other things is helping get actual project work done.

One thing that has been very helpful for me is counseling. (Also called
therapy). A psychiatrist will prescribe medication, but a psychologist will
help you become aware and devise strategies for dealing with behaviors you've
described that prevent you from accomplishing meaningful work.

Two books I found immensely helpful are:

Taking Charge of Adult ADHD

By: Russell A. Barkley

and

Is It You, Me, or Adult A.D.D.? Stopping the Roller Coaster When Someone You
Love Has Attention Deficit Disorder

By: Gina Pera, Russell Barkley

Good luck

~~~
lazyhummingbird
I second what you had to say about self-coaching and listmaking. Ruling an
ADHD mind is all about the meta-game.

I've always thought it was cruel that methods for dealing with my ADHD
involved exactly the kinds of things that ADHD would to keep me from doing:
-Setting appointments with doctors -Reading full books -Regularly checking
schedules and priority lists

Eventually, I buckle down and these things happen. But it takes me longer than
it takes other people, and the trip definitely goes uphill.

But if you're fighting, you're winning.

------
rrggrr
Yoga. That advice may get me downvoted as being off topic, but if you suffer
through learning it and practice it 3x per week your situation will improve
across the board. Why? Because its physically challenging and you sound like
you could use that distraction. It turns your mind off (or at least turns it
down). It can be social if you give it time. IMHO,the problem is over-focus on
tech and restoring balance in your life should be your new priority.

~~~
inDigiNeous
Morning yoga is the thing that enables me to work as a coder. And swims also.
If my body is stiff, so is my brain and my ability to code properly.

Also daily meditation. 20 minutes a day does wonders to shutting down the mind
and seeing things from a completely new angle.

I would say taking care of your health is the number one priority any coder
(or human) should have. The amount of hours sitting in front of the computer
just get ineffective at some point, for me it is around 4-6 hours a day, then
I just don't crank anymore good code and I have to call it a day and do
something else.

We should embrace this kind of relaxed work ethics more, than the forced 8-10
hours a day which are killing people (literally, through stress) in the long
run.

~~~
lllllll
Swimming + sauna almost daily accounts for 50% of my productivity. I'd be so
lost without that. Also sports in general.

Any recommendations for yoga/meditation resources to learn the
techniques/methodologies? I've been thinking about trying that for a long time
now.

~~~
sasas
Myself and other technie friends (some who have had zero interest in
meditation) have found success with Headspace [1] It's approachable and
encourages consistency which is the pathway to success in this area from what
I have been told :) Good luck!

[1] [http://headspace.com/](http://headspace.com/)

------
blip_
We are the spoiled children of 21st century programming. There's so much
potential, so many great tools and languages and it's all within our reach. I
sometimes feel like the ungrateful child stood in the sweetshop, who is cross
because choosing one bag of sweets would mean missing out on another.

The internet has made it trivial to share knowledge and experience and we can
all use cutting edge, industry standard tools for free. There aren't many
fields that you can say that about.

The world that we have grown up in, is tantalizingly shiny and there were
never rules to follow. We are a product of the lack of limitations that
surround us.

~~~
Dowwie
time and money are two major limitations for me and I envy anyone who doesn't
share those limitations

------
datashovel
When reading the post, I had the impression that OP has never worked on a
large project and seen what it's like to iterate on an existing project to
improve it incrementally by working on the critical questions that may only
make small changes to the overall app / project. Instead they're always
thinking about and working on the large decisions (that are more or less
inconsequential in the big picture) that you need to make when starting a
project from scratch. I saw one comment about "fear of missing out". I think
it's more along the lines of "fear of making the wrong decision and not
knowing how to fix it". "Fear of the unknown" maybe. I think it's a useful
exercise to think about and work on your early-stage execution (ie. figuring
out how you'll prep things for a project, and learning about and understanding
the implications of those decisions), but without any experience executing on
the later stages of a project, it won't do any good.

There are generally alot of questions that need to be answered early on in a
project, but once you've committed you just need to be confident that your
skills to architect the project will be solid enough that they will keep you
out of trouble, and the code will be modular enough that if you do spot big
mistakes you can easily fix them within the existing architecture, avoiding
the need for a complete (or large-scale) rewrite.

~~~
Magpies
No, that is not the case. I've been a developer for nearly 20 years. I have a
number of LOB applications under my belt that took years to develop. I have
seen it all, but the last two years it's been a struggle.

I agree that it may have to do something with the isolation of freelancing on
remote projects via the web, the rapid changes in development as a whole, and
information overload.

~~~
datashovel
I definitely agree that there are alot of things out there these days. It's
difficult to keep up with those trends. But in my experience solid
fundamentals translate well to any "shiny new object". The interfaces are
different, and sometimes there's something really innovative about new
approaches.

IMO in order to maintain a sanity about it all, you really need to dig into
"what is this shiny object really accomplishing". This can help change one's
perspective from "I need to learn it all to stay on top of new trends", to the
realization that "There are really only a handful of truly innovative things
happening behind all the shiny objects".

------
logn
The thing is that programming is kind of boring on one level. And kind of easy
sometimes too. So I think it's natural to not always want to do something
boring and easy. The times I program continuously in longest stretches is when
the programming gets incredibly difficult, aggravating, and stretches the
limit of your brain (fun). The problem is that the boring parts are normally
what lead to the greatest number of features that make things useful, and the
hard parts are those small things that make everything work but might not
actually do all that much. The trick is to get good at the boring work and
hammer it out in a consistent, quick, and maintainable rhythm. And pushing
yourself to achieve that pacing and to not make mistakes makes things more
difficult, and thus more engaging.

The rest of it (domains, tools, dev/prod environment, testing, marketing,
researching, brain storming, etc) doesn't really matter. The only important
thing in this category is sales: talking to actual customers, selling, closing
sales, and making them happy. Granted the other stuff is fun and involves
surfing the web and playing around with new gadgets, and it's work that must
be done, but its enjoyability is far disproportionate to its importance.

------
Thespian
As others have said, ultimately what you are doing is very productive-looking
procrastinating. The only way to start developing is to, well, start
developing.

You don't need a domain name until your code must make a call to a domain, and
you don't have any in your pre-existing dev stable to use. At that point, and
not before, register one for scratch work. Don't worry about coolness or
appropriateness at launch. That comes later.

Picking a language - pick one that works that you already know. If your goal
is to make the code go, it isn't time to learn a new language. If your goal is
to learn a new language, then your project is a means to that end, not the
goal. If you want to MakeTheThing(tm) use tools you currently know. If you
want to LearnTheLanguage(tm) making a thing is a fine way to approach it, but
the Thing isn't the output.

Learning "best practices" and designing TDD, and user stories, and all that,
while valuable, ARE NOT NEEDED TO MAKE THE THING! Making the thing gets you
started. When any of the actions you listed become a blocker to making the
thing, then, and only then, address it.

------
Vadoff
I don't get. You can successfully deliver products on time for clients whilst
freelancing, but when it comes to your own product you jump around not able to
get a single thing done? Since you freelance, I'm assuming you're already
familiar with prototyping/moving quickly - so what's the problem here?

Build your MVP quickly. It doesn't have to be perfectly coded with the utmost
best practices or with the most efficient algorithms. You will be reiterating
and rebuilding it anyways as your idea evolves. Ship as quickly as possible.
If the idea completely flops, it'll be because there was simply no market for
it, not because of how quickly it was pushed out.

Cut out all the excess that's completely worthless for shipping quickly. Stop
buying random books unless you absolutely believe you're completely ignorant
in that area, and that your product cannot succeed without it. Don't buy new
domain names and new servers - just use one that you already have to get the
app up and online ASAP. Don't build your own tools if there are free 3rd party
resources already available.

~~~
j_lev
You nailed it. Learning to deliver was something that took years of experience
at my day job, and came to me like an "a-ha" moment. Sounds like OP is already
delivering maybe just not giving him/herself enough credit.

------
4ydx
1) You just start coding. 2) You code _everyday_. 3) All the other things you
did? You do those after your prototype is done.

After you have this rhythm you realize you start to need goalposts. Make them
small. Don't think for hours about how it might affect the rest of your code.
Just find a goalpost (as small as possible without making it trivial) and do
it.

Really the things you listed in your blogpost are totally unnecessary and are,
frankly, severely minor in comparison with the actual doing-of-the-project in
the larger scope. It doesn't matter what language you use as long as you are
familiar enough with it to get-stuff-done. So just stop trying to build a new
project with multiple sets of new tools. At most have _one_ new tool when
starting a new project. Any more is really counterproductive. As a side note,
the fact that you installed linux and described it as being "for the coolness
factor" really makes me wonder though. There, quite seriously, are no other
options for a small company/individual developer.

------
slimetree
Steve Jobs said something I think about a lot: "focus is about saying no." He
was talking about what to work on in a company, but it extends without loss of
generality to individuals. The world is presumably always going to be a
fascinating one with an infinite supply of different ideas. Make a conscious
effort to take what matters and go.

~~~
slimetree
Wait, ack. I used that phrase wrong. I have nothing to say for myself.

------
codeshaman
Interesting and funny. Good to see I'm not the only one in a similar
situation.

You're not sick, you're just a human being in a very competitive world which
changes very fast. You're bombarded by an unlimited amount of information,
entertainment, advertisement, scary news and adrenaline.

No wonder we all have ADHD and OCD and whatnot.

Some tips:

You need to force a little discipline upon yourself, limit your addictions,
eat healthy and excersise. Socialize.

Make an imperfect thing, just a prototype, no database, no beautiful graphics,
messy code.

Show it to the world and see what the world thinks of it. If they get as
excited as you are, then find some money and focus on doing it right: TDD the
shit out of it.

It's the only way, just do it badly and see how it feels. It might not be as
cool as you thought or it might actually be your Thing!

I'd write a longer comment, but I feel like I'm taking time away from my next
insane project that's going to change the world - and I need to write some
code. Good luck.

------
ffn
In stark contrasting irony, the "things" people need and will pay for have
barely changed since the days of Aristotle. We pay money for:

1\. Food and shelter (death-prevention in general) 2\. Social status /
acceptance 3\. More money (or resources in general) 4\. The hope of the above
3 5\. Arbitrary / weird stuff like altruism, entertainment, and other self-
actualizing junk like discovering "meaning"

Human-centric design is focused on maximizing some or all of the above 5
points and generally leads to a successful small business. Meanwhile,
engineering-centric design is focused on optimizing "obscure" things like
load-time, memory-allocation-efficiency, code-understandability, engagement
rate, click-through, or even profit. And while it can lead to success, it is
nevertheless something of a red-herring to folks in the creative fields.

------
jakejake
I wouldn't say that I'm the exact opposite of the OP because I do constantly
add to my tools, but I tend to be about 1 year behind and prefer to wait until
things settle before I choose technologies.

I would say you suffer from a combination of analysis paralysis and simply
just fucking around too much! One thing that helps, I feel, is to just allow
yourself some time for experimenting and deciding upon your development stack.
Give yourself that time guilt-free, but set a limit. Then when you've decided,
just force yourself to stop dicking around and get to work.

It's important to realize that you will probably regret some decisions and
celebrate others, but that there is almost no way you will know which is which
until later. This is just the way it goes. There will always be more shiny
things to play with on the next project!

------
derwildemomo
Sounds all to familiar. I discussed and still discuss this problem with my
peers offline a lot, and thought about creating (haha, new project there) a
platform where people with this exact problem can pair up and in a way play
supervisor for someone else.

The point is that my procrastination immediately stops if i make a commitment
to someone else: if i promise a friend to deliver xy, I do. Social pressure
seems to be working for me better than the will to suceed.

so, a platform where you can define your goals and have someone else check on
your goals regularly, asking why it didn't work – while you do the exact same
thing for the other person. while it's nice project wise, it could also
provide helpful advice for whatever it is you're building.

just an idea though.

~~~
alesa
I would be really interested in this!

------
rkangel
Two suggestions:

 __*

Number 1 - Stop trying to build the final 'Solution' and instead build a
prototype or proof-of-concept.

The difference is that the Solution (imagine it said in a serious movie voice)
needs to be well thought out, needs to be built on the right platform etc.
etc.

If instead, you approach it as trying to knock together anything that will
just about work to try your idea you might find fewer mental obstacles.

The PoC doesn't need a VPS, you can demo it served on your workstation. Your
PoC doesn't need requirements, it probably doesn't even need tests to start
with, it just needs to do something.

From there you'll either know it's a crap idea and throw it out, or you'll
have something that you're excited about doing more to.

 __*

Second point - structure your time a bit more. You sound exactly like I used
to be as a student. In theory the flexibility is great, work time can be
whenever you want it to be and everything else is free time. In practice, it
doesn't take much procrastination to never actually get any work done.

These days I have an office job, and it's great. I have work time, at the
office, when I work. And then I leave and have free time, not being stressed
because I should be working.

This obviously doesn't apply to you, but you can simulate it to a certain
extent. Pick the days and times that are 'productive' time. Don't let weekends
blur into weeks (if you want to do a 6 day week that's your call, but don't do
a 7 - that way madness lies). Pick the hours in the day that are useful time,
and then spend the rest in a bar, watching TV, whatever. And if at all
possible, pick a place that's not your normal chilling out place to work in.
It can be bottom of the garden, different room in the house, coffee shop,
whatever.

Use all that to separate screwing around time (reading about Magpies on
wikipedia, fiddling with Text Editor colour scheme) from useful productive
time.

------
unoti
I have a rule I use for fighting this: don't learn more than 1 new technology
at a time. On any project there will be a bunch of technologies I'd like to
use but am not proficient with. I limit it to just one at a time. Sometimes
that leads to temporary scaffolding. For example, I want to do this server
component in Elixir, but I'm also using a new client technology. So I resist
the urge to do Elixir and do the server component in my old standby, Python,
for now, and perhaps redo it later.

Generally you have to decide whether you're trying to create products, or
create street cred. If you're working on creating street cred, you'll make
better progress if you learn one new tech at a time.

------
tashoecraft
Since you mention that you are interested in creating for the sake of a
business, That is what I am going to focus on.

Since you are a developer, you are focusing on setting up your environment,
what language it should be written in, etc. All things which have little to no
true impact on getting your business up and running as quick as possible.

Focus on the idea, don't setup anything and don't code a single line. Think
through what you want to build. Why do you want to build it? What features are
you going to be your stars and what are the alternatives for your product.

Your bogging down in setting everything up. Think through your ideas and when
the right one comes along, then get started.

------
findjashua
Your troubles seem to stem from the fact that you want to use the best tools
for your project (react, sublime, design patterns etc), and I see the same
thing with a lot of my developer friends as well.

I'm kind of an oddball in that respect - I don't really care for the best set
of tools, just the ones that get the job done quickly. Tools, for me, are just
means to an end, my goal is to get the prototype up and running so I can get
my friends to try it out and get some feedback.

I think changing your mindset - understanding that the tools are just a means
to an end, and staying focused on getting the v0 out - might be helpful to
your situation.

------
reitanqild
Agree with a lot here. One stupid trick that works for me is to decide to
start out sloppy: accept the default name in the ide, project3, solution1,
whatever. It's only throwaway anyway. If it turns out to be useful I'll be
happy to fix it later.

A colleague of mine once laughed because I was dumb enough to admit to being a
perfectionist. He never saw that he said, which is true. Being a perfectionist
doesn't mean perfect results, just never finished the basics so you can move
on and polish.

I also recommend

* Quantity always trumps quality.

* the done manifesto

------
mangeletti
It's discipline and only discipline.

I have the exact same problem. In fact, in trying to build my latest and
greatest creation, I've decided to use Django 1.8, since it'll be ready for
prime time before I'm done. This isn't a problem, but the need to try out
every new feature and uncover bugs in features that I don't even need (bugs
that will be ironed out in the next few weeks anyway)... that's a huge
problem. I've spent 8-12 hours of my precious coding time at night, after
work, on this nonsense, in the past week alone. Why? Because I'm always in
search of perfection, or something. I'll spend 8 hours trying to figure out
the best way to model my data, instead of just trying to accomplish the end
goal. If I try to accomplish the goals I've set out, I'll end up with the
right data models anyway.

Next, time to finish learning Angular, because this time I'm going to use more
Ajax, so may as well. It'll save me time in the long run, since
jQuery.ajax(...) will remove the DRY from my app.... right?

Engineering creates a kind of OCD / ADD combination. I've found in the past,
the only way to overcome this is to set a schedule and stick to it. No email
after X and before X, no Hacker News or any other distractions from X to X, no
new tools while building your app, etc.

------
greenlig
Steven Pressfield talks about this in The War of Art -
[http://www.amazon.com/The-War-Art-Through-
Creative/dp/193689...](http://www.amazon.com/The-War-Art-Through-
Creative/dp/1936891026) \- referring to it as "resistance". It's the force
that stops you from actually getting stuck into work. It's all the little
reasons, distractions, and shiny baubles that stop you from knuckling down and
just doing the work.

I've found over years of starting and rarely finishing personal projects, that
making a list of three targets for your session (the amount of time you can
dedicate, right now, to the project) helps. Start at the top and crunch
through it. Don't get caught up with what you _should_ be doing, just get
right to the doing. Code now, optimise later. You'll quickly learn how to
prioritise tasks, and the act of ticking off a completed item gives you such
positive feedback that it becomes the norm.

You are in a good place right now. You are realising the futility of your
current method, and you can see the elements that are holding you back. Right
now, dedicate that time to three top tasks in your latest idea and crunch
through them. Do the work right now, and then look back and review.

Get to it, you have ideas to realise!

------
mate_
WOW. Finally someone just said what I do usually. I do the exact same things,

I do everything the user posted except the Website. That's me. Do you think
it's ADD? Help too, please.

~~~
falcolas
If you want to know if you have ADHD, go talk to a doctor.

You don't have to have ADHD to jump around - there are plenty of other
explanations floating around this thread which can help explain what's going
on.

------
paul_milovanov
Something you can start doing right now: exercise and take non-computer
breaks. Even 30 minutes of walking around will sharpen your focus. 20 minutes
on an elliptical will be even better. There's ample clinical evidence on how
exercise is really helpful with focus and mood.

Then, importantly: don't just "talk your doctor into giving you ADD drugs". Go
find a good psychiatrist, or at least, a psychiatrist who will give you a
proper ADHD assessment and with whom you can work on medication if needed.
ADHD assessment takes at least few hours and is far more than just self-
reported symptoms and history-based. It typically includes objective
attention/executive processing tests and also evaluates you for any other
possible conditions.

Do you have any anxiety issues? That can very well contribute.

Ideally, they would be also able to refer you to a psychologist or coach who
would help you figure out what you want and teach you some valuable skills you
could use to help yourself. Psychologist can really give you a higher-level
picture of what the hell is going on.

Basically, go get help. Worst case, you'll learn something, and best case,
you'll learn a lot and be happier and more productive.

~~~
jrapdx3
> Go find a good psychiatrist, ... who will give you a proper ADHD assessment
> and with whom you can work on medication if needed. ...

As one who does the assessing, I'd endorse your advice. It is of utmost
importance to rule out concurrent conditions, but it's a fact that
"comorbidity is the rule, not the exception". These other conditions like
depression, anxiety, sleep disorders, etc., need to be addressed to _really_
solve the problems.

> ADHD assessment takes at least few hours ...

That's actually an understatement. It may take weeks, months, even years to
adequately understand a person's experience and the nature of dysfunction. In
this clinical context, there aren't simple tests that reveal the subtleties
involved in human behavior, thought and emotion. It requires careful
observation, and collaborative communication between the healer and the
sufferer to accomplish the task.

It's kind of like software development, an incremental process filled with
tweaking parameters and testing the result. Usually over time we arrive at a
stable and satisfactory working solution, but we'd never pretend it's an
"answer", certainly not one that is "permanent".

Finally, I look at medication therapy as a tool to achieve a goal. Tools are
wonderful and interesting artifacts in their own right, but useful only to the
extent we employ them skillfully toward achieving a defined purpose.

 _By themselves_ medications will not solve the problem, there are many things
the patient must practice and learn in order to get better. This is
essentially what you said and I think it is spot on.

~~~
paul_milovanov
Thanks! Of course you're right -- I just mentioned several hours worth of non
self-reported tests (performed by a psychologist by referral from an MD that
has perhaps already taken history and self-reported stuff) because that is at
least better than what the vast majority of people with suspected adhd get.
Obviously nothing beats an ongoing patient-theurapist relationship where
therapist can continuously refine or modify her hypothesis based on totality
of data to date. Same thing about meds as tools -- absolutely right and
typically misunderstood ☺

Cheers!

------
crawfordcomeaux
You sound exactly like me, except that your problems developed later in life.
I have ADHD and have never had much success in managing it. I've spent years
trying to figure out why that is and I've got a theory/solution that I'm
working on.

The theory: I've developed a cycle of habits involving research and I have few
ways to disrupt that cycle. The cycle's usually entered through wondering if
something exists (I have a new idea) or wanting to answer a question (best
practices for TDD?).

It explains the difficulty in trying to avoid the cycle (it gets triggered
routinely throughout the day...complete avoidance = massive willpower drain),
as well as my difficulty in establishing new habits (the likelihood of a habit
I'm developing gets interrupted before it's solid increases with time,
violating the "don't break the chain" concept). It also explains why a highly
collaborative work environment overcomes the issues, though I've only
experienced that at hackathons. It also explains why the cycle developed when
you were isolated and without work: the brain pumps out tons of dopamine when
we encounter novelty (eg. learn something new) and without a project, that's
one of the main things we programmers do.

Here's what I'm working on (first draft):
[https://github.com/ADHDExperiments/Rehabbit](https://github.com/ADHDExperiments/Rehabbit)

Right now, I'm trying to write up something I can start posting in behavioral
health groups online to try and get experts to help flesh it out. It may be
overkill, but I'm not sure of another way out.

Please contact me; info's in profile. We should definitely talk!

~~~
Magpies
I have forked your project and I will contact you gladly.

------
ben_pr
It sounds like you are a right brain dominant person[1] with a Myers-Briggs
personality of INTJ [2], same as me. Once I understood this about myself I was
able to start bringing my life into balance. Part of it was by doing left-
brained exercises that Dianne Craft teaches in her videos, also a large part
was using essential oils to wake up my left brain which was pretty much in the
deep freeze, and finally a few essential oils to help with the focus and
calming issues. If you want some help try Mindwise[3] and the Reconnect
oils[4]. If you had any sort of issues with sleeping or emotional trauma you
should try the PTSD freedom kit[5]. Try it for at least two months and should
be doing a lot better. Dianne Craft also has some videos on how to teach the
right brain child which will help you understand yourself and learn exercises
to help develop left brain skills.

[1] [http://www.diannecraft.org/teaching-your-right-brain-
child/](http://www.diannecraft.org/teaching-your-right-brain-child/) [2]
[http://www.personalitypage.com/INTJ.html](http://www.personalitypage.com/INTJ.html)
[3]
[http://www.youngliving.com/en_US/products/wellness/targeted-...](http://www.youngliving.com/en_US/products/wellness/targeted-
support/sensorybrain/mindwise-16-oz) [4]
[http://www.youngliving.com/en_US/products/essential-
oils/col...](http://www.youngliving.com/en_US/products/essential-
oils/collections/reconnect-collection) [5]
[http://www.youngliving.com/en_US/products/essential-
oils/col...](http://www.youngliving.com/en_US/products/essential-
oils/collections/freedom-sleep-and-release-collections-bundle)

~~~
mdekkers
Are people still doing Myers-Briggs?[1] I had a job interview for a CTO job
for a large multinational once, and when I got to the final 3 candidates
round, had to take one of these. I had a very good idea what they were looking
for, and aced it. The lady doing the testing told me I was a perfect match and
would advise as such. I let her know these tests are easily fooled, something
she seriously disagreed with. So I did a few more for her, getting every
result she asked for nearly perfectly. She started babbling about this being
impossible, and it being unique etc. I told her I am just good at bullshitting
people. Oh, and I was offered the job (declined it in the end).

[1][http://en.wikipedia.org/wiki/Myers%E2%80%93Briggs_Type_Indic...](http://en.wikipedia.org/wiki/Myers%E2%80%93Briggs_Type_Indicator#Reliability)

~~~
danieltillett
Yep. I once did the same to avoid having to avoid having to turn down a job I
had been offered. These only work when the person is either dumb (basically
acting as a crude intelligence test) or they have no idea what is required for
the job which almost never occurs.

------
computerjunkie
"Tot Facienda Parum Factum" \- "So much to do, so little done"

This article resonates with me so much. I don't know if every other self
taught developer goes/went through this, but its truly annoying.

Its so easy to get caught up in a another_new_JavaScript_framework.js or front
end framework, but if you look back you begin to see that you wasted time
focusing on the trendy things (author mentions he does this).HN, Techcrunch,
Github, Bloggers and other resources all influence us with these shiny things.
Sooner or later, priorities will change and you will begin to make rational
decisions on how you spend your time.

I only realised this when I started working a couple of weeks ago at this
temporary gig. You soon realise that there are not a lot of hours in the day
to use all the shiny things you want.

I've come to the point where I have stopped looking at the shiny new things
and started focusing on a small set of tools for job at hand.Tools that have
been proven to work, and will continue to work regardless of what is currently
trending.

Rather than learn 3-4 tutorials about a languages syntax for months, pick one
comprehensive but concise tutorial on the language and straight after that
start a small project in it and stick to it till its finished. Programming
languages (or domain tools) in general all have similar concepts. If you learn
python, then ruby or other interpreted languages should be easy to
understand.If you learn Photoshop, then Gimp or other image manipulation
software should be easy to understand and grasp. _Understand the concepts, not
the tool._

Pick a technology you are _comfortable_ with and make stuff. Because at the
end of the day, your average Twitter, Instagram, Facebook user doesn't even
know(or care) if Scala, Python or PHP is scalable and if the application used
best design patterns. All what matters to them is the content, likes, shares,
comments et. al.

A couple of articles I found truly eyeopening on my journey in software
development in general;

1\. [http://blog.codinghorror.com/php-sucks-but-it-doesnt-
matter/](http://blog.codinghorror.com/php-sucks-but-it-doesnt-matter/)

2\. [http://blog.codinghorror.com/the-php-
singularity/](http://blog.codinghorror.com/the-php-singularity/)

~~~
Dowwie
The article and especially the thread of comments resonates!

My hypothesis is that the path of learning for the autodidact is non-linear.
As problem solvers who adopt optimization as a core value, we beat ourselves
up about how unproductive we are, not understanding the intrinsic nature of
self-teaching.

~~~
computerjunkie
_we beat ourselves up about how unproductive we are, not understanding the
intrinsic nature of self-teaching._

Agreed.

------
cranium
Are you my twin, Magpies? Me and my current 555 firefox tabs can relate (I had
to install an addon to get the tab count, but I think you can understand.)

------
steven2012
This is really just a matter of maturity and discipline. The OP is unable to
say "No" to themself. Having discipline is being able to power through the
boring stuff because you know it's important.

OP does not need ADD drugs, all they need to do is commit to finishing a task,
and not to pick up anything new until the current task is completed, no matter
how "fun" the other tasks seem.

~~~
Magpies
I agree. I wasn't like this before. Now I have no more backbone, no
discipline.

~~~
flurpitude
Maybe you've overdone it a bit and lost track of what originally got you into
all of this. If you scatter yourself and chase every shiny thing your core
motivation gets kind of burnt out but you don't notice it for a while because
all those more superficial obsessive drives keep going once the main engine
has run out of gas. Perhaps take it easier for a while until you feel a deep
urge to do a particular project.

I got like this after many years of study. So much to learn, I turned
everywhere at once and learned many things. After several years I ended up
feeling lost - this forest was infinitely deep and infinitely broad, and I
didn't know where in it I wanted to go. Though I still had personal
identifications that said "this is what you do, you're good at this" and the
superficial curiosity to keep learning new things, the deep sense of direction
was gone.

The only thing I've found that lets it regrow is to give yourself a break, do
something different with your life for a bit. When a deep motivation grows,
the shiny things won't distract you from it. When they do distract you that's
a sign that your deeper drive has withered somewhat. You can't force it to
regrow; you have to wait for it to do that on its own.

------
munger
In a way, this is where it can help to have a developer day job with a salary
or at least that mentality. Where commercial pressures and tight deadlines can
light a fire under you to just get things done.

In some cases these types of motivators can cause you to hack out something
that only barely works at first, before circling back with test writing, best
practices, etc. But maybe that can be better than not completing anything at
all?

You can always refactor your way to an awesome codebase if it starts out a bit
quick and dirty at first. Sometimes just having the minimum amount of friction
to complete the requirements to get going can be helpful, as starting is
sometimes the hardest part.

Maybe you just need to set deadlines as if you are the CEO of your company and
not the developer where by certain dates you need the MVP or new feature and
it has to happen no matter what.

Maybe build an MVP such that you can start charging people and get customers,
which can also be a motivating force to continue on and continuously improve
it because you feel the obligation to your paying customers.

------
ClarkCant
Don't get a therapist, get a manager! Working at a company will help with
several of your problems, some of which you already clearly identified (lack
of discipline, lack of socialization) and others which apparently are just
dawning on you (getting paid peanuts with things like elance, not earning
enough to take real week-end breaks and holidays, and probably not having yet
started with retirement discounts, hoping you will hit it big before you need
them).

By all means, keep learning on your spare time and keep planning for a
personal piece of work which will bring you pride/recognition/profit (or if
possible all three), but at the same time just accept that you may also remain
an honest craftsman for a long time, and organize you life accordingly.

If you stop living like the solitary genius that you're discovering you're
not, and start caring also for more down to earth goals, your life will get
more structured, and this will also make it easier to get more friendship and
love into your life.

------
cityzen
I would suggest reading this:
[https://www.dropbox.com/s/1j5b28qqwb8m9xl/OverThink%20(1).pd...](https://www.dropbox.com/s/1j5b28qqwb8m9xl/OverThink%20\(1\).pdf?dl=0)

I'm typically not a fan of the whole, "I started a business, buy my ebook" but
this guy seems* successful by starting local businesses and building up
revenue quick.

This page/paragraph really sums things up:

RESIST THE URGE TO COMPLICATE THINGS. For technical folks, it seems like the
inclination to complicate things is overwhelming. So a problem like “find
people that need lawn service and connect them with people that provide lawn
service” becomes, “well how about we use Zillow’s APi to pull a picture of the
lawn, and the customer confirms it by drawing an outline of the area to be
serviced and we tie that into Google maps and feed everything into a pricing
algorithm”.... and on and on. Unfortunately, many of these guys do not make
it. More often than not simplicity wins. Get out of the customer’s way.

And this one was good as well:

YOU DON’T GET GOOD AT RUNNING MARATHONS by reading about running marathons.
And you don’t get good at business by reading about business. You get good by
doing. And doing it over and over again. But just like you wouldn’t expect to
win the first marathon you entered, why put so much pressure on yourself to
win at the first company you start? Or worse yet, paralyze yourself with fear
into never running at all because you’re afraid you won’t win? It doesn’t make
sense with marathons and it doesn’t make sense with business. So while a lot
of folks over-analyze every minute detail about the thing, I would have
already downloaded a training regiment, bought a pair of shoes, and hit the
bricks.

That "book" is so short you can read it every morning and it will inspire you
to get passed all of this.

*operative word

------
uvTwitch
You created and wrote this blog as another distraction, didn't you?

Cut your internet off for a week, go outside and "waste time" a bit more
often. Write something for your project with the intent of throwing it away,
and then throw it away. Force yourself to build something you "know" is
shitty. You might find you actually get it done.

------
nattaggart
Really awesome story, I can relate. One thing I learned after the umpteenth
time falling in the pit of picking a technology: do it in PHP, it's fast, I'm
good at it. It's going to invariably be the wrong choice, which will become
apparent at some point in the future, but in the early stages of a project
speed is the most important thing. Your technology is a tool to create the
product, not the other way around.

One more thing, you should spend more time defining the product/business
before you begin implementing or even thinking about technology. Bounce the
idea off of smart people, use usertesting.com (I'm not affiliated with these
guys but I use them a lot) and do market research. You don't want to realize
that your idea sucks after a few weeks of development because you'll be
discouraged from fixing it at that point.

------
wayfarer2s
It sounds like you lack confidence. Which is not a "bad" thing. It's a
completely understandable state to be in. You could probably do well with
having a buddy or partner who supports your projects and builds up your
confidence.

Know that when undertaking anything ambitious, the feelings of uncertainty you
are having are par for the course. It's only natural to question whether you
are worthy of even attempting such a grand idea. And it's only natural to try
and set a safety net for yourself with "best practices", but if you are aiming
high enough, safety nets aren't gonna save you anyway...

At some point, you have to venture out on your own and do things that
tutorials and textbooks don't cover. A lot of great software was written in
shit languages with shit computers in shit conditions, just because that's
what those people knew. All those "best practices" you mentioned are
relatively new, but think of all the great stuff that people had already
created yet had no idea those concepts even existed. At the end of the day,
you have to learn to fight with what you have because you're the important
piece of the puzzle not the tools.

But as I said before, it's a very natural feeling to have. Some of my favorite
quotes on the topic are:

    
    
      In large-scale strategy, people are always 
      under the impression that the enemy is strong, 
      and so tend to become cautious. But if you have 
      good soldiers, and if you understand the principles 
      of strategy, and if you know how to beat the enemy, 
      there is nothing to worry about.
          - Miyamoto Musashi
    
      There is no mechanical way to get the writing done, 
      no shortcut. The young writer would be a fool to 
      follow a theory. Teach yourself by your own 
      mistakes; people learn only by error.
          - William Faulkner
    
      The good artist believes that nobody is good enough 
      to give him advice. He has supreme vanity. No 
      matter how much he admires the old writer, he wants 
      to beat him.
          - William Faulkner

------
nkg
I experienced that a few times before finding one good cure: telling people
about my project! Every time they see me, they will ask me about it and when
it is being released. When that happens to you and you have nothing
substantial to answer, you realize you've been fooling around too much. Try it

~~~
sukilot
OTOH, it is known that not announcing gives you the motivation to work on your
exciting surprise, and announcing (while not _committing_ ) gives you the
thrill of gossiping/boasting and can deflate your excitement once your idea is
mentally published and only the borof part of execution remains. You need to
keep a list of exciting milestones ahead -- announcing to another important
audience, winning a contract, whatever

------
skrebbel
Kent Beck of TDD fame wrote an early answer to this blog post:

    
    
        Just ship, baby.
    

[http://www.threeriversinstitute.org/JustShip.html](http://www.threeriversinstitute.org/JustShip.html)

I found that reading it a few years ago really helped me along. Note that of
course Beck refers to rules as the thing that hold him back, because as a
hardcore TDD'er he likes rules. Substitute "rules" or "best practices" for
"fancy editor setup" or "perfect webpack configuration" for the same thing in
HN-o-world. Substitute it for whatever you tend to find most important and you
have a helpful piece of actionable advice.

Also, I think that this "Just ship it" idea is basically "worse is better" but
then inside a single person's mind.

------
cityzen
What do you all think of this:

Https://getmadprops.com

this is a project that I started, stopped, started, stopped, started and have
committed to seeing it through. Just last night I stashed a bunch of changes I
was working on because, you know, they were more important than getting
customers. I have to force myself to just keep shipping and iterating. Once
I'm in a rut and haven't shipped in awhile, I have to do it again to get out
of feature creep.

What I have found is that the reason that people that procrastinate are able
to finish client gigs is because there is _someone_ else there. If you don't
have someone else, make yourself accountable to the public. Nothing will break
your bad habits faster than looking like a fool to customers and/or the
public.

~~~
Magpies
You built this? I have actually used this, which means you are doing something
right, because normally I don't register, I go off and build my own version.
So kudos!

------
makmanalp
> So first things first, I need a domain name right?

NO! I was guilty of this exact thing, and I still am to some extent. I'm
finding that this is exactly the wrong approach. The first thing you need to
do is to find someone who cares - find a potential user. Email that person.
Tweet at someone who might think this is cool. Write a blog post about your
idea - writing encourages critical thinking. Survey your friends to see if
they'd like it. Find that group of people somewhere and talk to them somehow.
Do they get excited? Are they interested? Do they want something else? Could
you turn /that/ into an idea? This isn't the simplest process in the world,
but it's damn useful.

This has multiple merits: a) You get immediate feedback on whether your idea
is worth something. Most of them probably won't be, and that's okay. But you
nip your "shiny things" in the bud this way. b) It gives you other, maybe
related, maybe better ideas - helps you refine it. c) You get a potential
userbase sooner rather than later, which is a great motivator. Hearing people
like your thing is AWESOME. They'll also bug you about updates and stop you
from focusing on ultimately inconsequential shit like your editor settings or
what your logo should be.

Then sleep on it. Read a book about it. See what others have done. Is it still
worth it? After you answer that, now it's time to finally build a prototype,
maybe. And setting a goal for user interaction is very helpful - sometimes you
can go on a rut where you spend months not shipping anything tangible but
trudging through bugs and whatever. This leads to a tunnel of despair where
you get no positive external reinforcement ("good job") which leads to
burnout. This happened to me and it sucks big time, kills all of your energy
and hope. So it's helpful to focus, at least initially, on small, shippable
increments.

Ideas should gel over time. The chances any one of us has a perfect idea on
the first shot is miniscule. If you have an idea, firing up your editor and
starting to build it is the worst thing you could do in terms of time
efficiency. Hope this helps, and good luck!

------
slvr77
Lots of good advice in this thread but it seems you may have pushed your
dopaminergic system into a bit of overdrive. Lots of novelty can leave lots of
dopamine floating around your pre-frontal cortex which puts things on a hair
trigger. It primes the brain for learning and has the side effects of making
reaction times faster and unfortunately more spastic, which destroys fine
motor skills like handwriting. It also lowers filters for novel stimulation
which makes you more easily distracted. Longer term it will inhibit oxytocin
release and make you less bonded to your social group, increase your tolerance
for risk and has the side effect of making you feel that you don't measure up
and need to prove yourself. If your ADHD drugs are dopamine agonists or
partial agonists it likely would have made the problem worse.

Generally you may find yourself more productive if you break your day down
into research, planning and implementation. During your planning phase you
should limit yourself strictly to pencil and paper and remove computers, cell
phones and other electronics. Use this time to design your product in your
mind, break it up into sub-components and how they will interact. If you hit a
wall due to a lack of knowledge you should work on it until you can write down
a specific question that you can't answer and then address it in your next
research cycle. Once you have something actionable only then do you move onto
implementation and if you run into problems go back to planning.

I am going to warn you that the planning stage will be torture in the
beginning! You will feel a huge need to 'get something done' because the lack
of novelty will lower dopamine. It will be easier if you do your planning
sessions in the morning when your brain has had some time to clear itself of
excess dopamine overnight.

Some other supplements that will help clear out excess dopamine include SAM-e
and/or TMG; melatonin at night; H2 blockers like Tagamet at night (the are
antacids but raise prolactin levels), low dose lithium, avoiding blue light in
the evening by using f.lux on your devices and/or blue blocking sunglasses and
meditation. Usual caveats apply. I'm not a doctor, your results may vary.

~~~
bstrand
Have you any references you can share for further info / to back this up?

~~~
slvr77
I have a genetic tweak to that allows me to raise and lower tonic dopamine
levels using betaine. It was something that I stumbled on and then spent a few
years understanding the impact. While there is a lot of research very little
of it is easily translated into human behavior or comprehensive so no good
links.

------
serve_yay
You can't do every aspect of everything well, I would say it is even foolish
to try. If you want to try out react.js (for example), make a shitty skeletal
HTML file, put in a script tag, and start doing stuff. The app doesn't have to
run in a well-managed hosted environment with a cool hostname and all that.
Don't make build scripts, etc., until you have to.

There is a time for best practices but you shouldn't focus on the best
practices for things that are ancillary for what you're really trying to
learn. This is what focusing is all about, paying attention to what's
important and disregarding the rest. Don't dick around with editor configs.

------
mrpoptart
Find someone to code with you. Being alone is half your problem, and even
explaining it to someone requires more focus than you have. If you don't have
someone like this, hire someone at minimum wage to listen to you.

------
windexh8er
Not to add injury to insult but I've grappled with the same and found this
humorous to read - only because it hit so close to home (except for the
Windows server, never Windows servers).

The only thing that's helped me grapple with this is Kaizen quite honestly.
I'm not going to posit another book for you to read, but - there are a few
good ones. Focusing on small tasks to break out of that mold was the only way
I could circumvent the cyclical loop that I can only describe as an ungodly
marriage of procrastination and "Squirrel!".

------
IvanDenisovich
"I have no clue why I still call it weekend, because there are weeks I don’t
even dress myself, let alone keep track of what day it is".

To me it sounds like you're lonely, and it's affecting your overall emotional
state.

The solution will not be a new clever time management system or reading a How-
To-Monetize-Your-Zen self-help book. Maybe take a few months off and go to a
place with 'fun and sunshine'. Meet new people every week. Everyone's friendly
when they're on vacation.

Costa Rica's really nice all year round and it's pretty cheap.

------
levifig
This is totally me (without the Microsoft junk :P). Ouch… :( I've thought of
drugs for helping me focus too because this lack of focus has grown into all
sorts of areas of my life… :(

~~~
levifig
FWIW, I haven't resorted to drugs simply because I've avoided drugs my entire
life for anything psychosomatic. I guess one extreme is the whole "deal with
it" approach (which is obviously insufficient) or the "there's a drug for
everything" (which is pretty bad and carries terrible consequences). Haven't
found a middle-ground…

"Focus" is an alluring yet elusive thing for me… :\

------
zacblazic
Wow, you've just described my current state of being. I literally froze up
mentally last weekend because I had too many things on my mind. Things related
to learning/projects/ideas. I kept jumping between them, like a processor
performs context switching, but a lot less successfully. It was like bouncing
a ball between two walls, and slowly making the gap smaller. The ball's
bounces increase exponentially until it cannot anymore. It's at this point
you've crashed.

------
abathur
I'll admit now that most of this is just an epiphany I had while seeking sound
metaphors to address your problem. Please don't revere me as someone who has
risen above the struggle you feel mired in.

One of our great motivators, by nature or as a cultural byproduct, is avoiding
criticism. As we accrue expertise, we're also slowly filling an invisible
backpack. We slip in a little stone of frustration every time we deal with
something done "wrong". We feel powerful when we stand up with this hard-
earned weight about us, but now we have to circle every mountain a few times,
looking for the unimpeachable path to the summit; our backpack is too heavy
for anything but the best route.

Because we've learned most any quandary can be solved with some extra research
and new knowledge, every choice can turn into its own mountain. This was
probably a virtue and not a trap when there wasn't so much to read on even
trivial choices to keep the studious engaged for weeks, months or years.

When you work for someone else, it's clear they'd rather have an imperfect
solution on time than a perfect solution two years late. It's also clear
they'll only pay for one of these (if they know what they're doing...). But
when you're doing unpaid work for yourself, you have a really naive boss who
doesn't have the sense to call you off when you're in the weeds hunting
perfection.

So, here's the plot twist: you've learned this is a switch that seems to get
flipped for you when the pressure is really on--let's call that pressure what
it is: your desire to avoid criticism. Unpack this for a second. The
motivation that drives you to optimize every decision is the same one that
drives you to deliver when you must.

You no doubt notice the healthy crowds refining productivity systems/tools, or
looking for new ones to try; they are all searching for a boss by another
name. They are all trying create a surrogate for fear of public failure out of
paper or code or an egg timer. Don't be deceived by sugar-coating; people who
extoll the virtues of getting an MVP into the hands of users and iterating are
talking about _giving people something good enough they will use but bad
enough they will criticize_. They are talking about _manufacturing
opportunities to fail_ and about _leveraging that fear to succeed_.

------
mbrodersen
"How do you finish a 300 page book? By writing 10 pages every day" (I think
this quote is from Steven King). So (continuing the analogy) write 10 pages a
day. Whether you feel like it or not. Whether you feel the pages are good or
not. When your 10 pages are written, you can play with shiny stuff the rest of
the day. Motivation (being happy while doing it) is not required. You will be
happy after you have written the pages because you feel progress.

------
foote
I use the Pomodoro method to stay focused when I'm online and [track my time
spent
unplugged]([http://foote.pub/examples/unplug/index.html](http://foote.pub/examples/unplug/index.html))
to make sure there is enough of it. Good luck -- remember everything will be
OK iff you let it.

Edit: so many good comments, just wanted to second that this is exceptional,
honest writing and that you are not alone in this struggle !

------
squiggy22
I find that not registering the domain helps to focus me. 'dammit I need to
create this thing before someone nabs the domain' like an artificial race to
the finish line.

Also. Trello. Write a few coding tasks, finish a few tasks. And just keep
adding more tasks when you run out of 'what's next!' means you can sit down on
your oroject and get quickly up to speed on where you are too. In progress,
finished, backlog are he columns I use.

------
DonHopkins
All these best practices and ADHTDD crap and frameworks are for driving teams
of horses, but you are a wild stallion, waiting for somebody to hook you up to
a wagon and tell you where to pull them. Just run wild and do what you feel
like needs to be done, not what everybody else is doing. Industry standard
best practices aren't best when they keep you from practicing and improving
your own weaknesses.

~~~
toddkaufmann
Good points.

But it can also be illuminating to try one of the wagons on for a bit and see
how it feels. "This is the big thing everyone's talking about? It's just like
some X I put together 10 years ago, with a couple layer of warts to deal with
concerns that didn't affect me."

~~~
DonHopkins
Then try one at a time, so you can tell which wagon has which effect. This guy
was trying to hitch his ride to a dozen wagons at once, all pulling in
different directions.

------
bitwize
Periodic reality checks. What's my goal -- my real goal? Is what I'm currently
doing _meaningfully_ advancing me to that goal? If not, stop that shit. Close
the cat video. Put off theme dinking till your coffee break. You have to go
back and do this time and time again. Pain in the ass but it's called
discipline and it's how humans get shit done.

------
damosneeze
“People think focus means saying yes to the thing you've got to focus on. But
that's not what it means at all. It means saying no to the hundred other good
ideas that there are. You have to pick carefully. I'm actually as proud of the
things we haven't done as the things I have done. Innovation is saying no to
1,000 things.” -Steve Jobs

------
drivingmenuts
I am slowly coming to the realization that there's only so much I can know or
care about and maybe it's time to dig in on the things I know pretty well and
put the rest aside for later. I'm starting to eval tools and languages with a
view to how they help me now, not how useful they'll be in the future.

It's the only way for me to stay sane.

------
mountaineer
I can relate, what is described in the post has been me for the last 10+
years. In fact, that's why I'm here now reading and writing this comment. When
you figure out the solution, please let me know! I'm getting too old now to
keep this up, so saying no, as was pointed out, to shiny objects is becoming
increasingly important.

------
Heliosmaster
What helped me was stopping to think "ooh, X is shiny, I want to try that" but
rather focusing on problems I had to solve, thinking "Oh, I could build an
application to solve my problem Y.. why don't I try to do it with X?".

I never got anything finished, until I started being very pragmatic and not
learning for the sake of learning.

------
DyslexicAtheist
the best ideas come when you step away from it for a while. not for few hours
and not partially but totally for at least a week. if you can afford it take
time off, no cell-phone, no browsers, no internet. travel, take a book ... the
key is to do something that rips you totally out of your current state of
mind.

what helped me is to travel on a shoestring (different country, different
language, different currency, force your brain to be busy with something which
isn't routine). this I personally found helps a lot with creativity and it
gives you a chance to get distance from yourself and observe yourself as an
outsider. it also gives your mind time to sort the restlessness out. the whole
information-overload, multitasking, 30-browser-tabs, flashing reminders on the
phone about social media I missed what always sets anxiety off for me.

unplugging yourself from the matrix is the only way IMO

------
senegoid
Van Gogh said something about the canvas stares at you like an idiot and turns
some painters into idiots themselves...

Set some goals. Instead of 'build in angular' try 'launch a working version in
30 days'. Check progress along the way. Build in small rewards if you hit that
goal.

------
hoodoof
I manage to get stuff done. I certainly procrastinate about the less
interesting development work but I eventually get around to it.

The hardest thing is starting on any given task, so learning to start is what
to focus on. Personally I just start work on a task by typing - seriously.

------
jrjarrett
Oh, this. So much this.

Except I get stalled just THINKING about all the setup stuff, or how much I no
longer know about iOS development, since I haven't done it at all in a month,
never mind ever having gotten on top of the wave in iOS 5. Never mind 6 or 7
or 8.....

------
empressplay
The author's just talking about plain-old procrastination, a fear of
_actually_ committing to the project (and all the big nasty stuff that it
implies) by actually writing that first line of code.

Just write the first line of code. It won't hurt. I promise =)

------
tony_k
wow, i've def experienced the pattern you just described, but you actually
seem to cover more ground than i usually do before eventually not arriving at
your goal, but... you have enriched yourself in many other ways during the
exercise. there is an explosion of facets in this field, and it is true that
if you attempt to ride the cutting edge of everything you will probably never
get to the killer app. you will however be well versed and an excellent
resource for hire. i guess if you really want to get to the killer app part,
you need to just work with a stack that you have already invested the time in
to become proficient (the been-there-done-that stack).

------
heurist
I recently learned that anxiety can cause ADHD drugs to negatively affect
focus. ADHD can cause anxiety on its own, so you might want to look into anti-
anxiety medication before trying to use stimulants if you're going down the
pill route.

------
nkantar
I've been dealing with something related, and I asked for feedback here
recently:
[https://news.ycombinator.com/item?id=9042523](https://news.ycombinator.com/item?id=9042523)

------
rcaught
Get better at the things you hate - and then learn to love them. In your case,
it's pushing ideas to completion. Reduce the scope, forget the critics and
embrace the small iterations.

------
almost_usual
Perfect is the enemy of good.

[http://en.m.wikipedia.org/wiki/Perfect_is_the_enemy_of_good](http://en.m.wikipedia.org/wiki/Perfect_is_the_enemy_of_good)

------
kesor
ctrl-f "Yak" ... couldn't find any, so I'll just note that this is very much
related to Yak Shaving and everything that has been said about it throughout
the years.

[http://projects.csail.mit.edu/gsb/old-archive/gsb-
archive/gs...](http://projects.csail.mit.edu/gsb/old-archive/gsb-
archive/gsb2000-02-11.html)

[http://en.wiktionary.org/wiki/yak_shaving](http://en.wiktionary.org/wiki/yak_shaving)

------
magic_beans
I wish your blog had comments, as your writing is excellent!

------
snambi
This is called restlessness. restlessness is the opposite of laziness. Ideally
to be productive you need to be 100% balanced between restlessness and
laziness.

------
msie
Forget about TDD, unit-testing and get something working.

------
myth_drannon
Any applications that help to focus on progress ? I'm not talking about to do
list. But something more gamified that will help me focus.

------
Raphmedia
Who cares about the newest shiny language / framework?

Pick something that you know, that you like, and make your app in it.

------
joshu
It's not ADD, it is anxiety. Try something else. At the very least, get an
hour of walking done a day.

------
Dowwie
This has been a really great thread -- one of my all time favorite hacker news
threads.

Thanks to everyone who contributed.

------
sutro
Don't TDD the shit out of anything. Ever. Also, stop reading Hacker News.

------
fiatjaf
Stop renting VPSes and configuring them. Deploy everything to Heroku.

------
nichochar
This is basically me. How beautifully described aha

------
jedanbik
This is a problem that a Project Manager solves.

------
elwell
Set your noprocrast on HN

------
mattxxx
Finish your ideas.

------
fiatjaf
Do smaller things.

------
kephra
We are cursed by infinite ideas vs limited time. Applying the law of
diminishing returns results in ideas having a negative value. It like going to
a bank and asking for a big debt, if you even consider an idea. Its hard to
get rid of an idea, once its settled in our brain. Its taking space, and
chanting _code me_ , _code me_ , when you prefer to be in flow of a boring big
$$$ customer project.

It looks as if you are good in doing lots of small projects. Elance projects
pay shitty, and you still claim you can make a living. But they are often
small, very constrained, payed by hour. Thats different to coding something
big for your own progress.

At first a tip from someone who learned coding with paper tapes: Code for max
4 hours directly after getting up. Do not read any mail, no forums or news
sites, before your 2nd breakfast. Relax the remaining day, after replying to
mails. Try not to procrastinate to much at a computer. A computer should be
your work tool, not an entertainment device. Try to get a balance outside,
e.g. a dog can be a great excuse to walk around the neighborhood, and walking
around is one of the best ways to focus thoughts.

We all know the moment of the glorious vision at the evening, a small joint to
get into flow, and at sunrise you suddenly realize you have written 500-1000
lines of extremely smart and perfectly working code, of a prototype of our
vision. But sorry. I'm coding for nearly 40 years. This magical flow in the
night shift happens once or twice a year, if lucky. Trying to force yourself
into flow in the night shifts, will only lead to procrastination.

Many of my own projects started in such a magical flow. But to execute the
prototype into a product requires continuous bring coding work. This means,
that after I started to code the idea, I'm taking an even bigger debt to
execute it. This is sometimes difficult if big $$$ customer calls with a
problem. But I can continue on my own project, once I solved his problem, and
wrote my invoice.

Its really easy to get into flow, once you got the habit, to make a coffee and
perhaps a toast, and instantly start coding after wakeup. Its important not to
code more then 4 hours, but to stop at noon, when you think its a good point
to commit work, and to do something different. You'll code more errors, if you
become tired, and nobody can sustain long coding sessions every day. Enjoy the
real life outside of the computer screen.

About development stack: Less is more. Learn to code without all those
framework bloat, and also avoid over sophisticated development environments
with tool chains for hyped software development methodologies. You don't learn
to play guitar with lots of effects, but on an acoustic for good reason. One
can add effects later, but its important that you sound great even without.
I'm a bad musician. Adding gimmicks between me and the sound wont improve my
music, but instead causes me to play around with those gimmicks instead of
making music. I'm a coder, sure I know a lot of music theory. Gimmy a line and
I can compose and arrange a song in an evening, and everybody in the band has
fun, but if I try to compose a song on computer I end up with nothing but
junk.

~~~
Magpies
Last year I only had 2 projects on Elance. One has been running for 14 months
now, the other for 7 months. The projects I do for local businesses are also
LOB applications that run for 9 months using a full agile workflow, complete
with scrum/

I wonder why everybody assumes I'm only doing small projects.

~~~
kephra
Thats interesting! I only know Elance and Odesk from having a short look, and
got the impression that is not worth the time to compete in a race to the
bottom for small projects. Good to know, that there are also good projects.

I guess naming Elance as an income caused this "small project" trigger. I also
assumed that you are not coding for 20 years, as I read now by your above
postings.

~~~
Magpies
I don't blame you :) It is the exact same assumption I made when I registered
for an account. I just got lucky finding long-term projects.

------
techtics
Get out of tech, at least for a while, it's a toxic industry. People treat
each other like crap.

Your lifestyle is unsustainable and you're now paying the price. Which means
you don't enjoy what your doing. You still enjoy the idea though and that's
why you spend all your time planning.

Imagine if a professional soccer player suddenly didn't want to play anymore.
Do you think people would go "oh, you're just procrastinating"?

