Web Hosting Talk







View Full Version : RANT: Finding good quality programmers. Why is it so hard!!!!


mrzippy
09-08-2007, 10:36 AM
Sorry... I just want to rant a bit and get this off my chest. I am so mad! :mad:

I have now had five totally disastreous experiences by hiring programmers from several of the popular sites where you can list your job and programmers bid on the work. (ie: elance and others..)

In each situation, I did quite a bit of "consideration" before selecting the project winner:

1. I verified they can speak English. (ie: I evaluated the replies to my project, asked some questions and then checked that they actually understood the subtle nuances of the questions I asked, etc..)

2. I verified that they had the technical expertise to actually do the project. (I check with past projects they had listed to see if they had anything similar that required the same type of work I was looking for.)

3. I checked their references. (I emailed several prevoius project owners that they had done work for, to find out what they thought of the programming work, etc.)

4. In all cases, I did not pick the lowest cost quote. In fact, three of the projects were the highest quote I received. I am happy to pay for quality.

But then.. after I hired them.. the problems started. In each situation, it was exactly the same pattern:

- I was "assigned" a programmer who could barely speak English. I constantly had to correct their incorrect assumptions on the project details, since they could not understand the terminology or "context", etc.. I would frequently ask them to show my email/response to someone else and have the other person explain it to them in their own language. This added so much wasted time to the projects that it is not even close to funny. The first few times are mildly funny. But after a dozen attempts to explain basic things, it ceases to be amusing and is downright frustrating.

- The programmers who did the work used incredibly "sloppy" coding. I am a programmer myself, and I know when code is bad. For example, the code would have no comments (or nonsensical comments), functions that were either exact or near-duplicates of other functions written earlier, incorrect use of functions, etc... If these were "stand-alone" projects (ie: no ongoing maintenance required), then this wouldn't be so bad. But the resulting code from these "programmers" is impossible to debug or add additional features, etc.. The code is as if it were written by a novice programmer who is learning how to program as he goes along. In some cases you can clearly see where they "learned" about the existance of a certain function later on in the project, since earlier they had custom written a whole bunch of stuff to do what that single function accomplished. (And yes, in all cases, my project requirements stated that the code must be simple to understand, easy to "extend" (for future features), etc...)

- Delays. Once would expect that if you say it will take a week to deliver the project, then a few weeks delay is acceptable. This is normal. I realize programming is not "exact" and can often take longer then expected. But jeez... we're talking MONTHS of delays here. Most of it was a result of going in circles with the programmer about what some functinality that was missing, invalid, incorrect, or trying to just explain what is needed. (All of which was clearly described in very detailed project detail documentation.)

- And then, when it was finally time to actually test the functionality of the program, there was always a ton of "little things" that were broken or missing. In all my projects, I provided a very detailed project specification document, including screenshots and lists describing every piece of functionality. When these "demos" arrived, they were so full of holes and problems that I wondered how they could possibly have programmed anything since they had obviously skipped 3/4 of the "what it's supposed to do" specifications pages.

The end result is that I have five failed projects that are now sitting on a shelf. In each case, I paid the programmer/company their deposit and then cancelled the contract since it was obvious that the end result was going to take forever to finish and would never work as the original design requirements document stated.

Arg! :mad:

Then there was the latest project that I hired someone for. This guy was actually pretty good. Thinking that perhaps my problem is because I'm hiring from "overseas", this time I chose a programmer who was based in North America, spoke great English, and produced decent code. And then, he figured he would be smart and disappear. Poof, one day he was gone. No more replies to my emails. Since it was right in the end stages of the project, I decided to just finish it up on my own. Took me about 3 days of hard-core programming, but whatever. I figured he had died or something bad had happened to him. I was actually worried.

Two weeks later, one of my customers informs me about some website that is selling some software that is just like the new version I had just released. So I go and check it out. And guess what I found? Yup, the programmer I had hired is now selling *MY* program as if it were his own. I have now chased him through 6 different hosting providers, with each one receiving a "cease and desist" letter from my lawyer showing proof the guy is selling my stolen code. (His contract with me is very clear that he was a contractor.) Arg!!!

Are there no quality programmers out there? How can these people have "references" that talk so highly about them, but then my own experience is so vastly difference?

Am I the only one having these issues? Is there a "trick" to finding good programmers that don't charge my first-born's arm for basic coding, and will not turn around and start selling the code as if it was their own?

I have a shelf full of great ideas that I think would make for some good selling software.. but I can't find any good programmers to do the work. My time is so limited with my own projects that I can't do everything myself.

How can I find good programmers (or two or three or four) that are reasonably priced, won't steal my ideas, and actually produce quality work?

If anyone can figure that out, I think you can make a fortune in referral fees. Surely I can't be the only one with a lot of good ideas, money in hand, but can't find anyone to do the work?

End rant.

everity
09-08-2007, 11:38 AM
For what its worth, my experience with programmers has been about the same. If they are very expensive, they also tend to be over-confident. If they are cheap, you get what you pay for (though not always, sometimes there are really good programmers who are just starting out who want to get their name out there.)

That said, it is really, really, REALLY hard to find a good programmer, one who can follow simple directions when it comes to coding. If you find one, let me know. :) I've been looking for a good one for a while to help take over some long-term projects for which I don't have the time any more. (preferably a local programmer, but beggars can't be choosers.)

linux-tech
09-08-2007, 12:01 PM
The programmers who did the work used incredibly "sloppy" coding. I am a programmer myself, and I know when code is bad. For example, the code would have no comments (or nonsensical comments)

If you're going to rant about someone's coding being sloppy, save the middle man and do it yourself. Otherwise, don't complain about supposed "sloppy coding". YOUR standards may not be the world's standards, or the best. Come on now.

The best response? If you want something done to your standards, DO IT YOURSELF. Don't expect any programmer to comment out their code for your understanding. That takes time away from getting the job DONE and moving on to more important things.

ON delays, that will happen, and you're right, expect a couple of days. That's why I always tell people it'll be done 1-2 weeks AFTER I expect it done. Why? Because they can be HAPPY that it's done early, instead of pissed off that it's late.


And then, when it was finally time to actually test the functionality of the program, there was always a ton of "little things" that were broken or missing.

Now, that just makes no sense. Are you there to "test", or to expect perfection in "testing phase"? If A, then good, but if B, well, you have no right complaining about the "testing phase" not being perfect.

It sounds more like you didn't relay your expectations clear enough to individuals, or rather that those expectations didn't get passed down the chain. That would be why you ALWAYS make sure that you know whom you're dealing with and that they have a (somewhat) credible history.

mrzippy
09-08-2007, 12:56 PM
Yes, you're right. It's all my own fault for not doing everything myself and foolishly expecting people to actually do what they say they can and will do. My bad.

lol.

Dark Light
09-08-2007, 01:00 PM
If you're going to rant about someone's coding being sloppy, save the middle man and do it yourself. Otherwise, don't complain about supposed "sloppy coding". YOUR standards may not be the world's standards, or the best. Come on now.

If one specifies how one would like the coding or programming completed, using certain coding styles that have been explained and documented (I have no idea if this is the case for the OP, but anyway) then one would expect that to be done. If you're paying for a project to be completed, you want it completed to your own standards. For instance, if you document something similar to "use indents for code" and the programmer does not do this then do you have a right to complain? Of course you do; if it's well documented and the programmer understands that they have to follow the contract, brief, documentation and references then the programmer should follow along with the specified requirements, if they don't then there's a issue with the programmer.

In regards to hiring a programmer; try not to hire out-sourcing firms or firms that assign programmers to you. These may - sometimes - lead to you deal with a knowledgeable guy that can speak your language before you sign the contract, but afterwards receive an employee that obviously can't speak your language, follow your documentation or complete your project. It is somewhat difficult to find a reliable programmer, or a firm to do your work for you. Some countries are better than others in regards to firms like this. Do not, ever, assume your home country is better than another for contractual work. Obviously in some cases they are, in alot of cases they are not. Trying not to be to specific or discriminate against any countries, programmers or anyone, I will not meantion what I consider to be a no-go zone generally for programming and contractual work. You definitely have the right idea that the cheapest isn't always the best, but it works the other way around too. The most expensive isn't always the best either. Sometimes you can find a cheap programmer willing to work for references or portfolio work who will produce outstanding results; othertimes you'll find what you think is a good reliable programmer and they turn out to be a complete idiot.

Honestly I wouldn't trust any programming to anyone I haven't known for quite a while. As a programmer myself I have built up a long list of close friends and programmers around me who I would contract or use for programming - because I know what they are like, I know their styles, I know they can actually communicate, and if they do drop off the end of the Earth - even though it is extremely unlikely they would due to the fact that I've known them for along time - I can probably track them down or finish the coding myself - or hire another programmer - because again I know their styles, I know their knowledge and I know what they can and can't do.

For instance, one close friend is an expert in e-mail and related programming in a specific language. If I have an issue with e-mail, I ask him. If however, I was to ask him about SOAP or REST then he wouldn't know what I was talking about, similarly if I asked a friend who works with shaders and graphics programming, he wouldn't know what to say if I asked him how to send an e-mail in a specific language.

It's all about getting the right person for the job, and unfortunately it is extremely difficult to do just that. One option, if it is available to you, is to see if you can find a local firm that can take on your work. While this is often not the case, sometimes you can find programming or software development firms near you that can help you with your projects.

The best response? If you want something done to your standards, DO IT YOURSELF. Don't expect any programmer to comment out their code for your understanding. That takes time away from getting the job DONE and moving on to more important things.
I would 100% expect code to be commented if I had specifically requested it and it was in the project brief. If it was in the brief and it was not done, I would consider that a failure on the part of the programmer. If they didn't understand the brief or they can't speak your language, then that person is definitely not for you.

ON delays, that will happen, and you're right, expect a couple of days. That's why I always tell people it'll be done 1-2 weeks AFTER I expect it done. Why? Because they can be HAPPY that it's done early, instead of pissed off that it's late.
I would definitely expect delays, even with the best of the best. Well perhaps not the best of the best who cost millions of pounds, but you get my point. :) However, I wouldn't expect to be told it would take 1 month to complete a project, and receive it in month 3, 4 or 5. There are limits.

Now, that just makes no sense. Are you there to "test", or to expect perfection in "testing phase"? If A, then good, but if B, well, you have no right complaining about the "testing phase" not being perfect.
I have only a small comment on this. If you give a brief, references and other documentation to a programmer, you expect them to follow it. If it is clear they haven't followed the brief even by the first, second or third mature testing phase, then there is a problem; no matter how you look at it. The problem may be they didn't understand, their lack of communication or their inability to follow the brief and their skills can't keep up with your requirements.

Stealing code is definitely a tricky issue. If you contract them on the basis that you own the copyright and the code, then proceed to deter them from selling your code. However, while you can deter them from selling code afterwards, it doesn't change the fact that you unfortunately hired an untrustworthy programmer. This is very tricky to actually find a trustworthy one. An idea might be to try and find a friend with a serious skill in the area of knowledge that you are contracting out; e.g. programming, even though the friend might not be able to take on the contract they might be able to recommend to you whether to hire a prospective programmer or not. Again, it's tricky and can be a serious problem with programmer hiring websites - which I personally distrust and don't like.

Depending on the amount of references - references can be forged - even gained ligitimately - it doesn't change the fact that references may not reflect the programmers current objectives, skills and such. Take references with a pince of salt, make sure they have plenty, and if possible do alot of research into the programmer and their references - if you are not doing that already.

How can I find good programmers (or two or three or four) that are reasonably priced, won't steal my ideas, and actually produce quality work?
By having alot of luck. Good luck. :)

My take on the overall situation of hiring programmers and contractors. :)

Hope that helps,
Best Regards,

linux-tech
09-08-2007, 01:01 PM
Now, I never said it was your fault, but your expectations are clearly more than the average user here. Who cares if when you're testing something something is wrong? Isn't that what testing is FOR? Who cares if the programmer didn't write 5000 pages of documentation to satisfy you for every little function. Hey, you're paying for CODE, not for documentation. Just be thankful they didn't say it would be encoded.

