views:

1160

answers:

16

I am the sole programmer for an eCommerce website. Sometimes I am asked to program something that I do not know how to do.

If I respond that I cannot do that, I am usually told something like "Well if Amazon (or some other huge site) can do it, why can't we?".

If I say something like "They use this expensive tool", their response is "We don't want to pay tons of money for 3rd party software, that's what we have your for".

If I reply to that, they spend millions of dollars developing it in house and I really can't compete with them. They will respond with something like.. "well is there some tutorial you can read online or book you can buy?"

Then they tend to get fed up as if I just don't want to do the work. Which is not the case.

I realize if I am their employee and they want something developed it is my job to learn whats necessary to develop it, but is their a point when that becomes unreasonable? if so, how can I diplomatically explain that to them? if not, then what do I do, resign?

This isn't a direct programming question but it deals very heavily on programming and I think there is a lot of knowledge here that can be shared and appreciated by many.

I would really like some insight on this. I am really tired of being personally compared to all the resources of a multi million dollar organisation. I don't think thats fair, but maybe I am wrong?

+28  A: 

Work with them to figure out how to accomplish their goals. If you only present them with reasons that they can't have what they want, then they'll see you as uncooperative. Suggest alternatives, or estimate what it would take to get something done.

Basically, learn how to say "yes" to what you can do instead of "no" to what you can't.

Jon B
+1 There are a lot of great answers here, but so far I feel this is the most inspiring. Thanks for posting. :)
John Isaacks
Especially good for the "estimate" to get something done. A response of "Amazon has so many employees working so many hours. It will take me at least that many hours to implement this." seems like it _should_ be reasonable.
mphair
this is not a good answer because it does not help him in his current situation
I__
@I__: I disagree...
Inverse
+4  A: 

They will respond with something like.. "well is there some tutorial you can read online or book you can buy?"

Then they tend to get fed up as if I just don't want to do the work. Which is not the case.

How does that happen? When they ask about the tutorial, do you say "None"?

If so, then "as if I just don't want to do the work" and "I refused to do the work" seem the same.

  • You don't know (few of us do)

  • You won't learn. Why not?

S.Lott
They do buy books for me to learn new things at my recommendation all the time and I do read tutorials all the time. I love to expand my knowledge base. I am always on SO asking questions. But I am talking about things that require more knowledge experience then just picking up a book or tutorial can offer. And they usually want them done very very fast. I do try breaking down a big project into smaller ones and finding tutorials on each one. But some projects just require so much knowledge/experience that I don't have I don't really even feel comfortable trying.
John Isaacks
And sometimes I do try and fail, retry and fail, etc. But maybe thats what I "should" do.. I don't know. Maybe I do need to change my mindset.
John Isaacks
"I don't really even feel comfortable trying." How can they tell the difference between this and "I just don't want to do the work"? How can they tell? Either way, you're not doing the work.
S.Lott
That makes sense, but I am not sure I am fully understanding your point. Are you saying that I should just try anyways, or are you just trying to get me to understand their point of view? Thanks.
John Isaacks
@John Isaacks: Until you understand their point of view, all you can ever do is complain. After all, this question is really just a complaint. If you actually want to stop your complaining, you have to change your understanding of the world. You can't change the world. You can only change yourself. The only way to do that is to figure out what other people understand about the world.
S.Lott
That makes a lot of sense, and reminds me that my communication/people skills are far inferior to my technical. Thanks for the info.
John Isaacks
A: 

Remind them that Amazon is very aggressive in patenting all of the design and UI features.

James Curran
Thinking outside the box. I like it. If you don't want to do something just say "I can't do that because it's illegal."
frankc
+10  A: 

I would rise the the challenge, and say "yes, it's possible but I'd like time to review what resources I'd need."

Depends on the job - two days should be enough to get an idea of what could be done. Then report back with your findings - see if they want you to spend more time looking at it, or if what you've found satisfies them to decide whether or not to pursue the issue further.

