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.
==============================================================