views:

1891

answers:

29

My boss and his boss have both been coming to me regularly over the past few weeks with feature suggestions. The majority of these are very impractical, and I tell them (politely) that they are possible but there's little or no ROI. Stupidly, yesterday, I suggested a meeting where I explain to them briefly how computers and programming languages work. The idea was to let them filter things before they got to me. At the moment a staff member goes to them and says "I hate this part of my job" and my boss says "Right, we'll go ask x to code something." I want to insert a new step where my boss thinks "hmm, well that might be possible, but there's no real way for a computer to be able to automate that part as it requires a human brain to distinguish between good and bad concepts etc."

Unfortunately, I don't really know how computers or programming languages work. I just muddle through and somehow convince people that I'm the authority on these things.

EDIT: I can make them work for me, and I understand what I can make them do, and I realise that pretty much anything is possible, but I am unable to articulate that in a meaningful way to other people. For example, I was asked to 'throw something together' that pretty closely resembled AI, and spent a good 45 minutes trying to explain why it was probably possible, but it might take me and 100 engineers a year to make it work. This was the most extreme example that made me post this. Usually it's more on a level where there are legal principles to be applied in a decision making process, and I don't have the ability to imagine a way in which I could automate the job of the many lawyers that work here.

Has anyone got any broad principles they use for teaching civilians, preferably metaphors understandable by people who think strings are for flying kites. Mainly in the sense that I want them to understand what can and can't be done (easily).

Thanks!

EDIT: Appreciate the discussion and answers, thanks. A lot of considerations that hadn't occurred to me.

A: 

There's no way to summarize what computers can and can't do in reference to programming in a mere sentence, paragraph maybe an entire book. You simply need to refer to an expert on the matter.

The only good answer to your problem is what you already suggested, explain to these two people they should refer to you (or a programmer) of how possible something is, how long it will take, and what additional hardware/software needs to be purchased to do it.

If you aren't capable of this, then you need to kick the question up to the next expert.

TravisO
+9  A: 

Are you sure that their requests are that unreasonable? You could try going through steps of what would be required, what the costs would be, etc and document it to give them some ideas. Don't go over mind numbing technical details but give what would be required, and any costs associated. If there is something that is beyond the state of the art in terms of computer science (such as in artificial intelligence) then state that as well. After a couple of these documents they will probably get the picture.

BobbyShaftoe
I'd say even if it is at state of the art, state that. In reality anything near state of the art tends to be expensive.
Cervo
Yeah, I agree with that.
BobbyShaftoe
+2  A: 

You can get a lot of stuff to start in: http://en.wikipedia.org/wiki/What_Computers_Can%27t_Do

and another good points are:

http://en.wikipedia.org/wiki/Turing_test

http://en.wikipedia.org/wiki/CAPTCHA

Good Luck!

Click Ok
+2  A: 

It sounds like you need to re-adjust your thoughts on this. If you can describe how people do things and what they do then most likely it can be programmed.

"Computer power and human reason" is a great book. http://www.amazon.com/Computer-Power-Human-Reason-Calculation/dp/0716704633

But your boss is not paying you to tell him what can't be done. He pays you to figure out how to do things.

Also, while some tasks might not be able to do with computers, you should focus on how computers can enhance or help the human process.

I would not want a programmer telling me in general how things are not possible. That is a fast way to find yourself looking for another job.

If you express your thoughts about SPECIFIC things he asks for then that is ok, but to generalize I think is a bad idea.

Tim
A: 

Firstly, if you're not truly an authority on computers or programming, that's the first problem. I applaud you for making the attempt on your employer's behalf, but this may be a case of the blind leading the blind.

Executive management does not, and arguably should not, use any filters. Their job is to make everyone else's job easier. It is the job of a software architect to bridge the gap between technical reality and ROI. A trusted technology expert must be available to balance serving the "internal customers" with technology and advising executive management on what is practical and what is not.

Dave Swersky
+13  A: 

One good way is to say:

  1. Step one listen to the problem.

  2. Should this be automated? Try the equation below.

    ((The hourly rate of the person being relived of work) * (hours they will be saved)) - ((How much you are paying me) * (hours it will take me to create this))

  3. Still in the positive? Ask: Is there nothing else that will be a bigger investment of the time that you have me here?

