35

Background

I work as a developer in a software development department with three other developers and a manager. We have a desktop application that is being modified constantly based on customer needs.

Problem

Recently, one of our customers asked for a modification to a feature that is already present in the product. It requires couple of more mouse clicks to get the job done.

My manager wants this modification to be implemented per the client's request.

I clearly explained a few times that we already have that feature and it's working fine. Also, I explained the technical impact of changing the functionality. My manager wants me to proceed with the change per the client's requests.

Question

How should I proceed?

Should I explain the situation again? Or maybe look for another job? Or should tell my manager that if it's so simple he should help out?

UPDATE

Every answer for this question cleared one thing for me: I need to change my attitude.

As almost everyone pointed out: I am not the manager, as long as I inform my manager the technical downside of a request, I should not judge. Also, resigning would be a temporary solution, as problem lies with my attitude toward the job and manager.

  • 8
    Congratulations on reaching the correct conclusion! – Mast Dec 2 '15 at 8:29
80

My manager wants me to proceed with the change per the client's requests.

Question

How should I proceed?

You should proceed with the change per the client's requests.

Apparently the client wants this modification. And apparently your manager agrees. It seems that he's willing to absorb the technical impact in order to make the client happy.

There's no use explaining it again, unless you don't think your manager understood you even though you clearly explained it (it seems he did understand but doesn't agree).

Clearly, your manager is the one that gets to decide what is unnecessary here, not you.

Once the client's request is met, you might want to find a quiet time for a discussion with your manager. Your goal for such a discussion should not be to convince your manager that you were right. Instead, your goal should be to ask your manager about the decision, so that you better understand the client request process at your company. Clearly there are things about the clients that you don't understand.

Or maybe look for another job?

If you need a job where you get to decide what the client gets or doesn't get, even though your client and manager have already decided, then you should look for a new job.

Perhaps you should look for a management position, where you would have more influence as to which features are delivered and which are not. Or perhaps you should look for a client services or product management role, where you would interact with clients more closely, impact the product feature timeline, and could help decide which client requests to satisfy or deny.

Or, as @IsmaelMiguel correctly points out, work for a product company, where individual client requests are seldom solicited or fulfilled. (Of course you'll still have your manager's instructions to contend with.)

Or should tell my manager that if it's so simple he should help out?

You should get snarky with your boss only if you don't really value your job.

  • 7
    +1 for the "If you need a job where you get to decide what the client gets or doesn't get, even though your client and manager have already decided, then you should look for a new job." – Euan M Nov 30 '15 at 19:06
  • 4
    Not sure where he would find that job, even being President has limits. That is part of life, you often have to do things that are not what you want to do. – HLGEM Nov 30 '15 at 20:32
  • 2
    He could just be unemployed. It has obvious downsides. – Nelson Dec 1 '15 at 7:08
  • +1 although perhaps you could put more emphasis on 'make sure you've adequately explained the downsides of the decision you view as wrong' – Cronax Dec 1 '15 at 11:55
  • 1
    @IsmaelMiguel All of those still understand their core business - providing a service for their customers. Sure, they don't respond to every individual customer asking for a feature, but they still have to fulfill the customer's needs - and sometimes that means having a clunky technical solution. If you really want to be in a company where client input doesn't matter, you'll have to go with enterprise - they're used to the crappy attitude :D – Luaan Dec 2 '15 at 12:59
72

Your question is based on questioning the validly and correctness of the users request, and your manager's choice to accept it and have it actioned. The user's request is valid, and your manager's decision is valid.

This is the work you are employed to do.

What you are being asked for is the implementation of a non-functional requirement.

You are being asked for a usability improvement, not an expansion of functionality.

Non-functional requirements of a system are still requirements.

In this case, these usability fixes are intended to increase the user's productivity and lower their error rates.

Usability fixes can be non-trivial to implement. This does not mean they should be dealt with as second-class concerns. As a developer, you are there to create what is important, not what is easy.

An excellent book for helping understand usability as a key, core, engineering concern is
"The Design of Everyday Things" by Donald Norman (link).

A good example of a system which is feature-complete, and which needs further development of the user controls, is the Model T Ford. As a car, it goes. It steers. It stops. It carries passengers.

Now take a look at the user controls (link). No-one makes them like that any more - for good reasons.

They are hard (and error-prone, i.e. injury-prone) to start.

The throttle is a pair of sticks on opposite sides of the steering column, and they have to be operated independently and, at times, simultaneously.

  • 8
    I'm rather torn on this answer. It's a great answer insofar as it tells the OP what he needs to know. But as far as a "workplace" answer goes, it's completely irrelevant! This site isn't supposed to be about good programming/development practice, but about the office environment. – AndyT Nov 30 '15 at 16:51
  • 1
    They are requirements but are they good requirements. A user is not always a domain expert. Some times it is two clicks to open up a set of related commands. You can only have so many 1 clicks on the main screen. How about a car with two cup holders on one side of the shifter to accommodate the linkage. Non-functional requirement to have the cups on each side. Requires a redesign, less efficient transmission, more expensive transmission, and a linkage with a higher failure rate. If it performs the function it is a wish. You should prioritize the wishes to get the most bang for the buck. – paparazzo Nov 30 '15 at 17:11
  • 2
    @AndyT The OP is an XY question. He is refuting the need to carry out a valid work request made by both his customer (and indeed, costumer) and his manager. Explaining why it is wrong to not do it, why his manager's work request is valid, seems appropriate. Otherwise the answer becomes "Just do it!" "Why?" "Because your boss says so". I think we outgrew those forms of answer when we became young adults. – Euan M Nov 30 '15 at 18:52
  • 2
    Perhaps if the bold sentence were re-worded or repeated phrased slightly differently, it would be more broadly applicable: "Customer requests that are useless wastes of time are still customer requests (and any work done on them is billable)." – Todd Wilcox Nov 30 '15 at 18:56
  • 1
    @AndyT I am 90% sure that giving a useful workplace response plus domain-specific education doesn't make a useful answer any less useful. It makes it more useful to the people in the same domain as the asker. Workplace answers can go into tangents about domain knowledge! – doppelgreener Dec 1 '15 at 5:27
13

Try to think of a solution where both situations can work.

If this functionallity allready exists, it's apperantly not properly done in terms of User Interface. Maybe redesign the controls or navigation? Try to decrease the amount of clicks via a clever way to what they want.

Also, resign when your manager tells you to do something you don't completely agree with?! You must really like looking for jobs, because this is quite common.

  • Not that I love jumping around jobs. This not the first time something similar happened, but this one tops them. I have always tried to level with my manager to overcome problems. – raidensan Nov 30 '15 at 15:06
  • 2
    And keep doing that. But in the end, the manager is the one with the responsibilities, just make sure they're aware with something like "I will perform task X, but I think this might be a bad idea. I'll comply, but I wanted to make sure I gave all information about the concequences" – Martijn Nov 30 '15 at 15:32
  • 6
    @raidensan If this is the biggest disagreement you've ever had with your manager, you're doing very fine where you are. – corsiKa Nov 30 '15 at 15:50
  • At least your client actually wants something that you can actually complete. I've had clients where they would reject a previously accepted sample because it seems "off", but it is literally the same file, then next week they would say "It's great! You guys fixed it." When they review the same sample. It was complete madness. – Nelson Dec 1 '15 at 7:10
  • This answer is the only answer that approaches the fact that OP is being strangely unreasonable about something that is commonplace. – C Bauer Dec 1 '15 at 15:28
5

Your question is a mess; it is one big contradiction. Either it is already in the product, then there's nothing to do. Or it isn't, and there are technical problems that you have to overcome. But not both. It's impossible that you could stumble on technical difficulties when you reinvent the wheel.

If the feature is not yet in the product, proceed as follows:

If you have not yet done it, explain all your concerns in writing to your manager. An email should suffice. It should contain the concerns and the technical difficulties you have to overcome to solve them, and a rough time estimate if possible. Clearly mark those where you really have no idea how to solve them, and ask for his assistance.

Also ask him whether the feature is worth the effort, and show him more important features that wait in the backlog. Now that you have provided him with a time frame ("5 weeks for everything that is solved and 4 problems completely unsolved") and possible alternative uses of your manpower, he should be able to make an informed decision.

If he answers "Yes, go forward", implement everything you can, and communicate everything you can't solve. He asked for the feature, and he provided you with a time frame to solve the problems. Everything else is above your pay grade.

3

First, the existence of the feature should be communicated to the customer, if it hasn't been. Just because it is implemented doesn't mean that they are aware of it or that they know how to use the feature. This should be done by whoever is the primary contact with the customer, which could be your manager. Knowing about this feature could be all they need. However, if they find that the implementation isn't useful, then the way the feature is implemented would still need to be changed.

If the point of contact is your manager and your manager either has brought it up and the customer still wants the change or your manager doesn't feel it necessary to bring it up, then you did all you could do. You made the argument and a decision has been made by the person responsible for such decisions. It's now time to carry out the decision.

However, it does sound like there are issues within your organization. It's not uncommon for code to degrade over time. Technical debt builds up and changes to a system only cause the design integrity to degrade (software entropy). Eventually, these issues must be dealt with or the cost of software maintenance may increase to the point where it becomes extremely costly to make changes to a system. A lack of time for testing and building quality into the process is also a problem.

These organizational issues are longer-term problems. It's a case of "change your organization". You can either fix these problems or start seeing out a new organization that is more appropriate.

  • If you want to tell the customer, don't say, look, idiot, there it was all along. Say, you mean something like this function here? – RedSonja Dec 1 '15 at 14:34
1

Provide a verification of what needs to be done to the customer. Draw a picture, provide step-by-step instructions, etc. to be sure that you understand the request. This is not explaining to the customer how things are done now, it is to make sure you do your job correctly. You can even compare it to how the feature works now, to verify that their change is as simple as it appears to you.

EDIT:

You can have the customer or the manager approve this change. You can mention to your manager that it might help if it is presented to the customer to "sign off" in case, when it is delivered, they realize how minor the change is. However, the point here is communication and if your manager signs off on this, then at least the job is clear to you and you have documentation that you provided what was asked for, and did not cheat or manipulate the solution.

END EDIT

It is possible that your customer is asking for an "existing" feature and they do not realize it. It may also be possible that your customer needs this done in fewer steps / with fewer clicks. I am familiar with many systems that were not "acceptable" to users because of "more clicks."

It is good for you to try to protect yourself against making unnecessary changes or charging customers for features that already exist. It is not good for you to judge a customer based on their request or be like an over-protective parent, and try to help customers save money or do things "your way" when they want it done another way.

If you are unwilling or unable to perform the job, then you manager should know that. But then you probably should be looking for another job.

  • 1
    Thanks for your answer. I cannot inform our costumer without getting approval from my manager. In fact it's my manager that insist we do it, I am pretty sure that the costumer would use the present feature. Right now I am behind management barrier :( – raidensan Nov 30 '15 at 14:56
  • 1
    Can you write the document and ask the manager to verify with the customer? – Erik Nov 30 '15 at 14:58
  • I edited my response. I hope it helps. – Jim Nov 30 '15 at 15:00
0

I feel for you. I get detailed design with no functional requirements all the time. They have no appreciation for the current data design and server calls. Two clicks can be clean and extensible and one click causes a change to the data model. They say they don't care but when it breaks or data gets corrupted it is your problem. Even if you do make it work you have a brittle code base and the next change is even more difficult. It is so frustrating when a programmer is just considered a coder and not a designer.

As for what you can do. 1) Explain the problem. 2) Then oppose and state your objection both in writing and verbal. Outline the time for this change and the longer term impact. 3) And then just do it. If it take 3 weeks to program and 2 weeks for test then so be it.

