It was Q1 of 2012. It was my first startup. I was a recent MBA, and I was talked into being a cofounder with another guy (CEO, if you give a shit about titles) - we were a two-man non-tech team in search of a technical co-founder. We'd just gotten $100k in angel funding from a person you've heard of. We found a guy with the chops who was willing to work for $60k annually and 2% equity after he finished the MVP. He said he thought it would take about 3 months to build the product by himself, based on what we had identified as a group as would be our 'MVP.'

What ended up happening is he ran a few weeks long on building the product - he ran into a bunch of rabbit holes with Paypal, a complex transactional model, social API's, complex features that we would add to his workload on a daily basis, all while expecting the completion time to remain the same.

We sent him a particularly curt message one night asking him when he ever thought he'd be done with all this. He sent us a long message back - and at the time I didn't really understand and was a little furious at his response - but now that I've been a student of Rails for the past 2 years and have built apps of my own, I understand and feel truly sorry for the way that we treated him. We treated him like a code monkey, a means to an end, a worker and not a partner. I don't think that the CEO ever really understood what was happening, and even in retrospect I don't think he views developers any differently - maybe worse. I've apologized since, and he and I still talk quite a bit, but I wanted to paste his response to us in that email as tribute to his patience, professionalism - and as a tribute to all truly great developers working with/for people who just don't know ANYTHING about coding.

==============================================================

Guys,

Today went well. I was able to skin the profile page. I started the

listing page and finished it somewhat but I still have to tweak it. I

added gravatars and I fixed your account (per previous email). I also

added the terms of service page as well as the privacy policy page.

I'm currently working on the internal header.

I know that we are all very anxious about finishing this project. I'm

looking forward to not being stressed out, to not working my evenings

and weekends. I'm also looking forward to seeing a finished project. I

have invested a lot of time and energy into this project and can't

wait to see users interacting with it. I know that you share that

opinion and that while I carry the stress of development, you carry

the stress of keeping the project funded. I know that is why deadlines

are so important to you since they help you figure out the business

end of everything. Believe me when I say that when I set a deadline, I

fully intend to hit it. Unfortunately, development is a process.

When you are working on a project this complicated, any number of

issues can jump up and set you back. It makes counting on deadlines very

difficult. I have worked in this field for over ten years and have often

seen projects take a lot longer than a team thought they would.

I understand your frustration at not hitting deadlines. I also am

frustrated. I would be happy to give you a finish line, to be able to

tell you how long the rest of these tasks are going to take. I would

also be happy to put them in the basecamp calendar. However, I want to

make it perfectly clear that this doesn't mean that on that day you

will receive a finished product. That may be hard to hear but when I

set deadlines, I am making a guess at how long something is going to

take, and until I am working on it I cannot be perfectly certain of

whether I will hit that deadline or not. Have you ever started a

project thinking that it is going to take an hour only to spend eight

on it? This is just like that. Although I have been developing for

over ten years, this is the first [COMPANY NAME REDACTED] I have ever

built. I can honestly tell you that I can't work any harder or faster.

I have to stop to eat meals and sleep.

So, where do we go from this? Obviously, not being able to count on a

finished product by a certain day is not ideal for you. But, neither

is working seventy plus hours a week to finish the product ideal for

me. I think our only solution is to communicate better. I will set

deadlines in the calendar and I will set a deadline to finish the

project. I will continue to work as hard as I can to finish this

project. I will communicate with you on a daily basis what I have

accomplished on that day and where we stand with the deadlines. In

return, it would be great if you could communicate with me what

meetings you have, what they pertain to, and what you need for those

meetings. This will help me prioritize the remaining tasks and give

you what you need to meet with interested people. It would also be

helpful if you guys took a more active role in testing. When I say

testing, I don't mean checking to see if it works once or twice. What

I mean by testing is doing everything in your power to break what I

have made. Try to think of any criteria that a user would use. Then,

when you are finished testing, provide me with notes on how it worked,

what needs changed or what would make the user experience better. If

you can test features as I am rolling them out, we can take the site

into beta very shortly after finishing. This would be a great way for

you guys to have a more active role in this part of the project.

I know that you may not be happy with my response. I'm just trying to

be honest with where we stand and to set reasonable expectations for

the next few weeks. I would be happy to discuss all of this with you

over the phone or in person if you need clarification on anything.

This is a short article that sums up where we are right now. I'm

hoping that better communication will help us in the next couple of

weeks to finish this project. I will put deadlines into basecamp

tomorrow and I hope you understand that I'm working as hard as I can.

http://37signals.com/svn/posts/2136-its-not-a-promise-its-a-guess

Hang in there. The end is in sight.