Still yes? Then go do it. It's possible that you aren't completely aware of the possibilities in automation since you are a self proclaimed "muddler"

Sara Chipps
I have edited this twice and it still says "1." instead of "3."
Sara Chipps
ooOOo Girl with equations. You're lucky I'm married =P
Kieveli
You're running into Markdown's automatic list numbering. Because of the paragraph in between the two numbered lists, Markdown restarts its automatic numbering at 1. Annoying, yes.
Greg Hewgill
Ah, I fixed it with a bit of tactical indenting.
Greg Hewgill
(hours it will take me to create this) <-- about impossible for him to figure out, no?
jcollum
thanks greg! I love your hair. @jcollum- not really, do you mean because of his inexperience? @Kieveli-All the programmers get scooped up early.
Sara Chipps
haha, not impossible. I just work on the idea that 'more than a week' == 'infinite time' as they have unrealistic expectations.
An even earlier test is can they describe the steps to automate the problem. The instant it goes to hand waving and making decisions you know it may be not feasible. Basically if you can't describe the algorithm without a computer, it won't help you to magically invent one.
Cervo
+3  A: 

The trick in this case is to convince your boss you can solve the problem as cheaply as possible for him. It sounds like he's coming up with a solution instead of relaying the problem to you.

I'm willing to bet you can come up with 3 solutions to each problem, and then quickly figure out which one is easiest for you to do in a short period of time. You can then let your boss choose which solution he wants to dedicate your time towards. Sometimes there will be hard solutions that benifit the employees a great deal. Other times the quick and dirty solution will make everyone happy enough to move on.

Try to listen to your boss and hear the user's problem instead of hearing his proposed solution. Try not to teach them how you do your job - they'll never be interested, and will never understand. You've got to see around what's being said to you to come to the answer that will make you, your boss, and the other employees happiest.

Kieveli
+5  A: 

Unfortunately, I don't really know how computers or programming languages work. I just muddle through and somehow convince people that I'm the authority on these things.

If you don't really know, how are you sure they are not feasible? Maybe you are doing your boss a disservice by pretending to know what you really do not.

Alex
I'm sure they're infeasible because it would cost them more for me to do it than it would save them over a period of time.
I agree. I'm not entirely convinced what they want is unreasonable.. and instead, simply beyond the skill of this developer.
Simucal
__ I'm sure they're infeasible because it would cost them more for me to do it than...__Would be infeasible if you hired someone else? If you aren't able to do something you should at least consider hiring someone else. (outsource)
Zoredache
That would be nice, but there are two things in play here. I am competent enough to know if something will take a long time for a consultant, and as a Government department we have no room in the budget for a long time. :)
A: 

I know this probably isn't the answer you want to hear, but I think its time to search for a new job. If your bosses don't know what is/isn't possible with computers, then they aren't just out of touch with modern programming, they're out of touch with the modern world.

If you consider your job description to include computer programmer, then you probably don't consider your job to include "educator of basic technical literacy". But it seems you're being dragged into the role of an educator for some unwilling students.

My advice: do your best while you can, but look for a way to move on to a different project/department/company ASAP. Leave the job of educating those who can't/won't educate themselves to someone else.

abelenky
A: 

Given enough time and money most things with a computer are possible. I mean not predicting the future (well technically with statistics you do predict the future based on the past). An early co-worker had a saying "given the unlimited time and resources of xxxx anything is possible" where you substitute xxxx with the company name. Whenever he would get a request that seemed unusual hard he would use those words.

You used the correct term when you said "impractical". In reality given enough time you probably could implement whatever feature they request (be it years or weeks). If it is something that commercial software products do, quote some prices on those products. For example image recognition. In general the software products that do that are relatively expensive. You could use the price of that product to reason that your boss's request is a lot of work, and that could also give him a monetary value that he understands. The reality is that what you develop is a business decision. Maybe it is valuable to the company for you to spend 2 years developing a system to automate x. Maybe your time is too valuable to spare more than 2 hours, so if it takes more than 2 hours to do your boss will say no. Basically try to estimate it and come back to your boss. If you don't know ow to do it, explain that to your boss and try to think of what you would have to learn to be in a better place. Even NP Complete problems which are computationally intractable have heuristics that are "good enough" in practice. Often the person making the request is willing to drop the "little constraint" that turns something from days to weeks.

