There are too many shiny objects and it is killing me - <AUTHOR> https://yetanothergreatidea.wordpress.com/ <comment><USER2> 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."

<comment><USER3> _> 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"?

<comment><USER4> Good story.

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

<comment><USER5> 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

</comment></comment></comment></comment><comment><USER6> 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.

<comment><USER7> _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.

<comment><USER8> 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.

<comment><USER9> 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.

</comment></comment></comment></comment><comment><USER10> 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.

<comment><AUTHOR> Thank you for giving it a name. I do believe you nailed it with FOMO. Interesting.

<comment><USER11> 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.

<comment><USER12> 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.

</comment></comment></comment></comment><comment><USER13> 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.

<comment><USER14> 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.

<comment><USER13> 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/)

</comment></comment></comment><comment><USER14> 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.

<comment><USER15> 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

<comment><USER16> > "...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.

<comment><USER17> 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.

<comment><USER18> 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".

</comment></comment></comment></comment></comment><comment><USER19> 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.

<comment><USER20> 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.

<comment><USER19> 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.

</comment></comment></comment><comment><USER21> 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.

<comment><USER22> 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.

<comment><USER23> 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.

</comment></comment></comment><comment><USER24> 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.

</comment><comment><USER25> 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.

<comment><AUTHOR> 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)

<comment><USER26> "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.

</comment></comment></comment><comment><USER27> 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

<comment><USER5> 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.

</comment></comment><comment><USER28> 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.

<comment><USER29> 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.

<comment><USER30> 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.

<comment><USER31> 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/)

</comment></comment></comment></comment><comment><USER32> 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.

<comment><USER33> time and money are two major limitations for me and I envy anyone who doesn't share those limitations

</comment></comment><comment><USER34> 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.

<comment><AUTHOR> 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.

<comment><USER34> 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".

</comment></comment></comment><comment><USER35> 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.

</comment><comment><USER36> 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.

</comment><comment><USER37> 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.

<comment><USER38> 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.

</comment></comment><comment><USER39> 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.

</comment><comment><USER40> 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.

<comment><USER40> Wait, ack. I used that phrase wrong. I have nothing to say for myself.

</comment></comment><comment><USER41> 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.

</comment><comment><USER42> 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.

</comment><comment><USER43> 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!

</comment><comment><USER44> 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.

<comment><USER45> I would be really interested in this!

</comment></comment><comment><USER46> 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.

</comment><comment><USER47> 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.

</comment><comment><USER48> 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.

</comment><comment><USER49> 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.

</comment><comment><USER50> 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

</comment><comment><USER51> 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.

</comment><comment><USER52> 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!

</comment><comment><USER53> 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.

<comment><USER54> 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.

</comment></comment><comment><USER55> 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.

<comment><USER56> > 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.

<comment><USER55> 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!

</comment></comment></comment><comment><USER57> 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!

<comment><AUTHOR> I have forked your project and I will contact you gladly.

</comment></comment><comment><USER58> 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)

<comment><USER59> 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)

<comment><USER60> 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.

</comment></comment></comment><comment><USER61> "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/)

<comment><USER33> 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.

<comment><USER61> _we beat ourselves up about how unproductive we are, not understanding the intrinsic nature of self-teaching._

Agreed.

</comment></comment></comment><comment><USER62> 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.)

</comment><comment><USER63> 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.

<comment><AUTHOR> I agree. I wasn't like this before. Now I have no more backbone, no discipline.

<comment><USER64> 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.

</comment></comment></comment><comment><USER65> 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.

</comment><comment><USER66> 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.

</comment><comment><USER67> 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

</comment><comment><USER68> 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.

</comment><comment><USER69> 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.

</comment><comment><USER70> 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

</comment><comment><USER71> 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

<comment><USER72> 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

</comment></comment><comment><USER73> 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.

</comment><comment><USER67> 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.

<comment><AUTHOR> 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!

</comment></comment><comment><USER74> > 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!

</comment><comment><USER75> 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.

<comment><USER76> Have you any references you can share for further info / to back this up?

<comment><USER75> 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.

</comment></comment></comment><comment><USER77> 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.

</comment><comment><USER78> 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.

</comment><comment><USER79> 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!".

</comment><comment><USER80> "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.

</comment><comment><USER81> 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… :(

<comment><USER81> 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… :\

</comment></comment><comment><USER82> 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.

</comment><comment><USER83> 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_.

</comment><comment><USER84> "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.

</comment><comment><USER85> 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 !

</comment><comment><USER86> 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.

</comment><comment><USER87> 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.

<comment><USER23> 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."

<comment><USER87> 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.

</comment></comment></comment><comment><USER88> 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.

</comment><comment><USER89> "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

</comment><comment><USER90> 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.

</comment><comment><USER91> 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.

</comment><comment><USER92> 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.

</comment><comment><USER93> 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

</comment><comment><USER94> 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.

</comment><comment><USER95> 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.

</comment><comment><USER96> 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.....

</comment><comment><USER97> 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 =)

</comment><comment><USER98> 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).

</comment><comment><USER99> 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.

</comment><comment><USER100> 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)

</comment><comment><USER101> 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.

</comment><comment><USER102> 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)

</comment><comment><USER103> 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)

</comment><comment><USER104> I wish your blog had comments, as your writing is excellent!

</comment><comment><USER105> This is called restlessness. restlessness is the opposite of laziness. Ideally to be productive you need to be 100% balanced between restlessness and laziness.

</comment><comment><USER106> Forget about TDD, unit-testing and get something working.

</comment><comment><USER107> 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.

</comment><comment><USER108> Who cares about the newest shiny language / framework?

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

</comment><comment><USER109> It's not ADD, it is anxiety. Try something else. At the very least, get an hour of walking done a day.

</comment><comment><USER33> This has been a really great thread -- one of my all time favorite hacker news threads.

Thanks to everyone who contributed.

</comment><comment><USER110> Don't TDD the shit out of anything. Ever. Also, stop reading Hacker News.

</comment><comment><USER111> Stop renting VPSes and configuring them. Deploy everything to Heroku.

</comment><comment><USER112> This is basically me. How beautifully described aha

</comment><comment><USER113> This is a problem that a Project Manager solves.

</comment><comment><USER114> Set your noprocrast on HN

</comment><comment><USER115> Finish your ideas.

</comment><comment><USER111> Do smaller things.

</comment><comment><USER116> 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.

<comment><AUTHOR> 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.

<comment><USER116> 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.

<comment><AUTHOR> 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.

</comment></comment></comment></comment><comment><USER117> 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"?</comment>


HTML5 New Target for Cybercriminals - <AUTHOR> http://www.bbc.co.uk/news/technology-16005053

<comment><USER2> I'm getting really tired of the "cyber" warfare. It's obvious they are just now starting to push hard for it, thinking they'll get people to give up even more rights and let them spy all their activities online, so they can _maybe_ catch some "cyber-criminals".

</comment><comment><AUTHOR> How does this article get published? It has a single source who happens to run a technology firm... Plant fear. Profit.

Is there no money left in news that the reporter could not make some calls to verify or dispute these claims?</comment>


Hyperspace is a new desktop Mastodon client - <AUTHOR> https://hyperspace.marquiskurt.net/ <comment><USER2> Might wanna switch the insane 22meg iMac image with something a bit more web- optimized? :D</comment>