Ask HN: Help - I've hit a wall.

62 points by chris_dcosta ↗ HN
I need help. I've reached a point where I have several parts of the project that are all interdependent, and it seems nothing can proceed without a huge amount of parallel work.

I'm a single tech founder and I feel like I'm going round in circles trying to get through this wall. I'm thinking of trying some freelancers but even the thought of explaining the dependencies is like a heavy weight in itself.

It all came to a head today, when I just realised I can't even beak down the next step into small prices because of the dependency. It's getting me down and I've run out of ideas to get me through. It feels like I'm wading through mud, and actually the end is in sight, but it's like looking at the summit of Everest from the ground.

Does this make any sense to anyone? Can you help?

33 comments

[ 5.4 ms ] story [ 82.9 ms ] thread
May I suggest distraction. Get your mind off of the problem and let it be for a day. Not sure if this works for others but for me, I go for walks. Often the solution, or a new tact, would hit me and I could then sit down and try my new idea.
This is good advice. I often get stuck on some problem and try to power through it. This rarely works and I often have to give up frustrated. Several days go by and I forget about the problem completely. Then one day, I remember the problem and a good solution just appears. It works so often for me, but I never do it intentionally.

Just take a break when you get stuck and do something else.

I think this is normal - for any project that is reasonably challenging. It is a tough slog to plough through all of the "must have" code blocks (or what have you) to get to that near mythical minimal viable product.

I am at a similar stage with a current project - where I can see there is still lots to do (some of it cloudy - so not a clear view to the summit) - you just have to keep plugging away and - well the good feeling comes back when you realise you have got through it with a good solid base of code behind you.

I have this problem now and then. I've begun to treat it as a sign from my subconscious that my code has become ugly and some housekeeping/re-factoring is in order.

Sometimes I can push through (e.g. due to a deadline) by picking at individual tiny features and working my way through the spaghetti until they work. I generally start by adding something visible to the UI and keep at it until it works. This has the advantage that I'm almost guaranteed to make visual, visible progress, which helps with motivation.

But often, the only choice is to take a step back, accept that I'll be making "no progress" for a couple of weeks and go clean up my mess and re-factor the code. :-)

I think the problem is that there's only one mind on it. As you said the project is quite big with a lot of dependencies, it is quite possible mind becomes numb to the future developments. Here's my advice. Pick the parts that might interest you

* Even if it takes a day, try telling it to a rubber duck. Take it for a walk if you guys get tired at desk. * Talk it to at least one friend who can try to understand. In my short experience, this helps in realizing how we can or want to proceed. Or even go with the freelancer your thinking to hire, you might succeed. Can't know unless you tried once. * Stubs and skeletons * Sequence matters. If it is only you that has to do parallel work, you have to do it anyway. Even with a freelancer, you should decide how to proceed. So, either ways, even though hard, you need to break it up. Try not to multitask if you do it alone.

And, I think more technical details might fetch you better advice. I could be wrong!

I agree with the other posters. You need to take some time and get re-inspired, and to do so, it helps just talking with somebody about it. The fact that you're posting about it here tells me that you're likely to make it through (otherwise, you would have quit already).

Seth Godin calls this point "The Dip". It's a trough in the lifecycle of a project/plan/development/etc when the high and excitement of starting something has died off and the rewards don't seem worth the remaining effort. I can tell you, though, that if you put in the time, get inspired, and slog through the toughest part of "The Dip", you'll come out the otherside with something great. Most projects don't make it past, so there's great value in doing so.

Here are some links to read more about "The Dip":

http://www.slideshare.net/stevecla/pushing-past-the-dip-how-...

http://sethgodin.typepad.com/the_dip/

http://www.ribbonfarm.com/2007/09/06/seth-godins-dip-and-mul...