But as a general guideline whenever things are not well defined, or someone wants software to "adapt" that is harder. Even something as simple as looking at a text field and extracting useful information from it is difficult, because people type the same thing in a variety of ways (stack overflow, stackoverflow.com, www.stackoverflow.com, so, s.o, etc.). Whenever there is some decision involved things get tough. For example try to do address matching on a list of addresses (something very desirable due to CRM systems). It is pretty hard to do that correctly.

Cervo
+4  A: 

"Anything that you could teach me exactly how to do (no improvisation, guessing, or judgment involved), and that can be done with paper and pencil - no matter how much paper, and no matter in how much time - can be done by a computer."

Federico Ramponi
A: 

Hmm... well, in general, of course, it's a hard thing to describe, as of course computers can do way many things. But as far as business applications are concerned, I think it can be summarized up to the following points:

A computer can:

  • Calculate complex mathematical formulas pretty fast;
  • Calculate simple mathematical formulas for quite many items pretty fast;
  • Make simple IF-THEN decisions based on mathematical formulas (note that text can also be converted to a series of numbers).

All in all however I think it would be better for them to rely on your judgement - or maybe of someone else's, who actually knows how computers and programming languages work. ;)

If your bosses actually take your word for what can and what cannot be done, then everything is fine, I'd say. It's when they don't trust you and still want to make you do unreasonable things that you should get worried.

Vilx-
A: 

Explain what a Turing Machine is, and tell him/her that this is the extent of what computers can do.

Not only is a Turing Machine understandable by almost anyone, it's also perfectly true and will definitely set a low bound for what he expects ;)

Alabaster Codify
I can picture it now. "I'm going to explain what a turing machine is. It's a.." *Snore*.
Breton
What if he explained it with a shiny toy car and spangly neon paper?
Alabaster Codify
More to the point, who cares? To go from "this is a Turing machine" to "this problem is easy/difficult/impossible/unknown to solve by computer" (which is what he wants) is essentially a large chunk of computer science is about.
David Thornley
+7  A: 

Ask them to imagine describing it to an idiot that is very good at following direction but not much else. If they spot more than about 3 "Oh but then he'll mess up in that case" in the first few minutes, it's not going to be easy to program.

BCS
Haha, I like that.
+1  A: 

Imagine you had to teach someone with a really bad case of downs syndrome and profound autism to do a complex task. That's kind of what computer programming is like.