Resign is always the last option but if this continues the job is only going to get worse. Code is going to get more brittle and the boss is not going to be understanding. It is demeaning being treated as a code monkey. That said just do the best you can and build your skill set. If you are still frustrated at your next performance review then lay it out. If you bring up the process not associated with specific change then hopefully the boss will consider your position more seriously. If the boss says the process is not going to change then you know where you stand. Don't just quit. Decide if you can live with it. If you cannot live with it then make a plan for how to move to you next job. Once you stop caring about the current job it will be more tolerable.

  • Two clicks can be a big deal for people who actually use the system all day long. Stop being developer centric. People who only care about the dev experience write bad software. – HLGEM Nov 30 '15 at 20:33
  • @HLGEM Developer centric? Dev experience? What part of user A outproduces user B by 2:1 is not clear? If user A says feature X is way more important than those two clicks that make sense to user A then feature X is a higher priority and those two clicks may never make the list. If the two clicks make the same back end call that takes more than an couple seconds then not change. If one click causes a data model change that slows things down or limits features that is a bad thing. – paparazzo Nov 30 '15 at 20:48
  • @HLGEM If I want only one lunch and my simple palette can only handle one lunch then yes save me that click a day when I order lunch. If I have a higher end palette and it take me 4 clicks to order off a menu then that is better system in my opinion. Fewer click is not always better. – paparazzo Nov 30 '15 at 20:51
  • It is dev centric because you clearly don't care about what the user wants. – HLGEM Nov 30 '15 at 20:52
  • @HLGEM Clearly don't care? There is not purpose to this. Go fix that click and defer feature X. – paparazzo Nov 30 '15 at 20:55