OMG Ponies
-1. I don't know how it is in other sole-developer jobs, but if I spent two days of pay (or even more than a few hours) on an estimate of what could be done, I'd be fired. Sole developer typically means small business, and they simply don't have to time for people to waste time on corporate-esque reports and flow charts and powerpoint presentations.
drharris
@drharris: The point is to make the boss/client decide what time and money constraints are feasible - the timeframe is arbitrary, and this is assuming the use of tech/etc where you have **no** background. A couple of hours is fine if you have base understanding, but with no experience whatsoever?
OMG Ponies
+9  A: 

I think we all get this every once in awhile.

Someone will come up with a request for some added functionality. You immediately categorize it into one of three types: Easy, Dunno, and Difficulty > Worth.

Having been burned, we tend to immediately reach for the third category, the shorthand of which is "its not possible."

The trick is, when asked to do that which is too difficult to make it worthwhile, to not answer. Ask to get back to the person. Later, take a second look at it. Give it a good estimate, highlighting the things that make it difficult and what it would take in manpower and treasure to get it done. We're not talking lots of time here; maybe five minutes googling it.

With this ammo, you can present your opinion and present the reasoning behind your estimate. If, at this point, they say "well, Amazon does it, so why can't you," you will have documentation to present to the court when you are tried for battering the dolt about the head and shoulders with a chair.

Will
This is what I often do. Tell them that I need to think about it and that we'll talk later. Strangely enough when thinking about it for a bit longer I usually come up with a reasonable solution on how to make what they want.
Swizec Teller
+9  A: 

Check out UX Myth #20: If it works for Amazon, it will work for you.

And you should consider pointing out that a poorly implemented feature on an e-commerce site could lead to security holes. Security holes are always a danger, but the dangers (to your users and of major legal ramifications) are amplified when working with the kind of personal and financial information necessary to make e-commerce sites work.

David Eads
Thanks for the link, a lot of good info.
John Isaacks
this is not a good answer because he mentioned his manager is non technical and wouldnt understand what security holes are
I__
Just because a manager is non-technical doesn't make them an idiot. I think the words "Security" and "Holes" would have meaning to most people...
Ben Cawley
It's interesting to see another opinion besides how to say 'no', 'maybe' or 'let's do it'. To know how and why things work they do it's a necessary skill to adapt any successful idea to your reality.
Alberto de Paola
Even a "non-technical" manager should be able to understand the conceptual security implications of running an e-commerce site.
David Eads
+1  A: 

Since you have mentioned Amazon as example, you are probably referring to those personalized »others have bought« and »you might be also interested in« lists. It's not much work to generate something like that, you just need some mathematics and a huge amount of data. In fact you will probably have to inserts several rows in a database for each simple pageview. If your are interested in those techniques, I can highly recommend the book Programming Collective Intelligence.

So, if my guess is correct and your company wants to add such a feature, I would explain them, that you first need to build up a huge amount of data about the users of your site, which might take up a year or more (depending on the site and how aggressive you are asking for reviews and ratings).

After that, you can calculate those recommendation lists, but they will require a high amount of calculation time and you need probably a small cluster of servers for that (depending on the amount of data you got)...

So, if they are really interested, I would explain them (which might not be that easy) what you need to archive this and if they are still interested you will probably have to estimate the costs for the development process, the number of servers you need for that and so on. Such estimations are really hard and you have to think a lot about it, but it's at least a common task (you have that problem always at the beginning of each software project) and several methods exists to calculate such estimations. And after seeing the high amount of costs, time and risk, your boss might drop the idea anyway ;)

tux21b
+1. Man, I love that book.
Marc Bollinger
So do I. Programming becomes so exciting and so much fun again when you read it the first time, but unfortunately I don't know more books of this kind :/
tux21b
Well, it's basically a primer in a lot of fields, so I'm not sure how much more in depth it could be, nor how much more broad it would make sense to be. It covers things from my AI, Pattern Recognition, Machine Learning, et al. books in a much more engineering-forward manner, and there's a lot more out there in those fields, just not as presented in developing Web systems in Python.
Marc Bollinger
A: 

