views:

103

answers:

4

// Don't know if it sould be community-wiki, it's for a proffessional advice, although can be subjective depending on various experience.

Recently I had opportunities to get some casual freelance gigs, but most of them were marked with the popular technology keywords (f.ex. php/mysql/ezpublish). I understood the specification of the application, but wanted to use my recent solutions in another technologies (f.ex. python/django) to make the job faster and better, according to my knowledge. I decided to convince my future clients (small design agencies and non-web-related companies) to drop the language/db/cms keywords from their expectations and let me build them the app on the technology I feel suits better for the needs/timeline of the job. Most of them didn't let them convince themselves and even the ones who did, it took too much effort.

The question:

Is technology a place to discuss with the client, as a freelancer? Is it right to try to convince them to use the technologies I feel would suit better to the job, or should I STFU and take their popular-known-taken-from-the-web keywords as 'the client is always right'?

Explain why.

// I'm asking about the non-tech clients, code outsourcing is another thing and there the client-chosen technology is obvious.

A: 

There are typically good reasons that the client has picked a certain technology to build with. Perhaps they have experience with it, perhaps you are adding to existing technology. Perhaps their client wants it.

You can suggest, but don't push your favourite language on a client that doesn't want it.

gbrandt
+1  A: 

Are you hosting their sites for them? Django isn't an option for everyone, perhaps they had reasons behind choosing the technologies they did.

I'd say it's certainly reasonable to ask them if they're set in doing things a certain way, using certain languages/etc. However, the attitude you had in your question makes it sound like you went in feeling like you needed to tell them that they picked the wrong ones. That's not going to get you on anyone's good side.

Chad Birch
no, I wasn't telling they are wrong (that's a good point you mentioned that), I know you never should make the client feel wrong. I was rather presenting the cons of my POV as something 'we could do it better'.
zalew
+2  A: 

It's an interesting question because it partly comes down to what the client needs. That doesn't mean the client really knows what they need because often they dont. On the flip side of that, clients also sometimes know exactly what they need to fit in with their current technologies and ways of working.

It's always worth asking good questions to find out the information you need and if their requirement is purely based on what they've heard they need, and, your experience tells you otherwise, then it's your job to convince them of an alternative. In order to convince them you'll be wanting to find out what their criteria is for importance and what will be the most compelling for them to consider change.

Being right isn't always enough but saving time, saving money, producing a higher quality product due to your own experience and showing true business value for your decision may well be one way to direct their attention in the direction you'd like.

Jamie Dixon
On dev-oriented discussion communities such as this one, many understand what django od rails provide do the job, you see lots of hype etc. But lots of clients pick in their needs: php, mysql, joomla, just because they know it's popular and when you say 'django' they're like 'what the?' and they know nothing, worry that nobody will develop it later, etc etc. It's the hard part, that it costs me time to be a technology's advocate with no guarantee of result, and don't know if I am right trying to be one, or should I leave it.
zalew
+2  A: 

I find it helpful to have this discussion after you've gotten the high level business requirements. That way, you can make them a diagram with their end to end system. And then you can show where the technologies they're asking for fit in, and where the technologies you would suggest would go. Otherwise, I find conversations with not too technical people get very confusing, because they don't understand where in the tech stack you're suggesting things be different.

And you should be upfront about why you're suggesting a different technology. If you can make an analogy of something like "working in PHP is like working in notepad, and working in django is like working in Microsoft Word" then you can get across that you're trying to make less work for yourself and less expense for them, not just chase after the new hotness.

Of course, this advice is fairly useless if you have very technically savvy and also stubborn clients.

Kai