Featuring fresh takes and real-time analysis from HuffPost's signature lineup of contributors
Tim Berry

GET UPDATES FROM Tim Berry
 

Concept Meets Code: 10 Tips for Entrepreneurs Dealing with Developers

Posted: 08/16/11 10:49 AM ET

I've seen it too many times: starry-eyed would-be Internet entrepreneur meets real developer, dream in hand. This is culture clash. More often than not, it ends up with wasted time, wasted money and dashed dreams. Concept meets computer code.

In 30+ years in the software business I've been a developer, a dreamer, a consultant to the dreamers and an employer to the developers. So maybe I can help. With thanks to several contributors (below), here are 10 tips for the dreamer side of the equation:

  1. Software is usually a compromise between the dream scenario, on the one hand, and what's actually do-able in software. Think of whatever your favorite productivity software, or app and how, as you learn to work with it, you learn to accept its way of doing things instead of your way. Everybody hates their accounting software, right? But you make do because it's easier than balancing your checkbook with a pencil and a calculator. Real development takes compromising what's ideal for what's actually possible.
  2. You have to listen. Developers think and talk in code (double meaning intended.) Most of the time, as you explain to them what you want, they're trying to translate between what you imagine and what software code will actually let them do. They are not necessarily articulate, tactful, or very good at explaining. You have to shut up and listen. Catch the clues. Don't think they're not understanding you. They probably are, and they're jumping ahead of you to what they can implement in code.
  3. Understand critical relationship factors. Figure out whether your developer is a partner or just a vendor. It's really hard to succeed in software, especially at the early stages, without brainstorming, collaboration and excitement about ideas. If you want a developer to just shut up and write code you're probably doomed from the start. Please re-read points 1 and 2 above.
  4. Who owns the product? You can't get around this sticking point. The road to startup success is littered with the carcasses of failure caused by disputes over ownership of ideas, ownership of code and points in between. You have to talk about it. Painful, maybe; awkward, maybe, but establish with your developer that you own the work, or that it's shared. My suggestion: own the work, but listen, collaborate, own it legally and technically (because you're the one writing checks) but not emotionally or creatively.
  5. Pay for results, not hours. I learned that the hard way, and from both sides of the table. Don't pay too much in advance. Set milestones together. Pay for achievements. Programmer hours are more volatile than Midwestern summer weather. They're like airplane seats, where one passenger pays 20 times what it cost the passenger across the aisle.
  6. Identify which developer personality is which. Developers are often multiple people, like schizophrenics. They want security, steady income, power, big entrepreneurial jackpots, ownership, and days off without worrying about anything. They're geniuses in good moments and pains in the royal ass in bad moments. Which makes them a lot like the rest of us. Try to figure out which personality is which, so you can let the genius soar at the right times, and avoid the pains. Careful with egos. It's really stupid to shut down creativity with discipline.
  7. Know your developer. Check references before hiring. Call some past relationships. We all work with the assumption that programmers are super smart and eclectic, but some pseudo-programmers are smart as scammers. Ideas get stolen and it's not illegal. Watch the movie Social Network and realize that the law supports the Mark Zuckerberg character in that script. The twins might have thought of it, but he did it. And keep in mind that most developers are good at some things, but not all things. Some focus on interface, some on system back end and so on.
  8. Design an early check-in point into the project. Never contract a whole project from the start. Instead, find a quick first step that can also be an abandonment point. It's like in a personal relationship, meeting new people, you want to get a cup of coffee first, before jumping into bed together.
  9. Get the key points in writing. No, I don't mean some big fat contract, or expensive legal work; but have your developer sign a short letter -- in English, not legalese -- that establishes who owns what, when the money changes hands and what you're agreeing to.
  10. Remember the dragons. One of my favorite programmers compared software development to Columbus setting out from the Canary Islands sailing west:


    He hoped he'd end up on the coast of India, but I bet he still feared falling off the end of the Earth into the mouths of the dragons. Software development is like that. You think you're going to reach land, but you might not.


    And good luck. Enjoy the journey. And may you reach the other shore.



(My thanks to Anthony Richardson (@webfugitive on Twitter), Brian Cole of Innovative Sports Strategies and others who helped me collect these thoughts on twitter and via email.)

(Image: istockphoto.com)

 

Follow Tim Berry on Twitter: www.twitter.com/Timberry

I've seen it too many times: starry-eyed would-be Internet entrepreneur meets real developer, dream in hand. This is culture clash. More often than not, it ends up with wasted time, wasted money and d...
I've seen it too many times: starry-eyed would-be Internet entrepreneur meets real developer, dream in hand. This is culture clash. More often than not, it ends up with wasted time, wasted money and d...
 
 
  • Comments
  • 40
  • Pending Comments
  • 0
  • View FAQ
Comments are closed for this entry
View All
Favorites
Recency  | 
Popularity
Page: 1 2  Next ›  Last »  (2 total)
10:30 AM on 09/27/2011
Programmers who can't do what they say they can do will always be a hazard in an industry where demand often outstrips supply. Given a competent programmer, the most common problem I see is failure to define the job in sufficient detail to turn it into code. Yes, it's true that iterative design methodologies, like Agile, have overtaken waterfall methods. So you don't need to know everything before you start. But at some point, you must be able to describe every decision process and action in your business model that you want to automate in sufficient detail that it can be translated into operable code. There will typically be parts of the process that you skip over because they seem obvious, but nothing is obvious or intuitive to a computer. Be prepared to invest enough of your time, or assign people at high enough levels to get the job done.
HUFFPOST SUPER USER
doublehappi
01:41 AM on 08/18/2011
so, I have a new idea and i have been scouting all around the web for a good RUBY developer who could take ownership of my product, i coudnt find one, but i did find a friend who said (and has many years of programming experience) in Microsoft Dot net, who said he would work with me but said he wants a 50% stake in the company.
The idea is mine - i am not sure how much tech is involved - because i dont know much about technology, and i am staring into the face of a guy who wants 50% of my company to take ownersship of programming and says he will take the product live.

can someone suggest something here? whats the typical equity share of the founders?
07:30 AM on 09/27/2011
Don't go directly to a programmer for end product items. There are two roles/layers that a programmer normally interacts with between you and he. Programmers do not normally discuss, or in some instance, speak with the end customer. They work through documents that call for specific capability, and are linked to a schedule of delivery.

Small and Medium Businesses (SMB's) can suffer a great waste of resources (time and money) trying to manage a developer. Seek out a firm who just manages tech projects, and let them handle the developers. One neck to choke, and you can yell at them in english.
02:54 PM on 08/16/2011
The first real tip is if you have a valuable invention witch you probably dont dont tell anyone or file for a patent with the present system you wont get anything theyve got 40 methods of theft so until the system is genuinly improved dont give them anything.
This user has chosen to opt out of the Badges program
photo
dadw5boys
Disabled Vietnam Vet
02:21 PM on 08/16/2011
Thankfully we are not dependent on Computers .
02:31 PM on 08/16/2011
Yeah, I'll remember to tell that to my trusted chevy mechanic when he tells me that the thingy he pluged into my car tells him that there is an open circuit in the alternator and cilynder 3 is misfiring.

I guess thta is better than him telling you that you need a new ECM.
This user has chosen to opt out of the Badges program
photo
dadw5boys
Disabled Vietnam Vet
02:48 PM on 08/16/2011
what a relief. all the car that were never fixed for the lack of computers from the 1920's must he piling up somewhere..
02:08 PM on 08/16/2011
What's actually do-able in software??? The main compromises come from the Time and Money available, not "what is do-able in software". That is like saying what is do-able in Music.
Software engineering is not bound by physical constraints as much as other engineering sciences.

( I might add that I believe the Engineering part of software took a giant step backwards when web development came along)

Usually if "it's not doable in software just means you have lazy developer or maybe worst: a developer that is in over his head.
02:25 PM on 08/16/2011
Depends upon what you are trying to do: there's a whole class of problems (NP-Complete problems) that are technically solvable in software but you need to wait around for quite some time for the results to come back. Likewise, just because something is software based and a solution should exist doesn't mean that solving it is not going to end up being a high level research problem that could take years to be solved.
02:29 PM on 08/16/2011
Like I said with softwre it's usually a matter of Time and Money
01:59 PM on 08/16/2011
I've tried a couple of iPhone/iPad developers and found one company that does good work at a reasonable price: contact Dave at bluehawksolutions.com
01:20 PM on 08/16/2011
It's a feature not a bug.
You want to know how Anonymous hacks so many site. It's a feature not a bug. #1 cyber security problem BAD CODE.

My 2© cents – gatoMalo_at_uscyberlabs_dot_com
http://USCyberLabs.com/blog/
01:17 PM on 08/16/2011
Just reading this article brings up so much pain and suffering I endured due to my failed attempts of having the most user friendly, logical retail website created. So much time and money lost due to broken verbal promises and not believing that these web developing companies would stick to the letter of their contracts. Anyone reading this article, Listen and follow his advice. Thinking back, if I read his article before my "adventure" I probably would have thought yea, yea whatever. But seriously, a great article for newbies.
12:31 PM on 08/16/2011
Also having 30+ years of experience (no patch boards but I did use punch cards in a Fortran class) I also agree with much of this article. However, many projects are doomed due to changing requirements. Once the customer finds out what can be done in software they always want more. Unfortunately, they often don't realize that the cost can easily double or triple due to those changes.

For someone who wants to work with developers, please try your best to put together all your wants and wishes before you start talking to the programmer. Then, in a group, come up with as close to a final product as possible, even if it means splitting it into smaller pieces and taking one piece at a time. It will minimize the heartburn and anger on everyone's part.
12:54 PM on 08/16/2011
In my experience, the Agile approach works much better than setting a tight scope.
02:14 PM on 08/16/2011
However, Agile isn't a silver bullet and most of the time it works best after a foundation is already laid. Depending upon what you are doing, you might have months of coding time before you have anything that you can show anyone to prove that you were even doing work the entire time. For maintenance development or once you can start sitting a user down in front of the software to play around with things its great, but when you are still writing backend code its a quick way to stress developers out.
photo
AGooglyMinotaur
Ahh, Theseus. It appears you are out of thread.
02:15 PM on 08/16/2011
Waterfall is dead. Long live Agile!
This user has chosen to opt out of the Badges program
photo
12:25 PM on 08/16/2011
I find it a good thing that people are waking up to the issues of off-shoring a project. Even though you may get 20 programmers for the price of 3-4 employees, communications issues mean you end up with code based what they understaood, not always what you explained.

My favorite is the make me a hot dog with mustard. So they baked mustard seed into the bun. Hot dog was uneatable.
This user has chosen to opt out of the Badges program
12:23 PM on 08/16/2011
I cordially recommend the various books on Consulting Contracts that were written by the late Herman Holtz (nee Hermann Holz). It should be required reading both for software developers and for the people who need software work done.

The single most important point of these books comes straight from Judge Wopner of "The People's Court," viz: "Get It In Writing."

The second most important point is, in effect, "specification." If you wanted an addition to be made on your house and someone showed up with boards and saws and hammers and nails, then asked you, "by the way, is this what you want?" ... you'd run that fellow off with a stick (or worse), now, wouldn't you? Everything, from houses to streets to the signs that are placed next to them, is entirely ruled by specification and established procedure.

The final point is: project management. Software is a big undertaking that involves design, implementation, testing, documentation, and many other things that can all fall through the cracks. Yet, even though the task-lists are different from other big projects, in all other respects it's just a big project.

Holz's books were not "computer" specific, but they very certainly apply.
12:14 PM on 08/16/2011
Awesome article as per usual Tim ! Thanks for the mention my friend.
photo
darquelourd
You Get What You Play For
12:03 PM on 08/16/2011
release the inflated egos ...
photo
HUFFPOST SUPER USER
Gadgetman
No sense of humor? That's not funny!
11:38 AM on 08/16/2011
There are only 10 people in the world, those who understand binary, and those who hire those who understand binary.
11:35 AM on 08/16/2011
You should not have written this article.

You touch on two issues: relationship and capability.

Relationship: first meeting with a prospective developer, execute a mutual non-disclosure agreement (MNDA). Both parties should know what that is and why it's a first step, and both parties should know at least the basics of intellectual property (IP) law, particularly the concept of work for hire and when it does and doesn't apply.

Capability: what's possible in software depends on the developer, but not just the developer. If you have to ask someone if a developer is up to a job, you're not up to it yourself, period. If you don't know enough by yourself to be able to judge whether software is doable, then it's probably not if you're in charge.

Software is not magic. If you think it is, find something else to do. If your developer thinks it is - and the dragon metaphor suggests as much - you have a big problem.

I see headlines for news stories that start with "Why" when they should start with "How." If you'd write such a headline, then you should stay as far away from software development and developers as you possibly can; you just don't get it.

Successful software projects are invariably those for which the person in charge understands both "why" and "how." They may not be able to do it all alone, but anything less makes for bad relationships and all the rest.
photo
HUFFPOST COMMUNITY MODERATOR
Pucker
My micro-bio is pending approval
11:53 AM on 08/16/2011
Good points.....

Except I'd change it to "Software is [usually] not magic". I agree that the vast majority of software projects are straight forward enough that there shouldn't be any magic involved. If you are building an accounting package or stringing together web forms, then there really shouldn't be mystery.

That's not the case if you are building voice/facial recognition software or applying neural networks to find something in data that only a human brain could see before. There be dragons out there, but not on well traveled terrain.

Also, the fact that the NDA is common sense, is the very reason it's on a bullet list of things to do.