Ask HN: How to start coding my product?
I'm currently employed and working as a Ruby on Rails programmer for 3 years now, and I have decided that I want to start coding my product that I have been planning ever since I got interested with web applications, but when it comes to making it happen, I just can't do anything, I can't start working on it, I can't begin coding... I just lost enthusiasm on my own thing. But when my employers ask me to create a web app (website, ecommerce, internal apps, consulting apps), I responded enthusiastically and delivered it right on time (and beyond their expectations).
What's wrong with me?, I have everything already set, I bought my domain, I bought a VPS, S3, and has the technical skills to make it happen, but and I just can't find any interest on doing things for my own's sake, it's easier for me when my boss says "hey do this", but when I comes to myself to do something for myself I failed miserably. The last time I visit my VPS is back on September 2010, and I haven't touched it eversince...
Can someone give me an advice?
31 comments
[ 2.5 ms ] story [ 86.3 ms ] threadIf anyone figures out how to trick yourself then I'm all ears!
By pretending that the module is already done you get to use it before it exists (which is a lot of fun :). In the README, write your instructions in such a way that they are testable (python doctests make this easy, I assume you can do something similar with ruby).
When you're done, it is much easier to start on the actual module itself because you've already figured out how that module interacts with the rest of the system, and you have a set of tests to verify it.
Also, this mode of seeing things will help you to deliver a better software experience to your end-users as you will always remind yourself that going for quick and dirty solutions (during development) might work if you use it, but not if others use it.
Also, in order to gain additional enthusiasm, you should find a good friend with whom you can talk about your project, and brag from time to time. Then you feel obliged to continue working on it because you don't want him to believe that you've failed on it.
A few years ago I had a great idea for a product and would pitch it to whoever would listen. I had the domain, had a plan, just had to execute. I'd barely gotten started when I ran into a wall, instead of working I would just stare blankly at my computer. I had zero motivation to do any actual work.
And yet, I was still passionate and believed in the idea, which led me to a similar place as you where I'm wondering "what gives?"
This situation showed me that I had an internal problem, that while I could function in environments with external motivational factors, if I removed them, I had nothing. Something inside was holding me back.
It was only through a combination of months of therapy and soul searching that I was able to find the source of my motivational short-circuit, I had given up on the first thing I ever truly wanted without even trying to achieve it. After that epiphany, motivation has been the least of my concerns. Heck, I'm working on my plans for world domination at this very moment.
So here's my advice, take the time to debug your brain, it won't be easy, but it beats having that error message pop up for the rest of your life.
Fear is a multi-faceted and very powerful, yet often times extremely irrational, emotion that can destroy you even before you get started. A few people here have brought up Seth Godin's Lizard Brain concept, but what's missing from it is a deeper dive into fear being a huge blocker to accomplishing something. "Just ship it", or "ship early and ship often" are techniques that are of great help but they're farther down the pipeline than getting started.
Of immediate and initial importance is needing to understand why you are getting in your own way - what is the cause of the fear that is preventing you from executing your idea? Is it a fear of failure, of success, of being judged once you finish, of making mistakes, of having too much responsibility, of making the wrong decision along the way? It's not a question that you can answer immediately, and unwrapping fear can sometimes lead you down a path where the only thing you have feared is more fear (sounds like a very familiar quote, eh?).
When it's someone elses idea that you're working on and you're not the one in charge it's much easier to meet and often exceed expectations b/c many of those fears aren't possible outcomes (to the trully paranoid mind they might be, but since you can accomplish tasks at work you don't fit the bill for this).
It's not easy to understand the 'why' of our psychopathologies. Everybody has their own that they struggle with. Some people create coping mechanisms and live within the pathologies, and some people overcome their pathologies through a combination of technique / drugs.
Two books that I found of personal help on first helping me understand the 'why' of my personal struggles and then provided helpful techniques to break through them are:
"Do It!" by Peter McWilliams http://www.amazon.com/Lets-Get-Off-Our-Buts/dp/093158079X (there's a free version @ mcwilliams.com but the website seems to be down)
"The Procrastinator's Handbook" by Rita Emmett http://www.amazon.com/Procrastinators-Handbook-Mastering-Art...
I also have trouble getting motivated to start on a large project by myself, since it seems insurmountable in the beginning. It helped me to break it down into small steps that can be accomplished in a few hours, so I felt like I was making progress.
The best solution I've found is get yourself a partner, someone that can keep you accountable and motivated.
Remember not to take your code too personally, most of it will inevitably need to be rewritten again anyways - it does not have to be perfect in the beginning.
If there are certain aspects of the project that are frightening to you and stopping you from starting (UI, DB design etc), then bite the bullet and outsource those parts... makes things much easier.
If you have the funds available, consider outsourcing the entire project - this will leave you with time to get the business end sorted.
Best of luck!
Sean
1) Write some requirements! Clarify in your mind where the project is heading both in the short-term and the long-term. Agile-style user stories is one way to do both of those.
2) Start with the basics. Get the Rails framework set up. Get the DB set up. Start writing the schema. Etc. Once you've got the basics of every app (mvc, authentication, ACL, etc) then move on to what makes your app unique. Start with things that will provide benefit for you or your customers.
Here's something I did to get past my own wall two months ago. I told myself to shut up, set aside some time each day (after I started working it was a lot easier. The only time I had was after work hours till 10 30 in the night) and then follow these steps.
1) make sure you are fresh, preferably having had shower 2) phones, distractable media all shut off and put away. block everything except your resources on the net if you have to 3) put down what you are going to do either on a small A4 size like whiteboard, or an A4 drawing paper (blank white is best to focus) When putting down the stuff do it this way a) write down the features you want to implement in your current development cycle b) draw up the screen designs if you need to c) think through the logic and put down what's needed.
Get to Work!
Methodologies are there for a reason. They do actually work. Btw, before starting. Make sure you have a clean overall view of the project as well. Not just the 'pitch'. Put down your main use cases and the features for each use case there (two levels max you can elaborate during the main cycles).
What's wrong with you is not lack of motivation. It's a lack of focus. I've dealt with it when learning languages too. I'd spend hours reading the material and come away with nothing. You need to know what you will achieve and that within a practical time frame. If you are having a really bad case of not being able to focus, I suggest a maximum time frame of two days. I currently work on a functionality a week/fortnight basis.
Good luck :)
The most effective thing seems to be getting someone else involved. That way, you are committing not to yourself, but to another person as well. If that person is a coder, then you don't have to do all the programming work yourself. If not, maybe they can help you to get around some of the shortcomings in your own skillset.
Some people just don't work well alone (I'm one of them). It's not that I can't do all of the work myself (I can), but just that I don't enjoy it. I've learned to accept that, and then to get around it by bringing others into my projects at an early phase.
All you can do in that situation is step back and remind yourself that this project probably won't change the world but might be fun to make. Consciously work on replacing the grandiose fantasy with a more realistic one: Imagine yourself ... coding a neat little Rails app in your free time! Staying up late to fix an annoying bug, and then feeling satisfied when you've fixed it! Not being a billionaire but being a guy who made a cool little web app!
And then sit down and start coding, even if you're not really in the mood.
This is your problem. By taking these preliminary, preparatory steps, you are satiating your brain's motivational desire for action without taking any actual constructive steps. Thus you do not have the will or urge left to write the code.
Stuff like buying a VPS or setting up S3 is easy and quick, therefore your reptile brain makes it easy for you to do such things first, as it prefers instant gratification. This unfortunately depletes the motivational neurotransmitters that signal you to take action, because as far as your brain is concerned, action has been taken.
The answer is to do that stuff last. Or, in a business setting, get someone else to be responsible for it.
This is an extension of some ideas from the great Derek Silvers, which he relates in this TED talk, which you should definitely watch: http://www.ted.com/talks/derek_sivers_keep_your_goals_to_you...
I think the OPs problem is primarily about fear [http://news.ycombinator.com/item?id=2185833], not instant gratification. It's necessary when building a website to get a VPS and S3 account (or equivalent) to host the site/files on. I completely understand what you're getting at by suggesting that putting easy things ahead of hard things gives a false sense of accomplishment, and I tend to agree. I just think there's something different at play here for the OP to focus on.
On a related note, I know that Derek frequents this board often and I've had the pleasure of learning from some of his insights along the way. I'd love to hear his reaction to the above article or a link to such a post from the HN crowd.
An important idea, not often acknowledged, is the fear of success rather than the fear of failure. "Oh God, how long before they figure out I'm faking it?"
See the following article: http://thelastpsychiatrist.com/2010/08/the_worst_thing_that_...
Note: while I am linking this article for its ideas, this is IN NO WAY an endorsement of the author's somewhat antagonistic and disjointed writing style. Please persevere with it.
On one recent project, I got going by knocking out a rough plan in Pivotal Tracker and then doing some pair programming on some portions of the code with someone I hired on oDesk. Having booked someone for a couple of hours a day for a week or two meant that I got started, and by using them only for small portions of the functionality meant that it didn't cost too much and I was motivated to get the other bits done myself that were dependencies for the next bit of functionality I was going to be working on with my pair programmer.
I'd say write 1 of the many features your trying to work on. It could be because you're overwhelmed with the whole project.
Also, it seems like you have a "sheep" mentality rather than a "wolf" mentality (when your employers asked you to make an app but wont make one for yourself). If you can recognize it, you can most likely change it.
How to beat procrastination: http://news.ycombinator.com/item?id=2185174
Perhaps you feel that your idea doesn't help someone else, even if it is interesting to yourself (hence it's easy to do work for others). Convince yourself either the idea/product would help people (ask if people are interested?) or do it for fun/hell of it. Otherwise, cut your losses.
=)
Logically your reaction will be heck no because you can do it yourself and keep all the money to yourself, but you have just then created a paradox because this is exactly what makes you execute and seems to be what is preventing you.
That was all in hypothetical fun of course but I think would work in practice. Sometimes people don't need to find or "hire" co-founders, rather a "boss". But to overcome your biggest challenge, which is yourself, @JonnieCache and others here definitely know what they are talking about.
What do you need to do, and in what order?
What is the minimum viable product? What does that need to do, and in what order?
Now, what's the first thing that needs to happen for the MVP, and what is the smallest piece in it that can be done in an afternoon of coding and uploading to your VPS?
0: Do it.
1: Now, what's the next task in the chain towards MVP?
2: Do it. If the MVP isn't done, GOTO 1.
You'll end up with a tiny unusable thing, but it's something you can add to. Some people have an easier time "improving" than "starting".
I have found this video helpful as it explains further: The project plateau http://vimeo.com/13399691
hope this helps.