views:

416

answers:

6

While this doesn't apply to my present situation, I'm sure we've all been there before. You're a Java developer who's been asked to develop an app in C#, or you're a ASP.NET developer asked to do something in ASP.NET MVC, or a PHP developer with the opportunity to do a Rails or Django site.

Fundamentally, if you're a competent programmer, these sorts of platform shifts shouldn't really be a problem. Given enough time, you can expect to become as proficient as you were on your old platform.

However, if this is a freelance project for a client, does it seem at all unethical to be learning this platform on their dime? Assuming said client doesn't give you an unlimited amount of time to finish the project, there are going to be compromises and possible quality issues due to your inexperience.

That said, you have to start somewhere and not everyone has the luxury of spare time to tinker with new languages/platforms. Sometimes its necessary to just bite the bullet try and plan things intelligently and just get it done and get paid.

Does this seem unethical? Would accepting a lower rate make it more ethical?

+14  A: 

I see no ethical problem here if you disclose that your primary expertise is on platforms other than the one that they're hiring you to develop on.

sblom
Agreed. You should inform any client about what level of expertise you bring to a project.
JeffH
True, but non-technical clients may fail to understand or simply underestimate the effect your inexperience may have on the project. I think a corollary is that we have an obligation to educate clients about the risks this poses.
Andrew Hedges
I agree with Andrew. But that depends on the honesty of the developers which I find very, very in-accurate with outsourcing. That's from my experience. They claim to know everything, but really nothing or a mere something.
Saif Khan
+4  A: 

It sort of goes without saying, but your client would be the one to determine if they even want to go with you as a consultant if you don't know the language/platform they want you to work on, and they would also be the ones to tell you whether or not they will pay for you to "learn as you code". You just need to be upfront and honest with everything from the start. Don't act like you know a platform/language if you don't.

Nicholas H
+4  A: 

Assuming you're billing hourly:

If you're an experienced developer then you should be able to tell what is costing you time due to learning the new platform versus solving the problem at hand.

Keep track of what you do (using a screencap application could help here) and if it's pure research (reading articles, looking up documentation) then don't bill it. Also, if you're fixing a bug that turns out to be a newbie mistake (such as misunderstanding some information), then don't bill that. The rest of your time will have been spent in productive work for the client, and that should be what is billed.

Kai
+1  A: 

I've been in a situation like this with adobe air. Yes it's not exactly like jumping from Java to .NET or from PHP to Python since I already knew javascript. Actually I was affraid that I'd come off as too expensive and gave a below margin price for the project. But didn't regret it because the client was very satisfied and returned with another 2 projects later.

If the price you offer is acceptable to your client and you are absolutely sure you can deliver a high quality product there's nothing unethical with it.

Vasil
+2  A: 

It sounds like you're all talking of "Time and Materials" projects where the client pays you however much time you take to complete the job. On a project like that I can see how this comes into play and I would recommend being honest.

Most of the projects I work on are "Fixed Price". The customer gives us an idea of what they want. We then work up a "Fixed Price" quote. If the customer doesn't like the numbers they go elsewhere, if they're ok with the numbers then they agree to the price. Whether we have to learn something to get the job done or not the customer's price remains the same. In this situation it doesn't matter. The customer either agrees to the price or not and it doesn't matter how much time it takes you.

sjbotha
The risk here seems to be (appropriately) squarely on you as the developer. If it takes you longer than anticipated to get up to speed on the technology, you eat the cost. Makes sense to me!
Andrew Hedges
Right, but if you can get the job done quickly you can make a bit more profit too. I think we and our customers both prefer this as it makes the cost predictable and we get the opportunity to make more money. Just don't try it if you don't have faith in the developers that are on the project.
sjbotha
+3  A: 

No - its not unethical. Our profession demands that we learn something new on a constant basis. This is why we can be expected to charge / get paid what we do. Employers are often willing to not only buy books for us, but also pay for certifications, seminars, and any time we spend at said extended learning. The rationality behind it is that if we learn something new, there is inevitably a payoff for them (be-it efficiency, performance, etc).

I suspect that you'll argue that its different because you are freelancing so I'll pose the question - why is it any different? Your employer is your client - if you feel that they'll gain benefit from said platform over another then you are doing them a service and should be compensated as such.

Chance
The difference is that an employer can reasonably expect to see a greater payoff from educating you than a freelance client who may only use your services once.
Andrew Hedges
I'm not suggesting that he charge the client for seminars but I feel that it is within our ethical boundaries to charge for time spent using a new technology. If freelancers or small businesses only charged for time they spent on technologies they knew well then they'd remain stagnant.
Chance
Even large comps that produce products or cater to enterprise apps charge their end clients for the training, they just do it indirectly. Small development shops shouldn't be forced to choose between higher payoffs or better technologies simply b/c of their size. Learning is the name of our game.
Chance