Why are coders so damn lazy?

+Rep.

Fuck assholes like OP who commoditize code. It's not just something we do for you for money. Treat every little shitty project like you're commissioning a painting -- If you want a fucking finger painting with macaroni decorations, then tell your coder "Make me something sweet" and give him a week, but your project will be shitty (due to lack of direction) and he'll still charges you for a full week.

But if you want a Matisse, go to a professional, give him a reason to care about it, and define what "done" will be -- Specific docs, UI mockups, deliver him the design before he starts work. Can you imagine Leonardo saying "Sure, it's already finished but I'll re-paint over half the Sistine ceiling with an Epic Direct logo, because you thought this idea up drunk last night" to the pope? Doesn't matter what the client pays, we are artists*, and very few [of the good ones] are strictly-in-it-for-the-money to the point where we'd re-build half the project from the ground up, even if you pay us for the time. We want to feel accomplished and empowered and we need to feel that there's progress on the project. Languishing in "polish" and "bug fix" stages for too long is poisonous to developer productivity, and there's simply nothing you can do about it but hire more developers and get through these phases faster, so that everyone feels productive.

Finally, if you expect a coder to "think" for you -- that is, *guessing* that you'll want a "Forgot Password" feature or various speedups or a 3am emergency server reboot, and doing smart things for you *without* you asking, you give him a sizable % of the project. Why on god's green earth should I make my own job harder, adding more features and doing extra work and pushing back our launch date, trying to read your mind and maximize your bottom line, without significant incentive to do so?

* I might have my pompous head up my ass, but I define "art" as anything where my personal style is the single greatest factor in the quality of the final product.

^this

Something else you don't realize is a good coder will actually think about what needs to be done to satisfy your requirements before they run off and start writing a bunch of code. You have to realize this part isn't free even if you think it should be.

I have a whiteboard that's half a wall in my office for drawing out database schemas and flowcharts before I ever even write code. After that you start with your unit tests then you start on the real code. It takes time to produce quality.
 


To soften this a bit with personal experience:

I have done the same thing.

At my day job, I am a project manager. Yes, I used to hate these guys, too. I thought I could do soooo much better.

The FUCK I could.

Our new dev chick came in and I basically told her make that website kinda like that one, we need to be able to do this and this.

After a week, she was not finished with a task I thought could be done in a day.
She was flailing about, being lazy, and incompetent.

BULLSHIT!

I just hadn't told her what I wanted.

Noob error, and I paid dearly for it.

When we sat down to talk about it, I found out that I was the problem and she simply did not know what she had to do. She had tried, but as I was bound up in meeting after meeting, she could not even ask for clarifications.

So we clarified, and she coded this thing perfectly. She is one of the bigger talents we have here, but if you would have asked me in that first time she probably would have gotten fired.

I normally do better. I did better before, I do better now. But that time, I fucked up.

And it is easy to do. Something that is sooo clear in your head...well... telepathy doesn't work.

Often, I remind myself of this fuckup and try to do better.

My coders like working with me. Because I am a coder myself and because I give good instructions - most of the time.

::emp::

Too long; didn't read:
It's probably your fault.
 
  • Like
Reactions: galacon
You can't write detailed project management specs for everything, but you can't just always wing it either. You gotta strike a balance between time and energy invested and results.

How much to spec?

A) Describe it in a quick conversation.

B) Summarize everything in an email.

C) Break down the project into sub tasks.

D) Break down the project into sub tasks AND discuss each sub task with the coder.

E) Break into sub tasks, set milestones, AND discuss

F) All of the above, and draft documents (UI sketches, etc.)

Each level requires more time, effort, and an understanding of how things work. It would be nice to go F on everything, which is what dedicated project managers do, but as a business owner you may not have the time (this is for small-to-mid-sized projects; big projects ALWAYS should be as specced as possible). In that case I like to think of good project definition as a hedge against risk. I'm reducing the odds of the programmer having to spend more hours doing things over. So you weigh the cost of additional planning versus the potential cost of their extra time and money.