aside from that, what it really sounds like the problem is (but I'm just guessing), is that your benevolent overseers don't actually appreciate you as an expert on the subject. From the sound of things, neither do you. The best solution to this problem is really lateral. How do you get from here, to being someone who is respectable as an expert on what computers can and can't do. Once you get there, it'll be more obvious that you're the one to ask about such matters.

but that's not really the question either. The question isn't what's possible with computers. The question is what's possible for you specifically to do with computers. Think about that.

Breton
+1  A: 

Boss: "Can you write a program to do XYZ?"

You: "Does doing XYZ by hand require you to have any sort of idea of what you're doing?"

Boss: "A little."

You: "Does 'a little' mean that you have to be at least semi-aware, and at least have the capability of thinking?"

Boss: "Yeah."

You: "Computers are not aware and they cannot think."

Justice
A surprising amount of what passes for thought, and even some forms of awareness, can be captured in algorithms. Would you argue that chess doesn't require thought to play well? Yet almost any modern chess program can beat an average human player easily.
Galghamon
+46  A: 

You have stumbled on the reason why people knowledgeable about the technical side and the business side are incredibly valuable. The following line from Tom Smykowski in the movie Office Space is actually relevant to every company:

Well-well look. I already told you: I deal with the god damn customers so the engineers don't have to. I have people skills; I am good at dealing with people. Can't you understand that? What the hell is wrong with you people?

You need someone with the right skills to do the following:

  1. Listen to customers' feature requests
  2. Determine what is desirable from a business standpoint
  3. Figure out of it's even technically possible
  4. Convey the customers' requests to the developers in a way a programmer can make sense of

I know it sounds really simple, but it's actually one of the most difficult challenges in business. There are a lot of smart MBAs and a lot of smart programmers, but finding a person with the right mix of those two is hard. My immediate thought when reading your question was "the people managing you don't have the right skill set". The person directly above you should have a strong technical background in whatever tools you are using. They should also have a good sense for business. The person above them really doesn't need to have much technical knowledge (if any), but they should be great at all things business. You should really be isolated from unrealistic customer demands. A good manager will do that. A good manager isolates you from worrying about the exact problem you mentioned in your question.

To try to answer your question: Try to think of real life scenarios that everyone experiences on a daily basis that just can't be done easily by computers. I found a book that might be perfect for you. It is called Computers Ltd.: What They Really Can't Do, and it describes seemingly "easy" problems that computers can't solve well. You might even suggest they read it. Hell! Buy them a copy as a gift! It will be well worth it for you.

Here is a quote from the Amazon description of the book:

This book puts the myth to rest that computers can do everything. There are certain types of problems that computers just cannot solve and probably never will be able to, not unless you have a couple of zillion years to wait for an answer! It is not just complex problems that fall into this category. Even seemingly simple problems can beat the best computers known to man. For example, assume a traveling salesman has 100 towns to visit. What town should he start at, and in what order should he visit them so as to reduce the number of miles he travels to an absolute minimum? This is a very difficult problem for a computer to solve. This book tells you why in a way that both the layman can understand as well as being a good introduction for budding computer scientists everywhere.

In addition to the examples in that book, you can think of lots of everyday tasks that computers can't do well. Here are a few I can think of.

  1. You give a computer a picture of a room full of various objects: chairs, tables, blocks, and a tricycle. Computers have an enormously tough time distinguishing individual objects in a field of objects. Even the best algorithms for doing so are unreliable and don't solve the real problem of distinguishing objects. They just recognize edges in pictures (oversimplified, I know).

  2. Driving to work is really boring, so you want your computer to do it for you. Car companies have tried writing software to simply keep a safe distance from the car in front of you and failed miserably. Writing a program to merge onto a highway at 60MPH is many times harder than that.

  3. Try writing a program to determine if a given thing is pretty or pleasing to look at.

  4. Show them a CAPTCHA. Tell them a computer cannot recognize the word on the screen, even though they can do so without any effort at all.

  5. Tell them that a legitimate, breakthrough, press-stopping milestone for Artificial Intelligence research would be creating a computer with the intelligence and critical reasoning capabilities of a three year old child.

Simply put, anything that requires a computer to decide anything without explicit instructions and criteria is difficult to impossible. Without previous input of some kind from humans, the best you can hope for is a random "decision". The input might be explicit, or it might be based on a pattern. It might even be something like the bayesian filtering in Thunderbird, which is ultimately based on flagging messages as spam or not spam.

It might be easier to start with things computer can do. They really can't do much, after you think about it for a while. They can add, subtract, multiply, and divide. They can read and write information from/to memory (variables). They can add and subtract different sets of numbers based on a comparison of two other numbers (conditionals). That's about it, really. There is a reason it's called programming: computers only do what we tell them to, nothing more, nothing less. There is no intuition, no free will, no curiosity, no imagination, no feelings, no common sense. Explaining it to them in such stark terms might help drive the point.

William Brendel
+1 for mentioning office space.
Chris Lively
Thanks, you're making a hell of a lot of sense.
Geometry makes excellent examples. A three-year-old kid can tell if two curves on a piece of paper meet. You should look at some of the code we use to figure that out.
David Thornley
@doublehappy You're welcome! I'm glad I could help :-)
William Brendel
for a small problem you can solve the traveling salesman through brute force. Also there are heuristics that can run and get you close to an answer to the problem that would probably be "good enough" in business...
Cervo
But you hit the nail on the head, once you start needing the computer to make decisions things get hairy. That's why expert systems are so expensive and even then they often make poor decisions.
Cervo
Only thing I disagree with is the CAPTCHA, while the theory is correct there are several cases now where the computer can solve them better than a human. This is not AI, but fancy OCR and such. There a CAPTCHA now that even I can't read.Also, is the AI milestone really a three year old, I mean we haven't even hit a mouse yet, let alone even a new born child.
ewanm89
It really depends on the CAPTCHA. The most basic ones can quite easily be defeated by a computer, but the advanced ones are still tough to crack consistently. The difficult ones are still often farmed out to third parties (Mechanical Turk, porn sites, etc.). As for the AI milestone point, I agree with you. I was simply giving the first example that came to mind.
William Brendel
A: 

