I was contacted this week by an old acquaintance, and he had a proposition for me.
"Hey, I hear you're a programmer! That's great, because my buddy and I have
this idea for a business. We have everything important figured out, and all we need is a programmer to throw it together."
On the surface there isn't really anything unreasonable about that statement. These guys know what they want for an application, they "just" need the technical know-how to implement it. So, quelling my urge to say something flippant, I penned a reasonable response.
"Well, I have some other projects I'm involved in right now, but I'm always happy to take a look at something new and see if it's a good fit. If you want to do this as a strictly cash-for-labor exchange, it would probably take $X-per-hour to get me interested in spending time on it. If, on the other hand, you don't have any startup capital and are interested in trading equity for this work, I would probably have to see at least an X% cut of the company (and this option would, of course, be predicated on whether I felt the business was a viable one that I'd be interested in being invested in)"
Although I really didn't expect him to be interested in meeting me at those terms, I expected maybe a counter offer or an indication that he was expecting Y instead of X. What I actually got as a reply surprised me a little.
Hey, so, we aren't really prepared to pay. I mean there isn't that much to it, it's just a PHP website with a MySql database, I was hoping you could just throw it together as a favor. Oh well, thanks anyway
I thought about this for a minute, and realized that implicit in the conversation are several assumptions (or perhaps more accurately, conventionally perceived "truths") with regard to the craft of software development.
1)"there isn't that much to it" = "software is really easy to write"
2)"We have everything important figured out" = "in a business, the actual software is just icing on the cake"
3)"All we need is a programmer" = "software developers are cogs in a machine, or interchangeable components of an assembly line"
So then my question is this: Are these common assumptions within the software industry, and more importantly are they accurate?
Assumption 1: software development is easy
This is certainly an opinion I'm used to dealing with, and I'm sure most of you have experienced it as well: "This isn't rocket science, all we need is a program that does [insert complicated feature here]". Unfortunately it's all too common to be under the illusion that software is about 1/10th as tough to build as it actually is. Now we could say that's not unreasonable to assume, because to a non-technical user the User Interface IS the software, so they only can perceive 1/10th of the full application anyway. Based on that fact it wouldn't be illogical to conclude that it's no big deal to just add another button there at the bottom that completely changes the work-flow of the application. This is one misconception of the software industry that in my opinion can be 100% debunked: Software development is hard. We have tools to mitigate that; there are good development methodologies that can keep us focused on what's important, and good tools that can amplify our productivity, but at the end of the day it's difficult to produce good and simple software.
Assumption 2: software is just fluff compared to the business
This is another attitude I've encountered more than a few times, and again the surface value of the argument seems reasonable. After all, software can be made to do anything (within reason), so it isn't really the software that we're selling, it's the business concept. It's the product or the service that's making us them money, not the code. Now in a way, that's very true: great software that has no utility is perhaps not great software after all. However, it would be wrong to take that statement and turn it around to say that a great business idea will succeed regardless of the software that acts as it's delivery medium. Whether you are a product or a service company, the software is telling your story and your business WILL be judged on whether it is easy to use and doesn't break down. The greatest business in the world would not be able to overcome a millstone of bad software around it's neck. This misconception is, in my opinion, false and getting falser.
Assumption 3: programmers are interchangeable pluggable components
FULL DISCLOSURE: I'm a programmer, I have a vested interest in this not being true.
Nevertheless, I have experienced this opinion many times during various job-searches. A company is experiencing time-line problems, and the "obvious" solution is to get 5 more programmers. More manpower = more progress, right? Now of course this is a biased opinion, but I don't think all programmers are created equal. Plenty of other bloggers have written on the subject of the "Rockstar" programmer, that mythical super-productive hero who can carry a project on his back, and I'm not entirely convinced that he exists. That being said, I do think that the right people in the software developer roles on a project can make a difference of at least an order of magnitude. What might take one average-joe-coder 10 hours might be done in 1 if you have the right guy for the job, and if that's true I think I can safely throw the above assumption right out the window.
What do you think? Has the software industry changed to the point where the above assumptions are becoming more viable? Or is it just that the things potential customers believe about software are changing because of the pervasiveness of technology today?
Monday, April 14, 2008
"All I need is a Programmer"
Labels:
business,
Development Practices,
software
114 comments:
In my experience people with this proposition are just as seriously underestimating the business side. If you're going to take on a business partner, that partner better be able to bring in money. You should ask how much money they're bringing to the table and what the sales pipeline looks like. If both are empty, then they aren't going to hold up their end of the bargain no matter what you build.
Hi Ethan. This perspective (from others) never ends. I've been in the business of software for almost twenty years now, with a significant portion in the video game industry. Usually about twice a month a get someone with a half-baked idea that 'just needs a good programmer' and ;probably won't take much time'. But is completely unwilling to pay up front, or to realistically divide the risk/reward.
Out of hand I dismiss all requests - they come to often by people who havent' the faintest clue what they are talking about, or able to understand how much work is involved.
It would be cool to think that this ends in the real world (where you have to handle people other than programmers, but at the same company) but no, most people believe that all programmers do is 'type'. I kid you not.
From someone coming from a different angle, I'd like to hear your opinion on something.
Although I have extensive knowledge of the web industry and the underlying technologies involved, I guess I would be considered a "business guy" by any programmer who considers himself a true hacker (I've studied programming, but only intro-level Java and C).
I understand this, and when I'm looking for a programmer, I make it clear that I not only want to offer him significant equity in my business, but also learn how to code by helping him and following along.
Now, apart from those two practices (in both cases letting the programmer understand that I see the implicit value he adds and therefore consider him an equal member of the team), what can I do to be a "programmer-friendly" founder? That is, what other steps can I take to make programmers want to work with me despite the lack of programming knowledge myself?
Look forward to hearing your response.
I have been a professional developer for about 10 years now, and my perspective is that these "myths" are becoming stronger/broader in acceptance. The sad thing is that when you try to educate someone to the contrary, they think you're prevaricating. Oh well.
@harish
"but also learn how to code by helping him and following along"
This is not helping him. If you hire him for his years of experience, you cannot expect to leach off of him without hindering him. You will never achieve the years of experience he has in this way. My boss proposes this to me all the time and all I can do is laugh it off, as it is truly laughable and illustrates the points of the article.
I get the same expectations as a writer. I have this great idea, I just need someone to make a full blown screenplay or novel out of it. Of course I can't pay you, but if it sells, I'll throw you some change. I didn't realize that people applied the same line of thinking to programming. I guess nescience pervades all disciplines. Bummer. I'll keep this in mind next time I need a plumber. I can't pay you but...
We get this in the movie business all the time. People come over and say "I've got a great idea for a movie - how about I TELL you the idea, YOU WRITE the idea, and WE SPLIT the money." I always have to laugh, for two reasons: 1) Most of the time, their ideas really aren't that good. They're something like "It's about a guy, like, me, who... uh, works in a job like mine, and uh, has a problem with his boss... (insert the most recent problem he's had).." and 2) because there's really no shortage of ideas in the movie business. There are a lot of GREAT ideas, and I see them every day - many of them failing at the box office because the ideas are fine, but the scripts are awful. The real hard part is the writing. It's HARD to write a good film. And I assume that it's hard to write a good computer program. It's just human nature to assume that certain things (like creativity, acting talent, running a company, being the boss, programming) that these things are easy and ingrained talents they all have, but just haven't "developed" by spending a few weeks practicing - rather than being skillsets that take many, MANY years to learn.
Every developer knows that software development difficulty is dynamic. On one end you have easy to solve problems; I need to change the color. All the way to the other end; how do I calculate the ToE?
Humor aside, web based database isn't overly difficult but certainly not something a developer would want to do for free, on his/her own time, without any return for the effort, especially if the business needing the work to be done is serious about actually getting it done.
I'm personally affected by these very software developer beliefs. I'm trying to code an app that uses custom business rules to generate data on the fly based on those rules. Seems simple enough. Except when I peeled back the lid on the one-off's, unique case scenarios, and primary customer exceptions, did I realise just what ball of 10 yr old xmas light strands I had before me. It certainly feels Sysiphean.
Regardless, I agree for the most part. Just that there are varying levels of difficulty.
I get that sort of request from random aquaintances on a monthly basis. I always immediately tell them I've got too much work and can't take on more (which is mostly true), just so that I don't have to listen to their hare-brained idea. :P
One way to get him to really think about it is to reply with something like.
Sorry to hear you are not interested in discussing this further. If it is trivially easy and potentially profitable, it should only take an hour or two and cost you under $1000 (I'm guessing) which seems like a bargain.
Another way to think about it is I don't sign NDAs on volunteer work. If I chose to do it for you on a volunteer basis and saw that it was easy and profitable, I might be interested in developing my own implementation. Whereas if I was a contractor obviously the contract would be written to prohibit that.
I wish you well finding a volunteer programmer that isn't a threat to your business plans.
I have been in this position before. The Principal of a new venture just says "You can throw it all together for us." What he was really trying to do is to devalue the service he was asking for as a way to jockey for price position.
My response was to ignore the subjectivity of the matter and gave him a straight hourly rate. Everybody was happy in the end.
Mark Evanier wrote a series of articles called "Unfinanced Entrepreneurs" explaining why you did exactly the right thing. In his case it's about Hollywood comedy writing, but substitute "programmer" for "writer" and "websites" for "sketches" and you've got a lot of good advice. They're the top three links here.
I am a web programmer and the three axioms you've presented are becoming more and more widely accepted as true. Personally I feel the cause is a massive increase in the number of amateur web developers and overseas web developers. Over the past 3 years the number of 'freelancers' have exploded, it's easy to "get a coder to just do this", then go to someone else and get them to "make this small change" -- and for the most part this works well because all the client sees is the end result. The trouble comes when this is done continuously throughout the development of a single project.
The trick is convincing people that having a well thought out design is important and will save them a ton of money in the future.
Have these people never heard of eLance? Not that you'll always get top code from India, but you can get something out there to prove your concept and start going after users/investors written by someone who's happy to have the work. All this for a small fraction of what you'd have to offer the US-based friend/acquaintance to keep from insulting their dignity. Win-win-win.
When I asked that Dyson guy to help me engineer a new type of vacuum cleaner, I had no idea he was going to build 800 prototypes.
It seemed so easy when I thought about it.
I've met one or the other misconception about the act of programming both with managers and clients, on the rare occasion also with friends and family members.
I think that in some perverse way these misconceptions are reinforced by the environment they create. If you think of programmers as cogs in a machine, all the programmers you will be able to hire will be those that are cogs in a machine.
And in some contexts, these misconceptions may even be justified. However most software is done by small teams in a demanding and difficult environment both technically and by requirements.
I think the bottom line is, if you haven't worked with good programmers on successful projects in small teams you haven't seen how 95% of all software gets done and hence you lack a frame of reference what programming is, and you replace your lack of experience with misconceptions about the majority of programming.
This is so close to another recent post about Why Student Programmers Rant about Business Students with “Ideas”
I think I might tell them that Staples has on sale right now those easy buttons. Go buy one.
This happens quite often, unfortunately. in this case, I doubt it's worth thinking about any further. As another commenter said, they are probably "just as seriously underestimating the business side".
But the bigger issue is in the value people place on "ideas" over anything else. As an entrepreneurial software developer, I could give you 10 business ideas and plans in as many minutes. It's simple.
The hard part is making a business work. Sales, marketing, product development, accounting, process design, etc.
When someone comes to me with an "idea", generally I have 10 better ones in my pocket than theirs, that I haven't touched because I know the difficulty of getting an idea to market and being successful at it.
I think lost of people (possibly most people) think programming is about the same as skilled factory work, like working on an assembly line, and that software is assembled like any commodity, like cars or computers. They don't understand that a programmer can't just take a bin full of parts and assemble a system to run their business.
The old "1% inspiration and 99% perspiration" quote comes to mind (Edison?). I find that referring people to sources of information about how they can do what they want also educates them on whether something actually easy or hard. And getting the hourly rate in early on in the conversation, as you did :-)
Also some business owners are just looking for free handouts. Don't be a sucker.
I get this type of thing a lot in graphic and web design. I think in my case, my field (like art) is not thought of as a profession, but more like a hobby.
Maybe now the open source movement has recently become more well known, companies are starting to think programmers love their work like a hobby. So why would you offer someone money to do work which isn't really work? (or so they think!).
Well at least you haven't been offered pizza, meals etc... for your work yet. Just 2 days ago some guy offered me a 5kg bag of rice. Its a good thing I found a more stable job.
It's been my experience that if you make something look easy -because you either do it well, or marginally better than the person requesting the work- then people assume the task is easy. Effectively people see you in the archetype of a wizard and want you to wave your magic keyboard wand to create profit.
@harish
Your idea about wanting to learn by following along is interesting, but I think it needs to be approached carefully. You don't want to have your developers feel like you're looking over their shoulders. This will turn a lot of developers off, in my opinion.
But it does seem like a perfectly valid approach if handled correctly. If I may, I would suggest that you let the developers do their work on their own. Let them set set their milestones for the project, and after each milestone is reached, schedule some down time where you sit with them informally and have them explain the code to you.
The act of developing code is, for a lot of people, extremely attention-consuming. It's very hard to divide your concentration between building something that works and explaining it to someone at the same time.
Where did this assumption come from that PHP is so simple, a caveman can do it? Why don't they just write the damn code themselves using "PHP for Dummies" if it's not worth any money?
I agree with your article fully. As a Network Engineer I see the same thing all of the time. People are ignorant to the fact that it takes a lot of time, effort, skill, money and passion for your work to be good at what you do.
Outside of work I try to not discuss what my job is with others unless they are in the field themselves because almost everyone I meet that does not work in the field immediately wants you to "do them a favor." My Best advice to you is to create a pay chart that gives you a rough outline of what it would cost someone for certain things, but at the same time take into consideration family and close friends and have discounted prices for them. This way when presented with something like this you can show them your rates right off the bat. I started doing this because my sister-in-law started taking advantage of me and always asking me to fix something on her computer or home network.
People need to realize that this is your job and it is how you make a living.
Now don't misunderstand me I am not a "donkey" and if my family or friends ask a favor of me to fix there computer I am usually more than happy to do it for them, but if it becomes a habit I will let them know that I need to either be compensated for my work or they need to hire someone else to do the work for them and this seems to work out well.
I enjoyed reading your post and wish you the best of luck in the future.
You missed one misguided assumption. The potential partners already suggested the "How". PHP and MySQL? Why are they suggesting what tools to use to do it?
I've seen this every now and then - it's a pretty good sign you don't want to do any business with that person, regardless of the terms.
I've found that in talking to clients with little prior software experience, speaking almost entirely in construction similes is good: "What you're saying is just like if I told a general contractor 'Can' you just build me a house as a favour? I've already done the hard part - I've sketched the layout on this notepad and I know what colour it'll be. And I've already figured out who to invite for the house-warming party!'"
The smart ones figure it out pretty quickly.
I've also had this conversation during a meeting a few times in my career:
Me: "just" costs you double.
Them: Huh?
Me: Every time you use "just" to describe a feature or a process it tells me you've made a gross assumption about what I'll need to do. That's when I get bit on the ass so every time you say "just", it costs you double.
Again, the smart ones figure it out pretty quickly. The ones that don't, I don't want to work with them.
Good post, this one. I hope we as an industry figure out an amicable way to solve the problem with the rest of the world.
Your #2 is close. Software *is* easy - anyone can go and write a calculator program to solve their own problems pretty quickly.
What is *hard* is the software/business interface. Taking a business problem, casting it into code, and doing so in such a way that someone besides the product team will find value in it - that's where valuable programmers show their worth.
Yes.. Sad. Creating software takes a certain personality type that many people do not have. Similarly, playing with gadgets or systems administration is a skill I don't have. But many more people seem to do well at modifying or fixing software already created. Some people just like the debugging process. I hate it. I like design and getting it basically working then moving on to the next set of concepts. It's very strange to me that many people can learn a programming language, modify and debug, but not create from scratch.
It is a common-place that medics get asked about other's illnesses at social gatherings. One traditional response is "Ooh, that looks nasty! I'd find a doctor on duty to look at it." Similarly, perhaps "hmm, sounds like a job for your IT department at work" might help?
While I was in college an acquaintance of mine found out that I was studying chemistry and he couldn't wait to tell me about this great idea he had. He said "we should make shoes that dirt won't stick to, so they will always be clean and look new!" So, then the only part of the puzzle left for me was to invent some completely new material that has this effect and share the profits with him. Or rather him share some of the profits with me, because he thought of it. What a great deal!
I'm wondering about the opposite question. Setting aside the initial idea for a moment, how much can a non-programming "business type" contribute to a software project?
The thing about these people is that they need to go through a learning process and the least we can do for them is to try to point them in the right direction. The other thing is to talk with them in their business vocabulary - which you tried in your response but really needs more.
1. So, you'd like someone to throw it together right? Shouldn't take long right?
a. Let me recommend eLance to you.
b. Don't like others, how about a high school kid - they're great nowadays with tech stuff.
c. Oh, you want someone with a college education? Why? Why not a graduate degree then? How did you ever arrive at the conclusion that a high schooler couldn't and a graduate degree was overkill? What qualifies you to make that estimate?
d. Do you have a business plan written up? If not, I'm not interested because you haven't done the first thing business school teaches. If you do, show me how many hours of labor or dollars you have budgeted for development. How did you arrive at that number? Have either of you had experience estimating software development projects or managed them? I have. If you don't like my advice, then I'm hardly the one you want to work with isn't it?
And don't forget to smile when you say all that.
I blame the cut-and-paste PHP "coders" that have managed to echo "I am cool" on their word press blog.
If a person sees a 14 year old and thinks that he "knows how to program", they might leap to the conclusion that making stuff is easy.
I'm far less diplomatic than you are, but I've been through the same scenario a million times. It always follows the same pattern:
1. Friend/relative or distant acquaintance has this "revolutionary idea" for a web site.
2. I roll my eyes, laugh, suggest their idea is crap and not worth investing their money+time into.
3. They offer a cut of the "profits", which of course are always zero.
4. I tell them, quite bluntly, that if there were anything worth doing on the web, I wouldn't need a bunch of no-talent laypeople to make it happen, and I'd get to keep all the money, because I'd be doing all the work anyway.
5. They are insulted, tell me I'll be sorry when they're rich and I'm not, and they leave.
6. Six months later, I call them up and ask them how rich they got off their idea. They call me names and hang up.
7. I roll my eyes, laugh, and write a blog entry about the stupid idea, and I actually end up making some change off the ad impressions. I win :)
Idea people always think their ideas are the true goldmine. They're not. We live in a very fast-paced world, thanks to our beloved internet. Most "new" ideas aren't really new, and most likely someone else has already tried and failed. The truly profitable ventures are those that build upon existing concepts and improve them in tangible ways. And if that fails, there's always good old hard work.
Loved the "implicit" translation! Excellent post.
All the best!
What's even better are the REAL companies who use this philosophy. They have a great idea and the program is such a small part, but the business would not exist without it.
Oh boo-hoo, you're so oppressed. The same thing occurs when your wife calls your brother-in-law plumber to clear out your crapper. Absolutely charge what you think your services are worth. Just remember this tract when you need a favor from someone.
Truthfully, I find it hard to find people with other skills. I cannot find a good salesman. Good accountants and lawyers are also hard to find--and you find that when it's all too late.
Talented people obviously do exist in the world, but I think they are all just taken.. working already in the field. Heck, I cannot even find a programmer for hire to work on some parts of my project, because I am so busy with my baby, lately.
awesome post. bookmarked for life!
This happens to me on a semi-regular basis as well. I suspect those misconceptions you talk about are fairly universal.
I have both IT and business training, and I find that generally, when you drill down into the "magnificent business idea", it hasn't been thought through completely. Usually it's just that - an idea.
I personally can't work as "just a programmer", particularly when the business involves one or two other guys and their idea. There needs to be someone with a bit of knowledge of both business and IT sides. Without it, it's difficult to write code with a purpose. The common complaint of, "they don't know what they actually want" comes up time and time again.
I guess what I'm saying is that with a startup that depends on some kind of custom-developed software, the designer and author of that software should be involved in the business to a much greater extent than being "just a programmer".
There is even a name for this. Check out the Dunning-Kruger Effect on wikipedia. http://en.wikipedia.org/wiki/Dunning-Kruger_effect?
Logged on with the wrong account before...
Just as a quick addendum, the all-I-need-is-a-programmer mentality exists in larger businesses as well. It's incredibly pervasive.
The "IT Department" is often seen simply as a fabrication plant. You give them a description and they spit out some software.
As a product management guy - i.e. between the engineer and the "domain" guy, I can relate easily. Most managers think that programmers are interchangeable because they are incapable of evaluating a programmer. The other thing I constantly hear is, "Oh, you should be able do *that* rather easily", and when cornered, "Oh, that's technical, not really what I want to get involved with." I point out to them that it is not technical, but that they are asking for mutually contradictory things.
I call bullshit.
Do you know why? Because programmers often make the same assumptions and demands with designers. "Hey, I know you make logos and stuff. Can you make me a logo?"
So don't feel that you're the big victim of everyone asking for free work. People often appreciate less the difficulty and craftsmanship of great design. This is why the opensource world has been plagued with bad design for so many years.
I've tried to explain it to people before but developers don't really get it. All of these "logo competitions" and "design my interface" competitions are in a subtle way, in most cases, insulting to actual professional designers. Why? Because the judges of such competitions aren't even designers. It would be like a designer judging a competition for the best code.
Please don't weep for yourselves too much. When you see a good logo, that costs a solid hunk of cash for production. Great companies have great logos for a reason, they buy the talent and the talent puts the time into going through many drafts. People then copy the style of the logos with Gimp and inkscape and think it can be done by anyone because a easy tutorial was posted on some tutorial site. Thus the craft of design is written off as either a scam or something easy. Neither is true. When I go into the usability of a website I spend hours and hours talking about interaction with my colleagues and even more time pushing out drafts for the design of the site. Good design takes time. Good code takes time. And as I'm sure you're aware of, you need to pay rent.
This behavior is evident in many sectors of the industry. I don't expect for friends to work for free unless we're both investing into the project because of a shared interest and vision. Essentially we're working for each other. But many developers consider designers dumb people that make pretty pictures. In reality, the role of a creative director or an art director has at times a superior role into the development and mapping of a project or site than the coder. The ideal is when both work in tandem and understand each other's language, and thus can properly collaborate.
I think this is a rather unrealistic perspective and is similar to that of a lot "business people" of tech companies back in the 2000 bubble. A lot of people had the "important things figured out" and a good real software product never materialized. I think your old acquaintance happens to fall into this category of business person.
The truth is, I think business people are just like programmers. There are a lot of "average-joe" business people who tend to have this perspective and don't understand the business of software.
I really don't think that the software industry has made it more viable for the 3 assumptions you pointed out. I just think there are a lot of people who are unexperienced in the business of software.
@nick, great comment, I fully agree. While ideas are great, execution plays such a massive role in the success of the project. I have to roll my eyes every time a client wants me to sign an NDA before we discuss his/her idea. I do respect the idea of the NDA, but I think it goes back to them thinking the execution is easy. Like I'm going to spend 8 weeks and tens of thousands of dollars, and tie up my developers to create a Web app. Then I'm going to spend more time and money marketing it, money on PPC, etc.
I worked with some business professors on a web app last year. When the press release came out, it went something like this:
bla website was developed by prof a and prof b. Technical aspects were handled by programmer a and programmer b
I think you are spot on with you analysis of how many business people view software development. One of the profs thought that he could just pick up a book and start coding with us. He gave up after a day or 2.
What I find amusing (coming from a programming side and into business side) is that the Business Stuff is truly easier. Besides that a programmer can find marketing people and other business aspects through outsourcing if need be.
The way I look at it is I have put ALOT of time into learning to code in the past, present, and probably in the future to stay up on technology. During college it was those in the easy majors that were out partying and having fun while I had to work my butt off.
Software and engineering are on par with medicine and science. It takes a lot of time and effort to keep abreast. Why does Google, MS, Sun, etc. value their engineers so much? Because the work may not seem difficult, but it is mentally challenging.
Business concepts (accounting, marketing, and general principles change only slightly to adjust to the market and technology, etc). so not as much effort needs there.
So I think you made a smart move. If someone approached me - I know my X would be significantly high, as without the product being built, there is not much to do for a business. Kudos to you. Loved the response.
I am surprised your surprised. To be honest this happens to be quite alot. I have some basic knowledge of php and mySQL, but someone wanted me, as a favor, to set up a site that can take orders over the net for building these little trains.
Mind you the "customer" is two retired grandparents of a friend who don't turn on their computer unless they REALLY need it.
I worked for a company and built, from scratch, a C# program that interfaced with MySQL to make our credit system work better. Took better part of 2 months from someone with no C# experience. Then boss then asks for the same on their trade-in's and tells me to get it done within a week...:P
It also doesn't help that once you need us, they just throw us away....
- Paul (warlockd@drakesmith.net)
People who don't write software have no idea how long it takes or how hard it is to get right - they're not bad people, they just don't have the past experience to know. Everyone wants to be the one with the idea or the feature (the fun quick bit), and leave the actual implementation (the boring slow bit) to someone else - fact of life. The reality is that ideas are so cheap that they're almost worthless, it's the implementation and actualising those ideas that matters. So do the work on a dollars per hour basis, but be prepared for people who underestimate the time it takes to write something to complain about the cost. To get around this, you can try building the UI first so that they can see what's going on, but you need to emphasise that the UI takes 10% of the time, and implementing the functionality of the UI takes 90% of the time. But when you do this, they may incorrectly conclude that you're padding the schedule and ripping them off. Regular communication helps, but my main suggestion is to consider carefully whether you want to work for people who don't genuinely see the value in what you are doing. They could use lowest-cost programmers from developing countries instead, but as someone who has inherited stunningly bad code from such programmers, it seems to me that most of the time "you get what you pay for". Ultimately you need to correct the client's three mistaken impressions - that programmers are all the same, and that programming is easy, and that programmer's time is free - and if you can't do all three, then turn down the work.
you can all thank the dot com dopes who all read "wrox" books and learned to "program" html who became CTO's and then decided that india was the best place to "write" software because "cheaper" is always better.
It's not that "all you need is a programmer" - it's that people are inherently ignorant of the fact that programming is a craft.
It's not rocket science, it's not hoodoo voodoo magic, it's not plug and play...IT'S A CRAFT.
The longer you play in the field, the more you absord and the faster you become at creating programs.
In the end "all you need IS a programmer" but in the case of every business "all you REALLY need are CUSTOMERS"
...and no matter how good you are at programming if the business doesn't have any customers...then just take the money and run!
wahahahahahahahahaha
Please follow-up in a year or so and let us all know how their business is coming along. I'd be interested in hearing if it ever flew!
Great post. After several similar requests from my stepbrother and his ADD inspired get-rich-quick web ideas I think I found a solution too.
I said I'd be happy to look at his idea but he had to spec it out for me in detail first. I asked him to draw every page/screen on paper. I asked him to show the navigation between them. I asked him to include every form and every field that was required or needed validation. Show what happenned when forms were incomplete or validation failed. Show how people signed up for a login and how they retrieved passwords if they were lost. Show all the stats he'd need the system to record and all the reports needed to make sense of them. After all, if it was an easy job to code, it'd be a walk in the park to just draw it right?
Now to his credit he actually took my advice and gave it a try. He quickly discovered it was a lot more work than he'd thought and lost interest. Haven't had any "simple job" requests since! ;-)
This is an excellent post. it's also a summary of why i'm leaving programming to pursue a career in emergency medicine. It's about value/worth stemming from respect. As in, you feel you have little worth because you are given little respect (measure of pay). Even if you wrote a program that cured cancer, you'd still be seen as a geek who could be outsourced to a romanian teenager or better yet, lowballed for some pre-funded startup's promise of company equity. F that sh*t! Time to try something more *local* and less *mercenary*
A final word, speaking as someone who owned and operated a couple of failed startups: If you want to be a dot-com, find someone equally motivated and skilled and do it yourself. Do not try to build someone else's idea, esp if they are not a programmer/tech person with experience---they won't understand your value. Make sure you keep your day job, develop on weekends and nights. Build a prototype fast, focus on core features and put it out there. If it's good, it will get press from tech blogs and you'll go places, otherwise you won't have wasted so much time. Good luck.
You should have at least taken the communication to the point where you find out what their idea is.
Then see if you can do yourself the favor. :)
An unintentionally ironic article. They wanted a web monkey not a programmer. Sorry, if you're setting up MySQL and PHP scripts you're not a programmer. No doubt the web monkeys will disagree, but riding the internet wave doesn't qualify you as a programmer or make you qualified to assess whether or not you are one.
Great article.
Phrases like "it's easy" or "wont take long" from people who have no idea what they are talking about used to drive me crazy. Now I just charge them extra as I have to do more work writing the spec. If they pay for their ignorance then they can be as ignorant as they want.
BTW to reply to the designer a few posts back. Yes designers suffer the same issue, no question, but there is one crucial difference. Whether a logo is good or not is a matter of judgement. Whether a programme works or not is a matter of fact. Therefore a vague outline of a hare brained scheme is more harmful to developers than to designers.
Charge them a consultancy fee to get your opinion, that sharpens their mind no end !!
this is one of my favorite articled of all time, especially due to all of the comments.
well said, from all angles.
As someone who works in PHP and MySQL, I agree that it can make good pay. However, consider myspace.com or even wikipedia.com. These are examples of ideas that someone had, and although the implementation was difficult, many good programmers could have done it if they'd only thought of it first. I'm always eager to hear new ideas. You never know...it could be amazing. Still, I believe that well funded businesses also are better at ideas that already have a target purpose and customer base.
Devil's Advocate: If it was truly simple you may have been able to finish it in a weekend. Seriously a little user management (perhaps use a framework) and few custom forms and database interaction. What 10-15 hours? Favors are all about karma.
As I read both the article and comments, I was struck by my memory of when the pointy haired boss said, "I'm going to assume that anything I don't understand is easy."
Hey, I've got a great business idea. It's a site like Google where you search for stuff. But we'll return better results. We'll run ads and make a lot of money (we can just use Google Adsense for that). Can you code it for me? It's just a textbox and a submit button. To save time, you can leave off the "I'm feeling lucky" button if you want. Can you code it for me?
I had to laugh when you mentioned that most users only think of an app as the UI. And the above scenario is the first thing that went through my mind.
My dad, who was in the software industry for over 25 years, told me so many stories along these lines.
I believe programmers, and software consulting houses in general, are their own worst enemy here. We generally are upbeat to the point of insanity about what we can get done, and by when. In fact, the sales process is full of this "positivism".
Invariably people are sold on the idea that the work is just "a mere job of configuring our currrent product for your environment" when it is a straight out pure development gig. And programmers never want to say that no, something can't be done.
Is it going to get better anytime soon? I doubt it.
The answer? I think programmers need to start pursuing finding their own business ideas. Just so that instead of it being the business guys are doing you a favour by letting you in on their business ideas, it becomes a case that they have to sell you on it.
I have had a couple of people try to sell me recently on "oh it's just a small webapp that you could do in php and mysql" and my response has been "it won't be hard to copy then, will it?"
How many times have you said or heard things like this?
- "You're a car guy, right? Do you think you could take a look at my car real quick?"
- "Oh, we'll just get an accountant to handle our taxes this year."
- "Oh, we're going to get a new deck for our house just as soon as we get a contractor out here."
Same thing applies.
This has already kind of been said, but bottom line. If someone came to me with that approach (or the reverse, since I'm the marketing/ops person in my company "hey... I can whip up the code for this thing, all I need you to do it whip up a business plan") I would send them packing right away. If they are unable to even accurately evaluate the work needed on their side of the fence, they are not a good partner to be involved with.
Digg: http://digg.com/programming/All_I_need_is_a_Programmer
Sorry, link: Digg
For a start: Do not talk about programmers but about software engineers, or software architects.
And with respect to rocket science: some big software projects are much more complex than rocket science. In fact part of rockets science is software engineering with model-checking-tools (formal verification of prorams).
I can assure you, most people that come from a business-course/education have a low profile about software programmers.... those people need some education.. but often they wil never understand abstract concepts like we have in programming
Hi Harish,
"I make it clear that I not only want to offer him significant equity in my business, but also learn how to code by helping him and following along."
Thats the same thing! saying I'm going to leach your years of experience by looking over your shoulder the whole time. It Kind of misses the point of what programmers do.
I think it is better to say to a potential 'programmer' that 'For this new project I'm going to need yours off the wall creative talents , I've seen your work and your the only person I think can pull this off.'.. That's what you would say to a graphic designer.
In every university in the world today the term is 'engineer'. Programmer is an obsolete, it kind of implies data-entry. Back in the old-days people were employed as 'programmers' to punch in numbers all day.
I know the media, and movies are an easy target but I think they do have to take some of the blame for the lay-persons perception that computers can do anything , therefor programmers must be just pushing buttons or flicking switches.
If you really want to change the way people look at you.. Tell them your a designer, a creative individual, some one with a unique talent... oh yeah and as it happens a software engineer.
You remarks are completely correct.
You just read my mind with this article.
I currently work as a product manager at an international company.
The company made a great web based tool but what I noticed that as a product manager I'm not into how to improve the product (the website) to provide a enhanced tool for the users but I'm more into how can we make more money.
Result: the website hasn't changed that much in 8 years!!! This is like a dinosaur in the year 2000.
I find this a sad evolution. Agreed you should make money of your product but your product is the core so why not make it the best product in the market and so you have a good core product with lost of possibilities instead of just keep selling and not bringing it up to standard because that might lead to lost of profit?
The company offers a web based product yet the IT development department is smaller in number then the sales and they have to work really hard without much room for creativity!
I hope this evolution will change!!! Because otherwise I'm seriously thinking of leaving the IT business...
Good post, but you get what you pay for.
I got fed up of doing favors.
Every time I meet a client, I just get upset because of the way they define the nature of my job. It seems they don't have the time to do a filthy job like coding which is very easy but takes some time to do..
It doesn't stop there as I always wish it would.. A programmer is like a nurse who helps the doctor (Most probably the doctor is the automated system which should do it right..); so, it's interchangeable.. Maybe sometimes but not that often..
It doesn't matter to me as a software engineer how they treat my job.. It matters a little when they treat me that way.. because I don't believe all developers can be put in the same merit box..
As I read the post, I was questioning whether we, as IT professionals, sometimes create this phenomenon, by saying things like, "Oh, that is pretty easy, we can do that really quick!" or something similar. To those business folks who are truly divorced from the technology they assimilate this message into the idea that all projects are "easy" and "quick". So, perhaps we really should not deliver messages like that to those folks who don't understand the technology well enough to develop within it.
The other point you made early in the post rang pretty true to me, and it seemed to do so with others as well...if it is "easy", it will likely be copied by another developer, and your whole business model will be worthless.
In the new business world of everyone being connected, I think you really have to realize that the amount of return you get from a project should be clearly tied to the amount of effort you put in... in short, it is not easy to make money. If it was, everyone would be rich.
My personal problem in the industry today is with a person to be left unnamed promising our clients that "sure, we can do that, we can add this, and we can keep it in the exiansting timeframe." That attitude is of course my fault. I have in the past demonstrated the ability to make code do virtually anything. I was doing "AJAX" before it had that tag, I had cross-site integration across ASP-PHP-SNMP-Lynx with custom written MIBs for multiple hardware devices, and the reps never saw anything more complicated than a few buttons and graphs, heck the code could diagnose signal issues with customer fixed-wireless equipment thanks to batch-run ping tests. The assumption became, well, he's done all this, these things the client wants are going to be easy. Not so. Every project is unique, there IS no magic library, no magic repository of code that will do exactly what a client wants, and even the slightest change can mean refactoring ALL your code to et this new cludge to work seamlessly.
3)"Software developers are cogs in a machine, or interchangeable components of an assembly line"
That's the truth.
Little local employers can't afford to pay much. Big international employers are sending software engineering jobs oversees. The business reality is that CHEAP is better. Large teams of expensive local talent are being laid off. They cost too much and don't produce enough. Business isn't about making Beautiful Code, it's about making money. The era of the Code Rockstar is over, boys.
Hey, I am just curious how much do you charge a client on a /hour basis?
My company charges the client around $35/hour and pays me about $10/hour. Do you think its a reasonable figure? I am .Net developer btw.
I've gotten sort of thing several times in slightly different form: "How hard can it be ...?" Well, it can be very hard.
I encounter these attitudes often in startups. Perhaps its our fault as programmers, and we've made software development seem easy to the outside world. Yet the #1 factor that kills startups is the failure to deliver a software solution that meets the customers' needs. That's why I believe it's essential that any technology startup have a technical co-founder to bring some reality into the business equation.
My view is the exact opposite of those who propositioned you: The business plan is nothing. It's something anyone can come up with. It takes programmers to make it happen, so the programmer is the central element to everything.
In the interest of full disclosure: I am a programmer, and I have only taken one economics class, because I found the material boring and self-evident.
As for the idea of "rockstar" programmers, there are a group of developers out there that can take on just about any project, and turn it into a success. The problem is that these developers usually don't work well with others, so it's kind of like those Japanese fighting fish. You can hire one "rockstar", and he will be very productive, but hire two or more, and they will all either quit, or stop coding and start complaining.
- Joshua
Yeah? Try being an Art Director/Designer.
Fortunately I've had the opportunity to work for many Fortune 500 brands, and have a healthy professional fee, but the perception is, that not only is design "just window dressing" but that it's "fun" too. Therefore why shouldn't you want to do this for nothing?
When I'm approached about these sort of projects, I simply respond by giving them my rates. The people that cannot pay are generally hit with enough sticker shock that I don't hear back from them.
I will say, that while I've had many very mutually rewarding and respectful relationships with talented programmers, I've also encountered the very attitude from programmers that you're complaining about from aspiring entrepreneurs.
Programmers often sneer at designers, with the attitude that they are interchangeable cogs of little value at that. Yet a poorly designed website or application can, at the very least, damage your business by appearing unprofessional and providing a poor user experience, or at worst kil