Now of course, for those smaller projects, if your programmer is good, or he knows you well, then he'll ask the right questions and get a pretty good idea of what you want so you won't have to spec so much.

When in doubt, over-spec.

And as your PM skills get sharper, breaking things down into tasks becomes easier. You'll start thinking in processes instead of output, and that's a core management skill with major benefits.
 
If your coder comes back to you with an issue. Be quick! Too much dead time for me and i have to start on something else. Also, you get what you pay for IMO... if you scour the internet looking for the cheapest possible coder then you will get someone who either doesnt know what they are doing or doesnt care about the job as there is no incentive. Agencies charge what they charge for a reason...
 
Specs with diagrams and page mockups should take a significant % (maybe 15-50%) of the time a project takes to code. The specs for a project that takes 4 weeks to code could easily take 1-2 weeks to produce. Note that coding is the easy bit, detailing what needs to be coded IS the hard bit.

If you don't provide detailed specs then basically you're paying the coder to write/think them up, this is something coders don't like doing thus become lethargic when it's necessary. If they're also working on another project that has good specs when your one doesn't they'll probably choose to work on that instead.

Coders think logically (step by step), if there's a single step missing from the specs it's going to lead to delays. Watertight specs lead to projects being finished on time.
 
@ Tatrasim, Uplinked, Crackp0t, Emp, Greyhat, j0hnsmith: all killer posts.

As a pro PM, I have made some of the same mistakes with coders.

Clarity Is King. Know for a fact that if you go into a coding project with vague instructions and layouts, and expect your coder to "flesh it out" for you, it will take forfuckingever, and it may NEVER get done.

This:
Specs with diagrams and page mockups should take a significant % (maybe 15-50%) of the time a project takes to code. The specs for a project that takes 4 weeks to code could easily take 1-2 weeks to produce. Note that coding is the easy bit, detailing what needs to be coded IS the hard bit.
And This:

If your coder comes back to you with an issue. Be quick! Too much dead time for me and i have to start on something else.
Are particularly apropos.

@ emp: plus rep for this- Blind Ape Seo » How to manage outsourced projects

I'm linking that from my site, mate. Killer series ;)
 
I don't think its only coders, its freelancers in general. Or even people in general, basicly people are lazy. Even if you are not lazy it happens that you fail to deliver on time, for instance I think I always have work ethic but even with that 1 time out of 10 little delay happens.
 
Thanks for all the real coders in here.

Read my series on this, if you like:
Blind Ape Seo » How to manage outsourced projects

A coder is not a commodity, especially a good one.
Coders are not janitors.

Code is not simple or easy to do or cheap if you want the good stuff.

::emp::

Pretty sure I've +repped you at least 2-3 times for that blog post. Turned around the way I work with coders and helped several projects go SOOOOOO much smoother.

+rep again :thumbsup:
 
From my own experience, the biggest reason is that the customer doesn't know what they want, so they have no specs, or plans and don't know what the final product looks like. "Can't you make it looks like SiteX.com?", yes I can, and check with me in a few weeks, and I'll still be on it, with nothing to show for it, especially if you're paying hourly.

And if I have other work that I need to do, spending time and mental energies figuring out what you want, is the last thing I want to do.

There's two things to getting good results from developers and getting them fast:

1 - Be precise on what you want. I mean exactly what you want. If you want to draw it all on paper with graphs that will be very helpful too. If you don't know what you want, say so, and both of you can come to an understanding of what the developer will deliver, then you can test that out and go to version 2.

3 - Pay well. If there's another project that comes along that's more interesting or pays better than yours, especially when you project is not clearly defined, then it'll just get pushed back to the end of the pile.