0

The answer here is "get clarification!"

Does the client realize that the feature already exists in a more streamlined fashion, or not?

If not... then they'd probably be rather upset to not be told about it and subsequently be paying for more hours to worsen the functionality of an already existing feature. I know I would be ticked about that...when I say "I want feature X" to the project manager it's their friggin' job to know if it's already there and let me know that so I can make sure my decision about the project I commissioned is an informed one.

If so... then what the client wants for the project is what they want. The requirements are the requirements, they have their reason and they don't have to explain them to you. For example they may have hard data that that extra click does some weird positive thing for their business and they want that. Or even if it's just because they're dumb...they have the right to pay you extra for their dumbness should they choose. As long as they're making that decision fully informed and paying for the hours they take from your end that's fine.


Conclusion: If this is just your project manager not properly keeping the client informed then that's a problem. If it's the client genuinely wanting a dumb requirement even while knowing a better version of the feature already exists then...then it's still a client requirement even if a dumb one.

You can't take proper action until you figure out which is the case...or at very least spend some effort trying to figure out which is the case so your butt is covered in case it turns out the manager wasn't doing his job.

  • The feature already exists in a less streamlined fashion, not "a more streamlined fashion". – Euan M Nov 30 '15 at 19:11
  • @EuanM - Are you sure? Seems to me the OP said that the change "requires couple of more mouse clicks to get the job done.", which would describe a less streamlined version of the functionality, i.e. the current version would be more streamlined by comparison. – Jimbo Jonny Nov 30 '15 at 19:23
  • He says "it requires..." Grammatically, "it" refers to the last thing referenced explicitly, i.e. in this case, "a feature that is already present in the product". He might have meant something else. But I'm going off of what was written. – Euan M Nov 30 '15 at 19:26
  • @EuanM - Actually...you took that out of context. Look at the 2 words previous. The "it" refers to "modification to a feature that is already present in the product". The "a feature that is already present" text is just the context of modification, not its own explicit subject. Technically the "it", grammatically, is referring to the "modification to a feature". I'd also submit that that explanation makes more sense logically, as a client asking to make a feature more streamlined is pretty common and is less likely to incur such internal dilemmas as the OP describes facing. – Jimbo Jonny Nov 30 '15 at 21:39
  • The fact that a client asking to make a feature more streamlined is pretty common, is precisely why it is more likely to be the issue here. Our grammatical analyses are at odds, and we ill have to agree to differ on those. – Euan M Nov 30 '15 at 22:21
0

I love it how everyone on the Workplace stack talk about ethics and professionalism where a lot of what we do is a result of interests and political games. The situation here is quite obvious and the answer is pretty short:
Customer wants to donate money (I mean, their ignorance makes them waste money on things they already got), manager has no problem with it. That money pays for your salary. Be happy that you take that money and be happy that you are wiser than your customer. Profit.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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