You've gotten many good pieces of advice about how to explain the limits of computers. I'll add that you should learn what it means if

  • A problem is undecidable (can't be solved by a computer even in principle)

  • A problem requires exponential time or space (only very small instances can be solved, typically by exhaustive search)

  • A problem is NP-complete (fully accurate solutions require exponential time in general, but particular problems, including traveling salesman, can often be solved approximately in a reasonable length of time)

When you can definitely classify a problem in this way, it helps show the limits of what's possible.

I'd also encourage you to use your imagination more. If your coworker says "I hate this part of my job", it's quite likely not possible or too expensive to get the computer to do part of the job, but in many cases the computer can help with the unpleasant tasks. Maybe you can create a number of paper prototypes of things you can build, then take them to your boss and your coworkers and find out which ones would actually be helpful. Then build those.

Norman Ramsey
Actually, your second two are pretty much the same thing. There are indecidable problems. There are exponential problems, with or without usable approximations. There are problems we really don't know how to do, which we lump together and call AI.
David Thornley
They're not quite the same. Bullet two is problems we *know* take exponential time. Bullet three is problems that everybody *thinks* take exponential time, but there's no proof. The person to prove they're the same will become very famous :-)
Norman Ramsey
A: 

Have you read about the prickly personality some programmers have? That answer is actually a pretty good one about some things involving computers where what you could do is inform that computers need step by step instructions on every little thing and in every possible case, e.g. if told to add 4 plus a some would say that a isn't a number while others may reply e believing that base 15 or higher was used. It may be worthwhile to walk through some cases where the logic of what to do has to be followed exactly, there isn't much thinking a computer can do besides generate pseudo-random numbers without being told what to do.

JB King
haha, I'm not a programmer yet. I'm a charismatic, arrogant, persistent, social animal who, due to pain and frustration with systems decided to teach myself through brute force to write programs. I'm too accessible and friendly.. I'm starting to understand why programmers are prickly!
+1  A: 

You need to learn to say: "I don't know"

Christopher Mahan
That's always my first answer. Then I spend a few minutes on paper and half hour on the web writing imaginary code in English. Even if I KNOW msomething is infeasible (assuming I will be developing it and not a team of engineers), I like to have the reasons on paper and logged.
... and then I can go back with some sort of confidence.
+1  A: 

I always welcomed any feedback from my boss and users no matter how ridiculous I thought it was. Sometimes they bring up valid usability issues and a lot of times the request turns into something that can be done after further discussion.

If you are having an issue with your boss frequently coming to you to ask these questions and it's affecting your work I would suggest recommending a workflow where they can jot down the request somewhere and then once a week (or how ever often) you can go over the requests with your boss. That way your day is not constantly interrupted with questions.

metanaito
A: 

hire an expensive consultant with decades of experience across dozens of industries to listen intently to their ideas and then tell them the truth - which may include the words "that is not feasible with current technology"

for example: i am available 1/12-1/31 2009, and would love to hear more about these impossible problems

Steven A. Lowe
A: 

Ok sorry to side with your boss, but what he asked for isn't that hard to implement. It's called an "Expert System", it was a development of AI from way back like 40 years ago. It's fairly easy to implement too. However you're going to need a few Lawyers to sit down with you and share their "Expertise" for your system. Here is the wikipedia article I've implemented this before a few times, and its very easy, basically its like programming a "Choose your Adventure" book. And these sorts of "Expert Systems" are used in Medicine and other very specialized fields of "experts" so there you go. Tell your Boss you can do it but that you need a few good lawyers and a raise ;)

Robert Gould
No, they are not "...fairly easy to implement too..." Your example of medical expert systems took MANY man-years to build and millions of dollars, and they require an MD to operate (who can filter/interpret/reject the advice). A legal expert system should be expected to be comparable.
Rob Williams
We've discussed expert systems for years, but we're in a budgetary position and have a management structure that, until recently, we had one printer between 75 people, all of whom create about 40 pages daily,(I did the stats) in addition to automatically generated pages which total ~2000.
You can get expert system software free (CLIPS comes to mind). How long it's going to take to get an actual system working well enough is another matter.
David Thornley
@Rob Williams, you are right that it took the original Expert Systems millions of dollars of resources, but nowadays as David Thornley mentioned it can be done at a much more reasonable cost. Besides a legal firm would have Lawyers to operate the software, so that's a non-issue in this case.
Robert Gould
A: 

To my mind what you are describing is less "what computers can do" than a question of system analysis and design (SAD).

There's a lot more to developing a program / system than cutting code.

Your story seems to indicate that there is a call from business users to have some of the drudgery automated out of their life. This is both reasonable and to be applauded.

What you, collectively, need to do next is to get a documented description of the process 'as is' and then work out what parts can be automated and what parts need 'wetware' to apply judgement, data entry, etc that computers aren't so good at.

Automating part of a process is usually better than automating none of a process (although not as good as automating all of it).

It sounds to me like your company needs to get some SAD skills into its mix. Perhaps organise some training for you or possibly hire in some experience. If automating these process components is going to save some multiple of the cost of training or hiring then it's simply good business to invest in getting the processes automated and it sounds, from your posting, that neither you, nor your bosses currently have the knowledge nor the skills to get it done in the 'right' way.

This is not intended to be an attack and I hope it doesn't read as such. It just seems to me that you are coming at this from completely the wrong direction and that a change of how to think about this is what is required rather than the approach you suggested.

duncan
A: 

Just do what architects do, draw bubbles and clouds on a white board, link them with arrows and pretty pictures, and then baffle and confuse them with so much garble that they eventually just agree with you in the hope that you eventually stop. Then conclude with a "im sorry, its not possible".

Jobo
A: 

I don't know if what they are asking for is possible or not because you didn't provide any answers. It sounds like at least some of the things they ask for are possible, but difficult.

Embrace the difficult project. Tell them you'll need X amount of hours to research options and the required technology. If it looks like its doable, give them an estimate of how long it will take (plus plenty of time to account for the learning curve) for a prototype and then for a final product.

Chances are, after they hear the estimate they won't bite (unless its there is a core business need). But hey, if you they do bite.. you get to work on something really cool, and you'll be a better programmer for it!

Giovanni Galbo
+11  A: 

The computer will do what you told it to do, not what you want it to do.

source http://c2.com/cgi/wiki?TeachMeToSmoke

There's an old DaleCarnegie exercise that, among other things, proves that programming won't soon be obsolete. It goes like this:


Teacher: "It's hard to express ourselves clearly. You're a smoker, right? 
Are you pretty good at it? [Student nods.] 
Let's pretend I'm a man from Mars and you are going to teach me to smoke. 
Do you have a fresh pack? Let's start with that. 
[Takes pack.] OK, now tell me what to do." 


Student: "Tear open the pack."

T: [Tears pack to shreds. Cigarettes fly everywhere.] 
S: "No, no, tear off the top of the pack!" 
T: "OK, sorry, do you have another pack? No? OK, let's just start with this cigarette. [Picks one up.] 
S: "Put it in your mouth." 
T: [Puts whole cigarette in mouth.] 
S: "No, no, just put the end in your mouth!" 
T: "Sorry." [Tears filter off, puts whole filter in mouth.] 
S: "No, no, don't tear the cigarette, just hold it between your lips!" 
T: "Oh, sorry, give me another one." [Places new cig sideways between lips.]

... and so on. You can play the game for a long time. It's hard to give clear instructions, even when you know the domain. Programming will endure for a long long time. -- RonJeffries

Michael Buen
We did this in my first programming class ever. My classmates and I had to try to explain to the teacher how to make a peanut butter and jelly sandwich. We stopped when the jelly spilled out all over the table. :)
Greg D
:)) One of the best things I read in a long time..
Andrei Rinea
This is a classic in many different forms and the point is valid. However I'm thankful that computers (and most uses) don't actively try to do what I say in a way that isn't what I want.
BCS
+1  A: 