I have no problem telling a customer that I charge $300/hour for development work, because even that's a bargain, consider the experience/knowledge that I bring to the table and the amount of work I can do in one hour. It's more than they can get for a week from most outsourced programmers.

But now, I usually don't take on clients, and if I do, I don't work, hourly, it's per project, and the project is well defined, so both of us are happy at the end.

Oh, and I always charge 1/2 up front, I want the client paying attention when I bring up issues, questions, etc. otherwise you can be dragged along for a long time.

And you have to clear if you want a programmer or a developer. I view a programmer who knows exactly what is needed and just programs the solution, where as a developer and sit down with you, talk to you, ask questions, and arrive at the best solution on paper before even writing one line of code.
 
From my own experience, the biggest reason is that the customer doesn't know what they want, so they have no specs, or plans and don't know what the final product looks like.

When I was getting started on one of my first consulting gigs as a freelancer I was doing a web app for a real estate management company. The guy in charge, one of the C levels can't remember which, actually said "I don't know what I want but I'll know it when I see it." That was a long and painful project.
 
When I was getting started on one of my first consulting gigs as a freelancer I was doing a web app for a real estate management company. The guy in charge, one of the C levels can't remember which, actually said "I don't know what I want but I'll know it when I see it." That was a long and painful project.

Yup, those are going to be painful, and they feel like they own you, so they call you with "let me run this idea by you and see what you think...".... um ok, let me start the timer on the clock. Those type of customers I usually either avoid, or if I'm bored/need some extra cash, increase my fees by 2x or 3x, just for the headaches and the free emails/calls/texts/dinners/lunches they ask for.
 
Coders suck.

Sounds like you need a developer.

Get deeper pockets and learn some project management.

Developer > programmer > coder
 
To the OP, perhaps you are the problem? If you're so sure it's not you then it shouldn't be too hard for someone of your talents to pick up a few programming books and learn to code. Surely it can't be that hard, right?, after all people in the third world can do it, so why can't you?

If you are too lazy to do that or are not bothered, then don't complain about an entire profession being lazy i.e the people who got off thier arse and grafted until they learnt what they needed to.

Me personally, I have a lot of respect for people for professionals of different kinds. I know what it takes to get there, it ain't easy for most of them.

For idiotic, lazy, moaning twits, I can't be bothered.
 
It's great to see so many real coders here. Every customer should read this thread, fuck.

I come from a coding background and I've been a web developer for almost two years in a small company, working mostly on projects for external customers. Dealing with customers that don't want to be guided step by step in the definition of the specifications is a real hassle. You already know you'll have problems down the path because they "trust you" and don't feel the need to go too much in details.

Then there are those who already have in mind to trick you "common sense" features and insist not to specify small details, so that they'll call you and ask the usual list of "how do I...", "I can't find...", "Doesn't it..."
And you just have to do it because there's money on the table.

What about requesting info about something and having to wait 5 days for a reply? Then all of a sudden the project needs to go online now, no wait not now, yesterday! fuck you!
Or those wanting to launch new websites on Friday at 4pm with no time for testing? And then you find 20 emails on Monday? Or worse if you are self employed and you have to check your email during the weekend.

When I left my job I was excited about not having to deal with sucking customers anymore.

That said, no doubt your coder might be taking too much for your project, but most times problems like this are due to unclear specifications.
Sure the professional you go with should guide you through the definition of the features, but once you agree on a project that's what you'll get, everything else has to be paid separately.
If you have set a deadline expect your project to be delivered on that date. Not before, nor later ( as long as you are not requesting unplanned features ).
 
the problem with non-coders is that the things they request and think are simple are not always so simple to code. just because "you've seen something done a million other places and you want it on your site" does not always mean it is easy to implement. if you think it is so simple, then STFU and do it yourself. chances are, if you have hired someone and are griping, then you are no more professional and experienced than the "coder" you have hired. if you were experienced in these matters, you would know what to look for in a "coder" before you hire them, so get off your high horse. :)