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.
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.
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.
I have the same issue as OP, but where it concerns even learning the programming language. I've started I don't know how many times. I've made minimal progress. I'm disheartened.
> 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.
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.
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.
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.
I have a set of guidelines for myself to keep me from going off into a never-never land of getting nothing done, because I love new gadgets, new software, new tools, etc. They aren't rules, because sometimes the right way to solve a problem is to use something new, but they do help me avoid a lot of pointless wheel-spinning.
Some of those guidelines:
Editing text is a solved problem, emacs or vim, pick one and get back to work. I picked vim 20 years ago, and have mostly stuck with it. I can imagine someone else might have other editor options in the list of things that solve the editing text problem. I go outside of this guideline when poking at Android development, because all of the current docs and tutorials assume I'm using Android Studio and the friction is so much lower when using those tools. At other times I've used other tools. jEdit, Eclipse, OpenOffice, when they were the right tool. But, I always come back to vim for editing text, and it's always what I try first before trying to find the optimal tool...only if vim makes something hard do I branch out.
Linux distributions aren't all that different. Pick one, and get back to work. I picked Fedora 20 years ago (when it was called Red Hat Linux), and have stuck with it. CentOS/RHEL/Scientific Linux goes on my servers, because it's just like Fedora, except stable and reasonably secure for up to a decade after release. Other options are reasonable, but there is no reason for me to switch. I have to know the server-side of every distro my software supports (and FreeBSD), but I don't need to know the desktop minutiae of every distro, so I ignore it completely.
Avoid relying on proprietary tools, particularly those that require a lot of learning to use. This one is more subtle. Maybe the best tool for the job is a proprietary piece of software or a web service...but, it's difficult to have faith that it will be around in five or ten years. So, if there is a slightly worse Open Source option, I will choose that option, because I am less likely to have to learn it again or re-develop my ancillary tools to work with it. I happily pay for good software...but, I don't happily pay (in time or money) for a forced upgrade/migration cycle.
There are lots of others that are less relevant for this context; experience can make some kinds of decisions quicker to make. Though, I guess it can also put blinders on making it harder to see new and better ways to do things. It's probably worth revisiting these decisions every five or ten years to be sure the landscape hasn't changed dramatically.
like,
if you aren't using today's fad language in the very latest version of
the IDE, you'll be left behind. aaaugh! but it's good that some people
run like they are scared out of their wits. if they suddenly disappear
over the edge of a cliff, a good number of people will notice in time and
_not_ follow them. those are the ones that matter.
you can scare most people most of the time, but you can't scare all of
the people all of the time -- some will always use Common Lisp.
The problem I face with accepting imperfection in general is twofold: 1) while I may not ever reach perfection, it's still a goal, because I find that I have flaws, and I can (and sometimes do) fix them, and life is better (plus after fixing I may then see new flaws to fix that I couldn't see before) and 2) when I'm forced to use a very imperfect tool for [business reason], when I know about this more perfect (not necessarily more shiny) tool over here but can't use because of [business reason]. In the second case, there are two states that are happier: actively using the better tool, or not knowing about the better tool in the first place. When you already know about the better tool, and can't soon get to the point of using it actively, the transition period can be demoralizing sometimes.
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.
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.
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.
Now is as good of a time to start developing this. All you have to do is just stick with a single task and complete it. Then do this over and over again and it will turn into a habit.
Consider this: you mentioned a history of depression. Depression doesn't have to be at the level of a major depression to affect your functioning. And moderate chronic depression will certainly affect your focus. I hope I'm wrong, but you should really go and talk to a good psychiatrist/psychologist and see what kind of help you can get and whatever else you might be dealing with. And don't imagine that it means that you're fucked up in some kind of way: last year 13% of Canadians sought services of mental health professionals. That doesn't include those that aren't getting help for their conditions.
I have a problem with your "OP does not need ADD drugs" comment.
How do you know?
ADHD is a real condition.
You wouldn't tell someone with bipolar that they don't need anti-depression medication and instead just need to "stop being depressed".
You clearly don't know how hard it is to push through daily even with medication.
Please be more empathetic regarding mental conditions you personally don't experience.
I am bipolar, adhd, add, whatever. "Stop being depressed" definitely doesn't work, but I dont really believe descriping mind altering drugs is the solution either. Especially to little kids as they are doing these days.
There are better ways. Drugs only block the problem, but there are methods to overcome this dis-ease.
Believe me when I say I have been there. About 15 years depressed, always full of energy, but very difficult to concentrate it on any one thing. At some point self medicated for years with natural remedies, but ultimately only got addicted and had to let go of it completely, which vas very difficult and dont recommend to anyone.
Only thing truly that has helped me is meditation and yoga. Those two. They require no drugs, only discipline. Through this practice I am now able to focus, I am now able to relax, let go.
I believe ADHD is a condition which rises from the fact that our society and systems have become ever more complex, while our methods of working have not been adapted to this, and we are trying to cope with old methods of just "grunting it" through, when we need more of just letting go, relaxing, stopping and letting our systems be at ease.
Just to offer an alternative view on this condition, from someone who has suffered with this for the better part of my life and finally realized how to cope with it. It requires work, yes, but all good things in life do.
The medical companies know how easy it is just to sell some drugs and make a buck, and get people addicted.. so we are being bombed with false information also, which makes this very difficult, but I would recommend yoga & meditation & mindfulness to anybody who is suffering from this.
> but there are methods to overcome this dis-ease.
No, no there are not. The ADHD brain does not produce the dopamine they need to allow the neurons to transmit information properly. Medicines address this in a way that no amount of meditation or Yoga or fru-fru dieting can.
> Just to offer an alternative view on this condition, from someone who has suffered with this for the better part of my life and finally realized how to cope with it. It requires work, yes, but all good things in life do.
I'm glad your ADHD was mild enough that coping mechanisms were enough. Never assume that this is the case for everyone, just because it's the case for you.
The difference is pretty major - for someone who does not have ADHD, the medications make them high. For someone with ADHD, it just makes the brain work the way it should in the first place. It doesn't make us hyper, it doesn't make us high, it doesn't give us boundless reserves of energy.
What it does do is let us think about things in the future in a way which impacts what we do today. It lets us connect intention to action, which is really hard without it. It lets us concentrate for more than a few moments at a time.
> get people addicted
The clinical dose for Adderal is typically in the 10-90 mg per day range; addicitive levels are around 350 mg per day. Stop spreading FUD.
I understand your defensive reaction, and I in no means try to undermine your condition, but OF COURSE there are natural means to handle this. What do you mean, this is something completely new in the human condition ? You don't think in the whole time humans have evolved that we haven't had this kind of condition already in some form ? That this conditions has become true only in the past 50 years or so, in one generation of humans ?
Or is it maybe because we are fed the idea that we _need_ to be focused, that we need to become some kind of robots that can focus and do mind numbing work just because some one tells us so?
We can agree to disagree, if you feel I'm spreading fud think about whose world view you are defending, yours or those who have come up with the idea that we should be medicated for this condition..
And with addiction I mean psychological addiction, where somebody thinks they need the medication to focus.
And of course, if you are on medication, your first reaction is to defend and attack against those who say otherwise, as it is helping you. If so, good for you, but I am only speaking for this info because there are children as young as 6 who are being medicated, for goddamn no good reason but just because they cannot focus at school and take orders properly, which is to be honest just goddamn stupid.
People have different ways to think and to act, and those who are diagnosed with ADHD/ADD are specialists, and they can act very well without any medication when the environment recognizes this and let's out their creativity in the way which is best for them,and not force them to the same mold as everyone else!
> You don't think in the whole time humans have evolved that we haven't had this kind of condition already in some form
Of course we have. Know how we, as humans, dealt with people with mental disabilities (those who survived natural selection) in the past? A combination of "Man up", and sanitariums. We told them, "Stop being <pick a mental condition here>, or we'll throw you in a hole from which you'll never escape, and we can stop worrying about it."
These two methods "worked" for a lot of mental conditions we just now have names, diagnoses, and cures for.
> Or is it maybe because we are fed the idea that we _need_ to be focused
If you think that the only problem with having ADHD is the lack of focus, you don't know what ADHD is. I recommend watching the following video to see what the true problems encountered by those with ADHD are.
> those who have come up with the idea that we should be medicated for this condition
Like those who have received medication, and are suddenly able to think like everyone else is capable of? The medication is not a crutch, it's not a magical focus pill, it's not a "i can focus better because I have more energy"... it's a bridge between "can't" and "can".
It doesn't make you focus, it makes you capable of focusing. It doesn't make you not procrastinate, it lets you actually consider the consequences which are separated from the action by a time period greater than 30 minutes. It doesn't expand your memory, it makes you capable of accessing items in your memory.
People without ADHD don't understand that the medications don't act like speed for someone with ADHD. Let me repeat that. If you have ADHD, you're not getting the speed-like effects from these drugs.
If I had to come up with an example people without ADHD might understand, it would be like going from the mental state of being constantly inebriated to stone-cold sober.
> children as young as 6 who are being medicated, for goddamn no good reason but just because they cannot focus at school and take orders properly
This is FUD. Children are not put on Ritalin or Adderal just for being hyper, or for being children. The kids who are being put on these drugs are unable to operate and complete school otherwise. They can't just "Man Up" and learn discipline; it's physically impossible. Coping mechanisms can only get you so far.
It's estimated that 5% of people have ADHD. Let me re-phrase that: 5% of the human population has a neurological condition which prevents their brains from functioning normally, at a level which is considered detrimental to their life. Only ~4% of children are on these drugs. That means that we're not overmedicating children for ADHD, we're undermedicating them. Adults? About 1.5% are medicated. The rest suffer through the symptoms, unable to live up to their potential.
> those who are diagnosed with ADHD/ADD are specialists
This is a terrible, terrible lie being spread by people who want to feel special, and who don't want to admit that they actually have a disability. This denial isn't even limited to mental disorders (though due to the lack of physical symptoms, regular society tends to re-enforce the "you have an ability, not a disability" mentality).
Let's address the "specialist" notion popularized by that Ted Talk, specifically. Do you want to know what an ADHD "specialist" would look like in a hunting society?
They would be dead, because:
- they couldn't think ahead to stockpile meat for the winter.
- they didn't maintain their spear.
- they forgot to bring water with them on the hunt.
- they pissed off someone bigger and stronger than themselves due to an unnaturally strong emotional ...
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.
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.
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.
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.
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.
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!
The guy should just read what he just wrote. Anything you want to create, you can probably do with the list of technologies that you already know well and have experience with. The real problem is that he doesn't want to actually build anything. Building something is hard, putting out there for people to see is hard, realizing that it might not work or isn't perfect or wasn't what you set out to build is hard. Setting up project after project, is easy. It's masturbation with Hacker News. If he was interested in building something, he'd build it with the fastest, crappiest stack that he knows the best and gets it infront of as many people as possible so they can tell him how much it sucks and what's it's missing. This guy just wants to fiddle with terminal colors more than building anything.
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.
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.
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)
"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.
Go find a local meetup, or do volunteer (tech) work for a charity, or tutor/teach, or find a pen pal / forum buddy working in a similar space. -- do something to put some social contact in your work.
"I know I need to break the isolation, but I fear I'm too deep into my own world."
That's the procrastinator in you talking. Or the fear that those things you create won't go big and solve your dream. Forget the YC path and build a side-project/lifestyle venture that is interesting or challenging, and get a good routine going. Maybe it takes off, or maybe it's a steady side-project for a few years - no shame in either.
Build anything that gets you early users as eventually they will take over and be demanding features that give you the impetus you need.
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.
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!
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."
Thanks for this comparison. I went through this very same thing, and spent a lot of time and ammunition firing at the wrong solutions before I landed on this very same thinking. Best practices are fine, but it's way more important to get some code written for that feature. Forging ahead without tutorials and Stack Overflow (using only what you know as a software developer in general) is going to make you a better, more productive developer a lot faster than anything else. The shopping metaphor is excellent.
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):
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"?
I have loved that story ever since I read it as a teenager. Incidentally, it is an almost perfect metaphor for the F-35 Joint Strike Fighter, the "jet that ate the Pentagon".
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.
I often don't get that far. I just come up with all the potential problems with my idea; usually related to monetization or existing competition and then I bin the idea.
Finally, I get started and it goes great, the code is really elegant, I put a new programming technique/trick to use ...
That suggests your primary driver was to get to try something new. Once you've satisfied that urge, you move on to the next bite-sized learning experience that will give the same initial rush.
If you want to get into shipping mode, maybe you should try to explicitly force yourself out of "elegant experimentation" mode by doing things the "boring" way, whatever that may be for you.
That's very rarely the case, I think it's more to do with the fact that I'm still learning.
I've become more and more comfortable with FP over the last year and I enjoy being able to utilise the new things I pick up, but I don't think I've ever worked on a project purely to try something new.
I tend to experiment at work too and our products always ship.
In most cases a competitor is not doing exactly what you want to do.
If your idea involves some sort of a gimmick or very specific point of attraction and that is already being used by a competitor, then sure, maybe you should pick a different idea. But otherwise there is likely much room for competitive advantage.
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 :-/
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".
And odds are, if there is just one player in the market they're not very good. Simply by virtue of being the only one; the odds of that being the case simply because they are amazing and perfect is so miniscule. It's most likely that no one has bothered, or had the effort to out-do them.
The thing I love most about the cpan is step 3. I don't tend to do steps 1 and 2 much because of that. However occasionally I find I get to step 3.5 - oh I need that and the maint has given up on it. Usually I chat to the original author and discover I don't need the feature. Rarely, I'll [steal maintenance](https://metacpan.org/pod/Plack::App::FakeApache) to get some of the features I need.
Sounds like me. What I've found helpful is to reduce the scope of the project. Focus on base hits rather than home runs.
Not quite the same as "MVP" if MVP implies permission to release something crappy and incomplete.
I shoot for something small, polished and excellent.
The finishing stretch is hard. One has to learn to enjoy this process; documenting, adding unit tests (if needed), jumping through hoops like CPAN or the app store.
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.
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.
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.)
There was a short talk by Andrew Tridgell (one of the creators of Samba) about having a "junk code" directory. I'm not sure if there's a video but https://www.samba.org/ftp/tridge/talks/junkcode.pdf gives you a reasonable idea.
The value is that you can eventually give yourself a break and just write goddamn code. I have terrible terrible code in https://github.com/voltagex/junkcode but it's fine because if anything there really grabs me I'll graduate it out into its own repo.
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.
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.
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
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
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.
197 comments
[ 2.6 ms ] story [ 280 ms ] threadI 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.
Appreciated the rest of your post, it highlights the importance of good documentation in optimally using systems.
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.
> 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...):
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.
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.
"Reading, after a certain age, diverts the mind too much from its creative pursuits."
Some of those guidelines:
Editing text is a solved problem, emacs or vim, pick one and get back to work. I picked vim 20 years ago, and have mostly stuck with it. I can imagine someone else might have other editor options in the list of things that solve the editing text problem. I go outside of this guideline when poking at Android development, because all of the current docs and tutorials assume I'm using Android Studio and the friction is so much lower when using those tools. At other times I've used other tools. jEdit, Eclipse, OpenOffice, when they were the right tool. But, I always come back to vim for editing text, and it's always what I try first before trying to find the optimal tool...only if vim makes something hard do I branch out.
Linux distributions aren't all that different. Pick one, and get back to work. I picked Fedora 20 years ago (when it was called Red Hat Linux), and have stuck with it. CentOS/RHEL/Scientific Linux goes on my servers, because it's just like Fedora, except stable and reasonably secure for up to a decade after release. Other options are reasonable, but there is no reason for me to switch. I have to know the server-side of every distro my software supports (and FreeBSD), but I don't need to know the desktop minutiae of every distro, so I ignore it completely.
Avoid relying on proprietary tools, particularly those that require a lot of learning to use. This one is more subtle. Maybe the best tool for the job is a proprietary piece of software or a web service...but, it's difficult to have faith that it will be around in five or ten years. So, if there is a slightly worse Open Source option, I will choose that option, because I am less likely to have to learn it again or re-develop my ancillary tools to work with it. I happily pay for good software...but, I don't happily pay (in time or money) for a forced upgrade/migration cycle.
There are lots of others that are less relevant for this context; experience can make some kinds of decisions quicker to make. Though, I guess it can also put blinders on making it harder to see new and better ways to do things. It's probably worth revisiting these decisions every five or ten years to be sure the landscape hasn't changed dramatically.
Additionally I find value in this rant from Erik Naggum: http://www.xach.com/naggum/articles/3141310154691952@naggum....
The problem I face with accepting imperfection in general is twofold: 1) while I may not ever reach perfection, it's still a goal, because I find that I have flaws, and I can (and sometimes do) fix them, and life is better (plus after fixing I may then see new flaws to fix that I couldn't see before) and 2) when I'm forced to use a very imperfect tool for [business reason], when I know about this more perfect (not necessarily more shiny) tool over here but can't use because of [business reason]. In the second case, there are two states that are happier: actively using the better tool, or not knowing about the better tool in the first place. When you already know about the better tool, and can't soon get to the point of using it actively, the transition period can be demoralizing sometimes.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.
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.
How do you know? ADHD is a real condition. You wouldn't tell someone with bipolar that they don't need anti-depression medication and instead just need to "stop being depressed".
You clearly don't know how hard it is to push through daily even with medication. Please be more empathetic regarding mental conditions you personally don't experience.
There are better ways. Drugs only block the problem, but there are methods to overcome this dis-ease.
Believe me when I say I have been there. About 15 years depressed, always full of energy, but very difficult to concentrate it on any one thing. At some point self medicated for years with natural remedies, but ultimately only got addicted and had to let go of it completely, which vas very difficult and dont recommend to anyone.
Only thing truly that has helped me is meditation and yoga. Those two. They require no drugs, only discipline. Through this practice I am now able to focus, I am now able to relax, let go.
I believe ADHD is a condition which rises from the fact that our society and systems have become ever more complex, while our methods of working have not been adapted to this, and we are trying to cope with old methods of just "grunting it" through, when we need more of just letting go, relaxing, stopping and letting our systems be at ease.
Just to offer an alternative view on this condition, from someone who has suffered with this for the better part of my life and finally realized how to cope with it. It requires work, yes, but all good things in life do.
The medical companies know how easy it is just to sell some drugs and make a buck, and get people addicted.. so we are being bombed with false information also, which makes this very difficult, but I would recommend yoga & meditation & mindfulness to anybody who is suffering from this.
No, no there are not. The ADHD brain does not produce the dopamine they need to allow the neurons to transmit information properly. Medicines address this in a way that no amount of meditation or Yoga or fru-fru dieting can.
> Just to offer an alternative view on this condition, from someone who has suffered with this for the better part of my life and finally realized how to cope with it. It requires work, yes, but all good things in life do.
I'm glad your ADHD was mild enough that coping mechanisms were enough. Never assume that this is the case for everyone, just because it's the case for you.
The difference is pretty major - for someone who does not have ADHD, the medications make them high. For someone with ADHD, it just makes the brain work the way it should in the first place. It doesn't make us hyper, it doesn't make us high, it doesn't give us boundless reserves of energy.
What it does do is let us think about things in the future in a way which impacts what we do today. It lets us connect intention to action, which is really hard without it. It lets us concentrate for more than a few moments at a time.
> get people addicted
The clinical dose for Adderal is typically in the 10-90 mg per day range; addicitive levels are around 350 mg per day. Stop spreading FUD.
Or is it maybe because we are fed the idea that we _need_ to be focused, that we need to become some kind of robots that can focus and do mind numbing work just because some one tells us so?
We can agree to disagree, if you feel I'm spreading fud think about whose world view you are defending, yours or those who have come up with the idea that we should be medicated for this condition..
And with addiction I mean psychological addiction, where somebody thinks they need the medication to focus.
And of course, if you are on medication, your first reaction is to defend and attack against those who say otherwise, as it is helping you. If so, good for you, but I am only speaking for this info because there are children as young as 6 who are being medicated, for goddamn no good reason but just because they cannot focus at school and take orders properly, which is to be honest just goddamn stupid.
People have different ways to think and to act, and those who are diagnosed with ADHD/ADD are specialists, and they can act very well without any medication when the environment recognizes this and let's out their creativity in the way which is best for them,and not force them to the same mold as everyone else!
Of course we have. Know how we, as humans, dealt with people with mental disabilities (those who survived natural selection) in the past? A combination of "Man up", and sanitariums. We told them, "Stop being <pick a mental condition here>, or we'll throw you in a hole from which you'll never escape, and we can stop worrying about it."
These two methods "worked" for a lot of mental conditions we just now have names, diagnoses, and cures for.
> Or is it maybe because we are fed the idea that we _need_ to be focused
If you think that the only problem with having ADHD is the lack of focus, you don't know what ADHD is. I recommend watching the following video to see what the true problems encountered by those with ADHD are.
http://youtu.be/SCAGc-rkIfo
> those who have come up with the idea that we should be medicated for this condition
Like those who have received medication, and are suddenly able to think like everyone else is capable of? The medication is not a crutch, it's not a magical focus pill, it's not a "i can focus better because I have more energy"... it's a bridge between "can't" and "can".
It doesn't make you focus, it makes you capable of focusing. It doesn't make you not procrastinate, it lets you actually consider the consequences which are separated from the action by a time period greater than 30 minutes. It doesn't expand your memory, it makes you capable of accessing items in your memory.
People without ADHD don't understand that the medications don't act like speed for someone with ADHD. Let me repeat that. If you have ADHD, you're not getting the speed-like effects from these drugs.
If I had to come up with an example people without ADHD might understand, it would be like going from the mental state of being constantly inebriated to stone-cold sober.
> children as young as 6 who are being medicated, for goddamn no good reason but just because they cannot focus at school and take orders properly
This is FUD. Children are not put on Ritalin or Adderal just for being hyper, or for being children. The kids who are being put on these drugs are unable to operate and complete school otherwise. They can't just "Man Up" and learn discipline; it's physically impossible. Coping mechanisms can only get you so far.
It's estimated that 5% of people have ADHD. Let me re-phrase that: 5% of the human population has a neurological condition which prevents their brains from functioning normally, at a level which is considered detrimental to their life. Only ~4% of children are on these drugs. That means that we're not overmedicating children for ADHD, we're undermedicating them. Adults? About 1.5% are medicated. The rest suffer through the symptoms, unable to live up to their potential.
> those who are diagnosed with ADHD/ADD are specialists
This is a terrible, terrible lie being spread by people who want to feel special, and who don't want to admit that they actually have a disability. This denial isn't even limited to mental disorders (though due to the lack of physical symptoms, regular society tends to re-enforce the "you have an ability, not a disability" mentality).
Let's address the "specialist" notion popularized by that Ted Talk, specifically. Do you want to know what an ADHD "specialist" would look like in a hunting society?
They would be dead, because:
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.
I never got anything finished, until I started being very pragmatic and not learning for the sake of learning.
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.
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.
Any recommendations for yoga/meditation resources to learn the techniques/methodologies? I've been thinking about trying that for a long time now.
[1] http://headspace.com/
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.
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)
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.
That's the procrastinator in you talking. Or the fear that those things you create won't go big and solve your dream. Forget the YC path and build a side-project/lifestyle venture that is interesting or challenging, and get a good routine going. Maybe it takes off, or maybe it's a steady side-project for a few years - no shame in either.
Build anything that gets you early users as eventually they will take over and be demanding features that give you the impetus you need.
I do everything the user posted except the Website. That's me. Do you think it's ADD? Help too, please.
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.
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!
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."
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
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"?
Re anger : Have you met the internet? He is 14 years old and hates everything except tentacle-porn.
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
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.
That suggests your primary driver was to get to try something new. Once you've satisfied that urge, you move on to the next bite-sized learning experience that will give the same initial rush.
If you want to get into shipping mode, maybe you should try to explicitly force yourself out of "elegant experimentation" mode by doing things the "boring" way, whatever that may be for you.
I've become more and more comfortable with FP over the last year and I enjoy being able to utilise the new things I pick up, but I don't think I've ever worked on a project purely to try something new.
I tend to experiment at work too and our products always ship.
If your idea involves some sort of a gimmick or very specific point of attraction and that is already being used by a competitor, then sure, maybe you should pick a different idea. But otherwise there is likely much room for competitive advantage.
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
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.
An established competitor guarantees there's a market. You'll just have to do it better than they do.
Not quite the same as "MVP" if MVP implies permission to release something crappy and incomplete.
I shoot for something small, polished and excellent.
The finishing stretch is hard. One has to learn to enjoy this process; documenting, adding unit tests (if needed), jumping through hoops like CPAN or the app store.
I think finishing is a habit we can build.
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.
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/
The value is that you can eventually give yourself a break and just write goddamn code. I have terrible terrible code in https://github.com/voltagex/junkcode but it's fine because if anything there really grabs me I'll graduate it out into its own repo.
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.
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.