I'm glad you brought this up, because I'd also read about this, and had always dismissed it thinking "I'm not going to let this happen to me" (don't we all?) - but i recognise it now that you mention it. It must have crept up on me.

I'd like to add one more point, in that the project has reached the stage where I was starting to get people excited about it when it was presented, as opposed to the early reactions where the concept wasn't fully formed, and most people couldn't relate to it. I think I am feeling the pressure of expectations as well. People are now asking me when it will be ready, whereas before there was no such anticipation.

Well then that's a score; if people are excited and asking about when it's ready, that's a perfect opportunity to say "I'm not entirely sure yet, because ..." and try to explain the interlinked problems to them. In the process of explaining them, you'll eventually clarify your own understanding to the point of an "aha" moment. I spent about an hour last night trying to explain the basics of something I've been working on to a (non-programmer) girlfriend, and had several "aha" moments about the much deeper details of the design simply from trying to explain the surface.
I would look really hard for any way to even just release a single feature of it — just get _anything_ released and "working". You need to reinspire yourself here, and one hell of a good way of doing that is being pushed by peoples feedback. I know for myself that at the point you apparently are at its very easy to take a break and think you'll come back to it later — big mistake. If you can't muster the energy to release something now then chances are you wont ever.

Try to release something, gather feedback and use that loop as a motivation for doing minor, really minor, fixes and improvements. If you can manage that you can pick up new steam and in the same time learn more about what direction you should be taking.

Stop writing, start cleaning up what you've written. Then, after a while of cleaning up the solution will fall out of the sky all by itself.

What has happened is that you have lost the overview, cleaning up your code will restore that.

Thanks this is a really interesting take. I had already tried the "walk away" approach, for more than a month, but coming back to it seems completely overwhelming. I like this idea because I think I get what it's doing: it's reminding you of all the parts bit by bit, and allowing your mind to re learn re think, and rebuild the project in your head, and it's also a utilitarian task meaning that you're not thinking (stressing) about solving something that is already solved.

I'm going to give this a go. Thanks.

Yes, you got it perfectly. Good luck!
Complementary advice: while you rebuild the outlines in your head again, re-evaluate your old decisions about what really needs to be there.

If your overall vision is too solidified in your head, there may be some minor decisions that were a good idea at the time ("well if we're already doing X, it's easy to also give them Y!"), but now that you're down in the muck they are complicating things far more than you imagined.

Sometimes you can just drop a few things you actually don't need (but have become fixed in your vision though habit), ...and dependencies start collapsing, and the whole thing takes on a new shape.

Also: don't overlook temporary solutions.

You can often fix a dependency with a cheap hack that obviously won't scale in the long run... but it gets you over the hump, and you'll be able to replace it with the real solution down the road.

Yes. Sometimes when I feel stuck or paralyzed, I like to just fiddle with the existing code, refactoring here and there to do some obvious albeit small improvements. This entrances me into a little "flow" experience, and suddenly some bigger and more interesting opportunities emerge spontaneously. That's when I get really inspired and make a lot of progress.

Sometimes it's good to walk away, as in literally take a walk and utterly ignore all your problems, and sometimes it's good to chip away, as in doing one little easy thing that's within your immediate power, however meaningless it might seem. I find that such small efforts produce a sort of "compound interest" effect, where your gains start to pile up faster than you expect.

You need to cut features from the target.

Drop me an email at the address in my profile if you'd like me to help you cut a lot off to start with.

Males sense to me. I'm going to add to the chorus in hopes that it reinforces your belief that you should listen to us: Step away from it. Stop working on it for as long as it takes for you to get your mind straight. After a few days I guarantee the answer will appear from thin air. That's always how it goes.
This happened to me 2 weeks ago. I put it down and walked away waiting to get reinspired. I am starting to get hankerings to pick it up and power through but not enough to go again quite yet. I know when motivation strikes I am 50% complete and I am a relatively short distance to the finish line.
Happens to me all the time...I usually have to unplug completely, sometimes for a day or two. I'm in Chicago and we have awesome parks and lake Michigan waterfront...so I'll go wander around outside for a few hours. Helps to clear my head...and if that doesn't work I'll put the whole thing away and go read a book or something for the rest of the day.

One of two things usually happens...a half hour after I start reading a book...the solution will POP into my head...or TWO, I'll wake up the next morning with the solution...works every time...

sounds like you need to bring out the scope hammer.
You. Can. Do. This.

Breath, go for a run.

Take the time to refractor your code. Cut non-fundamental features, focus on shipping something. What can you achieve in the next week? Focus on that.

Disclaimer: I'm not a programming expert, I've only been coding for 6 months. However, if you want to bounce ideas on marketing your product, feel free to reach out: username@gggmail.com (I do everything from lead gen to paid search marketing for a living - would be happy to help where possible).

If you want to chat about it, add me on Skype.

My advice: Do you have customers that paid money and are waiting for this particular problem to get solved? If not, then who cares. The world is fine if the problem doesn't get solved tomorrow.

If you are running out of money, go and do some freelancing/consulting. Get back to it in a couple of months, and you'll see it can be solved differently.

Don't try to solve the problem now. Your mind is probably too busy and anxious calculating future predictions of the outcome (and what got it here in the first place). Get back to it when your mind stop these calculations, you need more brain CPU time to solve this.

As others have said - take a day off. Get it out completely out of your head, and then when you get back you will likely get a different perspective on the whole thing - a larger picture, sans minutae. And if then it feels like a rewrite, rewrite it :)
I'm also a solo founder/business owner. I get myself bogged down in projects, sometimes to the point that I can't pick out anything to focus on. This is definitely where having a partner/co-founder would come in handy.