I feel somewhat evil for even suggesting this, but this is not a half bad place to put some processes into place. There's such a thing as the software folks being too accessible, and that's what it sounds like.

My impression of the problem is that the process you have right now is very informal. Staff bugs boss, boss bugs you, you are disrupted. I'd start with making a case to your bosses about why the interruptions need to stop. Here would be my process:

  1. Calculate how much time per day or week you spend helping to analyze the features you are asked to provide. Track it for a few days with a log of time of interruption, time spent answering interruption, and nature of interruption.
  2. Calculate how much productivity is impacted. This is different from the amount of time spent being interrupted. There's a "context switch cost" associated with technical work - it's the time you spend figuring out what you were thinking about after you had to hank your mind away from the original work. A good businessy way of tracking that is tracking some definable metric of work accomplished without interruption vs. that same metric with the typical daily interruption rate. That may mean blocking yourself off for a day or two so you can actually get some uninterrupted-work metrics. SLOC is a typical sort of metric if you are implementing. # of bugs fixed, or # of areas designed could also work.
  3. Between the two metrics, you can estimate how much of your time is spent giving feedback on features, and start making a case for how much more productive you'd be if this time was limited. That's a way to speak the manager's lingo - presumably he wants you doing more work, and less feature estimates.

Assuming you get your bosses to buy into the fact that you have A Problem, you can now start looking at ways to both reduce the # of interruptions and the amount of time each interruption takes. For example, you may want to continue to consult on feature requests, but perhaps you can group all the interruptions together and address them every Friday afternoon?