everity
09-08-2007, 01:06 PM
linux-tech, in myzippy's defense, I don't think its fair to tell him to do it himself if he has standards on coding.

There is only so much one person can do. If you have a project that multiple people are working on, it is important that they all use the same techniques. For example, if everyone else is using

if (condition)
{
do this
}
else
{
do that
}

and you have sloppy programmer guy coming in and doing if (condition){do this}else{do that} all on one line it tends to create a bit of a headache.

It is more than reasonable to ask programmers to follow certain guidelines when working on a project, to ensure that later on, other programmers can easily modify/fix things.

Dark Light
09-08-2007, 01:08 PM
Hey, you're paying for CODE, not for documentation. Just be thankful they didn't say it would be encoded.
If it was not requested, then I agree that documentation is not required. However if it was specifically requested in the brief and requirements then I would expect it to be there regardless of what the programmer thinks.

Similarly, if I contract someone to write some code for me then I expect to be able to use it; if I state that I own the code, the copyright and they sign the contract, accept it and agree to transfer ownership of their work I expect to own it and be able to use it. Encoding code is only really acceptable in commercial applications that are to be distributed to end users that are licensed the code - not a transfer of ownership of the code; and should only be encoded by the company or person owning the code. If I contracted someone to build a piece of software, and they agreed to accept the contract - and I had specifically stated that I required full source, copyrights and other rights - then I expect to receive the full source, copyright and other rights; regardless of what the programmer thinks. A contract with reference to a specific brief and requirements is a contract regardless.

Best Regards,

mrzippy
09-08-2007, 01:16 PM
I should mention here, in my own defense, that I am not a "newbie" when it comes to programming, software design, or project management.

I worked as a programmer for years before moving into software design, and then finally into project manager for large software projects. (ie: Projects in the millions of dollars.)

The lowest cost of the 5 projects I described in my post was $15k.

I'm not talking about small tiny jobs that were just ideas on the tip of my head. I'm talking about projects where I wrote extremely detailed project requirements, spent many hours describing exact details, etc...

But ya, feel free to tell me how wrong I am to expect actual delivery of what I paid for. :)

Dark Light
09-08-2007, 01:22 PM
Some of us were agreeing with your points and expectations in regards to your projects that have failed on the part of the programmer(s). ;)

Best Regards,

mrzippy
09-08-2007, 01:31 PM
Linux-tech, I'm a little surprised by your posts, since your signature advertises you to provide "Quality, affordable Linux Systems Administration". I presume this means you offer an outsourced administration service. You're a sys-admin for hire.

Are you telling me that if someone hired you to write a shell script in "perl", and you provided the script in "php"... you feel that this is ok? After all, the person who hired you got the script, so who cares if it is in php instead of perl?

Because that's essentially what you're saying. I disagree, which is the point of my original post and rant. If I hire someone to comment the code they have written, then why wouldn't I expect comments in the code? I'm not "just" paying for code. I'm paying for the whole package, exactly as I have defined it in the detailed project requirements document that form the basis of the contract.. and to which the programmer has agreed to deliver in exchange for cash.

If you hire someone to paint your house blue, and they paint it blue, using glue... wouldn't you be upset? Hey, they painted your house, right?

Anyway...

I'm not giving up hope yet on finding a decent coder. I'm going to change my tactic for finding someone, however. I think rather then post on those "find a programmer" sites that are obviously full of companies/programmers prepared to scam me.. I might try various programming forums and stick to people who have a good reputation, etc. I don't know.. but what I was doing isn't working, so I'll try something else.

Unless someone wants to recommend a good php/mysql coder or two? (Please do NOT pm me to advertise *your own* services. I won't hire you. But if you want to refer a friend to me.. that is fine. Please explain your relationship to your friend, and also your own contact info. I'm not an idiot.)

Bangalore Job Mob
09-08-2007, 01:59 PM
Complaining about the quality of work outsourcing job farms produce is like complaining about the quality of the clam chowder at Denny's. There are thousands of extremely qualified American software engineers out there. If you can't find one it's because you aren't looking.

mrzippy
09-08-2007, 02:11 PM
There are thousands of extremely qualified American software engineers out there. If you can't find one it's because you aren't looking.

Indeed. Please help me look. Where should I start? I look forward to your reply.

sasha
09-08-2007, 02:19 PM
Do you mind if I ask how much is the highest you paid per hour ?

Dark Light
09-08-2007, 02:19 PM
There are thousands of extremely qualified American software engineers out there. If you can't find one it's because you aren't looking.

Absolutely there are, but unfortunately there are a similar number of under-qualified software engineers, for multiple reasons. When you go looking for one type of fish, you're bound to find a fish of another sort, before you find the right one.

Simiarly, most qualified software engineers hold down a job with a company that employ them for their skills, and often don't have time for your projects. :)

Best Regards,

sasha
09-08-2007, 02:32 PM
Absolutely there are, but unfortunately there are a similar number of under-qualified software engineers, for multiple reasons. When you go looking for one type of fish, you're bound to find a fish of another sort, before you find the right one.

Simiarly, most qualified software engineers hold down a job with a company that employ them for their skills, and often don't have time for your projects. :)

Best Regards,

It always comes down to money. Good programmer is well established and probably overbooked or at least he is not looking for work. Such person will not take any project unless it seems like something he would very much enjoy doing or something for client he likes working for or something that is very profitable.

If you want good programmer working on your project you need to be prepared to pay top dollar or have someone who will recommend you to him.

Bangalore Job Mob
09-08-2007, 02:38 PM
Indeed. Please help me look. Where should I start? I look forward to your reply.

Well, if placing ads and conducting interviews is too much work for you, you can hire a recruiter.

stdunbar
09-08-2007, 02:49 PM
It always comes down to money. Good programmer is well established and probably overbooked or at least he is not looking for work. Such person will not take any project unless it seems like something he would very much enjoy doing or something for client he likes working for or something that is very profitable.

I agree 100%. I do side projects all the time and I end up having to compete with programmers who may or may not be better than me but certainly charge less. I've been doing this 20 years and people want to pay $10/hour. I can make more working at McDonalds!

Many good independents pay attention to the "help wanted" area of WHT. Likely many job farms do too. I guess the first question you need to ask "who will be doing the work" and "what kind of guarantees do you offer". Yes, I guarantee the quality of my work if I have done it all. You're the customer - you should be able to drive what you're paying for.

Bottom line - ask the tough questions and pay for quality.

Dark Light
09-08-2007, 02:49 PM
It always comes down to money. Good programmer is well established and probably overbooked or at least he is not looking for work. Such person will not take any project unless it seems like something he would very much enjoy doing or something for client he likes working for or something that is very profitable.

If you want good programmer working on your project you need to be prepared to pay top dollar or have someone who will recommend you to him.

I agree with what you say here. Some programmers either hold down other jobs, or programming jobs, which require them to not take on other side-jobs because of the amount of time they have available after their primary occupation. For other reasons, one may be too busy in regards to personal life, or just not want to take on a contract for other reasons. Sometimes it is who you know, or your contacts that actually make the difference.

One of the first contracted artists I used, after receiving alot of offers, was in the mid-price range; however was a recommendation from a close contact. The artist turned out to be very cheap for the end result which was amazing. I'd recommend him to anyone who needed his niche 3D modelling, texturing and rendering skills if it was the correct situation. While this thread isn't about artists; it does kind of relate also to other areas of contracting. For instance, I might not have chosen him without the recommendation because there were alot of other artists available. While I can't actually say how good the other results might have turned out with the other contractors, I say that I made the right choice for the piece of art I wanted.

There isn't a one-stop-shop for finding, researching and contracting programmers; as such it really can be pot-luck. One person might look good, but end up with a terrible result. One person might look absolutely rubbish, and end up with a good result.

If one had been looking for application and desktop software development then I'd have some recommendations in regards to programmers. However, PHP/MySQL is slightly harder to recommend because all the contacts I have in that niche of programming are either not suitable for the budget (your budget and requirements it looks like might be a bit much for some of my recommendations) or the people I could recommend I would not due to respect in regards to their availability (they work full time jobs too) and I don't want to recommend someone when they are not necessarly the best people for the job. That's why I only recommend people or companies I know to actually have a very very good chance of suiting a project, budget, timeline or skillset.

Best Regards,

mrzippy
09-08-2007, 02:51 PM
Do you mind if I ask how much is the highest you paid per hour ?
I do not pay by the hour. I pay by the project.

It is up to the contractor to determine what is their "hourly" rate. If the project pays $10k, and they say they can do it in 10 hours.. then they can make $1k per hour.

Bangalore Job Mob
09-08-2007, 02:53 PM
Simiarly, most qualified software engineers hold down a job with a company that employ them for their skills, and often don't have time for your projects. :)

That's true, too. Writing shopping carts is not particularly interesting work, and dealing with people who like to haggle constantly and armchair quarterback the entire process by telling you they know how to do your job better than you do isn't much fun, either. I'd probably "disappear" and peddle my code elsewhere after two or three emails like this little rant, too.

Bangalore Job Mob
09-08-2007, 02:55 PM
I do not pay by the hour. I pay by the project.

It is up to the contractor to determine what is their "hourly" rate. If the project pays $10k, and they say they can do it in 10 hours.. then they can make $1k per hour.

So given that formula, how much did you pay per hour for this project?

mrzippy
09-08-2007, 02:55 PM
If you want good programmer working on your project you need to be prepared to pay top dollar or have someone who will recommend you to him.
I am more then happy to pay a reasonable and fair price for reasonable and fair work.

The price and cost is not the issue here. In all the projects where I have had poor results.. I was quite happy to pay top dollar for the work.

I don't believe in paying a little and expecting a lot. I expect to pay a lot, and receive a lot.

mrzippy
09-08-2007, 02:59 PM
Well, if placing ads and conducting interviews is too much work for you, you can hire a recruiter.
Lol. Placing ads and conducting interviews?

I'm not looking for an employee.

I'm looking for a programmer who will work on the odd project here and there.

Nobody is going to buy an "ad" to hire someone for a one-time project that costs $10k. It would cost that much just to place the ad.

I'm happy to interview prospective programmers who are interested in the work. But if you read my rant in the first post, you will see I also did that for the programmers I hired. People can say anything they like during the "interview". It has absolutely zero relationship with the work they will produce.

linux-tech
09-08-2007, 03:00 PM
Are you telling me that if someone hired you to write a shell script in "perl", and you provided the script in "php"... you feel that this is ok? After all, the person who hired you got the script, so who cares if it is in php instead of perl?

A>
I'd never take a job in perl, it's a pathetic language in my opinion. ;)
B>
You're comparing apples to oranges here. Never did I say that coding in a language not agreed to is incorrect. What I said, quite simply:


The best response? If you want something done to your standards, DO IT YOURSELF. Don't expect any programmer to comment out their code for your understanding. That takes time away from getting the job DONE and moving on to more important things.


Being a programmer (and a sysadmin) myself, I know that my standards aren't Joe Bloe's standards, and that's fine. No two people are the same, and nobody should expect Joe Bloe to follow THEIR standards, or to follow MY standards.

So what if the programmer wrote two functions that were simillar, WHOOPEE! So what if they didn't add 5000 lines of comment to their code, again, WHOOPEE . As long as they told you how to do what you need to do to modify it, then you're all good.

The point is that my standards as a programmer are higher than some, and I'd expect so are yours, because you've done work like this before. Unfortunately, the reality is that only YOU are going to be able to meet your own standards, same with me, which is why I have dozens of projects sitting on the shelves right now ;)

Biju
09-08-2007, 03:03 PM
How can I find good programmers (or two or three or four) that are reasonably priced, won't steal my ideas, and actually produce quality work?

Pick some companies instead of programmers if the work is big and heavy. I am a developer in JAVA and Ruby and i handle big projects in my company since its a team work.

Next i think elance has a set of reliable programmers to see upon, but u can also find here or in sitepoint some good freelaners to work with.

If anyone can figure that out, I think you can make a fortune in referral fees. Surely I can't be the only one with a lot of good ideas, money in hand, but can't find anyone to do the work?

I think i would blame you in how u choose the programmers. i have outsourced my work and i find really good programmers. since being a developer i easily find out if the guy or gal at the other end is tough enough to handle this work or not.