The way that I've dealt with it so far is I'll grab one of my friends, technical or not (technical would be preferred) and I'll just start dumping. I'll go through all the things I've identified as hurdles and why I'm struggling with them. More often than not my friends don't have to say anything! Just talking to them helps me find something I had missed. They often have nothing to add but just speaking the challenges helped me find solutions. Someone mentioned talking to a rubber ducky in another comment and I suppose this has a similar effect.

Also, as mentioned many times, take a break. Go for a hike or go see a movie. Do something else. Give your brain a break.

You can also try getting out good ole pencil and paper and writing things down. Start a list of the smallest possible thing you can deliver and deliver it.

It's all doable given enough time so give yourself time.

very good points. Learning by teaching is one of the best ways to learn about something you yourself are struggling with. I think the reason for this is because you are forced to fill in the gaps to help your audience understand, while in your head gaps in understanding are justified. Also, fantastic point about taking out the paper pad. I have 4 tablets and 3 computers and I still write all my diagrams on green paper.
This makes sense.

Your project is too big. Get a smaller piece or version working that does something useful for someone.

Don't refactor code.

Just get something small(er) working.

They say that you should never re-write a project, but that's in the context of something deployed and operating. It sounds like you are not deployed.

You've put a lot of time into the project so far, so you've learned a lot about the project and its domain.

When you first started your project you didn't know as much as you do now.

So consider using everything you've learned to date, and start over from scratch. Total re-design, total re-write.

If you have trouble explaining the dependencies of your own project to other developers, that's a sign of ... something. If you can't break the project down into pieces for yourself to work on, that's a sign of ... something.

Ok heres an insight that I want to share.

So basically if you are tired of attacking the problem vertically, just leave it and try to attack it horizontally.

Now of course unlike my fizzbuzz problem, your problem can have a lot of more dimensions than two but then it can even become more fun.

Also never forget that you are doing this because you find this the most fun thing to do.

If you haven't yet, you should try dependency injection. You could use stubs so you can focus on the architecture. Then go and replace one by one by the real thing.
Go for a half hour walk. Twice a day if possible. Alone. No distractions or talking.

It will work wonders. I promise.

I usually hop on my motorcycle and hit the road for a bit. You would be surprised how much thinking you can get done and it doesn't feel like thinking!

I never knew this would be a hidden benefit when I learned to ride last year.

Yes, it happens when one reaches the limits of reason. Only one of two (a-rational) things can get you unstuck: an irrational act or love. Unfortunately, unless you are willing to lose it all, you'll probably have to rely on the former.
Describe the problem here. You may get some good ideas to simplify or break the deadlock. Merely writing it out for others to understand may even trigger some new ideas of your own.

Check out this discussion for Pud's question "400K users, what now?"

http://news.ycombinator.com/item?id=3850739

You gotta be impressed by his humility and pragmatism, and you gotta be impressed by the wide range of interesting ideas presented.

Try it out!

Forget about coding. Make yourself a nice cup of coffee or tea. Sit down. Fire up a browser and watch a few interviews on Mixergy full-screen. That ought to clear-out the "funk" and get you inspired to go kick ass again.

Not affiliated with Mixergy. Just a happy user and premium member.