Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a freelance Magento developer, based in Spain. One of my clients is a Germany based web development company and they're asking me something I think it's impossible. OK, maybe not impossible but definitely not a preferred way of doing things.

One of their clients has a Magento Entreprise installation, which is the paid (and I think proprietary) version of Magento. Their client has forbidden them to download the files from his server. My client is asking me now to study one particular module of the application in order to interact with it from a custom module I'll have to develop.

As they have a read-only ssh access to their client's server, they came up with this solution: Set up a desktop/screen sharing session between one of their developer's station and mine, alongsides with a skype conversation. Their idea is that I'll say to the developer:

show me file foo.php

The developer will then open this foo.php file in his IDE. I'll have then to ask him to show me the bar method, the parent class, etc...

Remember that it's a read-only session, so forget about putting a Zend_Debug::log() anywhere, and don't even think about a xDebug breakpoint (they don't use any kind of debugger, sic). Their client has also forbidden them to use any version control system...

My first reaction when they explained to me this was (and I actually did say it outloud to them):

Well, find another client.

but they took it as a joke from me. I understand that in a business point of view rejecting a client is not a good practice, but I think that the condition of this assignment make it impossible to complete.

At least according to my workflow. I mean, the way I work or learn a new framework/program is:

  1. download all files and copy of db on my pc
  2. create a git repository and a branch
  3. run the application locally
    • use breakpoints
    • use Zend_Debug::log()
  4. write the code and tests
  5. commit to git repo
  6. upload to (test/staging first if there is one, production if not) server

I have agreed to try the desktop sharing session, although I think it will be a waste of time. On one hand I don't mind, they pay me for that time, but I know me and I don't like the sensation of loosing my time. On the other hand, I have other clients for whom I can work according to my workflow.

I am about to say to them that I cannot (don't want to) do it. Well, I'll first try this desktop sharing session: maybe I'm wrong and it can actually work. But I like to consider myself as a professional, and I know that I don't know everything. So I try to keep an open mind and I am always willing to learn new stuff.

So my questions are:

  1. Can this desktop-sharing workflow work? What should be done in order to take the most of it?
  2. Taking into account all the obstacles (geographic locations, no local, no git), is there another way for me to work on that project?
share|improve this question
    
I have doubt a long time before the 2, without reaching a conclusive decision. How can I reach a moderator to move it to programmers? –  OSdave Mar 18 '12 at 15:00
2  
@OSdave I have flagged it for a moderator, and Tiago probably has too. If you flag it and leave a note to move it, a moderator will see it and do so. Patience is a better option than duplicating it over on Programmers -- we'll all see it soon enough. :) –  jcmeloni Mar 18 '12 at 15:13
    
@jcmeloni thanx for explaining, I've flagged it. Wait & see then :) –  OSdave Mar 18 '12 at 17:08
    
Borderline paranoid, check. Rules without reason, check. No clue abut debugging, check. No version control, check. Welcome to the entreprise, I allways wonder how they get anything done. Good luck! –  Huibert Gill Mar 18 '12 at 19:12
add comment

migrated from pm.stackexchange.com Mar 20 '12 at 1:44

This question came from our site for project managers.

7 Answers

up vote 1 down vote accepted

If your client has so much money to spend, they would better pay you a flight to Germany, at that client's place, where you can work with that client on his machines. Programming by the word of mouth is a nonsense and it would work until your client would really realize how much money they are loosing.

share|improve this answer
    
I thank you for agreeing that this is not a viable workflow. This was probably the real thing I wanted to know: "Am I missing something here? What they want me to do is BS" –  OSdave Mar 20 '12 at 15:09
add comment

When you post a question like that... you are looking for opinions. And you must be open and ready for those opinions... I think this client or webdev company is very closed and back from many freelancers disasters...

But I am agree with you. I we want you to work with you, we must offer the best conditions and fit your minimum requirements to let you do your work as a freelancer.

share|improve this answer
add comment

I understand that in a business point of view rejecting a client is not " good practice "

As you are a freelancer, you get to decide what jobs to take. Rejecting an offer, could lead to bad reputation, but not getting an accepted job done can lead to the same.

On the one hand you have an enterprise who's not afraid to spend a boatload of money to let someone work the way they think is the only way to get the job done.

On the other hand, you sound as though you have a few other gigs, so you can choose your projects.

The question is:

  • appart from the workflow, can you code the module?

(I'm amazed at the amount of money an enterprise is willing to pay just to conform to compliance rules.)

share|improve this answer
    
I agree with you: I am a freelancer and one of my prerogative is to choose my projects. In the sentence you quoted, the client is their's, my client's client. And to answer your question, yes, I could code the module, in my workflow, not in the client's conditions –  OSdave Mar 18 '12 at 19:41
    
Then make this a clear prerequisite for the job. Tell them you can code the module, but need specific kinds of access. Let them decide wich way to go. Loose regulations or find someone else. –  Huibert Gill Mar 18 '12 at 21:13
add comment

Get on a train and sit next to the guy. No, really. And while you are there you might be able to talk to the right people and find some way you can do the work properly from your nice warm country.

If that's not feasible and your local company is forcing you to go ahead with the screenshare, you need to leave. I realise that might be tricky in Spain at the moment, but there are other countries including Spanish-speaking ones, that are doing pretty well in the computing field. Except the trains aren't as good there.

share|improve this answer
    
actually, I am a freelancer, so the ultimate decision of accepting the job or not is entirely in my hands. And going there means not being with my family, which s*cks: since it's not my only client and I am not in a situation where rejesting this job would put me in a difficult position, I prefer to stay in my warm and nice country =:-) –  OSdave Mar 20 '12 at 15:06
    
I misread the fact that there are two clients chained, whoops. Travel could seriously disrupt your work with other clients, although a week away from family shouldn't be a blocker! I'd reject it as a waste of time. –  Ricky Clarkson Mar 20 '12 at 16:24
add comment

The very best way to fire this client is to say, "Given the constraints imposed on my access to the system and the impact that this will have on my productivity, it is going to take dramatically more time than usual to get this work done. As a result, my price for this project is going up by X%." Make X a number between 300 and 1000.

They'll be shocked and horrified at this new expense. They'll either work out a sane level of access for you, or they'll go find another sucker. Or if they take you up on the change, then do the job and cash the check and be paid for your time.

share|improve this answer
    
I think a prefer a more direct/honest way. I am thinking more of something like: "look, these conditions are BS, I have other clients for whow I can work according to my standards, so you'll understand that working for you like that is not interesting for me anymore." –  OSdave Mar 21 '12 at 7:16
add comment

Marketing Approach - If you have too much work or you are getting too much of the type of work you don't like, you're not charging enough.

Customer Is Always Right Approach - They seem to be aware of the situation they have created and are willing to pay for the inefficient use of your time. It's not like you are bleeding them of extra hours. They cut themselves.

Programmer's Approach - stick to your principles and avoid the mental anquish and focus on doing the kind of work you like.

Reality Approach - Get over it and get paid!

True Story - A former employer decided to update the website I built on their own and crashed the whole thing. I got a phone call just as I was finishing dinner. After 2 hours of "talking" them through the fix, we go it going. I charged them $500. They questioned paying such a high hourly-rate and I asked them if they would prefer if I took longer. They took the risk of the cheap approach and had no problem calling me at odd hours to bail them out. I did them a favor and asked for one in return. They decided to pay me. Never heard from again. Oh, well.

share|improve this answer
    
I really like you're structured answer: you certainly are a programmer :) I just have to do a balance between all of these approach now. thx, it helps –  OSdave Mar 21 '12 at 7:14
add comment

I understand that in a business point of view rejecting a client is not a good practice

You're wrong there. It is good practice for a small business to reject a client that will not work out for them. After all, if they're not going to be happy with the outcome are they going to be bringing repeat business back to you? If they're insisting on ridiculous rules, are you going to be able to deliver an acceptable outcome/product on an acceptable schedule? Far better to say “I'm sorry, but I don't think this is going to work out for either of us.” and walk away.

That said, if you're going to continue to work on this then bear in mind that going there in person (even if just for a limited amount of time) is going to be hugely more efficient. It'll let you get an understanding of what things actually matter and what is just something put in there by a manager getting the wrong end of the stick. Once you have that initial contact done, you can probably get by just nicely with occasional teleconferences and email. Focus on ensuring that you understand the API; you want to avoid having to learn about the internals if at all possible (and if they start to tell you, stop them!) If they can't tell you about what the API is, that takes me back to the previous paragraph…

I also advise ignoring any requirement to not use version control. Yes, use a separate private repository for the work — a public repo would be a bad idea, of course — but when it comes to what category of tool to use at all, they're simply not empowered to instruct you in the correct use of tools. After all, it would be just as ridiculous to tell a carpenter to not use a hammer or a saw; it's their job (i.e., yours) to decide what tools to use as they are the contractor.

share|improve this answer
    
You're right, I think I have more to loose in this assignment than to win. Besides, this no-version-control thing and them taking this job with these conditions make me realize that they are not as pro as I thaught at the begining, and thus there will be very little for me to learn from them. –  OSdave Mar 21 '12 at 7:21
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.