So what if the programmer wrote two functions that were simillar, WHOOPEE! So what if they didn't add 5000 lines of comment to their code, again, WHOOPEE . As long as they told you how to do what you need to do to modify it, then you're all good.

I agree, until the programmer does not copy others code and change a bit to show it as a new one or his version of code.

mrzippy
09-08-2007, 03:05 PM
I guess the first question you need to ask "who will be doing the work" and "what kind of guarantees do you offer". Yes, I guarantee the quality of my work if I have done it all. You're the customer - you should be able to drive what you're paying for.

Bottom line - ask the tough questions and pay for quality.

In all the examples in my rant, I did ask these questions. I was told that the work would be done either by the person answering the question (in the case of a few smaller projects) or by the "highly qualified engineers" that work for the company I hired.

Nobody who knows what they are doing offers a money-back gaurantee for software programming, because there are too many unknowns. (Anyone who does offer such a gaurantee is either very new at the business or has some other means of income.)

The "gaurantee" is that if I'm not happy, there is an "out" in the contract where either party can simply walk away and pay the penalty clause, etc... This is standard stuff for software programming.

I certainly did ask the tough questions, and was given the answers I wanted to hear. But, as I've said previously, any moron with half a brain can easily give "high quality" answers. The answers mean nothing.

I am also (and have in the past) willing to pay a good price for good work. I believe in paying for quality. You get what you pay for. This is true, and I'm happy to shell out the $$ as needed. That isn't even an issue for me. For the right programmer, I'm willing to pay whatever is the market rate, plus bonuses based on whatever they agree to. (ie: Early completion, extra work provided, etc...)

mrzippy
09-08-2007, 03:12 PM
So given that formula, how much did you pay per hour for this project?
The last "large" project I hired someone for had a budget of $9550. The contractor who won the project said it would take about 3 weeks.

You do the math.

(BTW - The lowest bid on the project was $1000, and the highest bid was $10k. The person who won was the 2nd highest bidder. There was a total of 20 bids on the project. So please don't accuse me of "low-balling" the project or choosing the lowest bidder.)

Since this particular project was under a heavy time constant, I also offered (written into the contract) a $1000 bonus if he completed the project 1 week early, a $500 bonus if it was 4 days early, and a $250 bonus if it was 2 days early.

After 2 months, I "fired" the contractor. His total payment was $2000, which was the deposit to start the work.

So you tell me.. was that a good deal?

mrzippy
09-08-2007, 03:16 PM
That's true, too. Writing shopping carts is not particularly interesting work, and dealing with people who like to haggle constantly and armchair quarterback the entire process by telling you they know how to do your job better than you do isn't much fun, either. I'd probably "disappear" and peddle my code elsewhere after two or three emails like this little rant, too.
I certainly did not "micro-manage", as you have implied.

My expectation, is that if I provide an extremely detailed design requirements document, then I should be able to leave the programmer alone to do his job.

Period.

Of course, I expect everything in the design document to be delivered, as agreed to by the contractor before starting the job. This includes ALL requirements, such as coding standards, methodology, and whatever else is in the document.

This is standard stuff. Any design document will include things like basic coding standards and whatnot. That's how you avoid people deliving a mess of code that nobody can ever debug or work on and them saying something like, "hey, it works like you wanted".

Having the application "work" is only one part of the job. Any good coder who has worked on a large project or for a decently sized company will know this. It's the reason why the first quarter of most design documents do nothing expect go on and on about things like code syntax, structure, variable names, commenting style, etc...

My feeling is that I should not *have* to "rant" to the programmer I have hired. They should be able to do the job, exactly as it is described in the design document, and exactly as they promised to do it.

The point of my rant is that this doesn't seem to happen. Instead, I'm left with a mess of code that does not work as it should.

Again, I'm still very happy for someone to tell me where I can find all these good programmers that you seem to think exist. Feel free to let me know.

sasha
09-08-2007, 04:14 PM
After 2 months, I "fired" the contractor. His total payment was $2000, which was the deposit to start the work.

So you tell me.. was that a good deal?

Heh, this is mistake I did few times myself in the past. I would get or greedy or too intrigued by the project and would have accepted to do some work within too short timeframe. When I would make the promise, because of lack of experience, I would think I really can make it. Not any more, now if I think something will take 4 weeks, i say 6 weeks and my wife (my partner) doubles that to 12 weeks and quotes that to client. That way when project is finished before deadline everyone is happy. That being said, I have to admit I have one overdue project at this time. The reason is that I simply enjoy the project too much and I cannot stop myself from adding things to it. Luckily client likes what he sees (I do not think he ever expected he will get what he is getting) so things are not too hot and project is finally close to be complete.

Anyway, mrzippy, I wish you good luck in finding someone. It seems like you have the right attitude and some bad luck. I wish I could recommend someone to you but few people I know are not looking for any more work.

mrzippy
09-08-2007, 04:38 PM
I totally understand the situation when a project is suddenly realized it will take longer then expected.

For me, this is not usually a problem unless:

1. You (the programmer) do not tell me until *after* the project deadline has passed.

If you realize the project is going to take longer then agreed, then tell me right away. Sooner is better. I realize life is not perfect, and sometimes a compromise is necessary. But good communication is critical. I won't be happy to find out the project is going to take 2 weeks longer... after the project was supposed to end 2 weeks ago and I have emailed you 5 times trying to get a status update.

Anyway... I hope that helps any contractors who are perusing this thread. :)

I am going to try posting my project on the sitepoint forums. I'm hoping that I will be able to tell by postcount and "reputation" what kind of people are good and what are not. Perhaps that will result in me having some good luck (finally!) to find a decent programmer.

:)

Bangalore Job Mob
09-08-2007, 06:33 PM
Lol. Placing ads and conducting interviews?

I'm not looking for an employee.

lol good contractors aren't looking for your threads on sitepoint either lol lol lol lol

Did I say "lol" yet because lol

Zeke85
09-08-2007, 07:44 PM
Again, I'm still very happy for someone to tell me where I can find all these good programmers that you seem to think exist. Feel free to let me know.

Hey there!

I believe the problem is: most good developers have day jobs. Thinking about the place I work, all the developers are brilliant and well paid. They do not go home and do further work on the side. Developers with jobs already simply (probably) don't have the (time|motivation|need|hassle) to take up your jobs.

So unfortunately you are not recruiting the best people. This does not mean there aren't some talented college students and people between jobs about, they are just hard to find.



Zeke

JohnCrowley
09-08-2007, 08:29 PM
mrzippy,

I agree with your overall theme. It is very difficult to find a talented programmer that understands business and user concepts, and can take those requirements, see the issues beforehand, sort it all out, and then develop a quality product.

We found one a few years ago and hide him away as best we can, pay him nicely for projects, and do what we can to make his life better during a project. But this appears to be the exception rather than the rule.

It is weird in this day and age where people like to work on their own that there isn't more North American based programmers that enjoy making $50-$100 per hour doing coding and working on projects. There's a lot of us out there willing to pay this rate and more for quality work.

- John C.

Bangalore Job Mob
09-09-2007, 12:42 AM
It is weird in this day and age where people like to work on their own that there isn't more North American based programmers that enjoy making $50-$100 per hour doing coding and working on projects. There's a lot of us out there willing to pay this rate and more for quality work.

They're out there, they just don't have time to wade through the thousands upon thousands of garbage posts from rinky dink startups who don't want to pay more than minimum wage that make up the vast majority of the free job boards out there. An engineer would have to spend a month or more answering posts on craigslist or rentacoder or whatever else is popular this week before he or she found a client who actually had any money to his or her name, and we've got bills to pay, too.

Steve_Arm
09-09-2007, 01:06 AM
I certainly did not "micro-manage", as you have implied.

My expectation, is that if I provide an extremely detailed design requirements document, then I should be able to leave the programmer alone to do his job.

Period.

Of course, I expect everything in the design document to be delivered, as agreed to by the contractor before starting the job. This includes ALL requirements, such as coding standards, methodology, and whatever else is in the document.

This is standard stuff. Any design document will include things like basic coding standards and whatnot. That's how you avoid people deliving a mess of code that nobody can ever debug or work on and them saying something like, "hey, it works like you wanted".

Having the application "work" is only one part of the job. Any good coder who has worked on a large project or for a decently sized company will know this. It's the reason why the first quarter of most design documents do nothing expect go on and on about things like code syntax, structure, variable names, commenting style, etc...

My feeling is that I should not *have* to "rant" to the programmer I have hired. They should be able to do the job, exactly as it is described in the design document, and exactly as they promised to do it.

The point of my rant is that this doesn't seem to happen. Instead, I'm left with a mess of code that does not work as it should.

Again, I'm still very happy for someone to tell me where I can find all these good programmers that you seem to think exist. Feel free to let me know.

I totally agree with you as it is not a get what you pay for issue.
Being a professional is very different from being something - in this case a programmer. You falled into the wrong people I guess. And references on the net are nothing. You just need to find a person who you can trust.

barry[CoffeeSprout]
09-09-2007, 05:25 AM
That's true, too. Writing shopping carts is not particularly interesting work, and dealing with people who like to haggle constantly and armchair quarterback the entire process by telling you they know how to do your job better than you do isn't much fun, either. I'd probably "disappear" and peddle my code elsewhere after two or three emails like this little rant, too.

Not only is that illegal, but it is also unethical.

