I have been thinking a lot about our relationship lately. I hope you know how much I appreciate you and how much I want the best for you.

I know we have struggled to communicate over the years. We haven't done a good job telling each other what we need from each other. Frankly I feel--my therapist says I should use "I statements" when having this conversation with you--that I am not being heard. But when I reflect on why I feel that way, I must acknowledge that I have done a terrible job explaining what I need from you and why.

So here it is, at long last. This is what I have wanted to tell you for long.

I need to understand what you do to a level of specificity that I can teach a computer how to do it for you.

This is why I ask all of those punctilious questions. This is why I say things that annoy you like "what do your users find valuable about this?" I am building a business machine for you.

Literally. I am making your business into a machine capable of executing your business logic without constant human intervention.

You came to me, knowingly or not, for this purpose. You want to attract, inform, track, serve, and respond to your users in a predictable, reliable way with minimal to no interaction with a human being on your staff. This means that you want me to teach a machine how to run your business for you.

I need you to reflect with me on the consequences of this.

Think about what it takes to build a house. Think about all the otherwise invasive information about your daily life that you would want the person designing it to know about you: how many people live with you now and how many you expect might live with you in the future; whether you want to engage with people while cooking; if you want dim, intimate rooms or bright rooms full of light; if you entertain and in what way, etc. You would get that the more that you understand about the kind of life you want to live and were able to communicate that information, the more likely it is that the home would accommodate that life.

Now think about your business does. If you needed to hand off your entire business to someone, what would they need to know? Maybe something like this:

  • Who your customers are.
  • What you offer them.
  • Why you are better at offering it than your competitors.

To support this essential information, you would likely show this person (who will be executing your business for you) supplementary texts. Maybe you would introduce this person to one of your customers. You would share the kind of information you have about this customer and provide a story about what your business does for them. Maybe you would show them content like a news item and explain its value. You would probably want to go into great detail about your products and services and what your customers like about them.

And this is just to maintain the business you already have.

But you also want this person (or machine) whom you are handling the execution of a large portion of your business to improve your business. To make it provide additional services, conveniences, enriched contextual information, and marketing enhancements (the system remembers who you are, what you like, what other people like, how the content you are looking at now relates to other matters, etc.). But all this--and this is really important--cannot happen until we have implemented your business as it exists now.

I know this last bit is particularly hard because when you thought about getting a computer to run your business for you, you thought about all the great things a computer can do so much more efficiently and reliably than us mere mortals.

But remember that it is your job to tell me what your business does and it is my job to make a computer do it. You don't have to figure that last part out at all and I certainly can't figure out the first part without you.

But here is the last thing I wanted to tell you:

I really want this project to succeed.

Completing this project successfully is just as much tied to my livelihood and professional pride as it is yours. You are trying to make your business a functioning, reliable machine. It is my business to make this so.

This might seem like an obvious point but I think that you forget just how invested I am in making your project succeed. Your project is my full time job--the thing I think about when I am biking to and from work and on walks to the grocery store. I have strokes of genius in the shower. I am dedicating somewhere between 3 months and two years on this. I care.

And I feel the need to remind you of this because it often feels like you don't want to succeed. I know it may hurt to hear this but here are some things you do that make me feel like you want to fail:

  • Bad: You do not have examples of each of the pieces of content that you intend to make available on the site.
    Worse: You don't understand why the person who is building the infrastructure to create, manage, and display this content would need this so urgently when, you insist, you can just "add the content yourself later".
  • Bad: You do not know how to access your current database or code base.
    Worse: You put off getting this information for months.
  • Bad: You do not know how and where you will host the project.
    Worse: You put off making a decision about this (even with guidance) until the last two weeks of the project.
  • Bad: You went to a designer and got a beautiful design but did so without consulting me, your engineer.
    Worse: The designer doesn't know what your business does or what your content looks like.
  • Bad: You want to spend our limited time together discussing carousels, slideshows, popup boxes, and other enriched content that currently does not exist for your business and for which none of your customers are asking for but are disengaged when we discuss if, at all, you want your users to ever login.
    Worse We never discuss what the experience of anyone besides the anonymous user (someone who does not log in) will be like.

Here is the secret to success for both you and I: the more you understand what your business is, the more I understand from you what your business is and put that logic into machine executable code, the more your customers understand what your business does. And that's success.

Ensuring our relationship starts off right

I am not going to leave you in the dark about my feelings any more though. I have created for you (us) a checklist called: Are you Ready to Hire an Engineer?. Using this document, we can help be sure that we are ready to commit to a relationship together.