If you're the sole programmer, and they do not have the insight or experience to realize that thousands of developers working in parallel with hundreds of UX people, then they do not have the capability to make rational business decisions, because they do not have enough information to properly set up cost/value relationships. You need to inform them that they are not just paying for you to type things in a screen, but for your technical insight, which is crucial in making business decisions if they ever want to even be able to tread water.

Marc Bollinger
+1  A: 

In addition to the other comments, it appears that you're running into an environment or culture problem. Particularly in a "fluid" situation like this, it is important for you to understand what they want if you are to build it for them.

It doesn't have to be anything heavy-handed, but gently steer them toward some sort of official document that will help them describe (with as many specifics as possible) what they are looking for. Then, you respond by reviewing it, researching and estimating the various tasks that will be involved. That will help you to answer not only the "how can it be done" but "how much will it cost" and therefore "is it worth it" questions.

GalacticCowboy
+1  A: 

I get this sometimes to but I have to agree somewhat with "S. Lott". Is the reason you can't do a lack of ability or willingness? I'm not trying to beat you up, but telling your employer "no" to a requirement when there are other companies doing the same thing that they're asking you to do is frustrating for them.

I am the sole developer for my employer and have been asked to do work that I had not done before, but I did it and feel the better developer for doing it. You're a developer and as such you are the problem solver for your employer, unless the requirement is not possible because of technical reasons, then the word "no" shouldn't be in your vocabulary.

Andy Evans
"No" should certainly be a part of your vocabulary. As in, "That feature is technically possible, but no, I don't have the 500 hours available to research, implement, and test it." Your time is your most valuable resource; you'd better defend it, because no one else is doing to defend it for you.
WCWedin
@WCW - If your employer is paying for your time, then it is valuable to _them_ and _they_ can decide if the task is worth _your_ effort and _their_ dollars.
Jon B
@Job B: I think you're missing my point. The last sentence of my comment shouldn't be taken out of context. Sure, they're paying you for your forty hours a week. But as the sole programmer for a company, you're almost certainly expected to manage your own time. If you're not willing to speak up when the magnitude of a task exceeds the open space in your workload, you're going to end up spinning your gears on a dozen impossible projects. Anyone can do that; they're paying *you* to be smarter than that.
WCWedin
+4  A: 

One of the biggest issues that strap a sole developer is time. Amazon can develop features that you can't not because they have individuals that are capable of learning on a level that you aren't, but rather because they can throw a team of developers on them. You need to find a way to illustrate that issue to your employer if you want them to understand your plight. You feel strapped because you can't provide them with an answer that they want to hear because the size of your development team is not something you can control. Always strive to find a way to accomplish what they are asking for, but make sure everyone is clear on the facts about what type of time those requests are going to involve. A good place to start would be to take an "Amazon like" request that they give you and research what all would be involved for you to pull it off. Look at the individual components of it and take a stab at the time frame for each (including time for you to research/learn). You will quickly build up some evidence that will help your case. From there you can include the fact that the time spent to develop that feature will also take away from any other development or application management as you are the sole developer.

Schwarty
+26  A: 

I once read that prostitutes never flatly refuse a particular service, but instead demand a price so high that the client would not afford it. In the case that the client does accept, well, for that price, it would probably be worth it.

Single developer companies are very similar in structure and the same approach should be taken when faced with a request from the management for something completely impractical, or impossible without a particular set of skills. Never flatly say "I cannot do this". Instead, provide a well written list of requirements for the task, including a break down of the time required. The amount of time required should be large enough that you could acquire the necessary skills if you tried. Hold fast to your plan. If the manager disputes it, then tell him he is welcome to a second opinion on the requirements. If the manager does accept the plan then you would have given yourself sufficient time to acquire a new skill, which is always a good thing.

Il-Bhima
this is by far the best answer
I__
"I once *read*", right... ;)
Nathan Ernst
The concept is called "The Long Con" - make the person think it's their idea, because then they accept it rather than being bitter that someone turned them down. Aside from the women of negotiable value, this is the same answer/advice as mine.
OMG Ponies
"Single developer companies are very similar in structure"... to a prostitute.
efritz
More accurately, the developer in a single developer company is similar to a prostitute. Talking from experience here (as a developer of course), though I have worked in porn (again, as a developer).
Il-Bhima
+6  A: 

