Slashdot Mirror


How Can a Programmer Make Everyone Happy?

Nuttles1 asks: "Ever since I became a professional programmer, 4 years ago, I have struggled with giving my superiors everything they want. For instance, I have a programming supervisor that stresses correctness in programming first, amount of time needed second, features third, but I also have upper management stressing features and amount of time needed first and correctness of programming a distant second. The nature of my job requires pretty strict deadlines so time is not very variable. So, things get done in a way that fits the time allotted. The problem is that I don't make my direct supervisor happy because of the time constraint shortcuts in correctness must be made. The other problem is that, because I perform within the time constraints, they think that the time constraint can either stay relatively the same or that they can be squeezed a little more. Upper management also expects the advantages of having a strict programmatically correct program (code reuse, loose coupling, ease of maintenance) and are at loss when things are less then perfect after the initial release. It doesn't seem like a programmer can come out ahead. I have read many books but they usually have a utopian viewpoint or view time to develop as a variable. In real life, how do programmers handle this situation?"

174 comments

  1. hmmm, is there a missing party here? by yagu · · Score: 5, Interesting

    Well, from your narrative I see you've landed the ultimate professional progammer position: one where management doesn't listen, tries to squeeze deadlines, and thinks code more than anything else has to be correct (the unfortunate thing about that being your management, the least qualified to say, probably defines correct.)

    And, forgive me, I can't help but notice but the word client or customer is not mentioned even once in the narrative which indicates an upside down world for delivering applications (not all that unusual, but still upside down).

    Also, you mention superiors, try to be a little less humble, they're likely not. And, you talk about "upper management". When upper management has their uncalloused little fingers all the way down to your level in determining quality, ....

    Ultimately, unless you have some strong ties, or visions of fast advancement you'd be no worse off if you looked around a little to see if there is someplace that seems a little more attuned to the real world and a little less pedantic about "coding".

    aside: (but related) I first encountered how crazy a world it could be with my first big assignment. I had to sit down with my manager, and our client. The client described what they wanted, and I gave a thumbnail estimate, apparently to the surprise of my manager. Surprise number 1: my manager took me into "the room" and told me never to give an estimate to the client without his approval. (I might agree with certain aspects of this, but I was confident of my estimate and had sort of figured it was part of my responsibility.) He wanted me to double my estimate, and that was what we would base our charge to the client on.

    I finished the project ahead of my original estimate -- adding enhancements and extensions to some software we'd purchased from a sister telcom. When I delivered it to the clients, ahead of schedule, I pointed out that part of the original output of the original program was just garbage, i.e., there was no code written around that output, and it had no correlation to the rest of the report. The client knew already and told me they always just ignored that part of the report. I asked if they needed or wanted that part of the report, and their eyes just lit up. So I offered to deliver yet a different version of my code which included a fix for the broken part of the old application. The client was ecstatic, a glowing letter ensued.

    My manager took me to "the room" again. I tried to remain calm, waiting for the accolades, perhaps even a bonus? But, he pointed his finger in my face and said, "Don't you ever deliver more to the client than you say you will!". Stunned silence.

    1. Re:hmmm, is there a missing party here? by david.given · · Score: 5, Informative
      My manager took me to "the room" again. I tried to remain calm, waiting for the accolades, perhaps even a bonus? But, he pointed his finger in my face and said, "Don't you ever deliver more to the client than you say you will!". Stunned silence.

      Hate to say it, but in both cases here, he was absolutely right. You're an engineer. You don't deal with customers on anything other than the purely technical level. What you were doing --- making estimates, adding functionality --- was making business decisions. You got away with it this time but you were running the risk of seriously screwing up any business relationships your company was participating in. For example, in the business with the estimate, what would have happened had the customer insisted on going by your estimate and not your manager's (doubled) estimate? At a stroke you would have halved the company's billable hours. Not good. The only way they could have gotten out of that is by telling the customer that you'd spoken out of turn, which would probably have led to you being told to find another job.

      First rule of dealing with customers: find out exactly what your responsibility is, and don't overstep it. If the customer asks about a new feature, say, "That sounds feasible, but of course I'll have to run it by X first," where X is your business contact. Or even better, say, "You'll have to talk to X about that, I'm afraid." This is the kind of thing management is for; use it...

    2. Re:hmmm, is there a missing party here? by DrSkwid · · Score: 4, Insightful

      Your manager was right on both counts.

      1) Although you know how long it will take you, you do not know how many other projects will be multiplexed into your time. It is your manager's job to decide how long it will take you to complete a task for a client, regardless of how long it will take you.

      2) You gave away your time for free, you released code without authorisation which is added risk to your employer.

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    3. Re:hmmm, is there a missing party here? by Tim+Browse · · Score: 1

      3) He implemented a fix to an old system that wasn't spec'd in the job, when his manager might have had another (possibly more important/lucrative) job waiting for him to do when he was done with the first job.

    4. Re:hmmm, is there a missing party here? by chris_mahan · · Score: 5, Insightful

      Well, really the manager made the mistake of taking the engineer in there in the first place. The second mistake from the manager is not taking him in "the room" and laying out a plan of action.

      Ultimately, it's ALWAYS management's fault.

      Yes, Always. Always, always, always. Remember: It's always management's fault.

      Did the programmer slack and not deliver the program on time/at all? Management should have motived him or replaced him. It's always management's fault.

      Therefore: It's not the engineer's fault, ever.

      --

      "Piter, too, is dead."

    5. Re:hmmm, is there a missing party here? by SteveAyre · · Score: 1

      Added onto the previous points, the extras weren't in the original contract so probably weren't covered by it. Which could cause all sorts of legal problems for both the customer and for the company if things were to go wrong.

      There's nothing wrong with doing the extras, you just have to make sure you have permission to do so first (so they can sort out ammendments to the contract and that sort of thing to protect both parties).

      Examples of legal problems:
      -Is it covered by a warranty
      -Who owns IP?
      -Has the customer been licensed to use it? Technically it's now a different program to the one they were licensed to use (even if it's only a modified version or the original)
      -If it causes problems who's to blame. You might even be responsible then
      and so on.

      Similarly the time estimate could have been binding, and at the very least if the timescale was made longer or you ran out of time the company would look bad as they hadn't met it. Usual practice is to make an estimate then double it so you have plenty of time in case things go wrong. You then do it ahead of schedule and instead of the company looking ok for meeting the schedule they look great for delivering ahead of time.
      A bit like on Star Trek when Scotty'll estimate 30 hours to get the plasma conduits rerouted and warp drive back online, then does it in an hour. Everyone goes 'wow'.

    6. Re:hmmm, is there a missing party here? by Cmdr-Absurd · · Score: 3, Insightful
      Hate to say it, but in both cases here, he was absolutely right.

      Well yes. But a manager should have made expectations clear before bringing a subordinate into the room. If THAT didn't happen, then the manager is at fault.

      Those that suggest software (or any other product) should do EXACLTY what is contracted and NOT ONE SINGLE THING MORE are being, I think a little short-sighted. Yes there are IP issues, but those can be addressed with a bit fo boiler-plate legaleze -- this feature is provided as is -- no warrany whatsoever -- it is not supported, yada yada.

      But if I am the customer, and a I get a bit more than I expect, I'm a VERY happy customer and not only do I put this company at the top of my list of preferred vendors, but I'll spread the word to others. The company that goes the extra mile will get more business in the end.

    7. Re:hmmm, is there a missing party here? by Anonymous Coward · · Score: 0

      It's got nothing to do with IP, it's got everything to do with the fact that you've just given away for free a feature that that customer would have almost certainly payed for.

      Like someone else mentioned - he turned a technical decision into a business decision, and only those responsible for the business side of things have the right to do that.

    8. Re:hmmm, is there a missing party here? by Cmdr-Absurd · · Score: 1
      given away a feature
      sounds like IP to me.

      Ever hear of a baker's dozen? Give the customer just a little extra.

      I don't argue that it probably wan't the programmer's call. I DO argue that it is the manager's responsibility to give subordinates direction BEFORE a meeting. I also suggest that it might just be a good decision in the long term for the manager to approve the added feature.

    9. Re:hmmm, is there a missing party here? by Anonymous Coward · · Score: 0

      It has nothing to do with Intellectual Property, it has to do with work being given away by someone with no authority to do it. That may or may not include some item that the company holds coyright over, or a patent on, but it doesn't have to.

      A baker's dozen, is given by the baker, who owns his own business, and has every right to give away an extra one for goodwill.
      His apprentice has no right to do so if he hasn't already been told that he can.

      Direction before a meeting is a good thing, but that doesn't have anything to do with the extra work that was done _after_ a meeting. A manager shouldn't have to enumerate all the things that an employee is not allowed to do - they should be intelligent enough to know that they should check with someone before embarking on extra work outside of the scope of what they were assigned, especially when a client is involved.

    10. Re:hmmm, is there a missing party here? by geohump · · Score: 3, Insightful

      Clearly you knew what you were doing... this time.

      IFF you can do this 95% of the time then obviously the smart thing to do is find yourself a salesperson and go into the consulting business doing this type of work.

      As soon as you have to start paying the salary for the salesperson, the overhead of running your business and doing the tapdance of handling more than one client at a time while simultaneously trying to land more work for the near future you will probably understand exactly where your boss was coming from.

      ( tap tap tap...shufflin' off to Buffalo...tap tap )

    11. Re:hmmm, is there a missing party here? by Beek · · Score: 1

      >It's got nothing to do with IP, it's got everything to do with the fact that you've just given away for free a feature that that customer would have almost certainly payed for.

      Do you think the company refunded the client for the overestimated hours?

    12. Re:hmmm, is there a missing party here? by chromatic · · Score: 2, Informative

      How do you mean the idea that making estimates is a business decision?

      If you mean that giving an estimated delivery date to the customer is a business decision, I can agree with that.

      If you mean that estimating the amount of work a project will take is a business (or at least, non-technical) decision, I disagree.

      If I worked on multiple projects, I would rely on my manager to schedule my time between the projects -- but I would rarely trust my manager's estimate of how much work there is in any particular project more than my own estimate. The difference seems important.

    13. Re:hmmm, is there a missing party here? by Godeke · · Score: 1

      If the programmer was not supposed to comment during the meeting on such subjects then manager suffered a colossal failure by not making that clear. We always have ground rules on what can and can not be discussed and *anyone* taking *anyone* to a meeting with clients without such grounds rules is a fool and should be fired themselves.

      Regarding the extra functionality, I agree that it should have gone through management, which would have been able to assign a value and probably made a few bucks. On the other hand, the scope of that change was not mentioned: if it was a line of code that needed altering then I would have probably wrote that off as a bundled bug fix, not a new feature. Again, the fact that the programmer had not been brought up to speed on what was and was not allowable indicates a complete failure of communications channels in the organization.

      Either you are going to control company outputs and discussions and have the rules to do so in place, or management is griping about its own failures to organize and control the company.

      --
      Sig under construction since 1998.
    14. Re:hmmm, is there a missing party here? by askegg · · Score: 2, Funny

      Yes - God forbid that you actually help the customer. They will hate you for that. Dodge and weave whereever possible. Delegate where you can and take no responsibility. This sort of internal empire building does nothing for the customer and ultimately nothing for the company. I will be modded as a troll.

      --
      I don't make predictions, and I never will.
    15. Re:hmmm, is there a missing party here? by Godeke · · Score: 1

      Yet it is pretty clear that management didn't outline the rules and responsibilities and instead of doing so "took him to the room". That isn't management, that is freaking out *after* the cat is out of the bag. Real management would have never allowed un-reviewed code out of it's hands nor would it have sent someone to a meeting without ground rules.

      Both sides suffered failures, but management is supposed to, you know, manage these things and not blow up at the apparently unmanaged employee.

      --
      Sig under construction since 1998.
    16. Re:hmmm, is there a missing party here? by bluGill · · Score: 1

      It is one thing to know how long something will take, but delivering features should be a business decision.

      When you say you can do something, and they agree it would be nice, the proper response is "Settle the price with my boss and I'll get right on it." Given your experience with then original meeting you should then secretly write down on paper your time estimate so the boss has a clue how to bill.

      Actually this isn't correct yet. Before the meeting you tell your boss that you can do something and you think they will want it. Then let the boss bring it up. Remember your job is in large part to make your boss look good, and your advance on his coat tails. So tell him to deal with it. If it is trivial you do it before hand, but #ifdef out (or whatever your language does), so that you can deliver when the boss says it is ready.

    17. Re:hmmm, is there a missing party here? by secolactico · · Score: 1

      It's just as you said: making estimates is a technical decision. Giving the estimate to the customer, isn't.

      The engineer overstepped his boundaries. He should have told the manager the estimate and let the manager run with it (if the manager wants to double the estimate, that's his prerogative and a matter of ethics.)

      Also, the engineer should have gotten clearance with the manager before adding new features.

      But in the end, it's the manager fault. He should have gotten the engineer aside before the meeting and "coordinate lies" as I'm fond of calling it.

      --
      No sig
    18. Re:hmmm, is there a missing party here? by Danse · · Score: 2, Insightful

      A manager shouldn't have to enumerate all the things that an employee is not allowed to do - they should be intelligent enough to know that they should check with someone before embarking on extra work outside of the scope of what they were assigned, especially when a client is involved.

      I doubt that the engineer took classes in how to screw over the customer, while I'm quite sure that the manager did. The engineer is concerned with building a good product and takes pride in that. So, while the manager is trying to think of ways to get more money out of the customer while giving them as little functionality as possible, the engineer is trying to figure out how to give them the most bang for their buck. See the disconnect? That's why the manager needs to make certain things clear before a meeting like that. Manager thinking is not at all intuitive to most engineers.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    19. Re:hmmm, is there a missing party here? by AuMatar · · Score: 1

      Your job is to write code. Not make your manager look good. While deliverables and timeline should be ironed out between management and client. riding coattails is only for those who want to go into management, and only happens at higher levels. *If* the poster wants to do that, he needs to make himself look capable, not his manager.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    20. Re:hmmm, is there a missing party here? by vga_init · · Score: 1

      I have to say that I personally disagree with all of the people that said "your manager was right." Right about what? Taking care of your customer? Working with them as a human being and giving them 110% instead of just being a drone? Customers love that. They find you a pleasure to work with, they were surprised by the results and how your company met their needs better than they thought. Guess who has money? The customer!

      A happy customer is a returning customer. They're also more willing to recommend you to others. Overall this results in much better business, so I don't buy this "you wasted company time/money" mantra you're getting from other posters. You've improved your company's reputation at the very least, which in itself is worth more than a bugfix that they didn't get to squeeze for profit. I understand the need for unification and being careful, but your manager should have been supportive even if he'd like you to do things differently next time.

    21. Re:hmmm, is there a missing party here? by seanyboy · · Score: 1

      Management were wrong here. A lot of programmers just want to provide high quality code that does what the customer wants. They're eager to please and they have pride in their work. They will go above and beyond because they want to produce things that work. This "don't do any more than the minimum" attitude demotivates. I agree that programmers shouldn't run screaming off adding expensive features that push the cost up, and if this happened a lot and had an impact on the business, I'd have a quiet word. This isn't what happened here.
       
      Programmers are people too.

      --
      Training monkeys for world domination since 1439
    22. Re:hmmm, is there a missing party here? by Grab · · Score: 1

      Estimating the amount of work is a technical decision. Allowing for contingency is a management decision. If it's a fixed-price contract (as most are) rather than time and materials, the estimate MUST include a multiplier for contingency. Most projects will come in on time, some will spill over, and none will come in in less time, so overall you lose. Hence contingency to allow for that and still let the firm make a profit.

      Also remember that engineers are *notoriously* bad at estimating (see the famous estimates for MS implementing WinNT for an example). Unless an engineer has a proven track record at estimating 100% accurately *and* knows 100% of the detail about the system, doubling the estimate is not a bad plan to allow for contingency.

      Grab.

    23. Re:hmmm, is there a missing party here? by Grab · · Score: 1

      There's a difference between taking care of the customer, finding out what they want and all that, and going out and giving them freebies. Obviously the customer will love you if you give them freebies, but *your* company will crash and burn. And guess what, it's *your* company that pays you.

      Grab.

    24. Re:hmmm, is there a missing party here? by seanyboy · · Score: 1

      This is a weirdly circular argument. The people arguing for management are essentially telling you that you're doing this work for your manager. In other words, your manager is your customer. Your manager is also telling you that its OK for a supplier to (a) do the minimum, (b) bill more for work than it actually cost, and (c) it's never OK to do work for free.

      In other words, the manager is telling you on one hand that it's not ok for you to shaft your customers (him), but it's ok for him to shaft his customers (the end user)

      Screw 'em. Do your job the way you want to do it. Never feel guilty about making money for doing the least amount of work. Don't worry about doing work for other people on your bosses time. Within the context of your contract, sell the work you do to as many people as you can.

      If they fire you, find work with someone who actually gives a shit.

      --
      Training monkeys for world domination since 1439
    25. Re:hmmm, is there a missing party here? by DrSkwid · · Score: 1

      Yes, you're right. I didn't outline the failure of the manager's responsibility to his employee in that situation.

      Being angry after the fact and expressing that at an employee is mismanagement. Hurting an employees feelings in that way is just not fair. It sounds like the OP is actually a good worker and as such should have his skills nurtured and chalk such minor mistakes up to experience instead of getting all shouty. That he ended up posting here means they didn't even talk about it properly !

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    26. Re:hmmm, is there a missing party here? by DrSkwid · · Score: 1

      It's not about doing the minimum, overcharging or doing work for free.

      It is about your company deciding what they will do, you are there to perform the tasks, the manager is there to manage when and what you work on.

      It's not about making a job stretch in order to charge more. Lets assume the job will take 5 days work. During those 5 days all sorts of things can happen that may disrupt things. What if you are ill for a day, or your terminal breaks or a critical bug appears in some old job and you're the best guy to fix it. The project slips a bit and then you've not met your customer's expectations and you could be disrupting your client's schedule. Better to tell them "two weeks maximum" and then deliver in 8 days.

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    27. Re:hmmm, is there a missing party here? by Anonymous+Brave+Guy · · Score: 1
      Therefore: It's not the engineer's fault, ever.

      That's simply not true. Any member of staff working at an organisation shares a certain amount of collective responsibility to do their part well, and help others to do likewise. Only a smart-ass manager would expect an engineer to produce 100% bug free code and make no allowance for screw-ups. Only a smart-ass critic would expect management to hire only perfect staff and fire them instantly if their perfection diminishes. The real world doesn't work that way.

      That said, if I were the manager of an engineer senior enough to be customer-facing, and the engineer started making promises and changing deals, that would be a first-and-final-warning kind of deal, and only if I were in a good mood. That kind of behaviour is serious professional misconduct. Anyone who can't tell the difference between sincerely seeking a customer's viewpoint so you can do a good job of meeting it (a good thing for engineers) and actually negotiating with the customer and making commitments on behalf of the company (a bad thing for engineers) is clearly incompetent to hold that job.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    28. Re:hmmm, is there a missing party here? by seanyboy · · Score: 1

      I agree with what you're saying and in the situations you describe, you're right. However, the tone of the parent was one of "Don't do extra work, even if it's required, because we can charge more for it later on." There was also an implied assumption that the manager was padding estimates so they could charge more. If this is standard practice, (and I have no reason to believe that it is not), then a company can hardly complain when programmers use the same techniques to "maximise" revenues earned from the companies they're providing a resource to.

      In my ideal world, customers, companies and programmers would work together to provide solutions which benifited everyone, but to believe fully in this is naive.

      --
      Training monkeys for world domination since 1439
    29. Re:hmmm, is there a missing party here? by Anonymous+Brave+Guy · · Score: 1
      Real management would have never ... have sent someone to a meeting without ground rules.

      Sure, but isn't a basic level of common sense and awareness part of the job any more? Would you expect a manager to have to tell a senior developer before each customer site visit to remember to be polite and turn up well-presented? Of course not. Granted, it's smart management not to make unnecessary assumptions, so you might mention that as a "friendly aside" to the rookie guy the first time, because he's a rookie. It sounds like that might be the case here. But in general, there are some things that anyone competent to be visiting customer sites should know, and that includes that they should ask their delegation's leader first if they don't know exactly what role they're supposed to be playing or how to play it.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    30. Re:hmmm, is there a missing party here? by stanmann · · Score: 1

      Wear a suit and tie out in public with the customer is a different kind of common sense than lie to the customer and squeeze them for every penny.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    31. Re:hmmm, is there a missing party here? by CloakedMirror · · Score: 1

      This comment, and the many that have preceeded it, and likely will follow, illustrate the difference between managing and leading. The missing party in this case is a leader.

      This manager wanted to hold on to the power of his position, without providing any direction to the person that was responsible for executing the work. His action of taking the programmer/engineer to "the room" showed that he was insecure in his position. A good leader seeks to empower the people they lead.

      This manager was not concerned with either the customer, or the company he worked for. He wasn't even really concerned with how the customer perceived the company, although he would probably try to convince you otherwise. His real concern was how the customer perceived him. He didn't what his actions did to the morale of the employee that works for him. He will do this over, and over, again; and if he gets to a high enough position within the company, this attitude of managing, instead of leading, will take the company down.

      Personally, I would leave that job as quickly as possible. Look to find a company that seeks to build on your success, and that has leaders in the positions of power. Managers are a dime a dozen...and most are worth even less. Good leaders are worth more than their weight in gold.

      --
      Evolutionary thinking will move you down the road, revolutionary thinking will put you on a new road!
    32. Re:hmmm, is there a missing party here? by Anonymous Coward · · Score: 0

      That is a perfect example of the disconnect between engineering training and business training. Businessmen are trained to get the maximum return for minimum investment or risk (same thing in the end. Engineers are trained to provide the necessary results with the minimum resources and to insure that what is delivered is safe.

      The consequences of an error also show why the mind sets are different. If a businessman screws up royally, the company goes out of business, people lose thier jobs, and the businessman moves on to a new business. If a doctor screws up royally, someone dies. If an engineer screws up royally, dozens to thousands of people may die, possibly all at once.

    33. Re:hmmm, is there a missing party here? by WaterBreath · · Score: 1

      You have a point, of course. But these are not the engineer's responsibilities. These are the manager's responsibilities. If this particular engineer is bucking for a management position, he might do well one day, considering he knows how to provide good customer service.

      But he'll have to quit the insubordination before anyone considers promoting him to managment. And I think that's the real "moral of the story", as they say. In the end, you have to do what the company asks, or you'll find yourself looking for a different company. If you're okay with that, then fine. But "change from within" doesn't work when it starts at the bottom of the chain (except maybe if you're whistleblowing). Generally, you have to get to a position where you have the authority to change the rules (whether that be in management, or simply as a time-tested, respected engineer) before your changes will have a lasting effect. Otherwise you're just labelled a troublemaker.

      That's the way the world works. Don't like it? Start your own company and make your own rules. If they work you'll be successful. Then you can write a book all about it, rake in the royalties, become well-known in the industry, and maybe even get paid to speak on the subject.

    34. Re:hmmm, is there a missing party here? by Anonymous Coward · · Score: 0

      thinks code more than anything else has to be correct

      More than anything else, code does have to be correct. If by "correct" you mean "it does what it is supposed to do". Incorrect code means you don't have your features, you don't have your deadlines, and you don't have a happy customer. Of course it comes first.

      "Correct" as "would this score top marks in a coding style contest" isn't what I got from the article - maybe you're overreacting to that a little.

    35. Re:hmmm, is there a missing party here? by chris_mahan · · Score: 1

      "That's simply not true."

      Of course it is.

      "Any member of staff working at an organisation shares a certain amount of collective responsibility to do their part well, and help others to do likewise."

      Not true: The ONLY requirement of a company is to maximize shareholders profits by following its corporate charter. That is management's job. Failure to do so is management's failure.

      "Only a smart-ass manager would expect an engineer to produce 100% bug free code and make no allowance for screw-ups."

      And who hired and kept that smart-ass and inexperienced manager? His manager. Again, management's fault.

      "Only a smart-ass critic would expect management to hire only perfect staff and fire them instantly if their perfection diminishes."

      Read Miyamoto Musahshi's "Book of Five Rings", the part on "trades". It is management's fault that they didn't hire the right people and use them effectively. I say management taking everybody from the operations manager all the way to the board of directors. It is management's fault if workers have insufficient tools, resources. It is management's fault if the project is not adequately funded. It is management's fault if the * is not adequately *. You get the picture?

      "The real world doesn't work that way."

      The real world works exactly that way. If management in companies, officers in war, or football coaches don't take into account the shortcomings, fears, laziness, incompetence, lack of motivation, and gripe of the people they manage, they will not achieve their goals. Those managers that understand and proactively mitigate those factors succeed. Those that don't, well, blame the engineers.

      In Sun Tzu's The Art of War, he writes: "If you do not know yourself and do not know the enemy, you will suffer defeat at every encounter." (I paraphrased from memory) That was 2500 years ago or so. What does knowing yourself mean exactly? He lays it out plainly in the rest of the book: Know where you are strong, know where you are weak. Know the weaknesses of your subordinates.

      So, again, it's management's fault.

      On your last point about the senior engineer. Why is the engineer talking to the customer? Because the company did not hire a competent salesman, did not pay the salesman in a manner in which his most profit would come from the product being delivered correct and on time. Again, management's fault.

      Remember, it's ALWAYS management's fault.

      --

      "Piter, too, is dead."

    36. Re:hmmm, is there a missing party here? by BJH · · Score: 1

      That's a very cynical view of the situation (possibly correct, but still cynical).

      Look at it this way: the engineer gives the client something that was not in management's plan. As a result:

      - management now know that the programmer spent time working on a feature that was not needed to make the sale.
      - management now have to figure out how to support that feature (both internally and for the client).
      - management now know that they cannot rely on that programmer to deliver exactly what is required for a product.

      From management's point of view, there's very little upside to it.

    37. Re:hmmm, is there a missing party here? by stanmann · · Score: 1

      Actually it is your customer who pays you, the company just writes the checks

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    38. Re:hmmm, is there a missing party here? by networkBoy · · Score: 1

      "Good leaders are worth more than their weight in gold."

      This statement is exceptionally true. I now work for a manager, who works for a manager trying his best to be a leader, who in turn is working for yet another manager. It's killing him, but the staff sees he is trying and we pull for him. My direct manager is more staff than management anyway, so I don't really pay any attention to him except when something's borked.

      Two of the best _leaders_ in my department are techs. not engineers, not management, techs. Everyone resepects them, does what they suggest, and we always come out ahead.
      -nB

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    39. Re:hmmm, is there a missing party here? by Kosgrove · · Score: 1

      Actually, according to one of the latter chapters of Code Complete by Steve McConnell, engineers are actually quite good at estimation, at least at first. It's when management attempts to pressure engineers into shortening their estimates that problems occur.

    40. Re:hmmm, is there a missing party here? by Crayon+Kid · · Score: 1

      In other words, the manager is telling you on one hand that it's not ok for you to shaft your customers (him), but it's ok for him to shaft his customers (the end user)

      Screw 'em. Do your job the way you want to do it. Never feel guilty about making money for doing the least amount of work. Don't worry about doing work for other people on your bosses time. Within the context of your contract, sell the work you do to as many people as you can.


      The problem I see with this line of thinking is that it ruins you, from a moral and psychological point of view, in the long term. As an engineer and a human being, if you don't have the pride in the things you create then what do you have? You're probably going to say "money". It will work as an excuse for some people, but I suspect that it won't for all. Some people are (as am I) driven by a need to create good, lasting stuff. It gives you peace. Such a point of view goes against everything they believe in.

      --
      i ate crayons when i was a kid and now i have two braincells and the blue ones taste nicer
    41. Re:hmmm, is there a missing party here? by IPFreely · · Score: 1
      I doubt that the engineer took classes in how to screw over the customer, while I'm quite sure that the manager did.

      Absolutely. If the manager had not had those classes, he'd be out of work.

      By the way, the customer in that room also took classes in how to screw over vendors. If he's not handled correctly, your company gets screwed bigtime. The engineer is certainly not qualified to handle him safely, that's the manager's job.

      Geeks and engineers are just too honest and hardworking. They would never survive in a real business negotiation.

      --
      There is nothing so silly as other peoples traditions, and nothing so sacred as our own.
    42. Re:hmmm, is there a missing party here? by xp · · Score: 1

      Trying to please your boss will not help you. To find true success you must disconnect your actions from worldly consequences. You must stop desiring worldly fruits for your actions.

      If you crave your boss's approval you will still not get it. It will just make you miserable. Plus you give him too much power over your soul.

      Remember that you were created for a higher purpose. Remember that this life is just a (really well made) game in a virtual reality engine.

      To find real fulfillment at work look for ways to improve your next life and to please Allah; because your reward in the next life is guaranteed. You can earn points for your next life in the following ways:

      1. Look for ways to help other people at work. Help other co-workers, customers. All of this will earn you points.

      2. Treat people with kindness and affection. Each incident translates to real points.

      3. Pray for success before every project.

      4. Donate a portion of your paycheck to charitable causes.

      5. Work to earn as many points as possible. Stay focused on the next life.

    43. Re:hmmm, is there a missing party here? by Grab · · Score: 2, Insightful

      The real story is rather more complex than that.

      Engineers *with experience* are good at estimation. By the time you've got that experience, chances are you've been in the business 5-10 years and you've got the seniority to not have the kind of grief the OP had.

      My personal experience of myself and everyone else I've ever worked with though, for the last 7 years since uni working in embedded software, is that *everyone* sucks initially. Without exception. Until you get into a job, you're not used to 37.5 hours *and* making deadlines. Need to make a uni assignment? Work into the night, no worries, and make up the sleep the next couple of weeks. No student anywhere (unless they're some kind of freak ;-) counts the hours they spend on a project.

      That all kind of falls apart at work, where management frowns on employees working themselves into the ground short-term and working less productively overall. It also runs into the notorious over-optimism of young engineers, who assume that because they've solved all tasks quickly so far, that every other task they'll see in the next couple of years will be equally easy. Throw a 200-page spec at them, and expect a response of "yeah, 6-8 weeks, no worries". And finally, they forget that docs and testing are also part of the job - typically they never had to do that at uni, so they only count the coding time. The job of the manager and/or senior engineer is to inject rationality into estimates from people who can't estimate themselves.

      Basically, estimating is like driving a car - the more you do it, the better you get. Initially you don't know how, and basing project quotes on estimates from a new grad is like putting a 16-year-old into an F1 car and saying "go for it" - the crash is inevitable. A smart manager will get estimates from everyone (so they all feel equally important), factor in reliability and how long *they* think it'll take (and how long their senior engineer thinks), and use those numbers instead. A *really* smart manager will monitor how long it actually took, so his team can find out what their over/under-estimating tendencies are, and improve in future. Sadly there aren't enough of the former, and even less of the latter. ;-/

      As you say though, the problem is managers who say "oh no, that's way too long, cut it by 75%". If they have a basis for saying that, then fine - some inexperienced engineers swing the other way and estimate months for a 2-week job. But if they've no technical understanding then they're just as inexperienced as a green engineer, and just as much of a liability.

      Grab.

    44. Re:hmmm, is there a missing party here? by Grab · · Score: 1

      Re my example of WinNT, see http://windows.about.com/od/pastnews/l/blhistory19 80.htm and http://en.wikipedia.org/wiki/Windows_nt.

      NT development started in June 1989. In October the team estimated they'd be done in March 1991. NT3.1 actually shipped in July 1993, never mind how long fixing bugs took. And this is with a team who had experience developing the original Win3.x and in developing other OSes, mind. There's a big tendency for engineers *and* managers to look at a number and say "oh yeah, that's ages away, we must be able to make that". Except it ain't so - it just means it's going to take longer before you realise you're screwed. :-/

      Grab.

    45. Re:hmmm, is there a missing party here? by Suicyco · · Score: 1

      Making the customer happy is a business decision. It is not up to an engineer to make such a decision on his own. How does he know this customer hasn't played games with developers for a long time and the company is fed up with it? The engineer should do what the spec says. Nothing more, ever. He can certainly talk to management about the spec and offer suggestions, perhaps adding feature Y is a good idea nobody thought of. But you should never take management out of the loop because even if you do an awesome job, you could easily get fired for it.

    46. Re:hmmm, is there a missing party here? by Suicyco · · Score: 1

      Yeah great for Code Complete.

      The reality is, engineers are notoriously horrible at initial estimates. Ego, depth of understanding, many things can contribute to a poor estimate. The more complex a solution is, the harder it is to estimate. Especially DURING a meeting laying out a project. I have made that were completely accurate, and those massive ones that were an order of magnitude wrong. Those always take a lot of time to break the problem down, in fact in those projects we charge the customer just to estimate time/complexity and give them a quote, as it takes quite a bit of fact finding to really suss out the details.

    47. Re:hmmm, is there a missing party here? by Anonymous Coward · · Score: 0

      No, the manager was wrong. The programmer was treating his customer like a human being, something that is becoming extremely rare these days. He took good care of the customer and treated the customer right, an ethic that once held some value in this world but no longer does. I say kudos to that programmer and boo to his manager. Maybe the programmer was wrong from a business standpoint but he was sure right from an ethical one.

    48. Re:hmmm, is there a missing party here? by DrSkwid · · Score: 1

      Fixing the report is taking care of the customer but, as I said, it is exposing the employer.

      Telling the client how long the job will take without passing it by management is exposing the employer and risking failure and therefore risking the scheduling of the client.

      It *might* look like taking care of the client but it could all go horribly wrong.

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    49. Re:hmmm, is there a missing party here? by Heretik · · Score: 1

      Geeks and engineers are just too honest and hardworking. They would never survive in a real business negotiation.

      Corollary: Managers are just too stupid and full of bullshit. They would never survive in a position that actually involved getting real work done.

    50. Re:hmmm, is there a missing party here? by Ace+Rimmer · · Score: 1

      Well, I've seen also something a bit different. A manager asks an engineer for estimate on project deadline. An (experienced) engineer does his best and thinks something about 6 months. Becouse he knows something (bussines/political) related to this project, he rather says 4 months (and thinks about cutting docs and testing, tbd later). And manager ends with "What, it has to be finished in 2 months becouse we already signed the contract so."...

      --

      :wq

    51. Re:hmmm, is there a missing party here? by SirSlud · · Score: 1

      Screw that. I see exactly what you're saying, but a world where everybody tries to exact the most amount of money from the least amout of effort in an unfeasible business practice. Doing things correctly, and giving fair deals is the only sustainable form of capitalism.

      See the rise and fall of many markets. Emerging economies emerge because they have no choice and do everything you imagine is wrong; economies that fail are the very economies that hand over the reigns to people incapable of anything but believing that just because you might be able to squeeze blood from a rock the first time, you can do it many times over.

      I leave jobs where management or bosses with no technical aptitude focus on sucker clients who dont demand unfettered access to technical resources; these are places who accept clients who won't have money for long, and subsequently end up not building up their own business on the strengths of their product but rather their success at the moment in negotiating contracts and business relationships.

      Killer business sharking is fine if you're going to make a flash in the pan and move on, but nothing I've seen has yet to convince me that business aptitude should be anything but an 'add on skill' to people who are actually capable of creating things. Just look at the american culture machine right now; all the money is on lawyers (and let me stress that layers are important people), executives, business people .. they dont know how to make product, so to give them the power is to say lets make money today, but eventually piss everybody off. Funny how business sense seems to coincide with social networking so nicely that by the time things start to crumble, they're in another job. I see technical people, all the time, stick with something because they believe in it. I very rarely see business people stick around a full up and down cycle to the death. THATs business sense; the sense for self, not the sense for what creates sustainable value.

      I have no problem with following your advice if my manager still actively codes or engineers or whatever; if he doesn't how the hell is he more qualified to determine what is a good deal for the client, and what kinds of promises and commitments would result in repeat business?

      --
      "Old man yells at systemd"
    52. Re:hmmm, is there a missing party here? by SirSlud · · Score: 1

      > That's the way the world works. Don't like it? Start your own company and make your own rules.

      That's the way the world works. Don't like it? Point out what you did to a different company that values leaving the bean counting to management and placing the customer satisfaction in the hands of the pople who actually build and support the product, and work for them.

      There, fixed that. Honestly, everything you said is the very reason why I left my last employer high and dry. Is a manager useful at 2am when something goes down? No. So who's actually satisfying the client? My experience thus far has suggested that starting your own company means you're very very good at paper work. Don't hire engineers who can't figure out whats a good/bad business decision, and never forget that something that looks like an expensive decision today from a subordinate can pay off in spades tommorow. Seriously, I left my last job because they were so desperate to call today profitable that I would put money down on them not being around in 2 years. And those were managers, business people.

      --
      "Old man yells at systemd"
    53. Re:hmmm, is there a missing party here? by ACORN_USER · · Score: 1

      Managers suck and we'd all be so much better off - and more advanced - without them!

    54. Re:hmmm, is there a missing party here? by WaterBreath · · Score: 1
      And those were managers

      Then they were bad managers. Obviously engineers benefit from having a certain amount of business sense. But they shouldn't be responsible for customer relations on top of everything else. The point of delagation (when used correctly), and of separation of duties, is to make sure that people are doing what they are best at, and focused on that. If you're a good engineer, and are good with people and have good business sense, then you deserve a management position and the pay that goes with it. But if you're just a good engineer, then you can be just that, and take the pay scale that goes with that. If you're just a good manager, then you should not be managing an engineering time. You should be managing some other team that does something in which you are skilled, or you should be farther up the management chain.

      And to clarify, I never said that the engineer should have no contact with customers. But in a sufficiently-sized company, there's no reason his contact with the customers shouldn't be well-defined and restricted. The guy who's going to spend 8 hours a day on project work shouldn't also have to worry about writing up presentations, deciding what to charge the customer, budgeting time, assigning duties, and all that jazz. If you do that, you'll most of the time get one guy who does crappy engineering and crappy managing, regardless of his actual abilities in each respect.

      I'll sum up my viewpoint.... An engineer who is good at management should be offered a strictly management position. If he doesn't want to leave his engineering position, then he can continue to be an engineer. But if he wants to be a manager, he shouldn't be doing the engineering anymore. It's about focus as much as it is about skills and talents. Engineering experince is very valuable in certain management positions. IMHO, if you never did the job yourself, you should not be directly managing people who do that job.

    55. Re:hmmm, is there a missing party here? by Anonymous Coward · · Score: 0

      than lie to the customer and squeeze them for every penny.

      It's a free market. If a price is too high, the client can go elsewhere.

  2. Your organization is fscked. by p2sam · · Score: 2, Interesting

    You should report to one mananger, and one manager alone. That will also be the person to assign you work, and give you priorities. That will also be the person who gives you performance reviews. So you better do what that person says. You have no business following low level directions like "what programming methodology to employ" from upper management. And upper management definitly has no business telling you how to do your job.

    Well, in a perfect world, that's how it should work. :)

    1. Re:Your organization is fscked. by NemoX · · Score: 2, Interesting

      I agree. If your direct manager was doing his job properly, you should never have to talk to upper management. Then that solves the problem. Why are you stressing because someone else isn't doing what they are supposed to do? Explain to your manager that his job is to buffer all the political BS, so that you can do your job. Do what he tells you to do, and if upper management ever questions you, you tell them "I was doing what I was told, if you have a problem with it, talk to my programming manager."

    2. Re:Your organization is fscked. by AsbestosRush · · Score: 1

      Explain to your manager that his job is to buffer all the political BS, so that you can do your job.

      hehe... Ahehhehe... AHAHAAHAHAHHHAHA!!!

      Explain to your manager! That's a good one!

      --
      EveryDNS. Use it. It works.
      AC's need not reply
    3. Re:Your organization is fscked. by AuMatar · · Score: 1

      Yes, exactly. You go to his office and tell him you're getting mixed signals, and please straighten things out. Then when the higher level manager asks you again, you tell him the same thing. They work it out. If they don't, ignore both of them and do whart you think needs to be done. If it doesn't meet their expectations, its their fault.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    4. Re:Your organization is fscked. by idontgno · · Score: 1
      If they don't, ignore both of them and do whart you think needs to be done. If it doesn't meet their expectations, its their fault.

      And when you're surplussed as a non-team-player, I'm sure the pink slip will have written somewhere, in a very apologetic-looking parenthetical postscript, "It's really management's fault. Sorry"

      --
      Welcome to the Panopticon. Used to be a prison, now it's your home.
    5. Re:Your organization is fscked. by AuMatar · · Score: 1

      Problem 1- if you pick which one to please you're just as likely to get that slip. Which is why you have them decide what your goals really are. If they're too dysfunctional to do that, the company is screwed anyway.

      Problem 2- You give a fuck about being pink slipped? Thats your problem right there. Do your job, produce good quality code. Whatever happens happens. You could be pink slipped tomorrow because the CEO embezzeled the payroll too. I'd put it at much, much higher odds actually. You should always be looking for the next job, I garuntee you that management will fuck you over if you don't have a backup plan. Generally you get a nice raise at the next one and probably a signing bonus, so you make more money to boot.

      --
      I still have more fans than freaks. WTF is wrong with you people?
  3. Uh, welcome to the world of business? by WebHostingGuy · · Score: 4, Insightful

    This is not so much a programmer problem but just a business problem; also known as a people problem. Just substitute programming with any other job description and you have the problems everyone deals with on a daily basis. There is no right or wrong answer only the relationships you have to deal with.

    --
    Quality Hosting e3 Servers
    1. Re:Uh, welcome to the world of business? by dubl-u · · Score: 2, Interesting
      This is not so much a programmer problem but just a business problem; also known as a people problem. [...] There is no right or wrong answer only the relationships you have to deal with.

      I agree that this is a people problem, but I think there are specific solutions that work well in programming environments. Personally, I'm pretty happy with the planning approaches I've stolen from Scrum and Extreme Programming:
      • Get everybody who wants work out of you together for a meeting
      • Break the work down into independent chunks no more than a few days in length
      • Make the suits order them by priority
      • Every week, take a week's worth off the stack and do them, keeping track of how much you get done
      • As often as necessary, have another planning meeting where the suits reorder the cards based on how long your measurements indicate things will take

      By agreeing to do whatever they want in whatever order they desire, you appear flexible and willing. But this is also a sneaky way to get them to reconcile the fact that they want more than can be reasonably gotten done. Personally I like doing this with one index card for each chunk of work and an estimate in days on each card. That way you can just hand them the stack of cards and say, "Ok! Put these in order of importance and I'll get to work on the top ones right away."

      This has worked for me pretty much every time I've tried it. My life is much less stressful now.
  4. Use hierarchy to your advantage by Mark+of+THE+CITY · · Score: 5, Interesting

    Insist the "higher-ups" go through your direct boss. Not every boss will protect you this way, but unless it's a really small startup, they should, IMO.

    --
    The clearance system sounds logical. It is not. It is completely arbitrary. -- John Bolton
    1. Re:Use hierarchy to your advantage by north.coaster · · Score: 1

      Better yet, ask your supervisor to help you with this. Your supervisor should instruct the more senior managers to bring all of their issues and concerns to him/her. It's their job to shield you from this type of thing.

      If that doesn't work, politely ask the senior managers to discuss their concerns with your supervisor. Tell them that you cannot work efficiently in an environment where you get conflicting direction.

    2. Re:Use hierarchy to your advantage by qwijibo · · Score: 1

      This is an example of why middle management gets hit in budget cuts. It sounds like the supervisor has different priorities than senior management. If this is creating a situation where the senior management's goals are not getting implemented on time, the problem lies with the middle manager.

      You can either try to help your manager learn how to do his job, or you can recognize this as an opportunity for a promotion. Very few people get fired for being responsive to the needs of their boss's boss. This can either end up making your boss look good, even against his wishes, or can emphasize that you should be working for the senior manager.

      I used to have a similar problem. Our old management was only interested in making themselves look good by making promises they had no intention of keeping. They did a good job of sheltering us little people from the senior managers. If they hadn't done this, it would have taken far less time for senior management to realize how little value they added. Now the middle managers have moved on and there are no more artificial barriers to communication between me and senior management. They handle the business needs and I handle the technical needs.

  5. How To Deal With It by RealityMogul · · Score: 4, Funny

    Here's the thing, just deal with it for awhile. Make some money, and then leave for another job that has smart people in charge. Wannabe programmers that are in management just screw everything up cause they think that if they follow the one guideline they remember from a 900 page development book they read in 1983 while studying COBOL, that everything will be perfect. Chalk it up as experience, or "paying your dues", or if you're past those points in your life, deal with it or move on.

    Now of course, if you're working on some important systems like aviation, military, or any of the MMORPGs I play, then shutup and get back to work.

    1. Re:How To Deal With It by rlwhite · · Score: 1

      "another job that has smart people in charge"

      Does this exist?!?!?

    2. Re:How To Deal With It by Ark42 · · Score: 1

      If you're self-employed.

    3. Re:How To Deal With It by abradsn · · Score: 1

      Jobs at some places have smart people in charge. It does make things a lot better. Microsoft (on most teams), Google, perhaps IBM, Intel, and many, many small companies, especially were the founder of the company is still around to make sure that things get done correctly.

    4. Re:How To Deal With It by qwijibo · · Score: 1

      It's rare, but it happens. There are fairly smart people in charge where I work. Of course, I may be biased because they listen to me on technical issues. =)

      The most important thing to me is working with people I get along with. My boss is a programmer and easy to work with. There is another director and VP I work with frequently who are business people with little technical experience. They know the part I'm not interested in (business side) and I know the part they're not interested in (technical), so we work together to meet the business needs with appropriate solutions.

  6. Several things to consider by Geshem · · Score: 3, Interesting

    There are several things you should consider:

    * "Dead lines" are never really dead lines. They are just guidelines to when you should reach something that works (not works well). The management (or a good management) always takes into account you probably won't make it in time anyway.
    * Good design and code re-use are there to save time, not to waste it. Take the time doing things right, and it will save you time in the long run.
    * You should always please whoever controls your future (but first, yourself).

    --
    || Geshem ||
    1. Re:Several things to consider by Osty · · Score: 4, Insightful

      * "Dead lines" are never really dead lines. They are just guidelines to when you should reach something that works (not works well). The management (or a good management) always takes into account you probably won't make it in time anyway.

      That's not necessarily true. At least, not the way you explain it. Deadlines can be real "dead lines", in that if you miss the deadline you're dead (or your project, anyway). However, don't forget that time (deadlines) is just one part of a triumvirate of quality, time, and features. If time is fixed (you're on a contract with a specific end date, you've publicly promised to ship on a certain date, a different team has publicly promised to ship on a certain date and your project is a requirement for their shippnig, etc), then something else has to give. Enlightened managers will cut features in favor of quality. Unenlightened managers will cut quality in favor of features. The only way to deal with this as a front-line developer is to make sure you're getting pressure from only one place -- your direct manager. If your manager's manager is dictating something else, you have the right to tell him or her to go through your own manager (in a diplomatic sort of way, unless you like being on the shitlist). Of course, you can go the other way, too. If your manager is setting unrealistic goals, or is damaging the project (focusing on features instead of quality), you can and should go to their manager and discuss the problem. Either way, you can't perform two contradictory actions at the same time, so you need to speak up.

      * Good design and code re-use are there to save time, not to waste it. Take the time doing things right, and it will save you time in the long run.

      You must not work in the commercial world. Looming deadlines and a list of promised features often means you have to sacrifice some quality. Usually you'll do so with the intention of cleaning it up in V.Next, but the vicious cycle of less time and more features conspires against you. The best you can do is argue in favor of doing things right, or at least taking some time to do a postmortem to evaluate why quality had to be cut and try to get time to clean things up. That's a problem with shrink-wrapped software, though, because nobody's going to buy a new version just because you cleaned up the architecture (assuming the previous version works well enough already). So you're back into doing features rather than fixing brokenness. While it sucks, you can at least take some solace in knowing that you wanted to do the right thing but couldn't because of someone higher up the chain.

      * You should always please whoever controls your future (but first, yourself).

      In the broadest sense, you control your future. But more pragmatically, it's really difficult serving two masters. You'll be happier and better serve your career growth by using the chain of command to work for you. Make sure you're only taking tasks from your direct manager, and don't accept any tasks that didn't come down that chain. There are times when you can and even should take tasks from people other than your manager, but when crunch time is on and it's a Do or Die situation, funnel those requests.

      Finally, evaluate why there's no time to do things right. Are you giving bad estimates? Are your estimates being changed by others besides you (people who aren't going to do the work)? Are your estimates assuming a perfect working environment? (if so, adjust your estimate to include context switching time to deal with interruptions, or lobby for "dark days" where you can turn off email, shut your door, and stop any interruptions so you can get a full day's work done.) Maybe you can change some things. Maybe you need to change your own view. Maybe you need to change jobs.

    2. Re:Several things to consider by dubl-u · · Score: 1

      However, don't forget that time (deadlines) is just one part of a triumvirate of quality, time, and features.

      I disagree strongly. You ignore cost, and quality isn't really an independent lever except in the very short term.

      As you say elsewhere in your post, reduced quality can get you very short term improvements in features. But the long-term cost is horrific. It's why most long-lived projects either have terrible productivity or go through big rewrites, or both.

      Having tried it a variety of ways, I favor the Extreme Programming approach: treat quality as a constant, set high. Make scope and time the main tradeoff. When that's insufficient, consider spending more money (on, e.g., people, services, or tools). But never let quality dip unless you already have time and budget 100% committed for repair or replacement of the low-quality code.

      Reducing quality is like putting things on your credit card. Unless you pay it off promptly, you will soon be in a world of hurt, paying massive interest, courting bankruptcy, and making no progress on the things that matter to you.

  7. When you've made everyone happy... by billybob2001 · · Score: 3, Insightful

    ...use the ice-pick on a piece of hell for my drink.

    You can't make everyone happy, nor should you try.

    Delegate - upwards, sideways, anywhere - everything that is not your responsibility: business analysis, requirements definition, project planning, test planning, and steer clear of the politics.

    Insist on written documents, version controlled, reviewed and signed off, to show your supervisor what the constraints are.

    You have to deliver to the company's scheduling needs, and you need to keep the quality as high as possible.

    Anything you can add at the technical level is only a bonus, unless you can explain it (in tech terms) to the business as a benefit to them, and they understand, and care.

    Now, for the important question:

    How can you make YOURSELF happy?

    (otherwise, what are you doing it for? - and don't say paycheck, 'cos there's a balance and money ain't everything)

  8. Three methods I've used in the past by Marxist+Hacker+42 · · Score: 5, Funny

    After 10 years in the industry, I've got the following three methods:

    1. Do everything everybody asks you to, even if you personally think it's contradictory. Works in companies that have a strong chain of command, but results in code you would never want to include in your interview portfolio. And gets you targeted for first layoff.

    2. Go your own way, but do plenty of software engineering to back things up. Gets you targeted quite often for layoff, but since you have the numbers, you rarely get laid off- this method has resulted in up to two years in the same job for me. Results in code you can be proud in, but you'll never meet a deadline, and that will eventually get you fired, so to give yourself extra time always multiply all estimates by 4 (Scotty school of engineering).

    3. Give up, and offshore your job. Everything gets coded exactly to spec, even when the specs make no sense, and nothing gets done right- but at least you'll end up doing what you're told, until your bosses find out, and then they cut out the middle man (you).

    In other words, I've yet to find a winning method in the situation you describe.

    --
    SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
  9. Bill Cosby said it best by Pyromage · · Score: 4, Interesting

    "I don't know the key to success, but the key to failure is trying to please everybody."

    Please the boss that can give you the raise and fire you.

    1. Re:Bill Cosby said it best by ivan256 · · Score: 2, Insightful

      Best advice ever.

      Usually you want to please your direct supervisor. If you do what he likes, the only person with direct knowledge of your work says good things about you. If you don't please your bosses boss, it's not you that will be taking heat.

    2. Re:Bill Cosby said it best by rthille · · Score: 1

      If you don't please your bosses boss, it's not you that will be taking heat.

      Not always true. I managed to please my boss (despite not having "the numbers", because I did good work and worried about making things work right, rather than checking off boxes), but when the 4th round of layoffs came around, my Boss's boss called me to tell me I was laid off. Of course, he called my boss just before that...

      --
      Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
    3. Re:Bill Cosby said it best by nine-times · · Score: 1
      Please the boss that can give you the raise and fire you.

      ... and make him give you directions by e-mail. Keep all your e-mail. That way, when following his directions screws everything up and he tells upper-management that it was your fault, you have documentation that you were only following directions.

  10. The Three Programmer's Virtues by Linux_ho · · Score: 5, Insightful
    You don't need anything else. Pay special attention to the last virtue. It's middle-management's job to provide upper management with a realistic schedule that allows time for a quality implementation. If upper management questions you directly, tell them they can have any two of these options: (A) fast, (B) cheap, (C) good. Chances are, they will understand that a quality implementation takes more time. If they choose (A) and (B) anyway, start resume polishing, the company probably won't be around long anyway.
    "We will encourage you to develop the three great virtues of a programmer: Laziness, Impatience, and Hubris."

    LAZINESS: The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer.

    IMPATIENCE: The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least that pretend to. Hence, the second great virtue of a programmer.

    HUBRIS: Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer.

    - _Programming Perl_, p. xiv, by Randall Scwartz & Larry Wall
    --
    include $sig;
    1;
    1. Re:The Three Programmer's Virtues by Anonymous+Brave+Guy · · Score: 1
      If upper management questions you directly, tell them they can have any two of these options: (A) fast, (B) cheap, (C) good. Chances are, they will understand that a quality implementation takes more time. If they choose (A) and (B) anyway, start resume polishing, the company probably won't be around long anyway.

      That's often not true in today's capitalist, commercial world. The fact that good managers realise this, and may make a decision to go with (A) and (B) under some circumstances even though the developers don't like it, is why good managers -- those who make the right call here most of the time -- wind up getting paid a lot more than good developers. :-)

      It's also why the industry should probably experience a fundamental change in emphasis, to put a greater weight on producing quality products, since often the money chain (ultimately, the customers) don't know enough to know that they want them (at least, not until after the crackers have been in, cleaned out the company network, and destroyed the business that didn't pay a bit more for a secure product, by which time it's a little late to learn).

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:The Three Programmer's Virtues by egriebel · · Score: 2, Insightful
      ...tell them they can have any two of these options: (A) fast, (B) cheap, (C) good. Chances are, they will understand that a quality implementation takes more time. If they choose (A) and (B) anyway, start resume polishing, the company probably won't be around long anyway.

      I guess you haven't been developing software too long. Companies always always always pick A & B. Always. Examples? Take a look at most shrink-wrapped software out there. Internal enterprise software has bugs as well.

      Why? People (and businesses) don't want to pay for perfect code nor can they afford the time that perfect code takes. Sometimes "good enough" really is good enough, don't forget the 80/20 rule. Most businesses can work just fine with some bugs in the code if (and it's a big if) they're known and sufficient work-arounds exist, as most businesses are not launching satellites into orbit or building medical devices, where the cost of mistakes is enormous (although software bugs have plagued both of these too).

      Don't misunderstand me, reasonable care must be taken in development, but not too many supervisors nor managers can justify an x-month slip in the project because "I'm making the software better quality" if there's no business justification for it.

      Is this caving in? I prefer to call it "pragmatism", you gotta dance to the tune the piper is playing, not what you think they should. When the person signing the paychecks says "ship it, I'm aware of bug X," you'd better ship it or have a damn good reason ($$ related, preferrably) why it can't be shipped.

      --
      ACHTUNG! Das computermachine ist nicht fuer gefingerpoken und mittengrabben. Ist nicht fuer gewerken bei das dumpkopfen.
    3. Re:The Three Programmer's Virtues by sahala · · Score: 1
      tell them they can have any two of these options: (A) fast, (B) cheap, (C) good. Chances are, they will understand that a quality implementation takes more time.

      I don't know where you heard of A, B, and C but I think you have the concept mistaken. The three typical competing priorities in a software project are the following:

      • Schedule
      • Functionality
      • Cost/Resources

      You may notice that quality is NOT a variable. That isn't to say that software professionals shouldn't care about quality. Rather, quality should NEVER be compromised. If you are taking shortcuts in quality, you are only hurting yourself. Furthermore, research has shown that low quality will directly impact schedule, availability of functionality, and cost. A quality implementation should not take more time, as any short-term gains you have for shortcutting quality only causes significant issues downstream. Quality is also largely determined by process and discipline, not how "good" a programmer is or how much effort is contributed.

      Also, is our responsibility as software professionals to communicate and enforce this concept with our colleagues, clients, and superiors. To be clear, this concept applies to build software with actual lifecycle, delivery expectations, and resource requirements. The odd perl script, exploratory coding (eg. I'm going to play around with ruby on rails this afternoon), and R&D activities have an entirely different context and thus, different rules apply.

      To the original poster:

      One way you can manage these competing priorities above is to always be in control of one. If your "customers" (using the term in a broad sense) require feature set X with schedule Y, then demand that you can make the adjustments you need with cost. If resources are fixed and they need delivery in 3 months, you require control of functionality to deliver (ie. take out features). Use this concept as a tool for compromise and negotiation. If your customers object and don't believe you, tell them that this is is an accepted software engineering concept: they can either try their luck squeezing, or actually have something at the end of the day that will work. The great thing about using competing priorities as a model, however, is that both you and your customers have points of control, which ultimately is what you both want in order to project goals through.

    4. Re:The Three Programmer's Virtues by pavera · · Score: 1

      I suppose its semantics, but I would put "quality" under "Functionality". I don't know how much code you've written, but writing good, documented, reusable, scalable, maintainable, bug free code takes a whole heck of a lot more time than whipping up a couple of features in a proof of concept. Quality implementations always take substantially more time and effort. If you give me specs, I can give you your program/features in a week or less, almost every time, however, if you feed the system bad data, or expect it to be able to process 20 million records, or think its going to have years of uptime without a crash, well you're going to be very disappointed. Moving a program from proof of concept to a quality piece of work takes substantial effort. This is what companies don't want to pay/wait for, they see the proof of concept, and they say "Let's ship that! Good job joe programmer, you wrote the whole product in 2 weeks." Meanwhile the programmer is saying "No, you don't understand, I need to spend about another 8 months on that before it works properly all the time, and doesn't crash when you give it bad input, and is secure against hackers". And the marketing guys and CEO are already announcing product availability in 1 month. Then when you say "There are all these bugs, and this doesn't work, and that won't work 90% of the time" they say "Well, why'd you write broken code?!".

      This is the number 1 reason why I started my own company, where I have control over these things. I don't over promise my customers, cause I know exactly what its gonna take, I normally ship high quality software, except when the customer doesn't get it, and says I need X by Y I'll pay Z. I'll say ok, well I can give you A by Y for Z, and make it very well known to the customer that because of their time crunch/lack of funds, they will not get a fully functional product (meaning quality will be sacrificed, as I will deliver the features).

      In short, features are easy quality is hard, and expensive, and time consuming. Quality is the biggest variable.

    5. Re:The Three Programmer's Virtues by sahala · · Score: 1
      Yes we are probably arguing semantics here, however....

      My working definition of Quality is the degree to which implementation meets requirements and expectations. I agree, proof of concept differs from scalable/maintainable/etc, but this can and should be stated up front. Software should absolutely not be scalable or fault tolerant if not demanded by requirements. If a company is making an attempt to ship proof of concept software, it is just as much the fault of the programmer or development staff for not communicating this properly.

      To re-iterate, quality is a constant. Yes, up front stated, intended functionality dictates some of the process to ensure quality. But process aspects like configuration management, unit testing, codereview, etc should be a given regardless of the nature of the project. Why the hell would any professional release software that does not live up to expectations and requirements, ever?

  11. how to make them happy? by irkab1rka · · Score: 1

    Go to your supervisor and offer them that you will work for less, and you will work long hours as well.

    It certainly will make them happy for a while. Let me know if you succeeded and I'll share more ideas with you like offering your girlfriend and your sister to them, drive them to work and do the shopping for them.

    Come on, they earn xxx$ in every minute on you. You should start your own business, be your boss and then you easily can answer this none-sence question :)

  12. Get them together by dtfinch · · Score: 2, Funny

    A good way to deal with conflicting bosses is to make them agree.

    Or maybe it's just your job to write correct software with lots of good features in a fixed amount of time. Get it done or you're fired.

    1. Re:Get them together by middlemen · · Score: 1

      Or you could read Dilbert and smoke pot and blow your worries(bosses) away everyday.

  13. simply get better at defining 'delivery' by team.. by torpor · · Score: 1

    if you think you're really pulling it off in the deadline set, yet you're not achieving management goals, then you've got a clear and distinct conflict between what it is you have to deliver, what you have delivered, and what you don't need to deliver.

    go to all three echelons, ask them these three questions: what is it you have to deliver, how can what you do deliver be better viewed and thus managed, and what do you not strictly have to deliver? compare their answers to the reality of projects you've completed and are not actively working on; don't do this for current, scheduled projects, however. its a strategic assessment you're doing, not a tactical one, so maintain that distinction.

    generally, programmer delivery is a dynamically defined subject; going to management serves as advice only inasmuch as you actually get your delivery properly defined. it sounds like you don't quite have it as neat as you may think you do .. that you are asking non-managers how to best communicate with managers indicates that you're definitely off the rails a bit. you and your managers are supposed to be your team, not slashdot.

    --
    ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
  14. Welcome to hell! by Ledfoot · · Score: 2, Informative

    IF that's the situation you're in, then first and formost, your company has a HORRIBLE corporate culture for development. If your boss and upper management are not in sync as to what's important, then I recommend you do what your immediate supervisor wants. If upper management has a problem with what you're doing, refer them to your manager. Your manager isn't there just to give you work to do, but he's also there to act as the sh*t filter and keep you from being swamped with all the other political crap that happens in a company. That's part of what he gets paid for.

    Only other option is find another job where things ARE done correctly and management is all on the same page.

  15. Hi Peter! by Cthefuture · · Score: 4, Funny

    Sorry, just thought this fits too perfect:

    Peter: It's a problem of motivation, all right? Now if I work my ass off and Initech ships a few extra units, I don't see another dime, so where's the motivation? And here's another thing, I have eight different bosses right now.

    Bob: Eight?

    Peter: Eight, Bob. So that means when I make a mistake, I have eight different people coming by to tell me about it. That's my only real motivation is not to be hassled, that, and the fear of losing my job. But you know, Bob, that will only make someone work just hard enough not to get fired.

    --
    The ratio of people to cake is too big
  16. Nice Guys Finish Last by Anonymous Coward · · Score: 0
    Not to be obnoxious but you sound like a good kid who was raised always to do your best and respect your elders. Welcome to the world, see those dogs over there. They can smell fear and they're gonna eat that other dog that's all alone.

    Instead of trying to be dudley dooright, try to adopt a new prespective that allows you to maintain your sense of self.

    If, as you represent yourself you need to approach things idelologically then try...

    "Pragmatism is a school of philosophy which originated in the United States in the late 1800s. Pragmatism is characterized by the insistence on consequences, utility and practicality as vital components of truth. Pragmatism objects to the view that human concepts and intellect represent reality, and therefore stands in opposition to both formalist and rationalist schools of philosophy. Rather, pragmatism holds that it is only in the struggle of intelligent organisms with the surrounding environment that theories and data acquire significance. Pragmatism does not hold, however, that just anything that is useful or practical should be regarded as true, or anything that helps us to survive merely in the short-term; pragmatists argue that what should be taken as true is that which most contributes to the most human good over the longest course. In practice, this means that for pragmatists, theoretical claims should be tied to verification practices--i.e., that one should be able to make predictions and test them--and that ultimately the needs of humankind should guide the path of human inquiry."

    Pragmatisim is all american and grew from the camps of Dewey and James. It's good stuff to navigate by. It's closely related to...

    "In the philosophy of science, instrumentalism is the view that concepts and theories are merely useful instruments whose worth is measured not by whether the concepts and theories are true or false (or correctly depict reality), but how effective they are in explaining and predicting phenomena." Both are alittle out of vogue but the object of my recommendations is to allow you to keep your ethical high ground and still survive.

    Ultimately, don't worry, you'll age and grow cynical, learning to survive.

  17. Honest self assessment time by heinousjay · · Score: 3, Interesting

    You need to be honest with yourself and determine how good you are, then move on. It's not worth trying to fight a system like you describe, and if you are in the top half of the talent in the industry, there's a job out there for you that's more interesting, pays better, and isn't half as painful.

    If you're in the bottom half, I guess get used to it and be happy you're employed.

    --
    Slashdot - where whining about luck is the new way to make the world you want.
  18. Wrong Question Your purpose is to make you happy by Crashmarik · · Score: 5, Insightful

    Lets get real here. The stiuation is bad, your'e not in a position to change it. Ask yourself who writes your performance reviews. Talk to them. Find out what they want from you. Give it to them. Wait for your review and then either move up or be prepared to move away.

    Sometimes you just have to be your own best friend.

  19. Deal with it like everyone else does: Prioritize by babbage · · Score: 1

    In real life, how do programmers handle this situation?

    You deal with it the same way anyone else with a job does: you learn to set, and meet, proper priorities.

    An employee's job is to satisfy your manager's expectations that you are fulfilling your duty within the organization. This is true for anyone with a job, no matter what that job might be -- programmer, sysadmin, manager, garbage collector, whatever. It's true for anyone with a boss -- and pretty much everyone has a boss, whether it's a manager, a VP, a board of directors, the voting public, whatever.

    According to you, your manager expects you to, quote, "that stresses correctness in programming first, amount of time needed second, features third". That's it then. That's your job. Period. If your manager is doing his job, then that's all you should need to worry about.

    Your manager, by contrast, is responsible for fulfilling the expectations of upper management, namely, in "stressing features and amount of time needed first and correctness of programming a distant second". In practice, that means that he has to walk the balance between doing things right by his staff -- code correctness, then time constraints, then feature completeness -- and doing things right by his bosses -- features & time, then correctness. His job is to allocate staffing resources so that his team is doing things properly and at the same time keeping upper management happy.

    The concerns of staff two levels up the chain of management aren't your problem; they need to be steering the direction of the business, and counting on the people working under them to be able to deliver. Likewise, the constraints that you need to be working within -- doing your job right first, and meeting time & feature needs second -- should not be the concern of the upper management; they have broader things they need to be focusing on.

    Now, I realize that this is kind of idealized, and not all companies provide an environment where this is possible. Some companies are led by people that want to be very hands on with what their staff are doing, and sometimes that can even be a good thing. Other companies want to break down barriers between layers of management and staff, and that can also be a good thing. But having too many cooks in the kitchen, to rob a phrase, is rarely a good thing. If your company is big enough to have multiple layers of management, and they trusted your enough to give you a job, then they need to trust you to do that job, and they need to trust your manager to set your working priorities, and they need to focus their own efforts on steering the company itself so that you have something worth working on and the long term prospects of the company are assured.

    And all that said, the one theme common to all of these different job functions is that everyone has to be able to understand and set priorities. In these days of relentless cost cutting and ever-increasing productivity, most people have more job responsibilities today than people did a couple of decades ago. The people that keep their jobs and keep getting promoted are the ones that figure out how to doing their immediate job right (so that it makes their direct manager happy) and making their manager's job easy (so that it makes the upper level manager happy).

    And part of this means figuring out how to manage your time, what to focus your efforts on, and what parts of your job can be safely ignored. (And yes, implicitly, that means that some people won't be happy; you have to learn to live with this, unfortunately.) If banging out a sloppy version of your code gets something to your managers in a third the time that the "correct" version would have taken, then sometimes that's the compromise you have to make. But if you can make the case that spending the extra time to do it "right" will have benefits that offset the lost time & functionality -- for example, it can make future versions faster to produce

  20. You have bad managers by Metasquares · · Score: 2, Insightful

    The software development triangle states that features (and, I suppose, the overhead of developing to whatever standards your managers happen to define as "correct") are balanced against resources and time. If you want to give a programmer less time, give him more resources (money, more developers, etc.) or accept a less sophisticated program.

    It sounds like your managers aren't respecting this principle, and perhaps the only advice I can give you is to talk to them about it and/or start looking for a job elsewhere :)

    1. Re:You have bad managers by IPFreely · · Score: 1
      "Never attribute to malice that which can be adequately explained by stupidity."

      The bosses are not bad, they are just disorganized. They appear not to know what each other want. They each have a different view of that triangle, and they are each trying to lay that view on you.

      The upper level management are going directly to you when they should go through your boss. If they do, they are breaking the chain of command that they themselves hold so dear.

      Correct them. Tell them to find your boss and tell him what they want. You'll do whatever they want as long as it comes through your immediate boss. That way, your boss has a chance to clearify the importance of the feature triangle and your priorities with respect to it.

      --
      There is nothing so silly as other peoples traditions, and nothing so sacred as our own.
  21. The project can always afford to slip a little bit by cgenman · · Score: 3, Interesting

    Not to be too pessimistic, but no matter how large the project is, no matter how important it is to everyone involved, it will be faster to slip it now and get it done right than to fsck it up and need to do it over.

    Projects slip all of the time. Someone is setting up how much time you have. Time is always variable, and is negotiated with outside entities. Your boss's boss, the loonies in marketing... someone is setting the schedule. Schedules are always optimistic. The bigger and more important the project, the more likely it is to slip.

    The key is not to do what people want, but what will make them happy. Your immediate boss probably wants Stanford dissertation level code, but would be happy with good documentation and re-usable classes. Your higher-ups may want it done fully featured last week, but would be happy if you explained that the extra time you spent now can save a week off of all of your other projects. And if you can only make one person happy, tell everyone else to go to that one person. It takes guts to tell a high-level executive to talk to your manager, but that's what it takes. And sometimes you have to tell your manager to talk to the high-level executives. But if you can't make lots of people happy, make one person happy, and tell everyone else to stuff it on their authority.

    Most importantly, the code you make should make you happy. If it doesn't, it isn't going to please anyone else. More importantly, though, you're selling your company your time and experience, not your soul. If your experience (however young) says to do something differently, that's what they're paying you to know. And if it's your soul they want... just recognize that a wall-street banker can make upwards of 200,000 dollars their first year. Souls go for a lot more money than you probably make.

    Either way, you're getting laid off in 5 years. Good luck!

  22. Worse is Better. by Mordant · · Score: 1

    Check it out.

  23. Honesty and Forthrightness. by mosel-saar-ruwer · · Score: 3, Insightful

    Nuttles1: ...I have a programming supervisor that stresses correctness in programming first, amount of time needed second, features third, but I also have upper management stressing features and amount of time needed first and correctness of programming a distant second...

    p2sam: You should report to one mananger, and one manager alone... Well, in a perfect world, that's how it should work. :)

    Just be completely honest and forthright in all your communications.

    Suppose you have

    Dick Weed
    dickw@uppermanagement.acme.com

    Brown Knows
    brownk@middlemanagement.acme.com

    Then your emails would read like:
    TO: dickw@uppermanagement.acme.com;brownk@middlemanage ment.acme.com

    SUBJECT: Conflicting priorities

    BODY: In re: the new feature set that was promised to the client - I can probably "make" the deadline of Friday the 13th, but I'm gonna hafta break a lotta rules, and write some pretty darned ugly spaghetti code, and I would definitely be cheating on those ISO 9000 standards that we were trying so hard to adhere to.

    It's your call.



    1. Re:Honesty and Forthrightness. by p2sam · · Score: 1

      I have learnt to avoid giving management choices like "either this or that but not both". Most of the time, they'll try to get you to do both. :)

    2. Re:Honesty and Forthrightness. by Grab · · Score: 1

      They'll definitely try - that's their job. Your job is to tell them that it isn't possible. And make sure that it's documented in an email that it isn't possible. If they tell you to do both, send an email back (and CC'd to boss's boss) saying that it isn't possible.

      Grab.

    3. Re:Honesty and Forthrightness. by Shaper_pmp · · Score: 1

      You're assuming here management will believe you when you say "it's not possible", or that they'll accept simple facts like documentary proof that it's their fault. This is a bad assumption.

      In my experience, non-technical managers tend to have a mysteriously selective faith in developers - namely that:

      1) We can simultaneously do an unlimited number of things in an ever-decreasing timespan with no loss of quality, and
      2) Our own estimates of "time to complete a job" are always inaccurate to the point they can safely be dismissed out of hand, in favour of a number pulled out of the boss's arse on the spur of the moment.

      Then, when we cut corners and/or perform miracles and get something out the door by the deadline, this is taken as proof that the two beliefs above are correct.

      Then, when whatever we chucked out the door proves to be missing half the original features or full of bugs, it's proof that we're lazy and/or incompetent.

      If there's one thing I've come to realise, it's that a depressing fraction of the world's population simply aren't rational, and that the worst examples of these tend to gravitate to middle/upper management.

      They'll quite happily push you to do a job badly, then complain when it's done badly, then completely fail to accept that it's a direct consequence of their actions when you point it out, all without a hint of cognitive dissonance.

      It's the original "stamp on your toes then shout at you for not standing up straight", and it does nothing but shift blame from the master to the slave, and demotivate the only people who actually produce the products that keep the company in the black.

      What, cynical? Moi?

      --
      Everything in moderation, including moderation itself
    4. Re:Honesty and Forthrightness. by Grab · · Score: 1

      That's the reason you adopt the CYA approach unless you absolutely know the manager in question. If it's going to fail, email people to say it's going to fail, together with a large list of reasons and supporting evidence, and keep those emails. Even better, get co-workers to provide similar estimates, so he can't claim it's just you.

      If your estimates turn out to be right and your manager's turn out to be wrong, where's his defence? The answer then is to wave those emails at him and tell him you told him so (politely, unless he stops being polite of course). If that escalates it to disciplinary, fine - walk up the layers of management until you find a manager where the buck stops. And use your right to have another person in the room with you, if you think they might try to lean on you when you're on your own. And if there genuinely is no-one in the entire company with as much morals as God gave a weasel, then you're fucked anyway, so why are you there?

      On the plus side, you then have a 100% watertight case for constructive dismissal, so look on the bright side. ;-)

      Grab.

  24. What you do next ... by Anonymous Coward · · Score: 0

    Start looking for a job, since management will outsource you when you can't be squeezed any more.

  25. Easy fix, by Klowner · · Score: 1

    let's just say, dead people don't have expectations..

    (dramatic) *DUN DUN Dunnnnnnnnnnnnn*

  26. I'm not happy! by gov_coder · · Score: 1

    Nuttles1, I told you I needed those TPS reports by last friday. You are so not getting a raise.

    Oh, and uhmm - I'm gonna need you to work a full day Saturday.

    Yeah... That would be great.

    --
    Rob Enderle's excellent new book: Everything I needed to know about Computer Science I learned in Marketing School
  27. atrocious management by mosel-saar-ruwer · · Score: 4, Interesting

    Surprise number 1: my manager took me into "the room" and told me never to give an estimate to the client without his approval.

    My manager took me to "the room" again. I tried to remain calm, waiting for the accolades, perhaps even a bonus? But, he pointed his finger in my face and said, "Don't you ever deliver more to the client than you say you will!". Stunned silence.

    This is just atrocious management.

    A good manager would have practiced [over and over again] the interaction before he ever let you meet the client face to face.

    For example, he would have stressed things like

    RULE #1: We never promise a deadline to a client unless we first clear it with accounting.
    REASON FOR RULE #1: Time is money, and if we haven't generated enough billable hours this month, then we're gonna need to generate more [not fewer] billable hours. Welcome to the real world, kiddo.

    RULE #2: We never give away free code unless we first clear it with accounting.
    REASON FOR RULE #2: Code is money, and if we haven't sold enough code this month, then we're gonna hafta sell more [not less] code. Welcome to the real world, kiddo.

    And then he would have gone through practice conversations in which he pretended to be the client, and he coached you as to what to say and what not to say, and how to hem and haw your way out of making any firm commitment [until the "correct" answer could be cleared by accounting].

    Your manager not practicing a client site visit like that with you beforehand, and then admonishing you afterwords, would be like a football coach not teaching his playbook to his players during practice [or never even showing them the playbook in the first place], and then yelling at them after the game because they were clueless on the field.

    1. Re:atrocious management by Anonymous Coward · · Score: 0

      Time is money, and if we haven't generated enough billable hours this month, then we're gonna need to generate more [not fewer] billable hours. Welcome to the real world, kiddo.

      Are you saying that it's okay to purposefully take longer on a project so that a customer will have to pay more for it? It's one thing to say that giving a deadline to a customer is a bad idea because you can't assume that the company will only have you work on his project for the next few months. However, if a manager wants you to purposefully attempt to "drag out" a project just to make the customer pay for more hours, I kind of feel like that's crossing a line.

      If the customer is paying you on a per-hour basis, rather than a per-project basis, and you set out to trick him into paying you for hours you didn't spend working on his project, then I see that as fraud. But maybe I'm misinterpreting what you're saying (I hope I am).

  28. Wow by kallisti777 · · Score: 1

    This is the first good "Ask Slashdot" I've seen in a long time.

    I wish I had an answer to give you. Since your immediate supervisor is a programmer, just try to level with him and keep pleasing his superiors. Hopefully he'll remember having to cut corners and crash a project... if not, maybe he was kicked upstairs because he couldn't meet his deadlines....

    --
    Vanya's Law: "In any culture without irony, fart jokes will be the highest form of humor."
  29. Supervisors? by Centurix · · Score: 1

    You do what your immediate supervisor or line manager wants you to do. If upper management don't like what you're doing then they have to deal with your supervisor to fix it, not you. To a certain degree your supervisor is there to help communication across the heirarchy of a company, if the upper management take the issue up with you directly then your supervisor isn't doing their job properly. You shouldn't be worried about what upper management think, your thoughts shouldn't even consider anything past your supervisor. If upper management approach you with their ideas then you should be responding "I'll discuss it with [insert supervisors name here]" because you should be respecting your supervisors position within the company.

    That said, unfortunately most upper management people are psychopaths, especially in smaller companies. So unless you want your tires slashed by the CIO you'd better start counting your lines of code...

    --
    Task Mangler
  30. Always postpone meetings with time wasting morons by mario+contestabile · · Score: 2, Funny

    In moments like these, I recall a certain Dilbert strip, where pointy hair boss tells Dilbert:

    PHB- This project is impossible and can't be done.
    D- It's finished.

    PHB- The project will never work like this.
    D- It works perfectly.

    PHB- There's a spelling mistake here.
    D- That's a number...

    --
    http://superconfigure-supergroove.appspot.com/
  31. do what your supervisor tells you by Anonymous Coward · · Score: 2, Informative

    Well, I was going to post an angry missive about how the IT industry is going down the toilet, and "correctness" is going out the window, but it looks your boss is spot on: strive for correctness *first*. Make sure you have unit tests striving for 100% coverage. Make sure the database has full constraints. Make sure you have actually studied the relational model if you're in charge of it. Make sure your code is clear and simple and well-thought-out. If you had to write code in a hurry, THROW IT AWAY and write it anew (maybe test-driven this time).

    And the other piece of advice is: always do what your immediate boss wants, let him report to HIS boss.

    Looks like your solution is easy. Just do what the super says. And if he starts saying that correctness isn't important, but "shipping" or "features" are, find a new job. Don't pollute the IT industry with more insecure, crash-prone garbage.

  32. Easy by hahiss · · Score: 0, Troll


    KEEP YOUR CLOTHES ON.

    (Please, for the love of god.)

    --
    "Every decent man is ashamed of the government he lives under." - H.L. Mencken
  33. You answer it yourself... by Danious · · Score: 1

    "For instance, I have a programming supervisor that stresses correctness in programming first, amount of time needed second, features third, but I also have upper management stressing features and amount of time needed first and correctness of programming a distant second."

    Simple, do as your immediate supervisor tells you to do. It's his job to worry about what the upper management says, to worry about the deadlines, to worry about budgets, to protect you from upper management interference and stupidity.

    You should only worry about what upper management is saying if your supervisor is unfair, incompetant, or you want to steal his job.

    John.

  34. Someone should be helping... by Tom7 · · Score: 1

    I would say that your direct superior has the responsibility to make the case to upper management that code quality matters (I would agree with his priorities, in fact!). This is, after all, the supposed point of a management hierarchy.

  35. A Kent Beck quote by Beek · · Score: 3, Insightful
    From Extreme Programming Explained:
    If you have six weeks to get a project done, the only thing you control is your own behavior. Will you get six weeks' worth of work done or less? You can't control others' expectations. You can tell them what you know about the project so their expectations have a chance of matching reality. My terror of deadlines vanished when I learned this lesson. It's not my job to manage someone else's expectations. It's their job to manage their own expectations. It's my job to do my best and to communicate clearly.
  36. Where's the product manager? by skybrian · · Score: 3, Insightful

    Slashdot is really the wrong place for this sort of discussion, but here goes: It sounds like you're working on a product that doesn't have a product manager. The way it's supposed to work is that the product manager decides what goes into the product and coordinates with the developers to come up with a realistic schedule. Anyone who has a request should be talking to the product manager to get it into the schedule.

  37. Perfect interview question by kbielefe · · Score: 3, Interesting
    It can't really help you now, but this is the perfect question to ask the next time you are changing jobs. You know the part where they ask, "Do you have any questions?" They actually mean it.

    Seriously, I am a lowly technical lead of a team that usually consists of just me but grows to 3 or 4 people for a few months during "crunch" times. My management is required by our documented process to ask me how much effort something will take before it is approved. If the deadline cannot be met, they add staff well in advance or slip the change to a later build.

    --
    This space intentionally left blank.
  38. Exactly by JavaRob · · Score: 2, Interesting

    A good way to deal with conflicting bosses is to make them agree.

    There's a very important point in here. Your bosses are not constants, they're variables (well, that's one way to put it). If they're fighting each other through you, you need to get out of the friggin' way, or end up as collateral damage.

    If your direct boss tells you to do X, and his boss tells you to do Y, right away you should point him to your direct boss. "I'll let you two sort this out and get back to me." Neither one is necessarily "right" or "wrong", in that different customers expect different things and will react differently to on-time crappy software vs. late excellent software... and there's sometimes a trade-off in writing lovely reusable code that's good in the long-term vs. hasty NON-reuseable code that gets the project out the door and money in the bank short-term.

    There's also the trouble that some programmers who are told to "design for re-use" will bog the project down into eternity with bloated "handle-every-possible-case" code, while others will simply spend a little more time thinking and come up with an elegant solution that's *smaller* than the one-time-only hack job, and reap the benefits in the very next project. And alas, the average programmer without strict oversight falls mostly into the former camp. So it's no simple answer.

    But these are business decisions that your boss and his boss need to sort out. You should just indicate that you understand that these issues exist, and suggest (in a friendly way) that they do their jobs.

  39. Another blurb from another pro business app dev by RingDev · · Score: 2, Interesting

    Number one montra in business application development. "I'm doing this for the user"

    Remember that. The user (customer/client/employee) defines the features they need. These features form the basics of the requirements document.

    Your tech lead/analysist/coordinator is going to ask you for time estimates. Business sciences says the way to find this number is to find the Optimal time(a), the most likely time(b), and the worst case time(c) and apply the following formula:

    Expected time = (a + 4b + c)/6

    If I think I could get a roughed out edition together in 8 hours, I would use a=8, b=16, c=58 for an expected time of 22 hours. You to can sit through hours of business science and learn this too, or just use the old addage of "triple it!" and quote 24 hours ;)

    So, you kick that number back to the coordinator. The coordinator looks at other projects on your plate and priorities and sends a time estimate back to the manager.

    That should take care of the deadlines and feature set. You have a rec document, and a schedule. Next up was code style. Most current business office application development is going to be in a RAD environment. VB and .Net are likely the most widely used and have a collection of the greatest tools (sorry Java guys, eclipse just doesn't hold a candle to Visual Studio). One of the greatest things about developing in .Net is that we (finally!) get true object inheritance. And while people smile and nod and say isn't it great with out knowing why, I can tell you, I can't imagine coding with out it. One of the few things I really agree with Joel Spolanski [sp?] about is code up front. It takes longer to build a completely abstract data layer and impliment a standardized data object (using inheritance and abstract factory classes), but the advantage of having a DLL that can be inserted into any project and give you immediate dev time access to database metadata is immense. Having a series of base classes to handle the user interface, threading, data access, business logic, etc will save significant time in the long run.

    Our apps now our no longer even apps. We run a portal like interface, and when we receive new user requests they get developed as modules that are simply plugged into the existing system. Here are some out dated, but still handy looks at the type of design we use.

    http://ringdev.com/code/GFCTeirDesign.gif
    http://ringdev.com/code/GFCNamespace.gif

    Once you have a code base. Developing new apps is significantly easier, faster, and the code you produce is more stable. So your tech lead is right, code correctness is very important.

    And finally, don't be afraid to say no. I have 3 tiers of projects. Immediate, Down the road, and Ignore. If my coordinater drops something on my desk with a very low priority and a very large work load, I usually tell him I'll take care of it right after I clean my desk. Which usually implies that anything on my desk gets round filed. It is your manager and coordinater's job to take care of scheduling. If they are putting to much on your plate, sit them down, prioritize, and give back.

    -Rick

    --
    "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
  40. How do programmers handle this situation? by Crimsane · · Score: 3, Funny

    We drink.

  41. Three Words by escher · · Score: 1

    I was a professional developer for seven years, and I've got three words for you:

    Get Out Now.

  42. Re:Wrong Question Your purpose is to make you happ by Trepalium · · Score: 1
    You also should learn to manage your manager Constantly trying to please your manager by doing everything that is asked of you won't get you as far as you might think. Even if you think your manager is a complete idiot, learning how to manage him will make your job more enjoyable and your life easier. It might even make you visibly more productive to him or her.

    If you have a single manager that you must answer to, talk to him or her, and ask them what to do about this situation. Asking on Slashdot is unlikely to get you the help you need. Your immediate manager might be able to intervene on your behalf, and insist the other managers go through the proper channels. If you have multiple managers, or your immediate manager can't help, the organization is probably dysfunctional anyway and your career will be limited by this dysfunction if you like it or not.

    You have a choice, you can please some of the people, all the time, or you can please all of the people, some of the time. But you'll never please all of the people, all of the time, and trying to do so will only cause you problems.

    --
    I used up all my sick days, so I'm calling in dead.
  43. Re: Going the extra mile by some+guy+I+know · · Score: 3, Interesting

    After reading all of the sibling posts stating that you shouldn't have done anything extra, and that your manager was right to criticize you for making its customer happy, all that I can say is that if that type of thing is a preferred standard American business practice, then it's no wonder that our country is going down the toilet.

    --
    Those who sacrifice security to condemn liberty deserve to repeat history or something. - Benjamin Santayana
  44. My wife saw it instantly by ancientt · · Score: 5, Insightful

    I explained the problems you're facing to my wife.

    She said "How long has he worked for Microsoft?"

    After giving it some thought, she suggests "get some balls and ask your boss exactly 'what do you want?' so that you can cover your ass, preferably by email and when the higher smucks express displeasure, hit the print button."

    She goes so far to say you should include the higher smucks in that discussion of how it should be done. Carbon copy them in the email if you're emailing.

    Disclaimer: I am posting her suggestion because she has been in this type of situation and came out well. Personally, I see a danger of tanking evaluations and having to keep an eye out for the next job.

    --
    B) Eliminate all the stupid users. This is frowned upon by society.
    1. Re:My wife saw it instantly by qwijibo · · Score: 1

      It depends on how much you're willing to look for a new job. I got to the point where I was looking for a new job anyway, so there was little risk in taking a more confrontational position. I ended up with my boss wanting to fire me, but his boss not letting him. I doubt many people get fired for doing what's important to their boss's boss.

    2. Re:My wife saw it instantly by nine-times · · Score: 1
      Carbon copy them in the email if you're emailing.

      Oh yeah, that little "CC" button. It might as well be labeled "CYA". The trick is, don't do anything too ballsy. When your boss sends you a message criticizing the CEO, don't CC the CEO in your response. Nothing like that. It makes you look bad too, because it's obvious you're playing games.

      Instead, send out a generic message like, "What are my priorities? Speed, quality, or features?" CC a bunch of people, including peers and your bosses boss. Make it sound like you're just genuinely concerned that you're setting your priorities properly. Wait for the responses.

      If your boss and your bosses boss both respond only to you (meaning they haven't seen each other's message), giving conflicting answers, reply again to both of them, perhaps the whole group, asking for clarification. "Dan said speed, but Bill said quality. Which should I follow?" Pretend to be genuinely confused. Play dumb. Let them fight it out amongst themselves.

  45. Time is top priority by mwvdlee · · Score: 1

    Given you indicate your deadlines are inflexible; time is a constant and can only be considered top priority. I wouldn't even call it a priority, but a requirement, as it is something which cannot be compromised on.

    This leaves only the features/quality priorities to be listed; let your managers battle it out together. I dare bet that "features" will be top priority, since that's what customers pay for.

    In my job we have such priorities too; listing quality first, features second and time third. When it all comes down to it, products will be released without quality if it means more features, and without features if it means reaching a deadline.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  46. DO NOT TRY TO PLEASE EVERYBODY! by Anonymous Coward · · Score: 1, Insightful

    In my last job, I was in a situation where I had two bosses. Boss A wanted me to to do my job using method X. Boss B wanted me to do my job using mathod Y. I liked and respected both bosses and could see the benefits of either method A or B to complete my task. When bosses A and B were in the same room, violent firestorms of loud cursing and office furniture throwing ensued. I completed my assignment using method C, an ugly amalgam of methods A and B because I wanted to please both bosses.

    I've been unemployed since then. Pick one boss and please him or her.

    1. Re:DO NOT TRY TO PLEASE EVERYBODY! by Anonymous Coward · · Score: 0

      violent firestorms of loud cursing and office furniture throwing ensued

      Were there vows to "fucking kill Google" as well?

  47. Re: Going the extra mile by mooingyak · · Score: 1

    My major objection to the GP post was that he gave an estimate on the spot. That is something all of my guys are schooled NOT to do on the occaisions they do talk to clients. There are several reasons for it, among them are:

            Any non-trivial project needs to be reviewed to make sure that nothing was missed.
            I run their schedule. It's nice that you can get this done in 2 weeks, but we already promised client Z that we'd have this other thing done by the end of the year and it's probably going to take you the next 2 months to do it. I'm going to have to assign this to what's-his-face instead and I know he can't get it done in less than a month.

    There are also problems with providing extra features. The QA time has to be scheduled too, and they've only been given enough time to test the features you were supposed to write. They don't have time to work on the extra piece you added. Oh and by the way, we hadn't implemented that yet because the only approach that wasn't a maintenance nightmare was outside the amount the client was willing to pay for. Thanks for including it in a difficult to maintain way, now I need to budget for extra staff to support this that I hadn't planned on needing.

    Tell your management what your estimates are. Tell your management what extra features you think you could put in. Let them decide what goes where. They're looking at a different picture than you are.

    --
    William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
  48. Knowledge of the Ages by bokmann · · Score: 1

    Ah young Grasshopper,

        You have now reached a maturity level in your career where you will be able to read books like 'The Mythical Man Month' and understand them. With that book, you will first be shocked by the fact that someone has written so clearly on these issues, and then you will be shocked to find out he wrote it most likely before you were born.

    Read the following books, in the following order:

    The Mythical Man Month
    The Rise and Fall of the American Programmer
    The Pragmatic Programmer
    After the Gold Rush

    After the Gold rush is out of print with a second edition coming out soon... a while back some of the chapters from the new edition was available from the Author's website. In any case, pick up a used copy if necessary - it will be worth it.

    1. Re:Knowledge of the Ages by Anonymous Coward · · Score: 0

      Maybe you mean "Decline and Fall of the American Programmer" by Edward Yourdon.

    2. Re:Knowledge of the Ages by psykocrime · · Score: 1
      --
      // TODO: Insert Cool Sig
  49. Managers or man anger.. by tshuma · · Score: 1

    The problem is, managers should reads books, and studinig this situations, the job of them to solve it and not yours..
    There are many books around it, but I believe, you should give books into your boss's hands, and wait for his reaction, if any..
    Like one of the best for it about how things going on nasa software teams.. why could they write the Level5 code, with 99% of bugfree code.. and timelines, whatever.. and mostly how to manage the employee to do good job..

    Check out:
    They Write the Right Stuff (goolge)
    (http://www.fastcompany.com/online/06/writestuff.h tml)

    If your boss do not care about it, why would you? Just leave him in peace.. And now you know, what sould you first check about a new boss ;)

    --
    There is only one good solution: The simpliest!
  50. Educate your manager... by JazzManDRP · · Score: 5, Insightful

    Talk to your line manager. In a private meeting, explain the compromises you're having to make in your work. Explain that the code you're being forced to release is unmaintainable, is prone to be bugged or poorly-structured because of the time constraints being forced.

    Explain a compromise where you get some of the time you want in return for some of the code quality you want. You'll never get all the time you want but, if you can convince your boss that it's going to be of overall benefit, you might get enough.

    Most importantly, if the shit hits the fan and your product comes back to you, make sure you're absolutely realistic with management about why this has happened. Yes, the code was sub-quality. Yes, the design was insufficient. Yes, it's management's fault on both counts for not allowing enough time for the proper running of the project.

    One of the main problems is that a typical lifecycle (specification, design, implementation, testing) makes no sense to management. Even a technical manager will try to rush the specification and design so they can have demonstrable progress - something to show the client, even if it's not been thought through. And, as soon as the product looks complete, they'll want to get it out where it makes money, regardless of how thoroughly it's been tested.

    Educating your superiors about the reality of these things is hard work. You might have managers that will - slowly - learn, in which case you may make some progress. Alternatively, look elsewhere: it's one of the most subtly self-destructive things, to be stuck in a job without being given the opportunity to do it well. Find somewhere that gives you that freedom.

  51. thank you by Anonymous Coward · · Score: 0

    You may have overstepped the line, but that wasn't your fault - your managers didn't manage to inform you of the rules.

    But what you did choose to do is something that you should be proud of - you choose to be as helpful as possible. It is a rare thing and good to see, and the fact that you got lambasted for it is utterly disgusting.

  52. Mediocrity by Anonymous Coward · · Score: 0

    The manager is right from the perspective of a largish company that acts like a largish company. A (successful) startup, or larger company that acts like a startup would never act like that. Overcharging customers is bad business, regardless of whatever industry euphamisims the parent's poster uses to describe it. Delivering a product that exceeds the customer's expectations is good business; in many cases, it's a good way to end up with more business that you can handle.

  53. Two Words by Anonymous Coward · · Score: 0

    New Job

  54. Not working in the commercial world? by Anonymous+Brave+Guy · · Score: 1
    Good design and code re-use are there to save time, not to waste it. Take the time doing things right, and it will save you time in the long run.
    You must not work in the commercial world.

    On the contrary. IME, people/organisations that truly understand the value of good design and best practices are usually very successful in the commercial world. This is precisely because if you take a longer-term view and keep your house in order, even taking a small hit in the short term to do it, then in the long term you will be vastly more productive and your products will be much higher quality. This is why they're "best practices".

    It's the people who pretend (or honestly but wrongly believe) that they are following good practices because they read something in a book somewhere who usually cause the problems in the commercial world. They take the short term hit -- and usually it's a bigger hit than it needs to be -- yet fail to realise the longer term gains that should result. This is why not everything that comes with a chunky procedures manual is a best practice; indeed, IME most best practices are remarkably simple things.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  55. simple by Anonymous Coward · · Score: 0

    accept the little fact that you cannot. it'll help you mature a bit.

  56. Re: Going the extra mile by yagu · · Score: 3, Interesting

    For the record (and I haven't responded to the others, but finally, I need to respond to at least one)...:

    Ahem, for the record, at the session with the client my manager turned to me and asked me how long I thought it would take. That was when I gave my "estimate". When he chastised me later it was for offering such a short estimate, way too short in his opinion. (I know I didn't make that clear in my original post.) We discussed it, always in a civil manner, I stood by my opinion I could deliver in my estimated time frame but relented to his insistance I double the estimate for an official estimate for our client. I STILL finished in less time than my original estimate (including the fix of the other part of the code).

    As for that "other" fix... it wasn't something they had to test -- it was functionality they had long since abandoned as being something useful. It was a "dead zone" (3 lines per item) on the report they had learned to ignore because the data in that zone was incorrect and useless. The fix I applied took little time, and little effort, and did not put at risk the estimated delivery date (the DOUBLED estimate).

    We had an ongoing relationship with this client, essentially a locked in deal (their organization was part of the same umbrella corporation). Their list of needs and projects was virtually endless so it wasn't as if finishing this in half the time cut into our revenue stream.

    And the good will from this extra effort was returned in full. Our relationship with the client went from adversarial to collaborative. They LOVED the results they were seeing, and changed their attitude and demeanor with us. (They literally used to sit in meetings with scowls and arms crossed, distrusting every suggestion, estimate, etc. we proposed.)

    All in all, I was quite surprised at the beating I got for my post. Not so much that I got beat up, but that these attitudes are so pervasive. Maybe I didn't elaborate enough to give enough insight to my environment. But, I believed then, and I believe now the sum total of how we all do is a result of how hard we try to do good things, not how hard we try to maximize "controls".

    (example: a while back I drove to a tire service store well known for its service -- I'd never been there before. I had a low-speed wobbly steering wheel problem. I pulled into the lot, and they literally ran out to my car (an advertised "service philosophy" of theirs, but a surprise to see it as real) and asked me what they could do for me. I described my problem, they took my key and immediately put my car on a lift and did some quick diagnostics. After some tweaks and adjustments they returned my car and told me it should be better... and if there were any problems, to bring it back. No Charge! And, the steering wobble was gone!

    Less than a year later I needed new tires -- guess where I bought my new tires? The good will they brought more than offset the $50 I could've save at Costco... I'm a loyal customer.

  57. Scotty knows by Anonymous Coward · · Score: 0

    Whenever your bosses ask for something outlandish, tell them that it's either virtually impossible or will take you a really long time to do it, but that you'll start on it anyway. Then, when you finish in three days, they'll think you're a miracle worker ;)

  58. First, update your resume. by rfisher · · Score: 1

    This is simple. Go to your boss & explain that the someone is putting pressure on you to choose different priorities than he has set for you. Be specific about the people & the issues. Ask him what you should do.

    If he tells you to ignore the others, make it clear to him that you expect him to let the others know the priorities he has set for you & that any concerns should be addressed to him. (A good manager will have already told you that he's going straight to discuss them matter with the third party/parties.)

    Let anyone who tries to set different expectations for you know what expectations your direct supervisor has set for you. Tell them that, if they have a problem with that, they either need to talk to your direct supervisor or change whom you directly report to.

    If that doesn't make things better, let them know you aren't happy & start shopping for a new job.

  59. Or more likely... by oneiros27 · · Score: 1

    They'll think that you've been padding your estimates, and will start setting unrealistic time constraints (as the management in the original poster's question has been doing).

    When you're dealing with management like what is described, if you manage to finish it in 3 days, you don't want to be seen as a miracle worker, or they'll start dumping you on multiple time-critical projects, each with timelines that are unrealistic if you were dedicated to them full time.

    Do the good work, do a good job, but if you're dealing with idiot management, as was described, you'll want to make sure that you write some extra unit tests, and review the documentation a half dozen times for spelling errors, so you don't come in too far under your estimate.

    Oh ... and I'm speaking from experience. I had the same sort of situation as the original poster, and I asked for clarification as to whom I was supposed to be reporting to -- the answer I got back was 'any manager with an emergency'. I asked who defines what's an emergency, and asked if it was only (insert list of 38 managers in our division), or if it applied to the whole company.

    If you're in that type of situation, get the hell out as soon as you can -- it's not worth the stress. Sure, it's nice to sit back and relax while you're collecting unemployment for a 'use of sarcasm' incident (it's a long story), but it's easier if you never let it get that far.

    --
    Build it, and they will come^Hplain.
  60. Learn to Negotiate by Ridgelift · · Score: 1

    The problem is not a technical one but rather business. What's helped me more than anything was learning to negotiate. I'd recommend "Secrets of Power Negotiating" by Roger Dawson which you can probably get from your local Library (I prefer the audio cassette series).

  61. Your job isn't to make people happy by Darius+Jedburgh · · Score: 1

    You have to learn to accept that the people around you aren't going to all be happy no matter what you do. Life isn't a contrived puzzle with a well defined unique solution. Sometimes you just have to go with the best in the circumstances, and that is often far from some hypothetical ideal. If you can't deal with the idea that one of the people you deal with is going to be unhappy that you need to find a new job or develop a thicker skin.

  62. Re: Going the extra mile by topham · · Score: 1

    Your Manager was an ass.

    I've been lucky, most of the time I work with the customer directly, they have far more work than I can ever get done so things are simply prioritized and I do what's next on the list. I don't have to worry about a Manager demanding a different estimate from me than what I would say to the next person in the chain.

    But I have seen instances of exactly what you describe.

    As for customer expectations, here's my story:

    I was once asked to go to a meeting with a client, one for which I did very little work for, but the company I worked for had a major project on the go for them. I was involved in the back-end helping our developers get a handle on the project and deal with a few technical issues which came up. (This wasn't my job per-say, but something I helped with since it was interesting.) One issue was printing of forms with the Forms software they were using.

    So two of us went to the meeting with the customer, the customer included the IT Director as well as their 'Arts' department. The client insisted they wanted professional looking forms, and then showed mockups they wanted duplicated. (Which is exactly what one expects and hopes for...)

    The department which created the forms insisted they were easy to print, and that they could provide an EPS version of the forms without difficulty; and since the forms software we were going to use supported EPS images there wouldn't be any problem using it.

    They then asked why we refused to support this process, when the 'Arts' department insisted it would be EASY.

    I had to explain to their 'Arts' department that the Forms software didn't print the EPS file, it merely sent it to the printer as-is. The printer had to be capable of interpreting the EPS data, and that unless they would guarantee that all the printers, including the ones in the warehouse (for Bill of Lading, Invoice, Pick list, etc) could print Postscript directly that we needed a different method. (Postscript being a $700+ option on most Lasers at the time, it was often not included).

    I outlined a method (Ghostscript to the rescue) which would reduce the requirements for all the printers to the bare-minimum of PCL3, assured them that while the forms wouldn't look identical to what they gave us that they would be close, and still have final approval.

    Now, I don't consider any of the above a big deal.

    At the end of the meeting the IT Directory says thanks to everyone and then apologized to me, and the company I work for.

    He said he spent the last 15 minutes telling his staff how incompetent we were and incapable of handling this project and maybe they should cancel the whole thing and look elsewhere.

    When we left the Manager who came with me thanked me for saving the project.

    I honestly think the IT Directory was so used to dealing with consulting companies that were trying to rip him off and make things sound more difficult than they are he simply decided we were lying to them so we could jack up the number of hours, or the rates for parts of the project.

    And that comes from having managers act like what you described. Padding development time so they can look good, keep the expectations low (no additional features without begging for them), etc. Long term that breeds an adversarial attitude.

  63. Easy by smileyy · · Score: 1

    Abortions for some. Tiny American flags for others.

    --
    pooptruck
  64. You can't by umrk · · Score: 1

    You can't make everyone happy.

    Use hierarchy to your benefit: If upper people make decisions, they are responsible. Make a written document detailling why you cannot reach all three goals. Make THEM decide what to do. If something fails and they want to blame you, pull out your document.

    This is called "Cover Your Ass".

  65. Re: Going the extra mile by Crayon+Kid · · Score: 1

    I've been lucky, most of the time I work with the customer directly, they have far more work than I can ever get done so things are simply prioritized and I do what's next on the list. I don't have to worry about a Manager demanding a different estimate from me than what I would say to the next person in the chain.

    Ah, but usually it's not that simple, someone has to bridge the gap between engineers or techies, and management or marketing. After reading all these comments here, I'm starting to suspect those are the persons worth their weight in gold. The famous missing link of the IT world! :)

    --
    i ate crayons when i was a kid and now i have two braincells and the blue ones taste nicer
  66. no, it's question of sales tactics by mosel-saar-ruwer · · Score: 1

    Are you saying that it's okay to purposefully take longer on a project so that a customer will have to pay more for it? It's one thing to say that giving a deadline to a customer is a bad idea because you can't assume that the company will only have you work on his project for the next few months. However, if a manager wants you to purposefully attempt to "drag out" a project just to make the customer pay for more hours, I kind of feel like that's crossing a line. If the customer is paying you on a per-hour basis, rather than a per-project basis, and you set out to trick him into paying you for hours you didn't spend working on his project, then I see that as fraud. But maybe I'm misinterpreting what you're saying (I hope I am).

    No, it's a question of sales tactics. Suppose

    1) Accounting says you need to bill another 80 hours this month.

    2) The client asks for a new feature set on the product - where, say, a quick and dirty fix of embedding the required business logic as stored procedures in the DB would require 40 hours, whereas doing it properly, by placing the business logic where it ought be, in the Java/.NET/Python/Eiffel/Ada/Simula/Smalltalk/whate ver middleware layer, would be more difficult, but would make for a much more elegant solution which would get you to the 80 hours you need to make your quota.

    Now is it unethical to push the shinier, spiffier product on the client?

    Is it unethical for a car salesman to say, "Yeah, that Chevette is a nice little car, but come over here and get a load of this El Dorado Brougham"?

    Is it unethical to make sure that you're sufficiently profitable to pay the rent, and the heating bill, and the food bill, and the prescription drug bill, etc, etc, etc???

  67. Your manager's job... by Shimmer · · Score: 1

    Is to help you understand the real-world constraints you are operating under, and then protect you from being further bothered by senior management. It sounds like he is not doing either one.

    --
    The most rabid believers in American Exceptionalism are the exact same people whose policies are destroying it.
  68. Vodka by Anonymous Coward · · Score: 0

    To paraphrase Arnie in some film where he plays a russian cop:

    "Vodka!"

  69. No way by Shimmer · · Score: 1

    That's guaranteed to make Mr. Knows very angry with you, since you're making him look incompetent in front of Mr. Weed.

    What you actually do is talk to Mr. Knows in person and say, "Brown, there's a conflict between what you're telling me and what Dick is telling me. Please sort it out with him so that we can all be sucessful." You then follow up with Mr. Knows every day (or hour, if necessary) until he resolves the conflict.

    --
    The most rabid believers in American Exceptionalism are the exact same people whose policies are destroying it.
  70. reasonable estimates must be the way to go by justdev · · Score: 1

    - Have a good estimation template, guidelines for estimate, documentation to say how estimate is reached at. Explain the estimation procedure to management and get their approval. First cut of estimate can be based on previous experience and promise management that estimation figures will be improves by periodic analysis.
    - Insist on estimating all developments upfront (this will require clear requirements upfront). While giving estimates, list the assumptions and features considered. Put in a disclaimer that any change to above will require a change in estimate.
    - Implment a change tracker to show to management how many changes came in during development. Estimate the changes and appraise management periodically about changes. Insist on freezing requirement/design at a stage after which change will be more costly.
    - Create a schedule based on estimate and publish the progress. Let the management know as soon you encounter any critical issue which may derail the schedule.

    This kills agility of development and sometimes breeds lack of trust between users and IT. But putting it into a rigid framework of process reduces chances for others to blame you.

  71. No one can please everyone by peacefinder · · Score: 1

    You can't please everyone all the time. Simply can't be done. So, just give up on that notion right now... someone is going to be disappointed no matter how well you do or how hard you try. It sucks, but it's inevitable in the same way gravity is.

    With that out of the way, let me give you some practical suggestions. I'm not a programmer, but I used to be a production drafter for a manufacturing firm... same issues, different field.

    You describe an organizational hierarchy. This structure causes you problems when "upper management" tries to interfere, but it also should protect you somewhat from such interference. Part of your boss's job is to shield you from unnecessary interference from above. This is a difficult responsibility of his, and maybe an impossible one... you need to both let him know that you expect him to accomplish it (or at least try harder) and offer him whatever help you can.

    The best way to do this, IMHO, is to go to him and tell him about what you're seeing and hearing. Tell him that you're getting messages from certain specific members of upper management that conflict with the directions he has given you. Tell him that you'll be delighted to do whatever the company would like you to do, but you would very much appreciate the company making up its gorram mind about just what it wants from you. Ask him what he would like you to do about mixed messages from above.

    This approach lets him know that there is a problem, that you want to be a team player, that you want to follow his lead, and that you are expecting more from him than he is currently delivering. Delivery of this message needs to polite and focused on finding solutions.

    Your boss is a necessary ally. If nothing else, keep in mind that he writes your reviews. :-)

    --
    With reasonable men I will reason; with humane men I will plead; but to tyrants I will give no quarter. -- William Lloyd
  72. no no no you all have it wrong.... by Anonymous Coward · · Score: 0

    he needs to become a consultant.
    That way he can tell everyone..."no matter what you want I need you to make a decision. Meanwhile I'll be over in the cubical with the crappy chair and no lights collecting my $150 an hour....wahahahahahahahah"

  73. You missed one... by Anonymous Coward · · Score: 0

    6. Blow yourself up in a train full of people.

  74. Re: Going the extra mile by mooingyak · · Score: 1

    Ahem, for the record, at the session with the client my manager turned to me and asked me how long I thought it would take. That was when I gave my "estimate".

    That makes a very big difference. Your manager is an idiot, though you gave the impression the first time around that the estimate was unsolicited. I love when guys on my staff come up with ways to do things better or to fix problems we've been having. I hate it when they throw in things without talking to me first. I have a very different perspective on things than they do, and have my reasons for making my decisions.

    The company I work for survives only by the level of customer service that we provide, and the key to that more than anything else is communication. I don't want control for control's sake, I want control because the road to hell is paved with good intentions.

    --
    William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
  75. Re: Going the extra mile by yagu · · Score: 2, Interesting

    Hello mooingyak

    First, I need to (and wish I could somehow propogate this better) for the record emphasize and clarify my excellent relationship with my manager. We both gave as good as we got from each other and respected each other. He gladly and without prompting rewarded me for good work done well many times. But this was a case, as you pointed out, where his job was to make sure corporate procedure and policy prevailed. I still think he was harsh, and maybe even a little wrong on this one, but he was (and to this day is) a good guy and did try to do the right thing.

    To your other point, I agree, excellent point that it has got to drive a manager crazy when an employee sets off on his own, doing "extra" work. In this situation, (and I was considered a manager, technically, and expected to show appropriate behavior) the extra work needed to correct the "other" problem was less work and time than it would have taken to go through any process.... unilateral on my part, but NONE of my tasks or responsibilities were compromised... AND (I think I mentioned this in one of my posts) I ensured my deliverable was the deliverable they expected with the option of considering the other fix (which is why I forked the code... to allow for either choice, with no contamination to the original work).

    The final result was a much better relationship with the clients.

    Ultimately, your points are correct and well made. My disappointment was what at the time felt like excessive pedantry and strict policy adherence.

    Best Regards... yagu

  76. Oral sex by Anonymous Coward · · Score: 0

    A blowjob goes a long way.

  77. And the ever-present... by Anonymous Coward · · Score: 0

    7. Profit!

  78. Re: Going the extra mile by Anonymous Coward · · Score: 0

    I can say is that if that type of thing is a preferred standard American business practice, then it's no wonder that our country is going down the toilet.

    No shit. If yagu's boss won't go the extra mile for the customer, he can damned well bet that Sivaramachandrahoosis's boss in Mumbai will. Based on what yagu has posted, especially his clarification that his estimate was actually requested in front of the customer, I'd hire him/(her?) in a minute and trust him to lock up the office at night.

    That manager shouldn't be entrusted with anything more strategic than estimating how many drums of synthetic trans-fat compound the Fryolator will consume next month.

  79. Mmkay... by rakslice · · Score: 1

    Ooh! Some random terminology fresh from the blender... =)

    Time for a friendly game of pick-apart-the-post.

    > You're an engineer.

    Sorry to stop so soon, but you've inferred out of nowhere that this guy is an engineer, and since we're not talking about making toasters, a software engineer. So you should probably know that the distinguishing feature of software engineers is that they concentrate on delivering quality software on time and under budget that fulfills the customers needs (i.e. the responsibilities of a software engineer) first, and the other interests of their employer second. Was that what you meant?

    > You don't deal with customers on anything other than the purely technical level.

    The usual view is that technical decisions on a project are the responsibility of the development team. So, other than finding out if the customer has any technical requirements (because of technologies the customer is already using), developers don't talk to customers about technical issues. They talk to them about functionality (i.e. non-technical requirements). That's the opposite of what you're saying.

    > What you were doing --- making estimates, adding functionality --- was making business decisions.

    That sentence makes so little sense I'm not even sure whose "business decisions" you're talking about. Making estimates doesn't involve decisions, it involves using the available information to make an educated guess how long something will take. And adding functionality involves making technical decisions, but not business ones.

    Obviously adding functionality is what the programmers were hired for in the first place. And programmers should be in a position to make estimates about how long tasks will take them (as it is usually their responsibility). Nothing out of line there.

    >You got away with it this time but you were running the risk of seriously screwing up any business relationships your company was participating in.

    Do you just mean that the company isn't making as much off a customer during a particular project as it could be?

    Delivering the customer minimal services at maximum prices is the key to many things, but a sustainable customer relationship is not one of them: The company keep having to abandon its customers when they a) catch on and demand lower prices or b) go bankrupt due to their own stupidity.

    >For example, in the business with the estimate, what would have happened had the customer insisted on going by your estimate and not your manager's (doubled) estimate? At a stroke you would have halved the company's billable hours. Not good.

    On the other hand, if the double estimate was too high, and the company had started by giving the customer that? The customer would have said "no thanks", and gone somewhere else. And then, the company doesn't get to bill for any hours, fraudulent or otherwise.

    Basically, the way that manager is operating, they better hope that there are so many patsies that competition will never be an issue.

    >The only way they could have gotten out of that is by telling the customer that you'd spoken out of turn, which would probably have led to you being told to find another job.

    In which case, good riddance, and the guy would have a great contact to take to his new job.

    >First rule of dealing with customers: find out exactly what your responsibility is, and don't overstep it. If the customer asks about a new feature, say, "That sounds feasible, but of course I'll have to run it by X first," where X is your business contact. Or even better, say, "You'll have to talk to X about that, I'm afraid." This is the kind of thing management is for; use it...

    With that approach, the business contact always has to make the decision, even when they don't have the information to make it properly.

  80. Re: Going the extra mile by mooingyak · · Score: 1

    I'm glad you recognized that my points were mostly generic and not necessarily specific to your case. At this stage I just want to know how come you keep getting modded up and I don't :)

    Also good to know that your manager is not a total moron, just a guy who probably made a bad call once. I know I've made some less than brilliant moves on occaision.

    --
    William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
  81. Re: Going the extra mile by Anonymous Coward · · Score: 0

    Yes, doing our jobs and letting the managers do theirs is certainly causing our country to go down the toilet.

    Idiot.

  82. Programmer Zen by http101 · · Score: 1

    It is not the programmer who must make others happy, it is he who must find happiness within others for without their happiness, he will not know himself.

    --
    -- Game Developers: Stop porting badly-textured games from crappy console systems!
  83. You don't belong in a consulting firm by tyates · · Score: 1

    When you're in a consulting firm you have to serve two masters. Sometimes it can really suck, especially if you're the type of person who is client focused. My advice is to become either an employee of their IT department, or better yet, an independent consultant and work directly for the clients you want to work with. Don't let any manager get in your way, you talk to and work directly with the end business client. The client, if high enough in the organization (VP, etc) will protect you even if a dumb manager does try to get in between you and the client. By the way, keep that client's phone number, and the next time you need a job, or want to start contracting on your own, give them a call. The IT industry needs more people like you; you obviously build trust. I think you can see everyone else's "duck and cover" attitude, and extrapolate as to why the industry is in trouble.

    --
    Tristan Yates
  84. The market rewards short-term success by presidenteloco · · Score: 1

    The problem of software quality for commercial software boils down to this.
    In a market where some schmuck (developer or more likely, executive) is always willing to do
    an undocumented spaghetti, one-off solution, for less and quicker, and where most customers
    don't know the difference, good internal-quality, maintainable, extensible software is too
    expensive to build and sell.

    The customer will lose in the long run, when they find that the software is not upgradeable
    or maintainable. If the software vendor is trying to make a living off releasing upgraded
    versions of their product, they'll lose out too, eventually, but the manager of the original
    project will not be blamed. They will be the CEO by that time, rewarded for the short-term
    profits they produced by whipping the developers in the original project.

    The trouble is, EVERYONE, in the commercial market, heavily discounts the future. Nobody
    minds creating a long-term problem if doing so will "apparently" solve a short term problem.

    What this all leads to is a market where the market CANNOT AFFORD the prroduction of
    quality software. Developers of good instincts, skills and conscience (who are loathe to create
    bad, unmaintainable, special-case code) are pretty much guaranteed to suffer in this
    environment.

    It would be nice to believe that there are some software companies that are led by
    long-term-thinking management with a true technical clue. Management truly interested
    in developing software capital; software of such quality and simple elegance that its intrinsic
    value (and eventually, its market value) grows geometrically as it builds on itself, rather than
    declining as it builds cancers onto itself, as is usually the case.

    Does anyone have a tale of such a holy grail of a software company?

    --

    Where are we going and why are we in a handbasket?