Besides, you have no idea how much I have had to endure on my recent projects.
Think office politics ;)
(Like oh let's work all weekend on a release that will not be put online because none of the backend services are going to work, just so we can make the other team look bad)
If you can't handle a client armchairing on you then you might want to reconsider freelance programming :cool:

(Dilbert really is right on many things)

Bangalore Job Mob
09-09-2007, 10:49 AM
;4704010']Not only is that illegal, but it is also unethical.

Actionable breach of contract, maybe, depending on what was signed by whom. Illegal? Probably not. You might want to reconsider armchair lawyering.

linux-tech
09-09-2007, 12:51 PM
Not only is that illegal, but it is also unethical.

Legal:
Rather than take legal advice from a group of online WEBHOSTS, many of which know very little about giving (or accepting) legal advice, you need to first consult your contract, then consult a lawyer.

If your contract says "you may not redistribute this code", then you probably won't have an out to do it, and it will probably be illegal to do this, BUT, again, IANAL, consult one before dealing with legal crap, or giving legal advice.

Ethical:
Ethics aren't a required part of business. If they were, 99% of businesses wouldn't exist, because 99% of businesses don't hold to any ethical practices at all. Is it ethical to redistribute code that was ordered, but not paid fully for? You betcha, ESPECIALLY if the "client" has attempted to (rightfully or wrongly) trash your name

Domainitor
09-09-2007, 01:34 PM
Lots of things have been touched on here.

Most recently a legal issue. In the United States, if you hire someone to create something for you, that's called a "work for hire" and the party doing the hiring owns the work unless it is explicitly agreed otherwise. So, yeah, it's illegal for the coder to "disappear" and peddle the software elsewhere.

If we do the math, as MrZippy suggests in post #28, that $9,550.00 job paid roughly $79.50 per hour. That's not chicken feed.

Thinking just about the five disasters identified in MrZippy's first post, and presuming that the projects average five weeks (because in post #9 MrZippy said, "The lowest cost of the 5 projects I described in my post was $15k." and doing the math yields 4.7 weeks, if we stick with $79.50 per hour) we're looking at a minimum of 25 weeks.

If I were in this position -- five most recent projects consume six months and cost me $83K -- I'd be looking for an employee, not a contractor. And here's why.

First, it'd likely be cheaper. Second, if I'm working with someone, they're going to come to understand what I want far better than they would via e-mail exchanges, phone calls, and functional specs. Third, as projects evolve, there are no financial penalties: you're the boss, so it's not a change of scope, it's feature creep. Fourth, when people work together, there's a comaraderie that develops and the quality of the work is measurably better, because of mutual respect and pride.

You say (in post #24) that you're not looking for an employee. Perhaps you should be.

NeiSep
09-09-2007, 01:47 PM
Well after reading what some people wrote here i get pretty sad becuse well to tell someone if you pay someone no mather if it is expensive or cheap they should do the work they was told todo nothing else nothing more.
Since im a developer myself but my english is not the best but i do understand instructions and if i don't then i would ask.
I feel very sad for you and this is not good for developers out there becuse of some peoples bad work.

Hope you find a better one and once again it doesn't always depends on how much you pay someone you could get dirty code anyway.

Have a wonderfull day

Bangalore Job Mob
09-09-2007, 08:27 PM
Lots of things have been touched on here.

Most recently a legal issue. In the United States, if you hire someone to create something for you, that's called a "work for hire" and the party doing the hiring owns the work unless it is explicitly agreed otherwise. So, yeah, it's illegal for the coder to "disappear" and peddle the software elsewhere.

Unless the person doing the work is an employee, the work is not necessarily considered "work for hire" unless explicitly stated in the contract.

For a work created by an independent contractor (or freelancer) to qualify as a work for hire, three specific conditions found in the Copyright Act must be meet:

1. the work must be "specially ordered" or "commissioned." What this means is the independent contractor is paid to create something new (as opposed to being paid for an already existing piece of work); and

2. prior to commencement of work, both parties must expressly agree in a signed document that the work shall be considered a work made for hire; and

3. the work must fall within at least one of the following nine narrow statutory categories of commissioned works list in the Copyright Act:

(1) a translation, (2) a contribution to a motion picture or other audiovisual work, (3) a contribution to a collective work (such as a magazine), (4) as an atlas, (5) as a compilation, (6) as an instructional text, (7) as a test, (8) as answer material for a test, (9) or a supplementary work (i.e., "a secondary adjunct to a work by another author" such as a foreword, afterword, chart, illustration, editorial note, bibliography, appendix and index).

If the contractor reserves ownership and distribution rights, then he or she is free to sell it to as many people as they like. Speaking from personal experience, there wouldn't be very many FireWire or USB disk drivers out there on the Mac if this practice were in any way illegal.

HostSentry
09-09-2007, 09:55 PM
If you don't mind me asking, what kind of sites do you go to in order to find programmers?

Domainitor
09-09-2007, 09:58 PM
What you say is true, Bangalore Job Mob: If the rights are expressly reserved by the contractor, then it's his or hers. That goes witout saying. But the Supreme Court in CCNV v. Reid identified certain factors that characterize an “employer-employee” relationship. It's not as simple as one might think.

What's key is that the term "employee" is used here in accordance with agency law.

What's even more key is that none of us have benefit of seeing the contract and all that MrZippy is able to do is to continue to pursue his Cease and Desists, which appear to be working for now. If the company/individual with whom MrZippy contracted is not in the US, exertion of legal pressure upon them/him/her could be an expense that's not worth incurring.

I'll say it again: Perhaps MrZippy should be looking for an employee.

HostSentry
09-09-2007, 10:03 PM
From my experience programming for employers on the internet... the employers are usually less helpful than you appear to be. When I used to do work on the internet, I found myself going above and beyond the requirements constantly for a given project.

For this reason I only do programming locally, or with individuals that I trust. Even locally you can get screwed, but at least it seems to happen less.

Bangalore Job Mob
09-09-2007, 11:45 PM
What you say is true, Bangalore Job Mob: If the rights are expressly reserved by the contractor, then it's his or hers. That goes witout saying. But the Supreme Court in CCNV v. Reid identified certain factors that characterize an “employer-employee” relationship. It's not as simple as one might think.

Well until I end up in the Supreme Court I think I'll stick with the IRS's definition of "employer-employee" and my current non-work-for-hire boilerplate.

Ryan F
09-11-2007, 01:36 AM
If you're going to rant about someone's coding being sloppy, save the middle man and do it yourself. Otherwise, don't complain about supposed "sloppy coding". YOUR standards may not be the world's standards, or the best. Come on now.

The best response? If you want something done to your standards, DO IT YOURSELF. Don't expect any programmer to comment out their code for your understanding. That takes time away from getting the job DONE and moving on to more important things.

ON delays, that will happen, and you're right, expect a couple of days. That's why I always tell people it'll be done 1-2 weeks AFTER I expect it done. Why? Because they can be HAPPY that it's done early, instead of pissed off that it's late.


Now, that just makes no sense. Are you there to "test", or to expect perfection in "testing phase"? If A, then good, but if B, well, you have no right complaining about the "testing phase" not being perfect.

It sounds more like you didn't relay your expectations clear enough to individuals, or rather that those expectations didn't get passed down the chain. That would be why you ALWAYS make sure that you know whom you're dealing with and that they have a (somewhat) credible history.

This is one of the most moronic things I've read on this board in a while.

nnormal
09-13-2007, 11:40 AM
This is one of the most moronic things I've read on this board in a while.


I'm glad someone finally came out and said it. This person would not last a week where i work...

linux-tech
09-13-2007, 12:15 PM
I'm glad someone finally came out and said it. This person would not last a week where i work...

Only because "where you work" , the expectations are unrealistic.
Read through what I put in there, seriously.
I've been doing professional (yes, professional) php and html design, not to mention systems administration for 5 years. EVERY project has been different, yet EVERY project has been the same thing:

A> Testing means testing, it's beta, you got no right to complain about the product in beta.

B> Delays happen, deal with it. I don't care WHOM you are, delays happen, even delays of months at a time. People get sick, customers expect developers to just read their mind, or expect unrealistic timeframes that the developer is forced to accept, or even move the timeframe up.

C> If you want something done how you would do it, do it yourself. Programmers don't have the time to waste writing comments about every piddly little function. You've got a choice. You can take 5000000 lines of comments or twice that in functionality. I guarantee you, EVERY TIME, the buyer will take functionality, as long as the PROGRAMMER is accessible to make modifications.

Here's a little hint that the person is expecting far too much from programmers. This isn't just a ONE TIME thing, but:

I have now had five totally disastreous experiences

5 times! It can't ALL be the programmer's fault, now can it?

Now, I'm not saying the individual is 100% wrong here, but when you expect fully documented code, YOUR WAY, there's only one person to turn to for that, YOU. Otherwise, you're just setting yourself up for dissapointment!

Reality check here:
You're paying for code, nothing more. You're not paying for "documentation", you're not paying for "formatted code", you're not even paying for code you would do yourself, you're paying for code. Now, that doesn't encourage people to code irresponsibly, but the fact is that you aren't paying for something to be done like you, yourself would do it, because only ONE person can do this that way, you.

Each person has their own individual style of coding, and each person is going to do things differently. That doesn't make each person's way wrong, and the other person's way RIGHT, as long as the job is done safely and securely, who cares!

My time (and ANY developer's time) isn't best spent writing documentation, but on writing CODE, what we get PAID for. Don't waste that time by making outrageous demands such as "fully documented source code", or trying to overlook us, or question us. If you want things done to YOUR specs, hey, do it yourself!

Domainitor
09-13-2007, 12:50 PM
Each person has their own individual style of coding, and each person is going to do things differently. That doesn't make each person's way wrong, and the other person's way RIGHT, as long as the job is done safely and securely, who cares!

My time (and ANY developer's time) isn't best spent writing documentation, but on writing CODE, what we get PAID for. Don't waste that time by making outrageous demands such as "fully documented source code", or trying to overlook us, or question us. If you want things done to YOUR specs, hey, do it yourself!

I can see where you're coming from, and I understand your position. But if I'm paying someone to write code, and if I want that code to have comments and you agreed to do it my way at the outset, then, as the one paying for the work, it should be done as I ask.

Let's say you take your car in for servicing. You ask for an oil change and that they balance and rotate the tires. So they change the oil and rotate the tires. You asked for the tires to be balanced, too. But their attitude was, "hey, we didn't feel like doing that; do it yourself." Would that fly? You agreed up front that your tires would be balanced.

But you know what? Since it's so hard to find programmers that actually know what they're doing, I resort to doing a lot of coding myself. And commenting it myself. Because without the comments, that code is going to be much more difficult to maintain down the road. I've gone back to code that I wrote years ago and I'll tell you what: if it weren't for the comments, I'd've spent a lot of time trying to wrap my brain around what the code was doing. Not crappy code, complex code. Things like multi-dimensional linked list managers.

If I'd "bought" code from a journeyman programmer, and he/she moved away or decided to become a monk, or whatever, and was no longer available, I'd be somewhat annoyed if I couldn't hire someone else to maintain or enhance that code.

You may be getting paid to write code, but many people pay for long-term business solutions and longevity, and there's a lot more to it than "just code."

linux-tech
09-13-2007, 01:00 PM
Let's say you take your car in for servicing. You ask for an oil change and that they balance and rotate the tires. So they change the oil and rotate the tires. You asked for the tires to be balanced, too. But their attitude was, "hey, we didn't feel like doing that; do it yourself." Would that fly? You agreed up front that your tires would be balanced.

You're comparing apples and oranges here.
In THIS case, the tires were ballanced, but since the person purchasing the tire ballancing situation was actually a mechanic himself, and the tires weren't ballanced as he would do them, he's throwing a fit.

Yes, it was agreed up front that the tires would be ballanced, but it was NOT agreed that the tires would be ballanced specifically as the customer would do it himself. See, there IS a difference there!

Burhan
09-13-2007, 03:50 PM
linux-tech:

If they rotated your tires wrong; and you (as a mechanic) told them to do it a certain way and they refused to because they have rotated them already; then what would you do?

linux-tech
09-13-2007, 03:56 PM
linux-tech:

If they rotated your tires wrong;

That's just it
They didn't rotate my tires wrong, they rotated them as per company policy, and they did not rotate them as I would have done.

Realistically, there's nothing that can be done at that point. You can rant, but, again, it comes back to the following:
if YOU want something done EXACTLY as YOU would do it, do it yourself!

THAT is what the individual is complaining and ranting about here, nothing more.

Burhan
09-13-2007, 05:02 PM
No, he is complaining that people that he paid to do something and gave very specific instructions refused to follow them. In my book, that is cause for a rant.

Domainitor
09-13-2007, 05:15 PM
...and what I said was, change oil, balance tires, and rotate. If you agreed up front to do all three things, but the person you paid only did two of those things- oil and rotate, NOT balance - you'd be miffed, right?

Dark Light
09-13-2007, 05:42 PM
...and what I said was, change oil, balance tires, and rotate. If you agreed up front to do all three things, but the person you paid only did two of those things- oil and rotate, NOT balance - you'd be miffed, right?
Absolutely.

What it all comes down to is what exactly you ask your programmer to do in his contract, brief or description of your project. If you specifically state that you require full commented code, and that is part of the contract, which many people have been getting at; and the programmers fails to deliver said commented code, you have the right to be very annoyed.

Again, if the contract has been signed with the agreement that the code has to be commented - basically you're paying for code and comments - then the programmer is required to do so to fulfill his contract. If he or she fails to deliver, you have every right to complain.

Best Regards,

linux-tech
09-13-2007, 06:04 PM
No, he is complaining that people that he paid to do something and gave very specific instructions refused to follow them. In my book, that is cause for a rant.

Actually, he's not at all. Here, let's go through his complaints again:


- I was "assigned" a programmer who could barely speak English.

Language problems: Valid complaint there, but really, what do you expect?


- The programmers who did the work used incredibly "sloppy" coding.

IE: Not up to his standards as a "programmer".


For example, the code would have no comments (or nonsensical comments), functions that were either exact or near-duplicates of other functions written earlier, incorrect use of functions, etc...

More rantings and ravings about things not living up to his standards.


(And yes, in all cases, my project requirements stated that the code must be simple to understand, easy to "extend" (for future features), etc...)

Who's to say that it WASN'T? Him, obviously. HE didn't want to take the time to learn THEIR programming style, so, he rants and raves about it not being in HIS style. Oh, the code was commented, he already admitted that himself. It was just too "sloppy" for him.


- Delays.

Delays , to be expected, but that's a legitimate complaint IF it takes months longer than projected then yes, he's got room to complain, providing he didn't pull what most do at the last minute and make massive changes to the project specs.


- And then, when it was finally time to actually test the functionality of the program, there was always a ton of "little things" that were broken or missing.

Come on, we all know (those of us with half a brain, anyways) to expect massive problems during alpha/beta testing phases. Yes, this should be done in house, but still, the customer has no right to complain about things not working in "testing phases" at all. This is why 100% of the development I do is in closed testing, until the customers project is done, and on their server. THEN, if they spot something, it's fixed, but they don't for the most part, because I've found it.

This isn't "You didn't rotate my tires", this is "You didn't rotate my tires as I (the other tech) would have done so", quite literally. And, as I've said before, this individual clearly has a problem, not just with ONE programmer, but with MULTIPLE. So, is it the PROGRAMMER'S fault because the individual expects them to blindly know his programming style and follow it? Not at all. It's the buyer's fault for having expectations that are just, flat out unreasonable.

stuffradio
09-13-2007, 06:13 PM
This is a grey area here as we can all see... I think maybe if on the contract you say code functions x way, spaces on all lines, indented, etc. maybe add brief comments beside sections of code so I(the user) knows what is going on.... etc. etc. and he didn't do that, THEN I see a point to the sloppy coding. HOWEVER, if the client(customer) doesn't specify anything about that, and gets the coding back.... and sees it's all messed up before the contract was fulfilled... I don't really think the client has a right to complain about it. It wasn't on the contract.

Car owner goes to Garage... asks Garage to fix car a. Car a has to be oil changed, tires rotated, and cleaned. Car owner forgets to tell Garage shop whatever that the car needs to be cleaned after the work is done. Owner complains, not the Garages fault. I believe that is what this situation is in this(these) case(s).

Burhan
09-13-2007, 07:41 PM
Who's to say that it WASN'T? Him, obviously. HE didn't want to take the time to learn THEIR programming style, so, he rants and raves about it not being in HIS style. Oh, the code was commented, he already admitted that himself. It was just too "sloppy" for him.

He ... paid ... for a service. He specified what he wanted. He got something else.

Stop trying to justify something that isn't there.

stuffradio
09-13-2007, 07:51 PM
Actually that wasn't fair of me to say... I really can't comment on what happened here, nor can we because we don't know all the circumstances.

linux-tech
09-13-2007, 08:24 PM
He ... paid ... for a service. He specified what he wanted. He got something else.

Stop trying to justify something that isn't there.

You're speaking in terms of right and wrong, when this isn't on those terms. You're speaking in black and white, when this is far from either.

You see, what you still fail to grasp is that this has nothing to do with the client "getting what he ordered" here. It has everything with the client expecting the company to live up to his (or her) standard of coding, to comment to his (or her) standard of coding, when this is just not possible.

Why is this not possible? Well, let's recap shall we?
EVERYONE has their own "standard" of coding. Personally, I throw functions in one messy file, right, left, top and bottom into their own file, sql into it's own, and voilla. Now to SOME , hell, that's messy, but to ME, you know what? It gets the job DONE! It works!

Now, I don't go whine and cry and moan because someone ELSE's code doesn't meet MY standards, no, I do the job myself. Yeah, I've got a TON of crap to do here lately, but hey, I do it.

The point of this whole thing (and ANYONE that's spent more than 6 months into code will agree here) is that EVERYONE has their own coding style. If you've EVER tried to pick up from a coder on a project, you know just how much of a NIGHTMARE it is, because you have to learn their language, how they wrote functions, how they did this, etc. EVERYONE IS DIFFERENT!

Now, yes, I agree on a few of his points, but in some (most) of those cases, he, the client is expecting far too much from the people he is paying to do the job. Maybe he IS paying 10-15 grand to do it, but that's PROBABLY the only way he can get a programmer to work for him, he sounds like a REAL treat to deal with.

I've been around the circle a few times with individuals such as this, always second guessing my work, always saying "do this here, do that there, do this over there", instead of letting the programmer do their job. More ridiculous than anything I've ever seen, and MUCH more of a pain in my tail end.


Again, this isn't as black or white as you make it out to be. You're trying to justify a rant that is barely justifiable. The person expects individuals to code as if he was doing it himself, and no, that's just NOT going to happen.

Domainitor
09-13-2007, 10:48 PM
Note to self: Don't hire people that refuse to even consider doing work the way I want them to, even though I'm the one paying them and I tell them in advance what I want them to do. Especially if they bill themselves as "quality" and "affordable," because I'll just have to pay someone else to do it the way I want.

linux-tech
09-13-2007, 11:21 PM
Note to self: Don't hire people that refuse to even consider doing work the way I want them to, even though I'm the one paying them and I tell them in advance what I want them to do. Especially if they bill themselves as "quality" and "affordable," because I'll just have to pay someone else to do it the way I want.

You can throw around all the general insults you want man, but until you actually grasp what it is I'm saying, you have no right to judge the work that I do.

Think before you speak. Put yourself in the other person's shoes, and by all means, actually understand what I'm saying before you judge me, or the work that I do.

You fail to grasp some very simple logic here. The individual is NOT complaining because "work was not done". The individual is complaining because "work was not done to his standards". That's all.

Now, why wasn't that work done to his standards? Who knows, really. Did they agree to do work to his standards? I think when you look at it deeply, you'll see that they may HAVE agreed to comment out code (which they did), they may HAVE agreed to do certain things, which they did. HOWEVER, it didn't meet his higher than normal standards, so he's throwing a fit.

The best way around any and all of this?
Find a firm, give them a SMALL (1 day max) project. If they provide code that's to YOUR standards, give them something a bit larger, and so on and so forth. If they DON'T, then no loss, move on to someone else.

It's not about not considering to do work the way X person wants to do it, that's not even the point, and if you THINK it is, you've failed to understand ANYTHING that was said here.

The point is the OP is being unrealistic in his demands. This is evident in his initial rant, complaining about things broken in test, things being "sloppy" (according to his standards), things not being commented out (according to his standards). You see, the individual wanted people to do things as HE, HIMSELF would have done them. Unfortunately, only one person can do things that way.

I've had dealings with individuals like MrZippy here. Frankly, the best thing to do in the case of customers like him is let them move on with their business. They will always "know better" than the person they're paying to do the job, they will always find something to complain about, hell, they will always try to get in the way, any way possible. One of the WORST types of people to work for is someone who thinks they know it all about what you're doing, because God knows, THEY can't be taught anything, and if it's NOT done 100% THEIR way, as THEY, THEMSELVES would do it, then it's just not right, and they'll run around whining like a 3 year old child about it everywhere they can.

mrzippy
09-14-2007, 12:15 AM
I've had dealings with individuals like MrZippy here.

Frankly, the best thing to do in the case of customers like him is let them move on with their business. They will always "know better" than the person they're paying to do the job, they will always find something to complain about, hell, they will always try to get in the way, any way possible. One of the WORST types of people to work for is someone who thinks they know it all about what you're doing, because God knows, THEY can't be taught anything, and if it's NOT done 100% THEIR way, as THEY, THEMSELVES would do it, then it's just not right, and they'll run around whining like a 3 year old child about it everywhere they can.

I would just like to make it clear that I have never had any business dealings with linux-tech. Our only interaction has been through these forums.

I do, however, find it interesting that he thinks he knows so much about me. And I think it's great how sure of himself he is. :rolleyes:

God help his customers (or anyone on these forums) should they ever disagree with him about anything.

:o

Domainitor
09-14-2007, 12:26 AM
Dude. (Linux-Tech) Lighten up.

I've been in the computer industry for a very very long time. And the bottom line is, if you pay someone for something, that's what you should get.

The OP's bitch is that work was not done. No comments. Missing functionality. And poor quality to boot.

Might he be going a little over the top? Perhaps. Is it possible that he dropped the ball and wasn't clear about some of his peeves when he was doing his advance legwork selecting the organizations/people to do the work? Probably. Is he failing to learn from his experiences? Yes, it would seem so after five "disasters."

Here's my peeve: If I pay for something, I want to receive it. If someone works for me, and I tell them that I want something done a certain way, then that's how it should be done. I'm paying the bill or signing the paycheck. I get to say how things get done. If they don't agree or can't/won't do things the way I want, then they shouldn't take the job.

And as far as dealings with MrZippy and his ilk go, unfortunately, the organizations/people that agreed to do work for him led him on. They didn't say, "Hey, you're asking for the moon and we can't deliver that," and send him on his way. They took his money and jerked him around. If they'd told him that they didn't want to do the work in the first place, or sent him packing if they found his demands to be contradictory to their way of thinking or working, then he'd perhaps be having a different rant.

And we almost assuredly don't have all of the story because we're only hearing one side.

But if I'm doing the hiring, It's my signature on the checks, so I call the shots. Period.

I can't believe that you'd hire someone to do work and then be okay with them taking your money but not doing the work you asked for. That's the point.

HostSentry
09-14-2007, 12:31 AM
From my experience in programming for money, I can definitely see the other side of the issue. I have also paid other people to do some design work, so maybe I can see it from both sides.

I have seen the buyer expect to much, even in the case of a contract being in place. It is hard to tell your client no, because you want them to be happy. I did server-side programming for an individual's site. He sent me an email with three documents of papers and said (actual quote from the email) :

Drew,
Before we do anything else, I need you to rewrite these pages.

hugh

This of course is no where in the lines of our contract, and should not at all be expected from a programmer.

The buyer will overstep their bounds as much as they can in order to maintain a profitable deal with the seller. I see this time and time again, even when contracts are involved.


I believe it is both the buyer and the sellers job to ensure the transaction moves along smoothly.

My Tips to the Buyer

Do research about the buyer
Get some sample code that they have written, and expect that the presented work is considerably better than what you will receive.
Communicate all of your desires for your script.
Get everything in writingMy Tips for the Seller

Write up a contract
Follow it exactly, and charge for what is not on the contract
Do your best to go above and beyond what is expected
If you have an idea you feel is better, explain to the buyer why it is better. Do not just go and implement it.
Comment everything
Use variables that make sense
Use good easily read syntaxYou can throw around all the general insults you want man, but until you actually grasp what it is I'm saying, you have no right to judge the work that I do.

Think before you speak. Put yourself in the other person's shoes, and by all means, actually understand what I'm saying before you judge me, or the work that I do.

etc etc etc...


It feels like you are suggesting that a buyer and seller can never agree on what programming approach is best. I feel like this may be partially your fault. In programming there is always a more efficient approach to accomplishing a task. So in that sense, there is a better or worse. If you feel your program is more efficient, you need to communicate that more effectively. If you do that, everyone wins!

Why do we make sure we make a contract?

But if I'm doing the hiring, It's my signature on the checks, so I call the shots. Period.

lol

linux-tech
09-14-2007, 06:48 AM
It feels like you are suggesting that a buyer and seller can never agree on what programming approach is best. I feel like this may be partially your fault. In programming there is always a more efficient approach to accomplishing a task. So in that sense, there is a better or worse. If you feel your program is more efficient, you need to communicate that more effectively. If you do that, everyone wins!

No, actually I'm not suggesting this at all. In fact, in 99% of cases, it's easily done. It's the 1% , knowitall individuals, such as MrZippy that make it impossible to do, because they want it done just as they themselves would do it, as opposed to company standards, or even your own standards, and if you don't get it done 100% as they would do it, they throw a big ol fit.

In (speaking from personal experience here) 99% of my dealings with programming clients, this issue never comes up. It's that 1%, the ones that will change specs at the last minute, the ones that will have to constantly look through every piece and inch of your code to make 100% sure it's how THEY would do it, that have to whine about "test" phases, THAT 1% make life a living hell.


The OP's bitch is that work was not done. No comments. Missing functionality. And poor quality to boot.

whos fault was that? let's see:

I paid the programmer/company their deposit and then cancelled the contract

OOPS, that's his fault too.

So, let's sum it up a bit:
A> Language Barrier
Legitimate complaint, though, it's something that should really be expected given the industry. However, again, legitimate complaint.

B> Code not up to "my standards" or "my way of doing things".
Not a legitimate complaint. The end user should interfere not at all with code, or the end code product. Just because they CAN does not mean they SHOULD. Just because they THINK they know better than the designer does not mean they DO, and just because they would have done it differently does not mean that everyone has to, or that everyone can read their mind.

C> Delays
This one I'll go 25/75 on, in favor of the programmer. Why? Typically, there's a reason for delays, and usually that reason isn't on the programmer. Now, yes, you WILL find the occasional programmer who doesn't know what they're doing and under estimates things, but typically,t here is ONE major reason for delays:
Customer modifies request

That's right, the CUSTOMER modifies the request more often than not, or in the case of individuals like MrZippy here, sits over shoulders, repeatedly stating "I want this done this way, I want this function to look pretty like this, etc". This causes the delays, more often than actual developer delays, from what I've seen and experienced.

D> Testing "broken":
Once again, not a legitimate complaint. You knew full well that you were "testing" a product, and should have expected bugs, problems, and errors. Instead, you go in, complain about things that you find broken, and then cancel contracts.

Now let's be really fair and honest to the development side of things here. Did this happen once? No. Did it happen TWICE? Naaah. Try FIVE times this individual (by his own admission) has had this experience. Is the world wrong, or is it the individual?


And as far as dealings with MrZippy and his ilk go, unfortunately, the organizations/people that agreed to do work for him led him on

Actually, that's not always the case. Again, speaking from personal experience here, typically what happens is thus:

Client comes in, sits down with individual consultant
Client says "Hey, this is what I need, etc"
Client and consultant agree on price
Consultant starts on work
1-2/3rds of the way through the project, client turns from Mr. Nice client into what we're seeing here , with
-- I want this formatted this way
-- I want this coded specifically the way I would do it
-- No, no, this doesn't look right

This causes delays, frustration, and outright annoyances. In some cases, it causes individuals to just quit the project altogether. In others, it causes the client to cancel the contract. Again, I've seen both sides of this one.


But if I'm doing the hiring, It's my signature on the checks, so I call the shots. Period.

You bet, 100%, however, again, you're not seeing the programmer's side to this, you're seeing the client's side, and agreeing with the client's side, despite the fact that (in this case), the client is wrong, and expecting waaaaay too much here.


I do, however, find it interesting that he thinks he knows so much about me. And I think it's great how sure of himself he is.

I don't have to have dealings with you, specifically, to know and recognize your type. I've seen it far too many times in my day.


God help his customers (or anyone on these forums) should they ever disagree with him about anything.

It happens, and believe it or not, I'm not always right. I'll admit when I am, and have done so many times. However, for the most part, you won't see me even open my mouth unless I've got a pretty good handle on the topic, and what it involves.

You want to find "good , quality programmers"? Here's a few tips
#1 You will never find anyone that will program in the style that you do. Get used to it. Once you realize THAT, you're good.
#2:
Show some respect for the programmer themselves. Don't just walk in there and tell them they're doing it all wrong, because you would do it differently. Don't just walk in there and say "This is poorly written", or "This is poorly commented". That tells them that they will always have "mommy" (you) looking over their shoulder and trying to second guess them, and makes them less likely to actually want to work on the project, for fear that "mommy" (you) won't approve of their work, or they'll have to re-do everything because "mommy" doesn't like how they've written a specific function. Let them do their job.
#3:
Don't expect anything from testing. Hey, it's testing after all.
#4:
Show some examples of how you would write the code yourself, or of other code you have written if you REALLY insist on it being done as you would (and it appears you do).Don't get all excited though, when they fail to do it 100% like you would.
#5:
STICK TO THE CONTRACT! Don't "cancel" because you put extra work on them (which you do by constantly looking over their shoulder), and they can't meet the deadline. Hey, that's YOUR fault, not theirs.

Programmers (at least every one I've met and talked to) are very fickle people. You try telling them that they're doing something wrong, and they'll sit and argue that their way is better, instead of just sitting there and accepting your unwarranted criticism. Again, remember, just because YOU would write function X 1 way, DOESN'T mean another programmer would. Just because YOU think something is sloppy DOESN'T mean another programmer does.

mrzippy
09-14-2007, 07:07 AM
Wow. Linux-tech, you sure put a lot of time into trying to prove that you are always right.

Here's a direct question for you to answer. I'm going to give you a copy and paste directly from the detailed requirements document that was included in the the bid request / project overview. (ie: The programmers had this document *before* they took the job, submitted their bid, or anything else.)the section about code commenting and use of functions, etc.)

Then, I want you to tell me how right you are about how I was vague with regard to what I was "demanding", and how I was expecting "too much".

2 Application-Wide Principles & Requirements

Good programming practice must be followed. I am not concerned with program size, memory utilization, speed of execution, or similar issues. The following is a list of very high priority items when writing the application source code:

• Must be written in PHP.
• Must be very easy to debug.
• Must be easy to understand what is happening at any given location within code
• Must be easy to “enhance”. (Add additional functionality for future versions)

2.1 Commenting

• Comments are good. Please use lots of commenting throughout all source code to describe functionality and what is happening. The more comments, the better!
• Comments should be very descriptive and detailed.
• Every function and class must include a brief description of the purpose of the function.
• Every function and class must include a description of any input and output parameters.

2.2 Variable, Constants, Function, Class Names

• Names must be highly descriptive and give a good indication of the purpose for the variable, constant, function or class.
• Name size is not a problem. It is better to have a long and descriptive name then a short and name that does not indicate the purpose of the function, variable, or class.
• Names should use a mixture of upper and lower case to differentiate words. For example, “GetSnippetAttributes()” or “DoUserAuthentication()”.

2.3 Functions

• Please make extensive use of functions. . This will help to organize program logic, future bug fixes, and program enhancement.
• Each function should have only one specific, narrowly defined, task/objective/purpose.
• No function should ever duplicate code that is already used elsewhere in the application. (If the same code (or similar) is used in multiple locations anywhere, then it should be combined into one function.)
• Functions may call other functions. (This is necessary when a given function must perform “additional” tasks/objectives/purpose.
• It is expected that there will be many small functions.


OK, so now.. please explain how wrong I was to actually expect these requirements to be delivered by the programmers I hired.

Again, remember that this requirements document was included as part of the project materials to the programmer before they gave their price. It is word-for-word a copy and paste from the document they had.

Now, go back to my original post and read about what was actually delivered, with regard to the portion of the requirements I just copied and pasted.

I can also copy and paste examples from other sections of the requirements document. It is very detailed, and does indeed include coding samples, detailed outline of multiple testing phases and what is required/expected for each of them, etc.

I look forward to your response to show my how wrong I still am to expect only exactly what I paid for.

linux-tech
09-14-2007, 07:20 AM
OK, so now.. please explain how wrong I was to actually expect these requirements to be delivered by the programmers I hired.

Did I say you were wrong in expecting those? Please, tell me where I said you were wrong. I said, and I have always said in this thread:

You will never find anyone that will program in the style that you do.


Never, ever have I said you were wrong in expecting anything to be delivered that was agreed to! Now, let's go through your "requirements" shall we?


• Must be very easy to debug.
• Must be easy to understand what is happening at any given location within code
• Must be easy to “enhance”. (Add additional functionality for future versions)

Just because these 3 are not easy for you , doesn't mean they're not easy for someone else. Again, your style, their style.



• Comments are good. Please use lots of commenting throughout all source code to describe functionality and what is happening. The more comments, the better!
• Comments should be very descriptive and detailed.
• Every function and class must include a brief description of the purpose of the function.
• Every function and class must include a description of any input and output parameters.

And again, just because it's not descriptive for you doesn't mean it's not descriptive for someone else.


Then, I want you to tell me how right you are about how I was vague with regard to what I was "demanding", and how I was expecting "too much".

Actually, that is a pretty "demanding" draft there. Vague? I never said you were "vague". In fact, the first time the word "vague" came up in this thread? You mentioned it just that post.

Now, are you wrong to expect what was in that contract? Did I ever SAY you were wrong? Please, tell me where I did! What I said, and have always said was that YOUR interpretation of "sloppy code" is not someone else's interpretation of sloppy code. YOUR interpretation of "well commented" is not someone ELSE'S interpretation of well commented.

Of course, we're just seeing one side of the story, and that's ALL we're seeing. A smart business individual would have turned you down at the door, just based on that contract, knowing for damn sure that you'd be a hassle to deal with in the end!

Bangalore Job Mob
09-14-2007, 08:58 AM
Back to the car analogy: telling an engineer they need to "use functions" is like telling a mechanic they need to "use tools." Anyone who's even marginally competent is going to tell you where you can stick your ridiculous "specifications," and if you choose to hire someone for whom this rudementary education is actually necessary, then you deserve whatever you get.

mrzippy
09-14-2007, 09:07 AM
And yet... in several of the cases, the programmer did *not* use functions when they should have.

Have you ever looked at a big legal document or a judges decree?

The first dozen pages are just "common sense" stuff. By your logic, all of that should be excluded because... hey.. it's common sense and is not needed.

The purpose of a detailed requirements document is to .. detail.. the requirements. It is to avoid a situation where the person paying the money turns to the person receiving the money and says (after seeing that the entire 7000 line applicatoin is just one line after another of code with no function), "But using functions is common sense!".

.. And then having the programmer reply, "Well, it was easier for me to not use them, and you didn't say I needed to. Where's my money?"

If I assume the programmer will use functions because it's common sense.. then I would definately have no right to be upset if they wrote the whole application in one giant file.

The purpose of a requirements document is to outline the requirements I am paying for. And since proper use of functions is a requirement I desire in my program... it is included.

By the way, you would be surprised how many programmers don't use functions. :)

Common sense to you and I (functions) could be a pointless waste of time to someone else who learned how to program differently.

I prefer, and think it is always better, to be clear about what I expect. Hence, the detailed requirement document is very... detailed about my requirements.

Domainitor
09-14-2007, 11:48 AM
Linux-Tech will never understand what we're saying.

I wish that twenty-five years ago, when I had five years in the industry like him, I had known everything like he does. Gosh. Imagine the time I'd've saved by not screwing around with what the customer wanted.... Damn. I've been a fool.

mrzippy
09-14-2007, 11:51 AM
I agree. But I enjoy his responses, so I keep replying.

My doctor says it's important to have at least one laugh every day.

:)

sasha
09-14-2007, 12:10 PM
Of course, we're just seeing one side of the story, and that's ALL we're seeing. A smart business individual would have turned you down at the door, just based on that contract, knowing for damn sure that you'd be a hassle to deal with in the end!

Sorry for jumping in but I think you might be seeing only one side of this story too. I have experience as contractor, but in the same time I have experience as someone looking for contractor myself. My dealing with potential candidates were not much different then mrzippy's. Maybe I was even more strict requiring the code to be formated in specific way too, stuff like indentation, number of lines between functions, names of class and function files and so on. At the end I realized that only way to get someone who does things perfectly (my way), is to train someone myself.

The bottom line here is very simple, people will take on project they cannot complete based on strict specifications. If client specifies that he wants you do the project using only one hand and you do it using two hands, you did it wrong. In that case, unless you are already doing the work using one hand, you should not take on such project at all.

sleepsleep
09-14-2007, 12:23 PM
just an idea.
since you are a programmer too.
maybe you could split the project to several part. (you will do the merging later)

so, tasks will get smaller and easy to check if the outsource programmer accomplished it or not.

eg.
write function that will received 3 parameters.
function name : user_online
params = (&userId, &userPwd, &userState)
return true if task success, false if error
put the value in userState.

link to database, table name "User", column, id, pwd

anotehr eg.
write function : user_add
params : password, name, email, dob
affected table : user
affected column : name, email, dob, joindate(use today date), password (hash with md5 twice)

i mean, something like that will make you see the result quite straight.

mrzippy
09-14-2007, 12:35 PM
This is a good idea for large projects, and is actually a technique I used extensively when I worked as a project manager for large software development projects. (ie: We would break up a multi-million dollar project into smaller groups of programmers, with each group working on a specific functionality that was then merged later. Sometimes within each group, there was a further break-down of individual tasks, too.)

This method of "programming distribution" does work, but requires significant resources to manage each group/programmer/task and to make sure they are *exactly* following all the project specifications, requirements, and timeline. It also then requires invididual functionality testing of each task/component that is produced by each group/programmer, before it can be integrated or tested with the larger project as a whole. This means writing and executing individual test cases, which is a whole lot of work...

In my opinion, it is too much time/effort required to break up a small development project. (ie: Anything under $50k is not worth the extra time/effort required.)

Having said that.. if you do break up a project into smaller pieces, it then becomes critical that the programmer follow the requirements and design specification documentation as exactly as they are written.

So that means someone like linux-tech, who believes he can do whatever he wants because "he's the programmer and he knows best", would quickly find himself removed from the job when he decides to ignore the design documentation becaues "it's better" to use $x instead of $y and his portion of the code breaks everything else.

I can hardly wait to read his response to this. :)

sleepsleep
09-14-2007, 12:55 PM
the problem with this type of programming distribution is.

if he is able to break/split it, he is assumed to have more deeper knowledge on how to code it.
if he know how to code it, he might code them all himself or just repair those code that he outsource. (except for some icon, image, logo, or layout position that he have no artistic skills)

yeah, unless it is very LARGE project, otherwise, best is doing it on your own.
but how large is large? it seems to me, every functional project could be large project. :P depend on how deep you want to control

Bangalore Job Mob
09-14-2007, 01:00 PM
And yet... in several of the cases, the programmer did *not* use functions when they should have.

And yet... you hired them.

I know there are a lot of idiots out there who can't code for beans. I don't know what you'd like to call a person who employs them voluntarily, repeatedly and exclusively. Any of these problems should have been immediately obvious, if not from day one, then by the first week's checkin/progress report. If you want to play product manager then you need to act like one.

sleepsleep
09-14-2007, 01:26 PM
before it can be integrated or tested with the larger project as a whole.
i think this is the KEYWORD,
to build a software/project, we need a good system/procedure. eg. how they code/update the os kernel and etc.

we need 3 group of people
1 group = code it
2 group = break / hack it
3 group = merging, combine, compile & test
so, 1 group code a function, 2 group get it from a system that sync the 3 groups, test/debug/update it if it works as describe.
3 group update it into local tree after 2 group pass ok flag.
compile and test.

loop until the project finish.
sounds like kernel building procedure .... :D :D :D

crystalcube
09-15-2007, 05:06 AM
And yet... in several of the cases, the programmer did *not* use functions when they should have. I do see a problem with that statement. Well I have found programmers generally have very narrow view of the system and what should and should not be a function isn't natural to many. And how to design functions with proper interface is even more difficult. In fact the specification should define functions but given time limits thats not always possible.

I am not saying that using developing without functions is a good thing but it depends on various factors ...depending on skill of developer, language and platform.


I know there are a lot of idiots out there who can't code for beans. I don't know what you'd like to call a person who employs them voluntarily, repeatedly and exclusively. Any of these problems should have been immediately obvious, if not from day one, then by the first week's checkin/progress report. If you want to play product manager then you need to act like one.
You can practically blame it largely on current state of job market. Its easier to change job than do a good work. And when companies hire they look at the resumes and think its a good thing. Unfortunately resume do not reflect quality of your work. Interviews are only partially effective.

Cost of quality is quite high, when you consider that you can effectively double the cost and time line of project. Most companies do not understand the basic problems and think throwing more people is the solution.

In general finding quality developers is difficult but thats just part of overall problem.

mrzippy
09-15-2007, 03:59 PM
And yet... you hired them.

I know there are a lot of idiots out there who can't code for beans. I don't know what you'd like to call a person who employs them voluntarily, repeatedly and exclusively. Any of these problems should have been immediately obvious, if not from day one, then by the first week's checkin/progress report. If you want to play product manager then you need to act like one.
Yes, you're right. The problem is 100% my project management skills. Silly me for being a bad PM. lol.

Domainitor
09-15-2007, 08:56 PM
Hey, MrZippy! Look on the bright side.... You're a bad Project Manager five times over, 'cause you did it five different times! You should be proud! You're a Five Hundred Percenter! :D

(Please note that I'm being facetious. What BJM seems to have not picked up on is that it's different teams; you didn't keep hiring teams that you knew were bad.)

Bangalore Job Mob
09-15-2007, 10:33 PM
Hey, MrZippy! Look on the bright side.... You're a bad Project Manager five times over, 'cause you did it five different times! You should be proud! You're a Five Hundred Percenter! :D

(Please note that I'm being facetious. What BJM seems to have not picked up on is that it's different teams; you didn't keep hiring teams that you knew were bad.)

I picked that up just fine. What you seem to have not picked up on is the fact that a grown adult hires people from internet forums exclusively and types "lol" a lot. If you think that's the mark of a successful businessman then your future in the software industry is not much brighter.

Domainitor
09-15-2007, 11:59 PM
Oh, my bad. :nuts:

When you said "repeatedly and exclusively" I thought you meant "the sames one over and over."

I think the mark of a successful anything is having an open mind and being able to recognize when you're wrong, and then step up to the plate and acknowledge it. :think:

For whatever reason, MrZippy seems to have issues with hiring an employee. As a result, he's trying to get work done by looking at the only resources that he appears to have at his disposal. And, unfortunately, he's being lied to and bulls#!tted about capabilities.

So he says "lol" a lot. We all have our quirks.

quicksilver04
09-17-2007, 12:28 PM
• Must be written in PHP.
• Must be very easy to debug.
• Must be easy to understand what is happening at any given location within code
• Must be easy to “enhance”. (Add additional functionality for future versions)


An observation (from a programmer...): if you didn't define "very easy to debug", "easy to understand", etc. elsewhere in the document, then those are qualitative attributes that are by their own nature subjective. I personally would not sign a contract asking me to deliver something "easy to X", I would either ask to have those qualifications removed from the document or rigorously defined.

Domainitor
09-17-2007, 12:49 PM
See, that's what I'm talking about. QuickSilver03 would be reasonable and say, "hey, let's define what you mean by that" if he's unsure. That's a Good Thing.

Unfortunately, we don't have the complete context, and it's possible that those bulletted terms are clarified elsewhere or are obvious in context. But QuickSilver03's right: those terms, standing alone, are open to interpretation.

jt2377
09-17-2007, 01:34 PM
An observation (from a programmer...): if you didn't define "very easy to debug", "easy to understand", etc. elsewhere in the document, then those are qualitative attributes that are by their own nature subjective. I personally would not sign a contract asking me to deliver something "easy to X", I would either ask to have those qualifications removed from the document or rigorously defined.

No. that just plain wrong. any code that you create must be easy to debug, easy to understand...etc. that shouldn't be defined anywhere. that's what good software engineering is.

this is why software engineering is important. i used to produce spaghetti code then as i work with real dev. team and starting to learn all the discipline. this is what a good quality programmer do. you write clean, easy to understand and debug code.

"good quality" programmer's code are easy to understand, debug...etc. bad programmer need you to tell him that so he will do it. that's what bad programmer do. good programmer write code for the next guy in line to maintain the program. Do you read any software development book like Test Driven Development. It is the job of programmer to produce good quality work. if you need those to be define then i think you're a bad programmer.

Domainitor
09-17-2007, 04:23 PM
The issue is that what you mean by "easy" may not be what your client means. I'm perfectly comfortable coding and debugging compilers and kernels, but most people wouldn't know where to begin. What's easy for some isn't for others. But that doesn't mean that they're bad programmers.

jt2377
09-17-2007, 04:35 PM
The issue is that what you mean by "easy" may not be what your client means. I'm perfectly comfortable coding and debugging compilers and kernels, but most people wouldn't know where to begin. What's easy for some isn't for others. But that doesn't mean that they're bad programmers.

how about write code with step diagram or comment? Cover the basic then produce the detail flow chart of what your program do. this is what i do for my previous employer before i left. i make a flow chart of how my program run from the beginning to the end and document each function/method/class...etc.

easy should mean clean code and easy for the next person to understand by reading your comment.

crystalcube
09-20-2007, 03:44 AM
No. that just plain wrong. any code that you create must be easy to debug, easy to understand...etc. that shouldn't be defined anywhere. that's what good software engineering is.

this is why software engineering is important. i used to produce spaghetti code then as i work with real dev. team and starting to learn all the discipline. this is what a good quality programmer do. you write clean, easy to understand and debug code.

Actually when you work with varied team members you define these things and normally its called "Coding Standard or Guideline". Most company have these probably for each language they work on. So instead of saying "easy to read and debug". Its better specified as "Code must follow coding guidelines provided in Document Code_Guidelines_for_php.txt"

The only difference with experienced programmers is that they are used to coding guidelines.

And there is no such thing as "Easy to debug" . what does it means ? Debugging is completely based on available tools and skills.

What probably is meant is there should be way to log messages and way to disable debug messages. This again can be easily covered by providing "Coding guidelines"

jm2000
09-20-2007, 04:49 AM
Hi,

Let me chime in. The issue here is clear. You are hiring a single individual to do your work. You need to hire a company with staff and proven track record. This is what you will always get when you just get a single guy..yes it will be cheaper but you will have to pay the price..

ACW
09-21-2007, 07:19 AM
- I was "assigned" a programmer who could barely speak English.[...]In each case, I paid the programmer/company their deposit...
It sounds like he has tried both individuals and firms with staff.

For years my bread and butter has been development work; mainly as a sub contractor doing back-end and database work for web design/development firms. I've seen the same problem found with web hosts - it is hard to find a good one because there are just so many bad ones. And even if you do find a decent one things may change overnight.

As an example, I've worked with companies who would close a deal and commit to deadlines even before gathering all the requirements and consulting with the designers and programmers. I have also seen examples of firms that are doing well one minute then experience drastic changes when management or key personal changes.

There are just so many companies and people billing themselves as programmers that it is very difficult to find the right one for you. The only advice I can give is to get recommendations from people you know and trust. This is what one would normally do to get a doctor, accountant or lawyer even though in those professions they actually have to go to get a degree and pass examinations. So it is even more important to do so in a field were anyone that has picked up the latest programming book can bill themselves as a developer.

But this too has its problems for, how many people that you know have successfully hired someone to create an application for them? For many the answer will be zero.

siforek
09-21-2007, 06:49 PM
I disagree with many of replies stating the OP is in the wrong here. From what I understand of the situations it's just been bad luck and I sympathize. Although there has been many good suggestions, what work for some may not work for you, and unfortunately trial and error is unavoidable.

As a programmer I agree that you should get exactly what I pay for, as long as your expectations are clearly stated. It seems they were here, so I'd put the blame on the firm and/or contractors.

There are cases where I find what seems to me, a better way to do something, but long before deferring it must be cleared with the project manager. It's hard to find the right person or firm, and there are many "hacks" out there claiming to be more capable than they are or who just turn out to be complete idiots as you've learned.

Keep looking and I wish you the best of luck.

linux-tech
09-21-2007, 07:28 PM
It seems they were here

Umm, wha??

• Must be written in PHP.
• Must be very easy to debug.
• Must be easy to understand what is happening at any given location within code
• Must be easy to “enhance”. (Add additional functionality for future versions)

One of those 4 expectations are "clearly stated" or "clearly defined". The others are completely and totally interpretive. What is easy for ME is not easy for YOU, but of course, you're going to argue that this is clearly defined. No, not at all.

The parts of the contract that were posted were not clearly stated, but interpretive. The difference between the two is night and day. For example:


print "hello";

and

echo "hello";

Both of these do the same thing, no? Yet one might interpret using one as "sloppy coding" because they don't like the function "echo", they were scared by some "echo" as a kid, or the other might interpret the word "print" as sloppy coding, because they were hit by a printer one too many times as a kid. Realistically, BOTH are fine and safe to use, NEITHER should be interpreted as bad functions, but again, it's all left up to interpretation.

One, maybe two situations can be written off as bad luck, but 5 , well, that pushes it into the category where the user clearly has a problem with either defining their expectations (given the above statement DIRECTLY from them), or having unrealistic expectations. I can expect a flying pink monkey. I can PAY for a flying pink monkey, but I'd better not expect anything but a flying, stuffed pink monkey, or, at best a flying balloon pink monkey, certainly not a REAL flying pink monkey!

jt2377
09-22-2007, 12:13 AM
Umm, wha??

One of those 4 expectations are "clearly stated" or "clearly defined". The others are completely and totally interpretive. What is easy for ME is not easy for YOU, but of course, you're going to argue that this is clearly defined. No, not at all.

The parts of the contract that were posted were not clearly stated, but interpretive. The difference between the two is night and day. For example:


print "hello";

and

echo "hello";

Both of these do the same thing, no? Yet one might interpret using one as "sloppy coding" because they don't like the function "echo", they were scared by some "echo" as a kid, or the other might interpret the word "print" as sloppy coding, because they were hit by a printer one too many times as a kid. Realistically, BOTH are fine and safe to use, NEITHER should be interpreted as bad functions, but again, it's all left up to interpretation.

One, maybe two situations can be written off as bad luck, but 5 , well, that pushes it into the category where the user clearly has a problem with either defining their expectations (given the above statement DIRECTLY from them), or having unrealistic expectations. I can expect a flying pink monkey. I can PAY for a flying pink monkey, but I'd better not expect anything but a flying, stuffed pink monkey, or, at best a flying balloon pink monkey, certainly not a REAL flying pink monkey!

I think it is the fault of PHP with its inconsistency.

VB.net

Msgbox("Hello, world")

- this is the old VB6 way but they kept it in VB.net because for the backward compatibility reason.

the same code in C#/VB.net

Messagebox.show("Hello, world");
Messagebox.show("Hello, world")

perhaps, that is the problem of PHP and the reason that Ruby is more "elegant" and "clean".

gplhost
09-23-2007, 12:55 PM
To me, when choosing between 2 things that does exactly the same thing, I'd choose the most quick one. So echo is better than print because it's one char shorter... :)

Do you think that this:

sprintf(stdout,"%s","Hello world");

is better than this:

print("Hello world");

Then why do you think Messagebox.show() is better than Msgbox() ??? I don't get it... Simply because it's "nice" and "object oriented" ? No point... Objects are needed WHEN there's a need for things like polymorphism, refinements, modularities, and things like that. I've seen many times OOP abuse, and this example is to me, one of them, as I'm sure that underneath, it's calling a function that is not object oriented.

Thomas

gplhost
09-23-2007, 12:57 PM
mrzippy,

One thing that I don't understand: why didn't you do CODE REVIEWS long before it was released if you think you are able to review code? This can be done after 1 or 2 weeks of programming, and this is the BASICS of project managements. This would have avoid a lot of trouble with your *BAD* programmers, and you could have stop the guy early enough...

Thomas

ACW
09-23-2007, 04:50 PM
From the very first post it was my impression that he did do code reviews, tried to address problems as they came up and, when that seemed futile, he would pull out of the project and loose his deposit. The project he finished himself was going well until the developer fell off the face of the earth.

No amount of code review is going to help with the deposit. I think to imply that the OP doesn't know "the BASICS of project managements" is a little much.

sleepsleep
09-23-2007, 05:37 PM
i don't know if you guys will agree with me,
the more you know, the more harder you KISS (keep it simple, stupid)

Domainitor
09-23-2007, 11:36 PM
No amount of code review is going to help with the deposit. I think to imply that the OP doesn't know "the BASICS of project managements" is a little much.

Absolutely true.


i don't know if you guys will agree with me,
the more you know, the more harder you KISS (keep it simple, stupid)

I'm not sure I understand how that applies here....

gplhost
09-23-2007, 11:47 PM
Oh, I didn't mean to be rude. If I was sorry then. mrZippy knows that code review is important, as he did it but maybe a bit too late, no? That's my feeling when I read this thread.

Thomas

Lagniappe-labgeek
09-24-2007, 06:12 PM
As an old-fart programmer myself (including contractual), sorry linux-tech you're WAY OFF.

1) If I post on elance that I want this software written and I expect it to include documentation, then yes I most definitely did indeed pay for more than just the code itself. If I pay you to rotate my tires my way, and you accept that job, you are contractually bound to do so. Failure is a material breach. The contractor is working for them.

2) If I pay for a professional programmer (and they all claim to be professional when they write bids), then I expect a professional result.

3) The contract provider does not have to learn the style of the contracted programmer. Apparently you've never been a hired gun programmer. Most places you walk in and they hand you THEIR specs, coding style & standards documents. The programmer is expected to live to them or the code will not be accepted, and the programmer will be out on his ear before the 90 day mark (the usual trial in my experience).

4) Delays can and should be avoided if at all possible. A delay or two does happen. In my experience, because of requirements changes, but that's another story. But claiming a week and taking weeks is the sure sign of either a contractor with little to no experience, or outright misrepresentation if they knew ahead of time.


To the OP:
Did you know that Zend has a certification program for PHP? While it doesn't address any of the language difficulties or work history. At least it should get rid of some of the learn as we go you've seen.

Domainitor
09-24-2007, 09:55 PM
As an old-fart programmer myself (including contractual), sorry linux-tech you're WAY OFF.

Thanks for weighing-in on this, labgeek. I'm a FOG, too (started in 1976). I was starting to like I was talking down a pipe.... I agree with what you said 100 percent. But it seems we're few and far between. :(

jt2377
09-25-2007, 07:15 PM
To me, when choosing between 2 things that does exactly the same thing, I'd choose the most quick one. So echo is better than print because it's one char shorter... :)

Then why do you think Messagebox.show() is better than Msgbox() ??? I don't get it... Simply because it's "nice" and "object oriented" ? No point... Objects are needed WHEN there's a need for things like polymorphism, refinements, modularities, and things like that. I've seen many times OOP abuse, and this example is to me, one of them, as I'm sure that underneath, it's calling a function that is not object oriented.

Thomas

MsgBox(); - what does this mean to a newbie or to a person who never code before? Can you honestly tell me you can understand what MsgBox() mean if you are not a programmer?

MessageBox.show() - You can clearly understand that we are calling a MessageBox and its method show().

It got nothing to do with OOP and yes, OOP is alway better but look at the code and tell me which one express itself better to none programmer or even programmer.

Programing is like writing in English. You can use a lot of slang like "yo, what's up" or even the current text message generation like in the Verzion mobile commercial with "LOL, OMG! BBF". How can you express yourself or your program if no one understand what you are writing about?

gplhost
09-25-2007, 11:16 PM
You could have also write Display_An_Informative_Dialogue_Box_To_The_User_With_No_Choice_But_A_Ok_Button_And_Thats_It() but it's not really easy to type. MsgBox() is quite easy to understand, come on!!!

I hate Windows because it aims at the most stupid crowd, and that's why I'm using Linux, because it chooses the most convenient, even if you need to LEARN it, which is, on the long therm, the best way to go. This one is a very good example...

Thomas

iWorshipCows
09-26-2007, 01:15 AM
Did you know that Zend has a certification program for PHP?

Did you know that certifications are utterly meaningless? Hell, so are CS degrees.

jt2377
09-26-2007, 10:36 AM
You could have also write Display_An_Informative_Dialogue_Box_To_The_User_With_No_Choice_But_A_Ok_Button_And_Thats_It() but it's not really easy to type. MsgBox() is quite easy to understand, come on!!!

I hate Windows because it aims at the most stupid crowd, and that's why I'm using Linux, because it chooses the most convenient, even if you need to LEARN it, which is, on the long therm, the best way to go. This one is a very good example...

Thomas

why do you want to chose such long name to describe something that can be easily done with MessageBox ?

since MessageBox is an object it have the method to show the ok, cancel...etc. so your long name object is not needed.

MsgBox() - what does Msg mean? How's typing Message is troublesome and why does this have to do with Windows or Linux? You can write crap code on both platform. Linux chooses the most convenient? Crappy code is not convenient. It's another way to say that you write spaghettis, unreadable code. writing crap code doesn't mean you are l33t or your code is convenient.

Don't know if you ever work in an team environment but i write code for the next guy and not for me. I make it as clean or to the most "stupid crowd" and "un-convenient" as you put it so he can pick up much faster with meaningful code instead the shorthand/spaghettis code.

siforek
09-27-2007, 12:24 AM
why do you want to chose such long name to describe something that can be easily done with MessageBox ?

since MessageBox is an object it have the method to show the ok, cancel...etc. so your long name object is not needed.

MsgBox() - what does Msg mean? How's typing Message is troublesome and why does this have to do with Windows or Linux? You can write crap code on both platform. Linux chooses the most convenient? Crappy code is not convenient. It's another way to say that you write spaghettis, unreadable code. writing crap code doesn't mean you are l33t or your code is convenient.

Don't know if you ever work in an team environment but i write code for the next guy and not for me. I make it as clean or to the most "stupid crowd" and "un-convenient" as you put it so he can pick up much faster with meaningful code instead the shorthand/spaghettis code.


I doubt the long named object was a serious remark. The "stupid crowd" as you put it, isn't going to understand php, perl, asp, ext. anyway, so it doesn't make much sense writing code so they can understand it.

I write code to function as quick and efficiently, while using as little resources as possible. Sure I'll comment things out a bit if I intend others to read through and modify it, but otherwise there's no point waisting time.

All programmers has their own techniques and strengths. What works for you and your purposes may not for me and vise versa. It's important to identify the best methods for the current project, overall goals, and keep things as simple as possible, one step at a time.

For me it's best to meticulously plan out the entire project or piece I'm working on before ever writing a single line of code. Some may agree. I've known many excellent developers who just sit down and go at it, but even they have some sort of check list.

It seems we've gotten way off topic, but I think there's been some reputable points made.

Best of luck!

Hugin
09-29-2007, 03:27 PM
C> If you want something done how you would do it, do it yourself. Programmers don't have the time to waste writing comments about every piddly little function.

http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/kern/sched_4bsd.c?rev=1.105;content-type=text%2Fplain

FreeBSD programmers seem to disagree with you. Actually, any good programmer will.

And FreeBSD programmers aren't event paid to write comments. Yet they do. Go figure.

Domainitor
09-29-2007, 05:26 PM
http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/kern/sched_4bsd.c?rev=1.105;content-type=text%2Fplain

FreeBSD programmers seem to disagree with you. Actually, any good programmer will.

And FreeBSD programmers aren't event paid to write comments. Yet they do. Go figure.

Touché! Wow! I deal with Slackware on a daily basis and that didn't even occur to me!

linux-tech
09-29-2007, 06:32 PM
Touche nothing! That doesn't prove anything at all.
Let's take a look (again) at reality here.

A programmer's best use of his time is to write code, NOT to write comments, or 3 lines of comments telling idiots what 1 line of code does.

Individuals working on Open Source projects have the unrealistic expectation that all code will be documented as they would have it done so.

Again, NO TWO PROGRAMMERS ARE ALIKE. NOTHING will be done exactly as you would do it specifically, unless YOU do it yourself.

One of the biggest pains in the *** is taking over projects that are half completed. You have to spend countless time learning nuances, design structure, and flow that the other programmer used just to get yourself up to date and up to speed. THIS is what the individual is complaining about here. The designers didn't do things "as he would".

Domainitor
09-29-2007, 07:03 PM
Touche nothing! That doesn't prove anything at all.
Let's take a look (again) at reality here.

A programmer's best use of his time is to write code, NOT to write comments, or 3 lines of comments telling idiots what 1 line of code does.

Individuals working on Open Source projects have the unrealistic expectation that all code will be documented as they would have it done so.

Again, NO TWO PROGRAMMERS ARE ALIKE. NOTHING will be done exactly as you would do it specifically, unless YOU do it yourself.

One of the biggest pains in the *** is taking over projects that are half completed. You have to spend countless time learning nuances, design structure, and flow that the other programmer used just to get yourself up to date and up to speed. THIS is what the individual is complaining about here. The designers didn't do things "as he would".

When you get beyond this attitude, where one performs as they see fit, not as they are contracted to do, let us know. Everyone I know hires people and companies that do work the way they want it done, not how the programmer feels like doing it.

Real Programmers write comments. Not necessarily, as you suggest, for every line of code. But at least in accordance with the wishes of whomever is paying them. Real Programmers write quality code that they anticipate will be used even after they're no longer in the picture. If it can't be maintained, it gets thrown out.

While I agree that no two anything are alike, programmers or otherwise, if you specify up front how you want something done, then it should be done the way you want it. It really is that simple.