I'm in a similar situation, only my employer is very reasonable about the amount of effort a single developer takes for some projects (and technologically proficient, which helps). Nevertheless, I've had to come up with creative ways to say "no" over the years.

First, it's not impossible, so don't say it is. Everything can be done with some combination of time and money. If it's a feature they really want, what's wrong with hiring an outside developer for that specific feature? If it would take training, figure out how much it would cost them, and present it to them in monetary terms.

On a similar note, tell them how long it would take, and trust them to make a decision about it then. If it would take you 5 months of dedicated time, tell them that. Managers may not understand the complexities of certain features, but they can easily multiply that 5 months by your salary to understand the actual cost of such a feature.

Telling them "no" or challenging their technical knowledge is only going to frustrate them, and perhaps start seeking someone who will tell them "yes". Put it in terms of time and money, and let your managers make the decision for you. The worst it can do for you if they say yes is that you get to learn something new.

drharris
+4  A: 

I'm not a sole developer, but any project team gets hit with requests for features that would take a huge amount of time to develop.

I never say "no". I say, "Okay, to do that would require us to buy these tools that cost X dollars and we would have to spend Y amount of time." When it seems to me that the cost far outweighs the benefit, I will sometimes point this out, but in any case I don't say "We won't do it" or "We can't do it", just, "This is what it will cost." Then leave it to management to decide whether it is worth doing.

In one recent case, the users thought we were being unreasonable in our statements of how much time it would take for a certain project, so they contacted an outside consulting firm to see about hiring them to do it. I forget the exact numbers now, but I think we came up with a total cost for the project of something like $800,000. The consulting company said that they couldn't give a quote up front, first they would study the requirements and figure out just how to do it and how much effort would be involved. They then quoted $300,000 to do this study. So they wanted almost half as much just to tell us what the price would be, as we said it would take to do the job. I felt vindicated.

Personally, every now and then I feel frustrated that I, working alone, am not able to produce something as pretty and fancy as a product I've seen elsewhere. Then I find out that those folks had hundreds of programmers working on this for years. Like, duh. So working by myself for a few days, I can't reproduce something that took 100 people 2 years to develop. That's not a real reason to feel inadequate.

Jay
That last paragraph really hits home with how I feel as well.
John Isaacks
+4  A: 

I think the pertinent items have all been touched on here, and it can pretty much be reduced to a bullet list:

  1. Don't say no. Provide a detailed estimate
  2. PAD your estimate generously to allow time to learn new things and handle breakdowns
  3. If you are too swamped to even adequately handle the estimate, tell them how many hours it will take to provide it, illustrate what tasks you WON'T get to if you provide it, and let them create the time FOR you. Again, if you're uncomfortable with the terrain, pad the estimate of how long it will take to provide the estimate (!), to give adequate time to research. (Notice the pattern here?)
  4. Be confident in your estimates. If you aren't, you are guaranteed to sell yourself short on time trying to "yes" them, and will be lucky to get through the project with all your hair (or teeth, or health in general, take your pick) in tact.
  5. If you end up dealing with someone who does not trust your estimate, stay confident. Let them get an outside opinion. If they go so far as to hire someone for cheaper, let them, the work will not be of the quality they are looking for, and you can point out then why your estimate was so high.

If you do all these things, and they still say yes, you will find you're actually prepared to accomplish the work, and what's better, if you padded your estimate generously, you may even find you have EXTRA time to do with what you please when everything is said and done.

Jeremy Schevling
A: 

This is going to be something you will always deal with. Long story short bridging the gap between non-technical and technical people in your profession will be your biggest asset aside from the quality of your code. Of course proper design makes for resilient code and the ability to modify code down the line which will happen in your line of work.

The best way to do this is to present alternatives, and explain to them the consequences of doing it the way they want versus the way you present alternatively. Be careful when agreeing to something you do not know how to do though because it can come back to bite you if you underestimate the difficulty.

Chris

related questions