If you have a more formal process in place than "bug the developer" then you are likely to develop a process by which people must write rather than talk about the feature. That alone can help, since they will have to be more formal in what they write, and you create a slight barrier - if the feature is so hard to explain that they won't take the time to write it down, you have just saved yourself a meaningless feature request.

Once you get a written process in place, I suggest having you and your boss review the requests together in a regular meeting. Then you can start explaining to the boss why some requests are easy to do and some are impossible on a case by case basis. After a while, he will probably be trained enough to weed out some of the requests based on his own judgement, and not even introduce them into the meeting.

You can also traing the requestors to be smarter in what they write to you - there are quite a lot of books and articles on how to write use cases and user stories. This style of documentation can really help clarify the problem and can often force a user to think about what they really want and how a computer could possibly do it. If you can't write a simple list of steps for a procedure to be automated, then it's quite likely that the computer can't do it.

bethlakshmi
There is a written process in place, that I wrote, and sat through far too many meetings to get approved and distributed, and for a while it worked, and we still have a similar type of review meeting fortnightly, but the problem is that I am accountable for dealing with each request equally...
...which, I admit was shortsighted. And our Office is BIG ON MEASURING AND MICROMANAGING, so if someone makes a request to program a procedure to recarpet the office each week, I must research and respond to that, and discuss it in the meeting, or I don't meet my secondary objectives...
and "You can also train the requestors to be smarter in what they write to you" is essentially what my original post was asking for! :)
A: 

I agree with a lot of what's already been said (especially about being able to explain the steps in detail to a complete idiot, and stopping or minimising the interruptions to your work to field these feasibility requests), but I'd like to add this:

I have found it useful in the past, when presented with these kind of requests, to say to the person requesting (after all the appropriate discussions about what is feasible, priorities, not bothering me while I'm trying to implement/debug the last feature/system they asked for, etc, etc) that whilst it's impractical to do everything they want (i.e. automate an entire task/process), I could do something which would go some way towards automating it, e.g. providing a report containing all the information that currently takes ages to collect, or that does the dull/complex/error-prone calculations for them, or allows them to store a bunch of information that they can then refer to when they need it. This quite often eliminates 80% of the problem (and, quite often, the 80% they hate), leaving them with the interesting/easy 20% left to do, that a computer couldn't automate anyway.

gkrogers