Slashdot Mirror


Ask Slashdot: How To Handle a Colleague's Sloppy Work?

An anonymous reader writes "I'm working on a new product with one of the more senior guys at our company. To be blunt: his work is sloppy. It works and gets the job done, but it's far from elegant and there are numerous little (some might say trivial) mistakes everywhere. Diagrams that should be spread over five or six pages are crammed onto one, naming is totally inconsistent, arrows point the wrong way (without affecting functionality) and so forth. Much of this is because he is so busy and just wants to get everything out the door. What is the best way to handle this? I spent a lot of time refactoring some of it, but as soon as he makes any changes it needs doing again, and I have my own work to be getting on with. I submit bug reports and feature requests, but they are ignored. I don't want to create bad feelings, as I have to work with him. Am I obsessing over small stuff, or is this kind of internal quality worth worrying about?"

332 comments

  1. Whining. by Anonymous Coward · · Score: 4, Funny

    Passive-aggressive complaints in a public forum looks like a good choice.

    1. Re:Whining. by icebike · · Score: 1

      Passive-aggressive complaints in a public forum looks like a good choice.

      That more likely to bring fresh ideas than reply using the phrase "Passive-aggressive".
      Seriously, every time I hear that phrase I want to grab the speaker by the wattles and slap them till they spit.

      (And yes, this post is self referential.)

      --
      Sig Battery depleted. Reverting to safe mode.
    2. Re:Whining. by cayenne8 · · Score: 5, Insightful
      Just do as much as it takes to get the job done successfully, and move on to the next thing.

      VERY few people have the luxury of the time to spend to tweak and get everything perfect and "just so".

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    3. Re:Whining. by Anonymous Coward · · Score: 0

      Enjoy the waffles?

    4. Re:Whining. by Anonymous Coward · · Score: 1

      A better choice:
      - move his desk outside to a nice, sunny spot near (but not underneath) a tree.
      - point a camera at his new, desirable location.
      - upload the coordinates to a shark, in space, equipped with a laser.
      - wait until you hear all the birds scramble out of the tree at once.
      - post the video on YouTube as a "21 Bird Salute" to a former colleague.

    5. Re:Whining. by stephanruby · · Score: 2

      I submit bug reports and feature requests, but they are ignored.

      Hopefully he's also talking to him face-to-face, because using the issue tracker for filing a "his diagram is too big to fit on one page" would seem like overdoing it.

    6. Re:Whining. by Anonymous Coward · · Score: 0

      That more likely to bring fresh ideas than reply using the phrase "Passive-aggressive".
      Seriously, every time I hear that phrase I want to grab the speaker by the wattles and slap them till they spit.

      Have you grabbed the speaker by the wattles and slap them till they spit? Until then you are just being passive-aggressive.

    7. Re:Whining. by icebike · · Score: 1

      That more likely to bring fresh ideas than reply using the phrase "Passive-aggressive".
      Seriously, every time I hear that phrase I want to grab the speaker by the wattles and slap them till they spit.

      Have you grabbed the speaker by the wattles and slap them till they spit? Until then you are just being passive-aggressive.

      Apparently you missed my last sentence.

      --
      Sig Battery depleted. Reverting to safe mode.
    8. Re:Whining. by Nethead · · Score: 4, Insightful

      Exactly. If you want to be that anal about the product you should look for a job in aerospace. You'll fit right in.

      --
      -- I have a private email server in my basement.
    9. Re:Whining. by eth1 · · Score: 3, Insightful

      Just do as much as it takes to get the job done successfully, and move on to the next thing.

      VERY few people have the luxury of the time to spend to tweak and get everything perfect and "just so".

      I'm like the OP in that most of what I turn out is correct and consistent in all details. It doesn't take me any longer than the people that turn out "it works, but it's not pretty (especially if it has to be modified later)," and takes less time later since it's understandable and maintainable.

      Cleaning up crappy work, however, takes way longer than doing it neatly or sloppily the first time through.

      I find that the cause of this is usually people that don't bother to think any farther ahead than just finishing the job at hand, while I think about what's going to happen in 6 months when this needs to be changed.

      Everything we do has to be peer-reviewed, so the way I deal with it is to simply not approve anything that doesn't meet my standards, and help the person to understand why. Usually, if the person in question has half a brain, they'll catch on eventually.

    10. Re:Whining. by tutufan · · Score: 4, Insightful

      For many of us, doing things right in the first place is actually faster.

    11. Re:Whining. by Zero__Kelvin · · Score: 2

      Do they have time to read the summary on Slashdot? What he describes is far from what you are saying. What he describes is phenomenally sloppy work, and what you offer as a solution is anything but.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    12. Re:Whining. by Anonymous Coward · · Score: 0

      I'm getting a kick out of these comments as I work in aerospace and I have the exact same problem.

      In a building of ~50 engineers, only 2 of use are actual software engineers. All the EE's that wrote in assembly and labview have retired. So now it's the two of us and the occasional contractor's slop we have to clean up. I've recently discovered that the senior guy can't actually code for shit. He can update a requirements document and preaches a lot about software process, but when he was actually assigned to make a (gasp) new project, he threw away all the process, and hacked out the minimal effort to get the boss off his back.

    13. Re:Whining. by Anonymous Coward · · Score: 0

      Thanks, finally I know where to look!

    14. Re:Whining. by Anonymous Coward · · Score: 0

      Problems come up when you work with pussies who will argue that "you insulted me on a personal level and therefore I have the right to be mad about you and disregard everything". Add the new-age pussy managers to the mix and you better shut up and fuck and drink a beer then and now. Or go to the local redlight quarters and relax.

    15. Re:Whining. by Darinbob · · Score: 2

      You see this attitude from people fresh out of school, or maybe fresh from some company that has a huge budget for time wasting. They are baffled that the real world doesn't work as smoothly and orderly as all they imagine from the textbooks, they're confused that the extensive set of processes that they used to have aren't in place at the new company, and so forth.

    16. Re:Whining. by jahudabudy · · Score: 1

      This. In school, it was my job to understand and learn as much as possible. It took me a while to realize that learning and understanding are nice in my job, but I'm getting paid to produce solutions. It's somewhat surprising how often I find I can produce a solution without the sort of thorough knowledge of the problem space I pursued in school.

      --
      ...sometimes, in order to hurt someone very badly, you have to tell that person terrible lies. - PA
    17. Re:Whining. by wisty · · Score: 1

      Threatening violence isn't passive aggressive. Passive aggression was invented by the military, to refer to underhanded insubordination. "Sorry sir, I was pinned down, so I couldn't get myself shot in battle. Maybe next time."

      It's a perfectly rational response to an idiot in command (or, an idiot who thinks they are in command).

      Saying you *want* to slap someone is outright aggressive. Saying you want to slap someone who's not here could be passive aggressive (if it's directed against a superior, or someone who'd hit you back). More likely, it's just tall talk.

    18. Re:Whining. by HideyoshiJP · · Score: 1

      I know, right? Let's also not bother developing a working relationship to a point where you can actually feel comfortable talking to the guy about it.

    19. Re:Whining. by Anonymous Coward · · Score: 0

      or Pharma research.

    20. Re:Whining. by marky_boi · · Score: 1

      In my company you would be out on your butt so fast your head would spin.
      We demand, clean code correct code and correct documentation.
      We also peer review the work and have the right to reject, which I do regularly Most of my colleagues correct their mistakes and admit to a brain fart day. poor performing colleagues strangely become redundant................

    21. Re:Whining. by Anonymous Coward · · Score: 0

      But if you take the time to do it right the first time,
      you don't get to deal with all the righteously angry users and bug reports.
      Not to mention cheating yourself out of riding the clock
      for the eventual refactoring, assuming there are enough users left to warrant it

    22. Re:Whining. by Darinbob · · Score: 1

      Where did I say I was poorly peforming? But reality intrudes and you learn that idealism is a luxury when the bosses demand it ship by Friday. Especially with existing code it is unrealistic to go ahead and spend several weeks rewriting it to match the organization's stated standards, instead you change this incrementally when you get a chance. It'd be great to be in an environment where everything is done as you describe.

    23. Re:Whining. by Anonymous Coward · · Score: 0

      Used to. Back in the 60's through the 70's, I found the camaraderie and mindset of Aerospace right down my line, as I am one of those "gotta have it perfect" types. You know the type, the 4.0 GPA student in engineering, computer science, and math.

      During the 80's, the soviet threat evaporated and we no longer were needed for stuff that actually worked. We became a retiring place for former high-level government mucky-mucks to have a "good job" with a government contractor. It became hell to try to work there and actually do something. It was great if you were a management type though, as during all the downsizings, they were in line for all sorts of ass-kissing from those who would sign anything, do anything, to keep their job.

      I speak from personal experience. It would take a lot for me to consider aerospace employment again.

    24. Re:Whining. by marky_boi · · Score: 1

      I meant poor performing against the standards set within my company...

    25. Re:Whining. by Anonymous Coward · · Score: 0

      Once you understand what "right" means in this context, you'll understand how hard it is to do, and you'll realize that you've always been making shortcuts out of ignorance that you now have to make just to be productive.

    26. Re:Whining. by Anonymous Coward · · Score: 0

      The point is it's the passive-agressive people that complain about the term passive-agressive. They so hate to be called on it.

      Saying "I'm being self-referential" in a pseudo-deprecating manner doesn't fix that.

    27. Re:Whining. by Anonymous Coward · · Score: 0

      For many of us, doing things right in the first place is actually faster.

      For some values of "right", maybe.

      I have seen enough examples where "right" means using the "right" combinations of tools, libraries, languages, buzzwords, but without care of whether the thing actually works. Yeah, doing things "right" in these cases are actually faster... faster for the project to closed down and the team disbanded.

    28. Re:Whining. by Anonymous Coward · · Score: 0

      I made the mistake of not reporting an inept, troublesome, bully of a co-worker and eventually suffered from a mental breakdown. REPORT THE INEPT, SLOPPY PITA IMMEDIATELY. In the worst case you'll be asked the leave.

    29. Re:Whining. by EuclideanSilence · · Score: 1

      +1 insightful, who modded this troll?

    30. Re:Whining. by Anonymous Coward · · Score: 0

      Whining over different maturity levels which is understandable. I agree with the OP. Sustainability at work is a topic for high maturity level though.

    31. Re:Whining. by WolfWithoutAClause · · Score: 1

      Everything we do has to be peer-reviewed, so the way I deal with it is to simply not approve anything that doesn't meet my standards, and help the person to understand why.

      Unless you're the boss, I fundamentally disagree with the idea that you should have personal standards, that you force onto your colleagues to meet them like that.

      In a business situation, the organization should have standards, and that's what they should meet. only if they've done something that is not fit for purpose, then yes, you can and should fail the review. But that's not you just not liking the way they've done it, you have to actually have a good reason to think it won't work.

      The purpose of economic activity is to make money, not dot i;s and cross ts.

      --

      -WolfWithoutAClause

      "Gravity is only a theory, not a fact!"
  2. yes by Osgeld · · Score: 1

    you are obsessing, and yes internal quality counts a lot, cause if its sloppy internally, its sloppy externally as it sets the attitude

    1. Re:yes by digitrev · · Score: 5, Insightful

      To follow up on the other part of your question (what do I do), here are my suggestions.

      • See if there are any documents that back you up on this, e.g. style documents, and so on. Use them to your advantage.
      • Find people he's worked with before and see if this is a chronic issue, or if they've ever made headway on getting him to clean things up.
      • Get a feel of the culture there. If there's a culture of "get 'er done", you might be out of luck.
      • Talk to him. Let him know that you're having a hard time following his work in the format he typically hands to you, and that you end up spending a great deal of time refactoring things so that you can properly implement it. Emphasize that the whole project will go much smoother and faster if he's willing to spend some of his time cleaning things up. If you're lucky, he cleans things up. If you're less lucky, maybe he'll at least acknowledge the extra overhead, and manage his expectations of you accordingly.
      • Give up. If the guy is senior enough, or he's got an "in" with upper management, or he's just an asshole, then it might be better for you to just slog along and wait until the product launches.
      --
      Cynical Idealist
    2. Re:yes by Anonymous Coward · · Score: 0

      This is the real problem:

      Much of this is because he is so busy and just wants to get everything out the door.

      The real solution is to hire a junior developer to help out, either to take some of the workload off the senior developer, or to simply make the corrections instead of the OP. In order to make a successful bid to hire another person, you need to show that a junior developer will actually save the company money: with the extra help OP and senior developer are less rushed, therefore can create higher quality products, which means less bugs, which means senior management spends less time putting out fires and more time getting new business.

    3. Re:yes by Anonymous Coward · · Score: 0

      Management has tolerated and promoted him.

    4. Re:yes by Diss+Champ · · Score: 4, Insightful

      Is it possible the OP is already the junior developer hired for this purpose? :)

    5. Re: yes by UnknowingFool · · Score: 1

      I agree. The crux of the problem is that the senior developer just has too much to do. Details get ignored especially if they don't affect functionality. In the ideal world the guy would submit perfect work each time. Get someone to take work off the guy.

      --
      Well, there's spam egg sausage and spam, that's not got much spam in it.
    6. Re:yes by unrtst · · Score: 1

      This is the real problem:

      Much of this is because he is so busy and just wants to get everything out the door.

      The real solution is to hire a junior developer to help out, either to take some of the workload off the senior developer, or to simply make the corrections instead of the OP.

      AFAICT, this guy IS the junion developer. Three possible options:
      1. quit
      2. get him to change (unlikely), or get him fired (if he's senior and pumping out lots of stuff that looks iike it works, this is unlikely)
      3. speak to him + management; see if he/they see benefit in a maintainable product; if so, propose that you be his bitch / code filter, and your job becomes quality control (you fix his stuff; improve/add automatic code checkers; clean up the source; etc etc). If they see the benefit in that over you smashing on the keyboard to make more of a mess and add a couple features, then great (assuming you want that job). Else, see #1 and #2.

      If OP doesn't like that, then the best way to lead is by example. If you just spew out standards and stuff, or just clean up his mess, he's not going to change. On your parts of the project, where you add some new files (not a modification to existing files), do it the right way and add testing and make those tests be required to pass before a code commit is allowed. That way, if he borks something you added to badly, then he won't be able to check it in. It'll make for a bit of a war for a while, but someone will win or break eventually :-)

  3. Get over it. by The_Wilschon · · Score: 4, Insightful

    If he's the senior guy and he's getting the job done, then I suspect he knows what he's doing and knows which aspects of the job to focus on and which to ignore because they are useless trivialities. Just stay out of his way.

    --
    SIGSEGV caught, terminating

    wait... not that kind of sig.
    1. Re:Get over it. by Nerdfest · · Score: 5, Insightful

      There's getting the job done, and there's getting the job done in a way that can be maintained by someone else in the future. The only way you should let someone continue developing an unmaintainable mess is when there is absolutely no chance it will ever need to be fixed or added to. I have yet to see that happen.

    2. Re:Get over it. by Tr3vin · · Score: 5, Funny

      Uh-oh. It looks like he also reads slashdot!

    3. Re:Get over it. by ttucker · · Score: 1

      There's getting the job done, and there's getting the job done in a way that can be maintained by someone else in the future. The only way you should let someone continue developing an unmaintainable mess is when there is absolutely no chance it will ever need to be fixed or added to. I have yet to see that happen.

      We only know that his coworker is whiiiining about his diagrams. Odds are the diagrams are in the trash by the time the code works, so not much to do with a maintainer anyways. The code could be perfectly maintainable.

    4. Re:Get over it. by Anonymous Coward · · Score: 1

      not necessarily true - hierarchical seniority does not equate with knowing more, or knowing better. not in the real world.

    5. Re:Get over it. by Anonymous Coward · · Score: 0, Troll

      If the diagrams are for communication, and you can easily spot mistakes and what they should be then the diagrams work and you should move on with your life.

    6. Re:Get over it. by Anonymous Coward · · Score: 5, Insightful

      Who said it's solely "hierarchical" seniority? This entire question smacks of a fresh-out-of-college kid (it is May 3... when's graduation?) being absolutely stunned to learn that the real world of software engineering isn't as pretty and glossy and anal-retentively-dotted-i's-and-crossed-t's as he was led to believe it would be in his college classes.

      My guess is that the "senior guy" in question is a "senior guy" by virtue of the fact that he's been doing the work for years, and knows how to ship code.

      When you're the new guy, it's always better to understand "why" somebody experienced is doing something a particular way before you obsess over changing it. Sounds like the submitter has walked in, doesn't like somebody else's code style, and is now freaking out about it without making any attempt to understand why the senior guy has chosen to work this way.

      If it turns out the answer is "the senior guy is a shitty developer and actively harming the company," then you consider how to deal with that. But I'd be far more inclined to believe the answer is "the new guy is a whiny little bitch."

    7. Re:Get over it. by jeffmeden · · Score: 5, Funny

      The only way you should let someone continue developing an unmaintainable mess is when there is absolutely no chance it will ever need to be fixed or added to by you.

      FTFY

    8. Re:Get over it. by Anonymous Coward · · Score: 1

      People who get the job done quickly get promoted. Doesn't seem to matter that your code is sloppy, barely working shit. At least in my experience.

    9. Re:Get over it. by The_Wilschon · · Score: 1

      Hence why I said "If he's the senior guy and he's getting the job done." Logical conjunctions are important.

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
    10. Re:Get over it. by Anonymous Coward · · Score: 1

      News flash. You get paid by what works not how it looks under the hood. All management will hear is the stuff brings money in the door isn't pretty under the covers. Try and do as much as he does the "pretty" way and you can make it as pretty as you want. Until then understand your company is a business not a classroom on the "right" way to do it.

    11. Re:Get over it. by pigiron · · Score: 1

      Anyone who relies on the absolute accuracy of obsolete diagrams for system maintenance is an idiot. Early on in my career I decided not to work on maintenance projects. I either talked management into total re-writes or just worked on brand new apps. I got rich doing it. Sweating/complaining about co-workers skills is a waste of time and can be detrimental to your career.

      If you aren't good enough politically or technically to always work on new stuff maybe you should think about changing careers.

    12. Re:Get over it. by Beardo+the+Bearded · · Score: 4, Insightful

      I'm not a drafter. I'm an electrical engineer. I can make drawings, I can follow the guidelines, but I'm not as good at drafting as our drafters are.

      The drafters can understand what I'm trying to say and then make it pretty.

      Let people be good at what they do and support them with staff that can hold up the spots where they don't shine quite so bright.

      --

      ---
      ECHELON is a government program to find words like bomb, jihad, plutonium, assassinate, and anarchy.
    13. Re:Get over it. by mark-t · · Score: 2

      This is true... but how it looks under the hood can play a huge factor in how feasible certain design change requests will be within a manageable schedule.

      The extra discipline that it takes to do it in a readable and manageable way the first time, so that any potential other developers who might work on the project later can actually meet their deadlines as well is easily effort that is very well spent. The relatively minuscule amount of time you save during the initial phases of a project by being lazy is not worth the grief of the rewrites that may need to happen several months or even several years later.

    14. Re:Get over it. by jythie · · Score: 3, Insightful

      Which, without details and context, we do not know which this is. I have met plenty of developers who fail to think about maintainability and plenty who prioritize idealogical artifacts over purpose. I have also known plenty of developers who consider anything they can not scan easily (meaning, the exact style they learned) to be 'sloppy', so from this limited context we do not even know how much is actual (reasonable or not) sloppyness vs aesthetic differences.

    15. Re:Get over it. by KZigurs · · Score: 3, Informative

      By the time your prototype has 20 paying customers and publications in the trade press you can afford to bring in somebody to 'clean up the mess'. For the remaining 19 prototypes you just saved 90% of development cost with no harm done.

      Not ideal, but yeah - perfect code is worth nothing if it never sees the day of light.

    16. Re:Get over it. by Anonymous Coward · · Score: 0

      That's a foolish standpoint. In a perfect world, we would have infinite time and no competition.

      Of course, in a perfect world we would have infinite chocolate and no diabetes.

      If you are working in active competition with other entities, all trying to corner the same market, like every social media company or every VOD company, stopping to write things the Correct Way As Approved By Linus will end up destroying your business, because your competition got his shoddy product out the door and built critical mass.

      It's important you understand that this is why internet explorer beat netscape navigator. It's why windows beat OS/2 warp and you may notice that it's taken about 15-20 years for any competition to build up to the point of threatening microsoft, and all their original competition has been forced to withdraw from the market.

      TL;DR stopping to do things the right way frequently results in the truck of your opponent, who didn't bother to program in the brakes because they werent needed on launch, running you over.

    17. Re:Get over it. by Anonymous Coward · · Score: 0

      that and the "in-elegant code", which for what they are doing may be perfectly fine.

    18. Re:Get over it. by Anonymous Coward · · Score: 0

      This AC hit it the nail exactly. I've been the senior developer/programmer for quite some time and have pushed out quite a few major projects. In most of those cases, the code base starts off nicely refactored, small, easily read and well-documented. About 70% into the project, and when things turn for shit, the quality of code decreases due to scope creep without corresponding shifts in target end dates, and other such problems. Couple this with upper management informing the development team, "Whatever it takes".

      It always amazes new developers (just out of school) how a code base can end up in such a shape, as well as their 100 ideas how it can be better. My canned response is, "You have the same access to the code base as I do. Change it." I have yet to see one code commit to clean up existing code.

    19. Re:Get over it. by Anonymous Coward · · Score: 0

      The only way you should let someone continue developing an unmaintainable mess is when there is absolutely no chance it will ever need to be fixed or added to by the company whose success decides your income and if you keep your job .

      Do you really think somebody else having to do more work because somebody was lazy and did shit work does not harm your company as a whole and hence you??

      You're in one (steam) boat, and that asshole is taking out planks to burn up because he's too lazy to walk to the back of the ship to get coal!
      It doesn't matter who has to do it. It is more work, and hence costs more money, and hence harms the company!

    20. Re:Get over it. by Nerdfest · · Score: 1

      Why do you assume that it takes longer to do it 'right'? With software development, I find it actually takes less time even without taking future maintenance time saved.

    21. Re:Get over it. by Anonymous Coward · · Score: 0

      If management has been apprised of the consequences and risks to maintainability and continued to reward people who write hurried software, then that [incompetent and shortsighted] decision is management's to make (while likely externalizing the risk to the workers in the form of overtime and bugs)

      I understand and sort of agree with you, but it's only really relevant if he's a hypocritical code reviewer.

      Otherwise -- by making him a senior programmer, the business has quite clearly demonstrated exactly what type of behavior they really desire, value, and reward.

      Actions speak louder than words, policies, values, and memos.

      Yes, I've seen exactly this type of attitude cost a company its quarterly and annual numbers when 3/4 of the development team lost their shit and rage-quit in a six month period. It then cost investors, customers, funding. But they do appear to still be in business having spent about $2M in consulting fees in a huge hurry.

      That risk was management's to accept or mitigate, and that decision was management's to make.

      I would however, caution as a developer -- to watch places like this like a cat in a room full of rocking chairs. They may know exactly what they're doing, and management may be relying on periodic staff burnout (coupled with firings if people don't 'rise to the ocassion') to avoid paying vesting shares.

      But seriously, is the unmaintainable mess is a result of the place rewarding piling on technical debt with a shovel -- do it. Document it in the software comments, change log, and internal reports. It's not your problem.

      If they try to make it your problem -- that's when it's time to push back with consequences and development processes prohibiting such... bullshit.

      And yeah, if your boss isn't a coder, prepare for them to say "yes" when you offer to support only software with 75% test coverage. And then for them to turn red and purple in the face when they get an estimate that costs more time than the entire software product ever had invested up front to do so.

    22. Re:Get over it. by Anonymous Coward · · Score: 0

      The problem is that some areas of the code can be left messy and still be maintainable and some areas cannot. The wisdom to know the difference is one of the main things that's supposed to distinguish senior developers from their more junior brethren. In practice, there's far too many seniors who haven't learned this lesson properly.

      That's the tough part about answering this guys question. If the senior dev knows his stuff, he's likely intentionally leaving certain parts messy to speed up development and meet deadlines. In this case, the person should be learning this skill from the senior developer...rather than just cleaning up every mess he sees, he should be asking why the mess was left in the first place. On the other hand, if the senior dev doesn't know his stuff, he's likely creating an unmaintainable mess. In that case, the person should push the issue and, if it becomes clear that it's not going to change, either live with it or find a new job.

      But without knowing the position that the senior developer is in and examining his decisions in a much more detailed fashion, it's impossible for us to tell which type of senior he is.

    23. Re:Get over it. by dcollins · · Score: 1

      "...perfect code is worth nothing if it never sees the day of light."

      Of course, if one is habituated to writing in a sloppy fashion, then one can look foolish when things do get publicly presented.

      --
      We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
    24. Re:Get over it. by Kneo24 · · Score: 5, Interesting

      Certain comments deserve a +10 (or 11 if you prefer). This is one of them. You have hit the nail on the head. I do exactly this with our engineers where I work. They're terrible at writing documentation that other people in the building need to read. Some of the stuff I have seen is absolutely abysmal. What I decided to do was to be the guy that makes everything pretty and easy to digest before official releases for them. Over time a few of them have come to thank me for this, as it saves them a lot of headaches. The net result is that everyone looks good.

    25. Re:Get over it. by Anonymous Coward · · Score: 0

      I think he definitely has a point that companies like MS and Adobe will always opt for "time to market" and compromise almost everything else. Because "time to market" translates into "revenue" and "profit".
      It took them several years just to clean up the worst excesses in WinXP, according to one of their CXOs.

    26. Re:Get over it. by Anonymous Coward · · Score: 1

      Questioner here. I can shed some light on this.

      His first product eventually worked really well, but it was hell getting there. Not all his fault, the time pressure was huge and we have been working hard to counter it this time round. Even so the terrible state of the diagrams and written specifications really made life difficult for a lot of people. It is hard for other people to pick them up and work from them, so they waste time fixing them first or just duplicating work that could have been copy/pasted if it was good enough in the first place.

      In the end the product works well enough. It's not what you would call maintainable though.

    27. Re:Get over it. by Anonymous Coward · · Score: 0

      Questioner here. I'm not fresh out of college, I have some experience and simply take pride in my work.

      We are not talking anal-retentive here, we are talking documentation and other output so bad it makes life hard for anyone who has to work with it and leads to mistakes. It's not coding style, it is actually just bad.

    28. Re:Get over it. by Anonymous Coward · · Score: 0

      Hmmm,

      I once had a supervisor tell me as I worked to eliminate bugs in my code: Better is the enemy of good enough. I was annoyed by this attitude until I got older and experienced enough to understand that there is "the best you can do" and then there is "the best you can do under the circumstances". As a programmer and a professional, of course you want to develop the best code that you can put out, however we all learn the software maintenance cycle involves design, development, and maintenance of which the people that pay you probably make the most money from the maintenance.

      Upgrades, bug fixes, security patches... how much of a software company's profit comes from maintenance contracts? Even a lot of shareware would quickly devolve into freeware save the carrot of maintenance. Now contrary to what it might seem that I'm implying, I'm NOT advocating writing buggy code. Obviously if your software doesn't work, it's going to hurt your reputation and your sales... but the poster identified that his coworker's programs did work/get the job done. All I am saying is that in the eyes of the often non-computer-literate managers that stroke the paychecks, bugs are not necessarily the same thing that they are in a programmer's eyes. For many of them, bugs contribute to the revenue stream and by extension, the bottom line.

      This would seem to emphasize productivity over perfection...

      Besides, your coworker probably likes to get a lot of stuff out the door because it gives him the appearance of being productive. If you're an older programmer in an increasingly younger programmer's game, that might not be a bad thing especially in a shakey economy where software companies press the government to issue more H1B visas and students at home graduate from computer science departments with newer skills willing to work for less money.

    29. Re:Get over it. by AmiMoJo · · Score: 1

      With schematics there are certain conventions, like putting GND at the bottom and having signals being processed go left to right. You don't have to stick to them but it makes the diagram a lot easier for other people to read.

      Similarly in code it is customary to use indentation to clarify structure. If you don't your code will work but anyone who has to read it will curse you. Not having any comments is usually bad. Having vast amounts of commented test code that is no-longer relevant and breaks up the actual code is bad form. I wouldn't say those are mere aesthetics.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    30. Re:Get over it. by AmiMoJo · · Score: 1

      It's all about the technical debt. If you bodge it now to save a few minutes you will always pay for it later twice over.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    31. Re:Get over it. by Anonymous Coward · · Score: 0

      Unless you have buy-in from management, leave things as they are. Increasing software quality is an investment just like any other, and the decision makers need to prioritize quality along side other possible investments. Depending on the political climate of your office you may be able to pitch investment in quality to the decision makers, which may or may not be successful. If they don't want to invest you can either drop the issue or keep pushing for prioritization, but you should always stick to the prioritization the company has chosen if you want to stay on the good side of things.

    32. Re:Get over it. by Improv · · Score: 1

      +1

      --
      For every problem, there is at least one solution that is simple, neat, and wrong.
    33. Re: Get over it. by Anonymous Coward · · Score: 0

      Just because someone has a title with 'senior' in it doesn't always mean that they are actually good at what they do.

    34. Re:Get over it. by Anonymous Coward · · Score: 0

      All code can be maintained. Unmaintainable code is a myth. There is just easier and harder to maintain. Spending time (money) up front to make all code easy to maintain is idiotic past a certain point (the point is in your mid-20s when you realize perfection is unattainable; before then it's forgivable). It's not about there being a "chance" code will need fixing or adding to. When you fix or add to something and it's just too hard, then you do the work to make that part more maintainable. Otherwise you're just wasting everybody's time (money).

      Wait until you find a piece of code that you have to make less maintainable in order to achieve the required performance. You're going to shit yourself.

    35. Re:Get over it. by Anonymous Coward · · Score: 0

      From the tone of the post ("I'm better than a developer twice my age") we can guess, though. In any other business it would be called arrogance. Programming is different though - the nature of the beast encourages this kind of arrogance in the young. So I call it naiveté.

    36. Re:Get over it. by Anonymous Coward · · Score: 0

      It's self-evident. Shortcuts reduce time by definition. Anyone who deviated from "right" while *increasing* the time taken isn't going to last as long as this senior developer has.

      As for future maintenance time, only an idiot does work now just in case they might save work in the future. The problem with this Ask Slashdot is that we are asked to assume that the stars are aligned just right that this junior developer does in fact know more than this senior developer, when the likelihood is that he doesn't.

    37. Re:Get over it. by Anonymous Coward · · Score: 0

      I think you are getting your explanation a little bit wrong. From an economic point of view, "time to market" first and foremost affects the cash pile of a company. Macro-economically, a "not perfect, but working technology" will be of more use if delivered to users earlier than it takes to make the tech perfect.
      Many companies actually struggle to keep some sort of massive R&D project funded and so there is enormous pressure to "deliver something just good enough". They are scared to hell they will run out of cash before the project is done, that is why there is so much pressure to deliver. Then there is economic pressure from competitors to release early. Then there is the very real threat that your product will be perfect but out-of-date by the time you release it to users/customers.
      Boeing's 787 clearly was too much for them to chew in one bite. So they consciously released something slightly crappy to customers. So did Rolls-Royce and the effect was that they nearly killed hundreds of passengers of an A380.

      Of course, I could also play the advocate of the opposing side and talk about the "cost of low-quality products", "cost of failure to large number of users", "cost due to security issues to large number of users". These are also very valid points.

      What shall we do ?

      Quality and Time To Market must be balanced against each other. It's a trade-off. Of course it depends on the industry where you make that trade-off. Both aspects can be improved by means of certain practices like hiring and retaining well-skilled QA people and managers and by capable managers who will properly track progress (as opposed to ticking off boxes).
      Leaders are supposed to know about all this, to have a broad and deep education (think of all those greek parables, King Lear and the like) which will guide them to make proper trade-offs. Of course the key word is "supposed". Most modern-day leaders are not up to this standard with the exception of (maybe) a Mr Musk or a Steve Jobs (peace be upon that holy man, too).

    38. Re:Get over it. by Anonymous Coward · · Score: 0

      That sounds awfully like a general excuse for extremely shitty quality. Sometimes quality actually matters and is, economically speaking, the right thing to do. Think of OS kernels, security-critical control software and the like.

    39. Re:Get over it. by Anonymous Coward · · Score: 0

      Grammar Nazi here - the saying is actually "light of day" in reference to be brought out or born.

    40. Re:Get over it. by KZigurs · · Score: 1

      Which is exactly what I meant. Not sure how I managed to mix up the ordering.

    41. Re:Get over it. by Anonymous Coward · · Score: 0

      I notice you don't state how much experience you have, and I notice you call the other guy the "senior" guy. You are a junior engineer, so... what, a year of experience? 2012 graduate? You've given us no actual examples, just talked about how "bad" his documentation is, and whined about how it makes life hard.

      AND, you've ignored the crux of my response, which was that if you don't spend the time understanding why things aren't being done the way you would, it's likely that the knowledge deficiency is yours, rather than 'everybody else's.' If you don't take the time to understand the root cause of the problem, you're making the problem worse by flailing about trying to fix something without understanding the actual shape of the problem and the solution.

      Want to make the leap from junior to senior guy someday? Start committing code that's better, and producing documents that are better. Pitch revised coding standards (or pitch their implementation if you don't have them currently - but make sure you come correct with recommendations, don't just whine about 'we need standards'), revised documentation standards, improved processes. Sell these proposals to your coworkers and your boss - get their buy in, explain why you think it's better, listen to their feedback when they tell you why it's not going to work as well as you hope, and make things happen. In the process, you'll probably get an eye-opening education about exactly why things aren't being done the way you'd like, and discover that half of your whiny knee jerk "solutions" were incorrect, or even actively harmful.

      Until you do that, you're nothing but a whining critic with no domain experience who is pissed off that his coworkers can't see what a special little snowflake he is.

  4. use the thedailywtf to your advantage by Mahldcat · · Score: 3, Funny

    find some of the more fun things from his code, and submit submit submit....

  5. Easy by Anonymous Coward · · Score: 1

    Make your work compatible with his: be sloppy as well.

    1. Re:Easy by DeKO · · Score: 2

      This. If it's your job to go and fix his mess, do it without complaining. And document all the effort you put into it, to avoid being labeled as someone that just rewrites code without adding anything.

      If you are not responsible for cleaning after the senior, then don't do it, let it all rot until somebody (your boss, or even your colleague) makes the decision it's time to clean the mess.

  6. Fix them by Anonymous Coward · · Score: 0

    and then give them back pointing out what was wrong and where.

  7. WTF does elegant mean? by alen · · Score: 3, Interesting

    i see a lot of "elegant" SQL code that i end up fixing to make it simpler so it runs faster

    Microsoft releases new versions of SQL Server every few years to make code simpler to read. and yet people still insist on "elegant" code that's a pain in the A$$ to figure out why its running so slow

    1. Re:WTF does elegant mean? by i+kan+reed · · Score: 4, Insightful

      Elegant is supposed to be readable. They're supposed to be the same. If you write code no one understands, it's not elegant, it's obtuse.

    2. Re:WTF does elegant mean? by Anonymous Coward · · Score: 1

      "A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away." - Antoine de Saint-Exupéry

    3. Re:WTF does elegant mean? by alen · · Score: 1

      over here it seems to be to write hugely complicated SQL code with lots of temp tables and then complain that it runs too slow

      instead of writing some CTE's, views or anything else MS has come out with in the last 5 years to make code easier to read

      or one time i had a view loving dev go view crazy. he had his team write dozens and dozens of views that called other views and mostly did simple things. kind of like C++, but in SQL. and then complained why the SQL job was running too slow. he had a few stored procedures call dozens of other procedures, that were made up of views calling other views, etc.

    4. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      Elegant is readable. But easily human readable doesn't always mean easily machine readable.

    5. Re:WTF does elegant mean? by icebike · · Score: 5, Insightful

      Unfortunately, elegant has been re-defined by many a geek as being the shortest possible line of code, regardless of how obtuse it is to read and understand. You can still see people spouting shell scripts or C statements designed solely to show how clever they are, at the expense of readability or maintainability.

      --
      Sig Battery depleted. Reverting to safe mode.
    6. Re:WTF does elegant mean? by ttucker · · Score: 1

      Elegant is supposed to be readable. They're supposed to be the same. If you write code no one understands, it's not elegant, it's obtuse.

      I think the word alen was looking for was "clever" code. This is where someone works the code down in to 3 lines, or uses an obtuse feature of the language to do something because it just packs everything into an "elegant" little package. Sure, it looks really good when you write it. When you explain it to people they say, wow that makes a lot of sense. Still, three years down the road maybe even the programmer looks at it and has no clue.

    7. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      Yes, readable and maintainable code tends to be slower than hacks.

    8. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      "elegant" when it comes to code is code that uses the least amount of resources. That is what it has ALWAYS meant, fast and lean code that is not always easy to read or understand but very easy for the machine to work with.

      "pretty" is the word that is used for beautiful and easy to read code.

    9. Re:WTF does elegant mean? by pigiron · · Score: 2

      Temp tables can also make queries run faster especially when confronted with a single three pages long SQL statement.

    10. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      I would have to disagree. For example, Duff's device in C is elegant IF you understand how it works. But if you don't, it's completely obtuse. From a readability viewpoint, it is a nightmare.

    11. Re:WTF does elegant mean? by gorzek · · Score: 1

      That's not always true. It can be "elegant" in algorithmic terms, but difficult to understand as pure code. But in that case, "elegant" is probably standing in for "clever." Clever code is often unreadable. Some languages are built around how much cleverness they encourage. Perl is probably the gold standard for cleverness, while Python goes out of its way to make you code something that's readable rather than enigmatic.

    12. Re:WTF does elegant mean? by jythie · · Score: 2

      "elegant" is whatever is in style at the time the speaker got into programming. People generally consider something elegant if they can look at it and quickly determine what it does, which generally means it has to look like what they are used to reading because that is how our brain tends to deal with reading and patterns. You might be surprised at how much someone's comprehension speed changes if, say, you take a developer who has primarily worked in camelcase and have them read underscore separated code for instance.

    13. Re:WTF does elegant mean? by mark-t · · Score: 1

      There's absolutely nothing wrong with clever code or even deliberately using obtuse features of a language or framework to get a particular job done in an optimal fashion.

      But...

      Such things should always be gratuitously commented... clearly and quite thoroughly... because much as we'd like to think that anybody who maintains the code we write will be always know absolutely every trick or optimization that we might has either not been a professional programmer where they needed to work in a team for any significant amount of time, or is simply living in a perpetual state of denial. You don't have to assume that the person who might maintain your code is ignorant about common programming idioms or patterns, but that doesn't mean it's okay to deliberately do stuff that someone else might not think of without explaining it a little.

      Elegant means readable. If the code isn't readable because it's too terse or uses obscure features, then readable comments can easily suffice.

    14. Re:WTF does elegant mean? by mark-t · · Score: 1

      This is entirely true... but in that case, you should be commenting the code so that what is happening is clear.

    15. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      And the biggest downside is that you trade performance for elegance. Sure, it makes a world of sense to write code for maintainability, but more often than not, I have discovered with both perl and python (and more often python) that I will end up refactoring the code to keep it from taking forever to run. And in the end, the python begins to be just about as indecipherable as perl, and still comes nowhere meeting the same level of performance. But I still use python because I have some fellow developers who love it.

      Of course, for those scripts that I have prototyped in either language, only to discover that performance is the biggest problem, I end up rewriting in C/C++ just to get closer to the metal. It's a good thing I have built rigid standards of documentation, so if anyone comes in to work on my code, they can at least get a glimpse into what I was thinking.

      In fact, I have some perl scripts that have ended up with more comment lines than actual code

    16. Re:WTF does elegant mean? by miroku000 · · Score: 1

      Elegant is supposed to be readable. They're supposed to be the same. If you write code no one understands, it's not elegant, it's obtuse.

      With SQL, often it is easier for humans to understand stuff that has a lot of subqeries. But for an optimizer, it is easier to optimize if there are not subqueries. So, if elegant= more readable, then elegant != efficient.

    17. Re:WTF does elegant mean? by Anonymous Coward · · Score: 1

      SQL Server every few years to make code simpler to read. and yet people still insist on "elegant" code

      Having been thru every ver of SQL since 6.0 I can tell you that what looks elegant is not necessarily 'best'. I have seen hundreds of examples of doing it 'the right way'. And if they were in a procedural language it *IS* the right way. However SQL Server does crazy things when the optimizer goes in the weeds. I have had to make abominations of 'elegant' code too many times...

      Then you have the other end. Someone sort of gets something to work then proceeds to cut and paste it all over the place. With no idea what that will do when you aim it at 300k rows with the wrong indexes.

      Many times bad code grows out of bad schema.

    18. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      Something is elegant, when all of the following are true:

      1. It is simple (but not simplistic or dumbed-down!)
      2. It is emergent: A single function or system solves a *broad* range of future problems, and doesn't require re-writing to fit future problems.
      3. It is efficient: It takes little work both for a human to read and change it, and for a computer to execute it.

      Elegance is the single biggest gauge of the quality of your work. And in a good company, quality equals money earned per work hour.

      So ELEGANCE = SUCCESS = MONEY.

    19. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      What is this, I don't even...

      If you can't do basic entity identification in your head (which is exactly how code highlighting works), then you're probably a terrible programmer. Simply put, a variable is a variable, regardless of its spelling. Once you know the syntax of the language well enough to parse/lex on the fly in your head, you should be familiar enough to read any variation on "coding standards". Sure, it may not conform to how you write code, but you should be able to read it.

      Consider:
      int nameOfVariableUsedInFakeProgram = 0;
      $name_of_variable_used_in_fake_program = 0;
      Dim intNameOfVariableUsedInFakeProgram As Integer = 0

      Here we have examples in 3 different syntax families (C-like, script-ish, and VB-ese) all doing the same thing. None of the variables are unreadable, despite using completely different "styles". And as long as you're familiar with the syntax mechanics of instantiating an integer in each of these languages, you can read the intent. Make an integer variable and assign 0 into it.

      Only an idiot would complain that camelCase (or PascalCase), underscore_naming, or varHungarianNotation are the problem. They're all obviously variable names. Find previous and/or subsequent matching references within the proper variable scope to see what it's used for.

    20. Re:WTF does elegant mean? by bbulkow · · Score: 1

      I agree with this. I'm seeing more and more code that's short because it calls a lot of subroutines, all called things like Foo.Add(x) with little description of what "Add" might do, saying it's OK to be terse because you know what type X is, except, oops, the programming language just says it's a List and doesn't have "meaning" .... but maybe I'm cranky. Readable does not mean short!

    21. Re:WTF does elegant mean? by avandesande · · Score: 1

      One benefit I like about in memory tables is that you can update the table a piece at a time with separate sql statements which is much easier to troubleshoot and maintain. I agree though that CTE's should be used whenever possible- performance is greatly improved.

      --
      love is just extroverted narcissism
    22. Re:WTF does elegant mean? by i+kan+reed · · Score: 1

      I have never seen an elegant algorithm performancewise that didn't have fundementally, an elegant(easy to understand) approach to iteration/recursion. The readability of bubblesort is way lower than a quicksort(barring terrible variable naming).

    23. Re:WTF does elegant mean? by pigiron · · Score: 1

      Indeed the optimizers in the RDBMS's can only go so far before they start being stupid. Pity that. It drives firms to adopt denormalized (or worse yet, never normalized in the first place) schemas for data mining and reporting purposes when simply breaking down the query into separate components would suffice.

    24. Re:WTF does elegant mean? by johnjaydk · · Score: 1

      Elegant is supposed to be readable. They're supposed to be the same. If you write code no one understands, it's not elegant, it's obtuse.

      The easy solution is to task switch developers. When they rotate back, a year later, they get to feel all the pains of maintaining their own obtuse shit without the benefit of short term memory.

      It's a phase. I too have been proud of writing grotesque, obtuse code. Debugging said code 6-12 months later is usually a humbling experience.

      --
      TCAP-Abort
    25. Re:WTF does elegant mean? by FlutterVertigo(gmail · · Score: 1

      "Make things simple, not simpler." - various "From simplicity arises elegance." -me

    26. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      In that case, I'd like to direct you to:

      http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.7151

      A genuine polynomial time, non-probabalistic test for primality, based off of Radhakrishnan's incredible proof.

      Something which becomes incredibly freaking relevant if you're doing any type of modeling/cryptographic/simulation software very quickly.

      You have fun with your elegant implementation

    27. Re:WTF does elegant mean? by i+kan+reed · · Score: 1

      Um, without seeing the psuedocode, how am I supposed to assess the readability to see if it undermines my point. I feel like I'm missing something. Your acting like your link is a refutation, but it's just a theoretical concept.

      I'm confused.

    28. Re:WTF does elegant mean? by jythie · · Score: 1

      Considering people read faster or slower depending on which font they have regular exposure to, while you do not actually notice it on a conscious level, it does bounce around, and it is one of the reasons some people so inexplicably care about such a seemingly silly thing.

    29. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      To me, elegant is the most efficient balance between effective brevity and readability. Programming after all is pretty much a communication skill. Bugs are places where the programmer failed to communicate his intent to the machine because as my first CS teacher told me, there will never be a time when the computer fails to execute your instructions as you expect because it didn't *want* to. Since then I have always seen programming as a contest between me and myself.. a pursuit to find the clearest way to communicate my will for the computer to implement...

      Anyway, I believe that when a set of instructions is efficiently and sufficiently "clear" to both human and computer, it becomes describable as "elegant".

      For instance: I'm an old "C" programmer. I find some uses of 'switch' and 'for' statements to be elegant, because depending upon how you use them, you can communicate to both human and computer in a very clear and efficient way.

    30. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      If there is no clear systematic principle behind a system, it is in most cases due to shoddy analysis of the designer. Efficiency and elegance or in most cases quite compatible. What is incompatible is lazy analysis, irrationality and elegance.

    31. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      I call this "The Charlie Sheen principle". Just because you can do it all in one line doesn't mean you should.

    32. Re:WTF does elegant mean? by Anonymous Coward · · Score: 0

      Duff's Device in C is "clever," not elegant.

      When the inventor himself describes it as follows (scroll down to his original 1983 email), it's generally safe to assume it's not "elegant":

      Disgusting, no? But it compiles and runs just fine. I feel a combination of pride and revulsion at this discovery. If no one's thought of it before, I think I'll name it after myself.

      He found a clever way to implement something in C to speed up some time-sensitive animation tasks... that does not make it an 'elegant' solution.

  8. Senior? by Anonymous Coward · · Score: 1

    Save your refactoring efforts... odds are you will be maintianing his mess in a few years anyway. If you rock the boat, you may just be thrown overboard depending on how the "Good ol' boy network" works in your office.

  9. formalize reviews by Anonymous Coward · · Score: 1

    So IMHO the best way is to get him to agree that a review process is best for the product. YOU define and create the process and do all the legwork, then once the process is in place it is the _process that is enforcing quality....not you.

    1. Re:formalize reviews by Anonymous Coward · · Score: 0

      So IMHO the best way is to get him to agree that a review process is best for the product. YOU define and create the process and do all the legwork, then once the process is in place it is the _process that is enforcing quality....not you.

      +1
      this is the actual answer

    2. Re:formalize reviews by Anonymous Coward · · Score: 0

      Yeah because nothing works better than a process created by one person which multiple people are forced to use.

      Any process designed by one person and then inflicted on multiple people is a process designed to fail.

  10. If he's senior then sorry, no... by Anonymous Coward · · Score: 1

    From bitter experience if he is senior to you then you have no chance of effecting change yourself.

    If you both report to a common manager then you can try raising it, but I don't think you will have any success if they haven't done anything already as they are likely happy with their view of his work.

  11. WWLTD? by Anonymous Coward · · Score: 0

    What would Linus Torvalds do?

    1. Re:WWLTD? by Anonymous Coward · · Score: 0

      Rant and rave and be correct from his point of view.

    2. Re:WWLTD? by ttucker · · Score: 1

      What would Linus Torvalds do?

      He would probably be the old guy that the OP is complaining about, and the OP might just figure out EWTF Linus Torvalds would do....

  12. Just play along... by Anonymous Coward · · Score: 0

    And do your job the best you can.
    Talking about quality code of seniors only can get you fired, or instead, more work.

    1. Re:Just play along... by ttucker · · Score: 1

      And do your job the best you can. Talking about quality code of seniors only can get you fired, or instead, more work.

      At the very least you are wasting yourself a lot of time cleaning up someone's functional mess.

  13. Re:Visual Studio with ReSharper by Anonymous Coward · · Score: 0

    I'm sure that's fine if it would have something to do with source code. But I doubt a Visual Studio can fix problems with text documents or diagrams...
    Nice marketing effort though.

  14. Like code doc more than code? by xxxJonBoyxxx · · Score: 4, Informative

    >> Diagrams that should be spread over five or six pages are crammed onto one

    And you still figured out what to do? Sounds like he knows what he's going then.

    1. Re:Like code doc more than code? by Anonymous Coward · · Score: 0

      It might actually be better to have it all in one page than spread over 6 pages.

      If stuff starts getting too small to read or see easily then start spreading it elsewhere.

      Otherwise why waste time changing pages when you can stick with one.

    2. Re:Like code doc more than code? by Anonymous Coward · · Score: 0

      Seriously: ARE. YOU. RETARDED??

      By your logic, he knows what he's doing, even if figuring it out takes ALL TIME UNTIL ONE PLANCK TIME UNIT BEFORE THE END OF THE UNIVERSE.

      EFFICIENCY! Ever heard of it?

      The damn point is that figuring out that giant six-page mess is a INEFFICIENT and hence costs time and therefore plain MONEY.

      Shit, Ameritards get dumber BY THE FUCKING SECOND!

    3. Re:Like code doc more than code? by AmiMoJo · · Score: 1

      I know a guy who does this and you can eventually figure it out, but it would be so much easier with them properly laid out. You end up tracing things with coloured pens.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
  15. It works and gets the job done by Anonymous Coward · · Score: 0

    "It works and gets the job done"

    Well and truly understand this, and your life working with others will be much better. Exactly how much time one should put in to code is relative to the type of customer, expected code shelf life, and usage patterns (API vs. internal library.) Not all code is worth perfect design - most code, in fact, is not worth this trouble.

  16. Different people have different programming styles by cheesybagel · · Score: 3

    If his code works and his methodology produces consistent results then his methodology is sound. Perhaps you shouldn't be less concerned that other people have different ways of working than your own.

  17. Andy, this is your boss by Anonymous Coward · · Score: 1

    Oh god, not this guy again!

    might as well queue up this story again.

  18. Dupe by Hentes · · Score: 1

    This is the third time this question comes up.

  19. You two should talk by LoRdTAW · · Score: 5, Funny
    1. Re:You two should talk by tgetzoya · · Score: 2

      Might you be complaining about this gentleman? http://ask.slashdot.org/story/13/01/03/2255204/ask-slashdot-how-to-react-to-coworker-who-says-my-code-is-bad

      I wish I had mod points for this.

    2. Re:You two should talk by Anonymous Coward · · Score: 0

      Might you be complaining about this gentleman? http://ask.slashdot.org/story/13/01/03/2255204/ask-slashdot-how-to-react-to-coworker-who-says-my-code-is-bad

      I wish I had mod points for this.

      What do you want to bet it's the same guy?

    3. Re:You two should talk by Anonymous Coward · · Score: 0

      Might you be complaining about this gentleman? http://ask.slashdot.org/story/13/01/03/2255204/ask-slashdot-how-to-react-to-coworker-who-says-my-code-is-bad

      And this is how the /. matchmaking service got started.

    4. Re:You two should talk by Grog6 · · Score: 1

      Unfortunately, this is /.

      Neither shall leave the comfy confines of their respective parents' basements, even for such enticements.

      Forever shall they waste away, pining for hot grits, and Natalie Portman... :)

      --
      Truth isn't Truth - Guliani
  20. Functional or "Style" Mistakes by adisakp · · Score: 5, Insightful

    It works and gets the job done, but it's far from elegant and there are numerous little (some might say trivial) mistakes everywhere.

    If there are functional mistakes, then it shouldn't be working and the best way to complain would be to make bug reports and document your fixes to the code.

    However, if it's not buggy and you are refactoring because it's not "elegant" that's much harder to justify or document. Because it kind of sounds like you are complaining about his coding style while he is being productive and writing a ton of less than perfectly styled code that "works and gets the job done".

    1. Re:Functional or "Style" Mistakes by fermion · · Score: 5, Insightful
      I agree. First, let me be blunt and say it is not your job to make other people work the way you did or the way you learned in college. There are many different ways to get a job done, and often we benefit by adjusting and learning different ways of doing things.

      Second, if you are refactoring simply to make it look like you want it, and those documents are not being put into general use("I spent a lot of time refactoring some of it, but as soon as he makes any changes it needs doing again") then you may be wasting firm resources. If you can't get the work done without reworking everything, there are really only two options available. Realize that you are doing to have to some of this on your own time, or learn to read what is clearly company standard documents. These are after all what you have been given.

      Third, identify if there are actually any real issues with the current system. Base change on improvement that will result in significant efficiency, not just 'the way it should be done'. There has been many occasions where I have come in as the junior person and was allowed to make changes because those changes would result in real savings. There were other times where I was just trying to be clever or controlling. Know the difference.

      --
      "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    2. Re:Functional or "Style" Mistakes by avandesande · · Score: 1

      Too true. I've seen people agonize over silly things like string concatenation which would almost be impossible to measure (performance wise) when the main bottleneck is an expensive database call.

      --
      love is just extroverted narcissism
    3. Re:Functional or "Style" Mistakes by canadiannomad · · Score: 1

      I spent a lot of time refactoring some of it, but as soon as he makes any changes it needs doing again

      When I read this, I immediately thought there must be a software difference between the two workers.... Like OpenOffice vs Word... Stuff that has been made to work in one, can often look awful in the other and viceversa. He makes a change and breaks everything... He thinks he is doing the right thing... Hours wasted fixing something that is really caused by an incompatibility of software. That type of thing could cover a wide range of his complaints about his coworker.

      --
      Hmm, the humour and sarcasm seem to have been be lost on you.
    4. Re:Functional or "Style" Mistakes by AmiMoJo · · Score: 1

      It sounds more like the OP is talking about documentation, not code. In which case "functional" means that it conveys the ideas and concepts clearly in a way that other people can use. If it is hard to use then it isn't good documentation.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    5. Re:Functional or "Style" Mistakes by Anonymous Coward · · Score: 0

      I can assure you there ARE applications where it matters tremendously whether I use the MFC CString crap stuff or my own String implementation for simple things like concatenations. Because I need to perform 150 million concatenations in a few seconds.
      Currently I am working on exactly this kind of application. But yeah, first do profiling, then tackle the performance bottlenecks. Premature optimization being evil and so on.

  21. take responsibility by bauerbob · · Score: 5, Insightful

    Don't send him bug reports and feature requests. If he's in charge of something you care about, ask him if he would give it to you (completely!). Then you can fix whatever you want. You will see that there'll be a new guy soon who thinks that your work is sloppy, sending bug reports and feature requests to YOU!

    1. Re:take responsibility by phantomfive · · Score: 1

      Good answer.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:take responsibility by pigiron · · Score: 1

      It's not up to a junior programmer to be requesting new features. STFU and get back to work!

    3. Re:take responsibility by AmiMoJo · · Score: 1

      Okay, but how do you do that without upsetting things? "Hi, can I have this stuff so I can fix your sloppy work?"

      How do you justify spending time fixing someone else's mistakes without implying that their work wasn't up to scratch? I think that is what the OP was getting at.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    4. Re:take responsibility by mcrbids · · Score: 1

      How about just simply: "I'm interested in $foo project, would you mind letting me have a whack at it?". As a senior dev myself, I'm forever turning over stuff to other staff as our company has grown from 1 dev to 8.

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
  22. Easy by Anonymous Coward · · Score: 1

    Are you being paid to do that work? Nope. It may not even be work that people think is valuable or even good to have done.

    If you really want to be QA, sell your boss on the idea that you should spend your time there. Otherwise, learn to let it go and do the things you are being paid to do.

  23. Bring up his incompetence loudly at lunch. by Anonymous Coward · · Score: 0

    You will likely get promoted and earn the respect and admiration of your colleagues.

    1. Re:Bring up his incompetence loudly at lunch. by pigiron · · Score: 1

      Someone mod this up to funny!

  24. Deal with reality. by Karmashock · · Score: 2

    I work with dozens of small companies many of whom have their own proprietary software and development. Consistency across these companies is nonexistent and consistency WITHIN the code any of the software packages is at best unpredictable.

    I deal with this by writing comments into all their code for my own information. If and when there is an issue, I can typically find the problem area very quickly and correct it.

    I make no effort to clean their code up if its operating acceptably. I get it so it works and don't waste anyone's time if it is already working.

    --
    I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
  25. It's absolutely NOT trivial by slasher999 · · Score: 0

    Your attention to detail is admirable and something I wish more people were interested in or even competent at. Unfortunately that is not the case. You could offer to take on some of that additional workload, but that means more work for you. I'd discuss it with your manager in your 1-on-1 meetings. Your manager DOES do 1-on-1 meetings with each of his or her team on a weekly basis, right? If not, maybe it's time to move on to somewhere your efforts will be better appreciated and rewarded. You can only fight the tide and try to effect change for so long. If it's not working, let it be someone else's problem.

    1. Re:It's absolutely NOT trivial by Anonymous Coward · · Score: 0

      We don't even know that his criticisms are even valid. You only have his word that things are "sloppy". He sounds like some amateur who never ships anything because he keeps tweaking useless shit.

  26. Same as everyone in IT. by FatLittleMonkey · · Score: 2

    With cruel sarcastic insults.

    --
    Science is all about firing a drunk pig out of a cannon just to see what happens.
  27. "quality" is hard to judge by bbulkow · · Score: 2
    I see several different kinds of quality in my co-workers' code.

    I see problems that are called sloppiness, like bad variable names, and "ugly" looking loops. These are not worth worrying about. I find that many new programmers - programmers raised looking at open source code that is coded without comments with the fewest possible lines - find "ugly". Even the use of Gotos and similar, use of variables without accessor functions. The refactoring is to make functions shorter, to remove comments (since now the code is self-documenting). This kind of quality problem you should overlook, because it's more stylistic than you think.

    From your description, I think you're horrified by this lack of "neatness", and if so, you should get over that. (You talk about needing to "clean up" constantly - making me think this is simply moving lines around).

    There's another quality problem, which is incorrect modularization and abstraction. When I see code that is going around external provided APIs, not creating APIs but simply objects called "Object" and similar. PUtting functionality into a higher level module when a lower level module should be expanded so other people can use the same functionality - but it's "a pain" because you have to write test code and update documentation. Code that is incorrectly modularized is technical debit that will always be hard to remove.

    This kind of quality problem needs to be discussed. In your situation, the answer is always to ask questions. If your partner is always busy or blows you off, you go to another senior person and say "Joe doesn't have time for me, and I don't understand X way he factored the code, can you give me 5 minutes to explain this style?" If it really is as bad as you say, another senior person will grimace in horror, and tell you he'll go deal with it. You should expect to get reassigned to a better project in a few weeks.

    1. Re:"quality" is hard to judge by Anonymous Coward · · Score: 0

      How about the sort of sloppiness where he never commits part of the project to SVN. Or the sort where he simply walks away from development half-way between releases and leaves the trunk in disarray, ie, bugs and half-implemented ideas that leave the project broken (but not obviously so).

      Hard mode: There are not other senior software people. There's me, a contractor, him with a senior title, and non-technical project managers and execs.

      It's kinda hard to outshine him when I'm constantly shoveling loads of the shit he left behind.

  28. That's "Agile" by Animats · · Score: 1, Insightful

    This sounds like some old waterfall-model guy complaining about a modern "agile" programmer. If you're just doing web crap, quality doesn't matter. Time to market does.

    1. Re:That's "Agile" by Anonymous Coward · · Score: 1

      Actually reading the submission is sound like he's bitching about an electrical engineer's schematics. Actually working in that field I _know_ what kind of schematic's the submitter generates and am not amused. The guy he's complaining about produces schematics in five C size pages where the submitter would generate 15 to 20 A size pages, but yes all the off page connectors point the correct direction.

    2. Re:That's "Agile" by rsborg · · Score: 1

      This sounds like some old waterfall-model guy complaining about a modern "agile" programmer. If you're just doing web crap, quality doesn't matter. Time to market does.

      Only if your technical debt doesn't pile up exponentially as a result of a fatal design flaw. Time to market matters a lot, but it's not everything, or we'd be building planes made solely out of duct tape.

      --
      Make sure everyone's vote counts: Verified Voting
    3. Re:That's "Agile" by Animats · · Score: 1

      (The above was meant to be a joke. Instead, it was modded up as "insightful".)

  29. Hire somebody to help by greywire · · Score: 1

    You say he may be doing this because he's just too busy... Maybe these things are not things he should be doing in his job, maybe he's better suited to something else? Maybe you need to hire somebody to do these things so he can concentrate on the other things he might actually be good at, and would then have sufficient time to do a good job. I've seen this happen where people get pushed into doing too much, and doing things they aren't good at, and then they start looking like poor workers.. well what do you expect? I realize you are probably not his boss so I don't know how you'd approach this. But there could be a very positive way of handling this. Or, maybe he's just lazy and doesn't care. Talk to him with a positive approach.

    --
    -- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
  30. Learn from him by Fnkmaster · · Score: 5, Insightful

    I like working with people who get the job done, quickly and simply, and focus on functional completeness and minimizing defects. People who I can count on to tell them "here's what it needs to do" and I can know that I'll get something out that does what we need.

    I don't like working with people who obsess about every line of code they produce and who worry more about documenting things internally than about getting working code out the door.

    Sure, given the choice I prefer clean, maintainable code to shitty, sloppy code. But complaining about diagram quality in internal documentation? Unless you are making components for NASA or MRI machines, I think you're obsessing about things that don't matter that much.

    The reason the guy in question is senior to you is because management likes people they can count on to get shit done.

    1. Re:Learn from him by Anonymous Coward · · Score: 0

      The reason the guy in question is senior to you is because management likes people they can count on to get shit done.

      That or he happened to born earlier...

    2. Re:Learn from him by Anonymous Coward · · Score: 0

      I like working with people who get the job done, quickly and simply, and focus on functional completeness and minimizing defects

      Do you like working with people that get the job done quickly by ignoring functionality and defects?
      How about when you're working on mission critical systems in Aerospace?

      What then?

    3. Re:Learn from him by Kjella · · Score: 1

      The reason the guy in question is senior to you is because management likes people they can count on to get shit done.

      As long as he's not the kind of developer I'd call the arsonist/firefighter:

      1. Create ugly kludge, deliver fast results, management loves you.
      2. Minor patch breaks kludge, other developers get blamed for the breakage, management hates them
      3. Put out fire with an even uglier kludge, big hero points, management loves you even more

      From the management perspective they look great, but as a coworker when management says "solving all our problems" you think "...and causing most of them too". You rarely get the credit you deserve for writing rock solid code that never makes the headlines.

      --
      Live today, because you never know what tomorrow brings
    4. Re:Learn from him by Anonymous Coward · · Score: 0

      How about the senior developer that takes over your project while you're off on something else. When you come back he's renamed the project, commented out 2/3rd the capabilities, swapped the the IO terminology so that inputs are now outputs (at least in half the places, he didn't quite get done with that change). And he says he's been busy at it for a month. How about that guy?

    5. Re:Learn from him by Anonymous Coward · · Score: 0

      As the guy who has to support the stuff they are pushing out the door without ever finishing any decent documentation for I would like to say "No! Finish that documentation and do it right. I'm tired of reverse engineering your stuff to write documentation so I can support it, and why is this feature missing. It's in your documentation."

    6. Re:Learn from him by Anonymous Coward · · Score: 0

      Bingo. I've written code for 35 years. I still do it on my own time for fun. But at work, as a manager, I rarely look at my developers' code. Frankly, how people write code is important, but not important enough (in an of itself) for me to pay attention to. What I care about is who I can depend on to deliver, who I can count on to put out fires, who I can trust to deal with a client and walk away with a clear understanding of what we need to do and how we should do it, while leaving the client confident that they have been listened to and that their problem will be solved.

      People around me are rewarded for solving problems and delivering results, not for writing clean crisp code, although that might be one of many means toward that end.

    7. Re:Learn from him by Common+Joe · · Score: 1

      I'm a person who's worked on a huge system that dealt with multiple millions of dollars every day. I started on that team about 3 or 4 years after it went live. On that system, there was no one there that understood how the system started from start to finish. I'm not talking details. I'm talking about generalities. No one could trace definitively say "we press the start button here" and then trace where the program got all of its data, how it processed it, and where the outputs were. No one knew where all of the programs even ran on which servers. The documentation was so bad that when the original developers (external contractors) left, I hoped and prayed it wouldn't fail because I knew no one would be able to pick up the pieces. It took another 3 to 4 years before we had enough internal experience as a team to say that we had a good handle on the system -- which servers executed what and where the data came and went. There is still no good documentation. What happens when those one or two critical people leave and no one knows how the system runs again? What if they are sick when there is a bad day at the office? That system wasn't exactly trivial.

  31. Too busy? Offer help. by Anonymous Coward · · Score: 0

    "Much of this is because he is so busy and just wants to get everything out the door."

    If he's busy and if that's the main cause of him being sloppy, you should be asking yourself as a team how to improve things.

  32. Lucky you. by JustAnotherIdiot · · Score: 1

    It works and gets the job done

    In order for my coworkers to make anything that works, the planets have to align

    --
    What do I know, I'm just an idiot, right?
    1. Re:Lucky you. by Anonymous Coward · · Score: 0

      It works and gets the job done

      In order for my coworkers to make anything that works, the planets have to align

      In other words your co-workers hail from India. I pity you.

  33. What are you even using? by Anonymous Coward · · Score: 0

    1) Diagrams that should be spread over five or six pages are crammed onto one ->
    First off, you have programming diagrams on pages. Why not use a text based language like actual programmers?

    2) naming is totally inconsistent ->
    right click, refactor, enter better name

    3) arrows point the wrong way ->
    Again with the visual programming language, why?

  34. Learn by nazsco · · Score: 2

    Lear all you can. how can he do less work and not create bugs? (if he creates bugs, stop fixing his work and let the problem fix itself)

    All in all, he is you tomorrow. You will get like him. Maybe there's a reason for that. maybe it's just indifference that comes with age. either way, i'd recomend you to learn his ways and start sooner, for as soon as you start that, you will get better pay, more respect, and a youger idiot to clean up after you.

    1. Re:Learn by AmiMoJo · · Score: 1

      What if you are invested in the product yourself though? Just saying "let it fail, watch him crash and burn" isn't a very good option.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
  35. Lemmeguess.... by Anonymous Coward · · Score: 0

    He's a senior system admin with years to decades over you, you're an entrylevel CS-Bachelor and/or MBA, so you do rightfully ask for your place in the universe and tell everyone that they are doing their job the wrong way...?

    If he has seniority, you can eighter stuff it, or complain to your/his boss. Best case scenario, you're getting fired. Worst case, he's getting fired (and you're gonna wish it would have been you)...

  36. work with him by Anonymous Coward · · Score: 0

    Ask him if he minds that you tidy things up after him... Let him know why comments, variable names, and functions should be organized the way you see..
    Get him on board with your style and maybe he'll adopt it. Use the critique sandwich-- praise that it was written quickly and under deadline, then suggest some changes, then praise that it worked well to begin with. Maybe he will get the point of the style changes when.. Good programmers can adapt to new styles that make sense. Of course, if you are nitpicking (you like "index" and he likes "x") then you should back off until you find a compromise.

    - Brad

    1. Re:work with him by pigiron · · Score: 1

      If it ain't broke don't "fix" it. Documentation is ALWAYS out of date.

    2. Re:work with him by pigiron · · Score: 1

      Always use the letters i,j,k, and l as loop counters! These were always automatically typed as ints by the Fortran compiler back in 1965. It's a tradition worth keeping.

      Death to Hungarian notation! In fact, Death to any capital letters at all in variable names!

  37. Stand Your Ground by Anonymous Coward · · Score: 0

    Be blunt with him without being confrontational. Don't back down. You'll earn his respect, and probably the respect of others. Conversely, you may get ostracized and/or fired. Either way, you'll come out ahead.

  38. had an intern try to clean up my code... by schlachter · · Score: 4, Informative

    I had an intern try to optimize and clean up my code on his own initiative. It was pretty irritating.

    It was an internal demo and I had written the code quick and simple to get the job done. It didn't need to be clean or optimal. I wanted the intern to spend his time doing better things.

    OTOH, if I had tasked him to clean up my code and optimize, I might have been happy with his work.

    --
    My God can beat up your God. Just kidding...don't take offense. I know there's no God.
    1. Re:had an intern try to clean up my code... by Nerdfest · · Score: 5, Insightful

      I've found that those 'internal demos' pretty much always become production systems if they work. There is rarely such a thing as 'throw-away code', so I've stopped writing stuff like there is.

    2. Re:had an intern try to clean up my code... by Kjella · · Score: 3, Insightful

      I had an intern try to optimize and clean up my code on his own initiative. It was pretty irritating. (...) OTOH, if I had tasked him to clean up my code and optimize, I might have been happy with his work.

      You have an intern that can actually clean and optimize your code and you're complaining? Clearly he feels undervalued and wanted to show his skills or is just eager to learn and want to sharpen his skills, in either case just give him a proper assignment and be grateful.

      --
      Live today, because you never know what tomorrow brings
    3. Re:had an intern try to clean up my code... by jgrahn · · Score: 1

      I had an intern try to optimize and clean up my code on his own initiative. It was pretty irritating. It was an internal demo and I had written the code quick and simple to get the job done. It didn't need to be clean or optimal. I wanted the intern to spend his time doing better things. OTOH, if I had tasked him to clean up my code and optimize, I might have been happy with his work.

      I've experienced that too. Or more generally: designing some piece of software by myself according to some principles, working on it for a while, and then guy B steps in to help -- but B can only work according to principles *he's* used to. Stress levels rise.

      Worse, I've probably been guy B myself many times. When you step into a new code base it *is* hard to get used to the style and the mindset (even writing Unix C code can be done in a surprising number of ways, and it seems everyone chooses his own), and it is hard to focus on what's important (e.g. often I find the most obviously buggy, messy or suboptimal module is one which doesn't actually need fixing).

    4. Re:had an intern try to clean up my code... by Anonymous Coward · · Score: 0

      So instead of addressing the real issue (prototype code used in production) you've decided to cripple your prototyping abilities by writing all proof-of-concept code to production quality?

      Aaaand there's the passive agressive approach again. One solution requires talking to someone about an issue. One can be silently implemented on one's own.

      The only possible outcome is that you won't get given fun proof-of-concept work any more. That's the problem with the passive-agressive approach. Nobody really *knows* you have a problem, so they assume the problem is you - and the sad thing is, it is.

    5. Re:had an intern try to clean up my code... by Anonymous Coward · · Score: 0

      Certainly it can't be your abuse of psycho-babble and the generally rotten attitude of leaders. Can't be.

      It was bad luck they had burning batteries on the 787. Bad luck Rollys-Royce almost killed hundreds of people by means of an exploding turbine.

      If everybody would be an obedient slave and believe in all the shiny powerpoint slides, all would be good ! Forget reality, start to BELIEVE !

  39. This is a clash of styles. by doubledown00 · · Score: 2

    Nowhere in the parent post do I read that there are problems with his code not working. In fact the phrase "far from elegant" really does tell the tale. The true "problem" here is obvious: The product isn't being done the way *you* think it should. It is admirable that you have these standards, but in the "real world" one has to work on a continum between time and budget.

    Also, the author complains that 1) the code is not up to his stanadards, yet 2) he doesn't feel he should have to make it so. If you wish for the coding to be done your way, then you will need to invest the extra time to do it. Otherwise accept that "functional = good enough" and drive on.

  40. Leave him alone. by gurps_npc · · Score: 1
    The work gets done, and is good enough.

    Anything else is your bosses concern, not yours.

    Worse, any time you use trying to fix him directly and negatively affects his morale.

    Sometimes it's better not to know what goes into the sausage.

    --
    excitingthingstodo.blogspot.com
  41. What does it affect? by Anonymous Coward · · Score: 0

    The question it all boils down to is: What does it affect? If it negatively impacts the product or presents a significant risk, then it is worth addressing. If it's just not lining up with your coding style, then it's something that should be left alone. I have a few co-workers whose database queries look horribly sloppy to me, but they work without issue or slowness so it's not a problem. I could spend my time actually taking care of my own workload, or I could spend my time on making my co-workers' work look like mine. Sometimes it's better just to let someone be a bit sloppy. Conversely, sometimes it isn't. The trick is to find the line between the two. Also, sometimes people need to learn from their own mistakes, as they are too stubborn to listen to experienced advice. Perhaps letting him fail is what is needed.

  42. The usual by bickerdyke · · Score: 1

    Recommend him for promotion - to another team.

    --
    bickerdyke
  43. You're doing the right thing by ErichTheRed · · Score: 1

    I'm a systems integration person, so I have actual real-world experience getting one steaming turd of enterprise software to coexist with another one. Even if it's just coding style, and nothing your team does shows up in the final product released to customers, sloppy work means that your customers are going to have longer waits for bug fixes in the future. They're also going to be cursing your company because your products are a pain in the butt to install, require 100% of a high-end server's resources for a simple client/server application, and other reasons. When was the last time you looked at an Oracle or CA or SAP product and said, "Wow, that product is amazing! Clear documentation, easy installation and plays nice with other things on the same system!" Yeah, I thought I knew the answer. :-)

    One of the things that really gets me is over-reliance on the infinite hardware resource fairy to get an application to work. I've worked with tons of very expensive software that utilizes some of the worst, most inefficient SQL queries and procedures I've seen. The solution is always "add memory" or "buy a dedicated server." Admittedly, we're far from the days of hand-optimized assembler in most systems, but just reasonable hardware utilization still seems to be too much to ask.

    So from a customer perspective, yes, you're doing the right thing by recognizing the problem. How to fix it is a very hard problem and depends on a lot of things. From your question it sounds like poor project management and resource allocation is a big part of this. Well, welcome to my world. :-) Project managers are an interesting lot. The best ones actually did the work previously and know how hard it is to estimate a software project. The worst take the PMP course and assume you're working on a construction project. I wish IT projects were like construction projects -- there's zero uncertainty in most of those. It takes X workers Y hours to drywall Z m^2 of studs. It takes X workers Y hours to rough in plumbing. Etc. Software is a whole different bag -- most construction projects don't get halfway down the track and require that you rip the whole thing down and start over, or even that you rip the last 3 floors out.

    I guess I would try to see if the PMs on your project are the type that can be reasoned with and have a clue about what you're doing. That's going to be the way to solve the problem -- getting the pressure off the other guy so he can deliver decent stuff. I've rolled out stuff I hate to make artificial deadlines as well -- it's unprofessional and I hate doing it.

  44. The Therapist's Couch by Anonymous Coward · · Score: 0

    "Ask Slashdot" should really be called "The Therapist's Couch", because that's what it always looks like. It's always some hapless, meek person who just can't seem to manage their daily job or the social interactions there, or the immense stress from seeing that someone is doing things in a different way, etc.

  45. Code Reviews? by bidule · · Score: 0

    You don't do code reviews?

    Speak with him, ask him if it's okay to fix the little inconsequential things he left behind. Say it's to make things easier for you, so you understand what he did and can fix minor issues without bothering him. Make it so he's the one helping you.

    Then come up with a code review, tell him you fixed that link that was backward and to confirm what you did wasn't wrong. Ask him why he didn't write this code that way, if there are any reason. Don't butt heads.

    Never frame it as him evolving, but as him making an extra effort to simplify your life, if only by allowing you to adjust his work.

    --
    ID: the nose did not occur naturally, how would we wear glasses otherwise? (apologies to Voltaire)
  46. Man up by lintmint · · Score: 1

    KInd of obvious isn't it?
    Quit being a wus and address him about it or start circulating your resume and run away.

  47. Re:Different people have different programming sty by Anonymous Coward · · Score: 0

    Perhaps you shouldn't be less concerned that other people have different ways of working than your own.

    So he should be more concerned about the different ways.

  48. Re:Visual Studio with ReSharper by bakaohki · · Score: 0

    Nice try, shill.

    --
    delete me
  49. Love your colleague. by galexand · · Score: 5, Interesting

    My boss is like that, he abuses cut-and-paste to the exclusion of proper factoring. The code is sometimes comical. He does it for the exact same reason, he wants to move on to testing/fixing/improving, rather than spending a lot of time dreaming-about-how-it-ought-to-be.

    Sometimes, maybe 3 or 4 times in the decade that I've worked with him, I have needed to do a major re-factoring just to be able to shoe-horn in a new feature. He is glad I'm here to do that, because he doesn't enjoy re-factoring. I'm glad he's there to do his part, though, because a lot of times he can throw out a big *working* piece of garbage in just a few days, while I would still be arguing with myself about where to start.

    The machine works. Therefore, I cannot point to any component that is broken. The machine works.

    So I enjoy this, I look at all of the numerous insurmountable customer problems that we have dispatched over the years together, and it is beautiful to me. I love my boss.

    That's my advice to you: learn to love this guy, to think of his foolish shortcuts and disorder as unique tools that a unique person uses to solve the problems in front of him. Consider it "local flavor." If you're being hauled up in front of management and they're blaming you for his bugs, that's one thing. But if the machine works, learn to love it. If you can't love it, quit programming and go into a less creative field.

    1. Re:Love your colleague. by zwarte+piet · · Score: 1

      Yeah there's guys that get the job done and keep the customer happy and there's guys to clean up the details and the bugs before anyone notices. Work together. I'm doing it like that. Neither of us having a problem with it. Each our own forte.

    2. Re:Love your colleague. by Anonymous Coward · · Score: 0

      That's the best Slashdot post I've read this decade.

  50. Pair Programming by Anonymous Coward · · Score: 0

    Pair programming is the answer. Work collaboratively. That way you can clean up mistakes together before they get checked in.

  51. Re:yes, submit to his supervisor by Score+Whore · · Score: 2

    "worthless" seniors created the company and keep it in business and likely solve the vast majority of the issues that come up. might want to keep that in mind.

    if you don't believe this take a look at open source projects. the ones with longevity (linux, xorg, mysql, mozilla) are run and carried by "worthless" seniors.

  52. Passive agressive troll by gnupun · · Score: 1
    OP is a troll or passive aggressive against his coworker. Most in-house software I've seen is sub-par but it gets the job done. You're only going to see elegant in code in popular commercial software (and even some of that is not quite elegant).

    Elegance has long term benefits but high upfront costs in quality of programmer, time and effort... things most managers don't seem to value beyond a certain threshold.

  53. Insist delegate coding changes to you by kawabago · · Score: 1

    Insist this senior doesn't have time to do the coding himself, let you handle all of it. Insist it will be more efficient if you code the changes, that should sway him.

  54. Focus on the significant by Arawak · · Score: 1

    ...and not the trivial.

    Presumably you are developing something to make money. You need to learn where the balance between purity and practicality lies. In the real world there are always tradeoffs and experience helps you learn which which ones to make.

    My guess is that your senior co-worker is probably closer to the correct balance than you are.

  55. What is the customer paying for? by Anonymous Coward · · Score: 0

    There are projects that are "one-off", to scratch an itch if you will. The customer in that case is not paying for internal quality therefore a "good enough" strategy is optimal. If the customer is paying for a long-term project then your collegue is pushing the real cost further ahead (which in some cases can also be a good strategy - i.e. needing to score early victories).

    I used to be a perfectionist to the point that I never considered a non-trivial piece of code "done" (the joke with my collegues then was that I wouldn't be satisfied till I had an object model of the universe down to the subatomic level and build every application up from there). Back then I was even dangerous for a project's success. Later in life I found I had to teach myself to value "good enough", performance and simplicity instead of overengineered object models with abstraction layers over abstraction layers in order to fit some pattern or whatnot. As always the truth is somewhere in between.

  56. Tell him by Murdoch5 · · Score: 1

    I would be honest, tell him his work sucks. I had a similar issue with a classmate last year, I couldn't use any of his code or hardware. Every time I hinted at his work being bad but in a nice way he laughed and disregarded it. Finally after my prof saw his work and asked me to explain it to him I couldn't, I called my co student aside before he left and was blunt. "Your work is worse then a child playing in a coloring book, clean it up or get off my project", he yelled at me and walked away, the next week when he handed his work to me it was 300% better and by the end of the term it was finally decent. I would just be honest.

    1. Re:Tell him by Ritchie70 · · Score: 1

      That's fine in school. You and your classmate were peers with a comparatively objective "supervisor" (professor.)

      This is the junior guy telling the senior guy his work is sub-par. Not likely to go as well.

      --
      The preferred solution is to not have a problem.
    2. Re:Tell him by Murdoch5 · · Score: 1

      I wouldn't have second thoughts about telling anyone I work with the truth and in the same respect I would want them to tell me the truth. I don't care if I'm talking to an employee who's been working at a company for 50 years, if your work is bad it's bad and you need to hear it. Nothing gets resolved when everyone is nice and not to polite to just tell people what they think. This could be just me but I think a team works better in school and real life when coworkers can tell each other whats on there mind, if my coworker wanted to tell me where to stick my work then I would ask why and see what I can do to fix the the problem.

  57. Question Answered Itself, I think by Anonymous Coward · · Score: 0

    >> I don't want to create bad feelings, as I have to work with him. Am I obsessing over small stuff, or is this kind of internal quality worth worrying about?"

    From your description and question, certainly sounds like (borderline) obsession. I personally don't have enough time to do all of MY work, let alone 'fix' someone else's. If I do, then it's not because I have a bunch of free-time (so it must be *really* important to me somehow). If it is because I have a bunch of free-time, I would see what I can do to offload something from the busy-old-guy-who-just-needs-to-get stuff-the-door. That, or I might want to be spiffing up my resume (with something other than obsessed over someone else's non-elegant [IMO] code).

    There's a difference between 'concern' and 'worry'. If you're concerned, it's something you see that may be an issue (e.g. data loss, train wreck or security breach) ... BUT you *can* and are trying to affect the outcome. If it's not in your court or your direct responsibility (i.e. someone else's work), then you can 'worry' about it, but you have no real way to affect it.

    I would err on the side of 'concern' (things that are your actual responsibility/that you can do something about) and keeping a good relationship with someone else at work. The quota for crappy relationships at workplaces has long since been filled.

  58. Just Quit. by Narcocide · · Score: 1

    Boycott stupidity.

  59. FTFY: Rewritten the question correctly... by maroberts · · Score: 5, Funny
    I'm working on a new product with one of the more junior guys at our company. To be blunt: his work is sloppy. Because he obsesses over details, whilst his work is elegant and has few mistakes, he never completes any work. It never gets to the stage where It works and gets the job done, but there are numerous incomplete (some might say major) sections everywhere.

    Diagrams that could fit in one page are spread over five or six pages, he's anal over naming convention and minor details like whether arrows point the right way (whether it affects functionality or not) and so forth. He spends lots of time refactoring code instead of making progress and never gets anything out of the door, costing us money. What is the best way to handle this? Whenever I make necessary improvements he goes over my changes with a fine toothcomb, instead of getting on with his own work he spent a lot of time refactoring some of mine. The annoying little tyke then submits bug reports and feature requests, but which my fellow senior peole read with condescending amusement. I don't want to create bad feelings, as I have to work with him. Is he obsessing over small stuff, and should he see the Bigger Picture"

    --

    Donte Alistair Anderson Roberts - hi son!
    Karma: Chameleon

    1. Re:FTFY: Rewritten the question correctly... by Lumpy · · Score: 1

      This.

      Typically those that whine about "sloppy" are newbies fresh out of college.

      --
      Do not look at laser with remaining good eye.
    2. Re:FTFY: Rewritten the question correctly... by EmagGeek · · Score: 1

      L to the OL!

    3. Re:FTFY: Rewritten the question correctly... by Anonymous Coward · · Score: 0

      I'm not the poster, but I'm a software engineer with 5 years experience working in the Aerospace industry on mission critical systems. And I'd complain about the sloppiness of a colleagues work.

      From forgetting to commit things, leaving half-implemented broken versions in the trunk, leaving the default class names in visual studio (Form1.cs Form2.cs), to playing around with incrementing and decrementing index counters in while loops. I can forgive him for making a C#.NET project in an entirely procedural way, I mean, we're both C guys normally working on embedded system, but when his functions run on for 300 lines going 12 tabs deep where he really could have broken it into 4 functions, that's a paddlin. He even had a second set of variable declarations halfway through. When he preaches and rants about how no one follows the process around here, and then throws it all out the window the second he has a deadline, that's a paddlin. Having to rope him into a code review and then having all the coding issues ignored while he charges on with the release... and so on.

      Sure, typically people whining about sloppy code haven't met the real world. But sometimes there are bad coders out there with "sr." tacked on the end of their title. He calls the shots simply because he's 5 years older than me and no one in management has any coding experience.

    4. Re:FTFY: Rewritten the question correctly... by Lumpy · · Score: 1

      "I'm a software engineer with 5 years experience working in the Aerospace industry on mission critical systems."

      What you work on is so different than commercial software it might as well be comparing a Baker to an Astronaut.

      What you do is program for perfection with zero failures because someone will DIE. in commercial software we program for a date. Dont care if it's not ready and it can kill people, program faster, stop debugging, and ship the damn thing. Yes we know that this is a mess, ship it and start on the nest product.

      You work in a utopia that most programmers would kill for. The rest of us work in sweatshops where manager set deadlines that have no basis in reality and we have to half ass it to meet the promises made by someone that has no business making promises.

      --
      Do not look at laser with remaining good eye.
  60. UML - designer not programmer by ZombieBraintrust · · Score: 1

    Could be a system that generates code based on UML diagrams. Such as IBM Rational Software Architect. Basic idea is to flowchart important stuff. Get it approved by buisness. Then pass the generated code onto junior developers. Designed more for waterfall projects than agile projects.

    1. Re:UML - designer not programmer by K.+S.+Kyosuke · · Score: 1

      Basic idea is to flowchart important stuff. Get it approved by buisness. Then pass the generated code onto junior developers.

      Generating code automagically = huge win. We've been doing it since the appearance of first assembly language, first adding mnemonics for opcodes, then adding expression translators and register allocators (FORTRAN), then adding lexical scope, subroutine prologues and epilogues (Algol), all the way up to ICs, PICs, open-coded allocators etc. Editing the results by hand = even huger fail. Why do we have the toolchain again? Does anyone compile .c files into gas assembly only to edit them by hand? I see a horrible problem with the workflow you seem to be suggesting: it's idiotic to begin with.

      --
      Ezekiel 23:20
  61. Subsequent changes in user requirements by tepples · · Score: 1

    You get paid by what works not how it looks under the hood.

    What you say is true of a product that meets all present and future user requirements. But if a product looks good under the hood, it may prove easier to adapt to subsequent changes in user requirements.

    1. Re:Subsequent changes in user requirements by Nerdfest · · Score: 1

      Look at Adobe. Their Flash code base 'got the job done'.

    2. Re:Subsequent changes in user requirements by KZigurs · · Score: 1

      And if it wasn't for that pesky Apple they would still be going golden.

    3. Re:Subsequent changes in user requirements by coyote_oww · · Score: 4, Insightful

      Look at Adobe. Their Flash code base 'got the job done'.

      and people used it for years. We can complain, but they beat competitors by getting there first (rather than pretty under the hood).

    4. Re:Subsequent changes in user requirements by Nerdfest · · Score: 2

      People would probably still be using if it were fast, efficient, and secure. Those three things are tend to be a lot easier to achieve with a highly maintainable code base.

    5. Re:Subsequent changes in user requirements by AmiMoJo · · Score: 1

      Surely it depends what market you are in. If failures and poor security are acceptable to your customers then fine, if not...

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    6. Re:Subsequent changes in user requirements by Anonymous Coward · · Score: 0

      What you say is true of a product that meets all present and future user requirements. But if a product looks good under the hood, it may prove easier to adapt to subsequent changes in user requirements.

      Which is why if you're an engineer with any experience that's worth a damn, you build your system to be flexible and extensible - this is the precise reason why senior engineers with design experience are so valuable - they understand how (and where) to build in room for change. You don't try to predict every changing requirement the user will ever have at 1.0, you write it "good enough" today, and extend it when the requirements change.

      In many cases, you'll have multiple releases of a product mapped out anyway, and you can keep those future releases in mind with your design... but you damn sure shouldn't be delaying v1.2 because it makes your code look prettier to implement features planned for v5.0 right now. In my experience, about 75% of the time, that code supporting the "possible 5.0" features never sees the light of day because by the time you get to 5.0, your requirements and the nature of the product have drifted considerably - such that all the 'extra plumbing' you did back in v1.2 is just a bunch of old shitty code you need to rip out and replace, anyway.

    7. Re:Subsequent changes in user requirements by tepples · · Score: 1

      you build your system to be flexible and extensible

      Hence an engineer's drive to refactor a colleague's sloppy work "to be flexible and extensible".

      features planned for v5.0

      You're right about there being such a thing as too much planning. Refactoring to add plumbing for v2.0 is probably more likely to pay off than doing so for v5.0.

    8. Re:Subsequent changes in user requirements by Anonymous Coward · · Score: 0

      Hence an engineer's drive to refactor a colleague's sloppy work "to be flexible and extensible".

      This assumes facts not in evidence. All we've been told by the questioner is that "the documents don't conform to the standards that I think they should, and don't always match up with the actual software."

      If you search on "Questioner" in this thread, you'll see that he actually admits that the guy wrote software that "eventually worked really well" - while in the summary he mentions that "some might" argue his complaints are trivial. If "some might," then "some already have," and he's provided us with nothing that would contradict that assessment.

      So what we have:
      1) A junior engineer whining that a senior guy "is sloppy;"
      2) A junior engineer says that the sloppiness is mostly wrt to documentation-matching-code, and that the issues are arguably trivial;
      3) A junior engineer says "sure the guy's code eventually worked really well!"

      Which, in your industry experience, is more likely? Junior guy thinks he's hot shit because he took a Java class, tries to tell all the guys at his new job how to do their work because he assumes they're dumb, and got all bent out of shape when senior guy told him to stop obsessing over trivial details; Senior guy is completely incompetent, but somehow magically manages to keep a job, and despite all his sloppiness, "eventually ship really good" production code?

      My money's on the first one. And I'm not a betting man.

  62. Kill him by bakaohki · · Score: 0

    with fire. Or just get over it.

    --
    delete me
  63. Somewhere out there ... by BaronAaron · · Score: 3, Funny

    There is a senior developer submitting a Ask Slashdot article about what to do with a know-it-all junior developer wasting time "refactoring" all of his code.

    1. Re:Somewhere out there ... by gus+goose · · Score: 1

      There is a senior developer submitting a Ask Slashdot article about what to do with a know-it-all junior developer wasting time "refactoring" all of his code.

      http://ask.slashdot.org/story/13/01/03/2255204/ask-slashdot-how-to-react-to-coworker-who-says-my-code-is-bad

      no exceptions

      --
      .. if only.
  64. How to phrase the change log entry by tepples · · Score: 1

    However, if it's not buggy and you are refactoring because it's not "elegant" that's much harder to justify or document.

    It's all in how you phrase the change log entry: "Improved understandability of the code to allow easier implementation of future changes to user requirements."

    1. Re:How to phrase the change log entry by adisakp · · Score: 1

      However, if it's not buggy and you are refactoring because it's not "elegant" that's much harder to justify or document.

      It's all in how you phrase the change log entry: "Improved understandability of the code to allow easier implementation of future changes to user requirements."

      Still, spending a lot of time refactoring code that is functioning correctly and as he claims "works and gets the job done" is time that he is not working on other tasks. Also, he notes that the other employee is extremely productive at just getting code done that actually works while he is spending lots of time refactoring this working code and then complaining about his "wasted time".

      I've seen plenty of coding styles and even if it's a little ugly but works, it's often better to do your own tasks and focus on your own productivity than cleaning up code that already works.

  65. Joel said it best by Anonymous Coward · · Score: 0

    "Shipping is a feature", and IIRC he said it was the most important feature. Ordinarily I wouldn't agree that seniors are better; but in this case it's true. Your pretty diagrams and consistent naming convention will be ignored while customers use the actual product. If you want to write stuff that nobody reads, maybe you should be writing BBQ grill assembly instructions for guys or something...

  66. You have the answer yourself by Anonymous Coward · · Score: 0

    Am I obsessing over small stuff, or is this kind of internal quality worth worrying about?

    Well, are you? Are you able to explain to yourself why this is a problem for the company? Does the code cause quality defects? Are the bits you commonly extend hard to extend?

    If you can't answer these questions, you are either a prima donna or whining. From the reasons your post gives ("inelegant", "large diagram", and on the other hand "inconsistent", documentation errors) you look like you are mixing your makeup tips with your sound engineering. That might be one reason why you are not being listened to.

  67. Is that you Nicholas? by Anonymous Coward · · Score: 0

    Whether it is or not learn to enjoy working working with people that have different development styles as you will, invariably, end up learning something from it and both be better developers in the long run. Beyond that talk about what bothers you and why, chances are he'll be open to constructive criticism and/or be able to tell you why he is doing thing a certain way.

  68. Let's break down the problem a bit. by meerling · · Score: 1

    "It works and gets the job done"
    Yay! Always a vitally important thing to all projects.

    "but it's far from elegant"
    Define elegant. Also, is elegant a project requirement, or asset, or is it just a personal affection?

    "numerous little (some might say trivial) mistakes everywhere"
    Those are a problem. Mistakes are always problems, but they do occur.

    "Diagrams that should be spread over five or six pages are crammed onto one, naming is totally inconsistent, and so forth"
    If it is within your power, have a documenting standards and policies instituted and enforced for everyone.
    (I removed the "arrows point the wrong way but doesn't affect anything" because that's an error thing.)

    "Much of this is because he is so busy and just wants to get everything out the door."
    Out the door is what everyone wants, but if the issue is because he has too high of a workload, either redistribute the workload, get more help so you can redistribute, or obtain more time for the project. It's well known that too much work in too short of a time with insufficient resources results in errors and a net loss of productivity. You can have it cheap, good, or fast, but you can't have all three.

    "What is the best way to handle this?"
    Not enough information to properly answer this, but please see previous comments and questions.

    "I spent a lot of time refactoring some of it"
    Is that necessary, or is it your personal choice? If it's necessary, there is a problem. If it's your personal choice, find out why are feel you need to do that, and re-assess the decisions you've been making. I know, it sucks, but it may have to be done when.

    "as soon as he makes any changes it needs doing again and I have my own work to be getting on with."
    Ok, earlier you said you don't like how he does it, but it works as intended and required. So why are you redoing it again? Does it not work, is it below the required standards, what? You need to justify why you are wasting time doing someone elses work. Are you just covering for him, or is there another reason? You really have to try and think about this one.

    "I submit bug reports and feature requests, but they are ignored."
    I'm sorry, but welcome to the modern practices of "if it's good enough, get it out the door and we'll fix it later, if we have to" attitude that infests most companies.anymore. And don't worry about the fact that when the customer base freaks out over a serous bug that was found and ignored by the higher ups during development, they will undoubtedly lay the blame on you, despite all the documents to the contrary. (Find a way to legally keep a copy of the bug reports or submissions where you can access them if some kind of legal repercussions occur due to such circumstances.)

  69. We can help by Hoi+Polloi · · Score: 1

    Just post your work and we'll clean it up for you

    --
    It is by the juice of the coffee bean that thoughts acquire speed, the teeth acquire stains. The stains become a warning
  70. Report the unfollowed bugs by loufoque · · Score: 1

    Simply report at your meetings with your manager that a lot of bugs are appearing, being assigned to him and being ignored.
    There is nothing more annoying than someone that ignores bug reports or that doesn't fix problems he just introduced when they are pointed out.

  71. This? Slashdot front page? by h00manist · · Score: 2

    How on earth did that happen?

    --
    Build your own energy sources from scratch. http://otherpower.com/
    1. Re:This? Slashdot front page? by Roger+W+Moore · · Score: 1

      Perhaps Slashdot has some management issues they need to sort out! ;-)

    2. Re:This? Slashdot front page? by OhSoLaMeow · · Score: 1

      Perhaps Slashdot is the company this guy works for. Hmmmm

      --
      They can take my LifeAlert pendant when they pry it from my cold dead fingers.
    3. Re:This? Slashdot front page? by Anonymous Coward · · Score: 0

      the editors are just so busy and just want to get everything out the door.

  72. People like the OP are horrible by Anonymous Coward · · Score: 0

    If the code is working and being adequately maintained, there is no issue. Pull your head out of the ass of academia and get with the program son. Charlie don't surf

  73. We need to see the code by Anonymous Coward · · Score: 0

    When these stories appear (and they're getting more frequent) we need to see examples of what is being done and an explanation of why it's so bad. I once had someone complain about the flowcharts I drew, because the arrow heads were in the middle of a line connecting two boxes rather than directly against the terminal box.

  74. Its obvious. .. by Anonymous Coward · · Score: 0

    I think you aren't challenging him enough, he sounds like a real straight shooter with middle management written all over him.

  75. Welcome to your job and the perks of being senior by Anonymous Coward · · Score: 0

    Sounds like you are the new guy. Chances are that part of your job is to clean up his work. He is about getting it done, as it should be.

    I do the same thing, I setup the backend servers, networking, design the system etc. But when it comes to plugging in the rest of the cables and making the network diagram pretty I have other engineers that take care of this.

  76. Re:Visual Studio with ReSharper by ttucker · · Score: 0

    Visual Studio with a refactoring plugin (for example ReSharper) can mitigate this problem a lot. You should get licenses to the both and I can guarantee that working with your colleague will be much easier from that point on.

    We are ignoring a good point here though, a code re-format tool can mitigate the rage associated with many code format styles.

  77. Try asking his opinion by SirGarlon · · Score: 1

    Next time you want to refactor or "fix" something he's produced, ask his opinion of your proposed change. It's possible you are doing him and your team a favor, and it's possible you are wasting your time on pointless re-work and acting like a know-it-all. Find out which.

    --
    [Sir Garlon] is the marvellest knight that is now living, for he destroyeth many good knights, for he goeth invisible.
  78. The old saying... by Anonymous Coward · · Score: 0

    It works and gets the job done

    If it's stupid but it works, then it isn't stupid.

    Get over yourself, OP.

  79. Irritating junior developer by Anonymous Coward · · Score: 0

    You sound like an irritating little shit more concerned with your interpretation of ivory tower BS than someone who actually gets work done, thus helping your employer. My solution would be to fire you.

  80. Stop being OCD by Anonymous Coward · · Score: 0

    Remember, hand writing is messy .. must be a DOCTOR's note.

    looks like you are not an engineer or technical person.
    pie charts, colors and ppt are reserved for VPs and Directors.
    you complaining here, so you are not a VP or Director! are you a tech writer or what?

    Most Technical ppl care for data and careless how is it presented. ( except few OCDs ).

    1. Re:STOP being OCD by Anonymous Coward · · Score: 0

      OCD hahaha :D

  81. BEST OPTIONs by Anonymous Coward · · Score: 0

    1) move to the UK and work for some IT services company where they care about this stuff. Hope they dont go bankrupt (they all do!)
    2) complain to his boss so you can get fired and stop worrying about it
    3) drop the attitude and do some work

  82. Cover your ass... by Nukky+Cisbu · · Score: 1
    ...and make sure that if higher ups start to ask about these mistakes, you're not made a scapegoat.

    Said with 10+ years in a supervisory position, with my own superiors to deal with too, I know it's a careful path you have to walk when documenting someone in a senior position screwing up. And it's got to be stuff that's actually going to affect the bottom line, like missed deadlines or quality control that loses customers. Otherwise, you'll have to just put up and shut up.

    If those feature requests and bug reports are encouraged within your company, keep doing them with a degree of discresion (ie - skip the trivial stuff), and keep copies somewhere safe in a CYA file.

  83. Re:Visual Studio with ReSharper by Anonymous Coward · · Score: 0

    Did you actually mean Visio?

  84. The last thing you want to do by JustNiz · · Score: 1

    The last thing you want to do is cover for him without letting your boss know that's where a percentage of your time is going, otherwise you will appear to be slow/unproductive on your own work.

    Let your boss know how much effort you are putting into catching his mistakes.

    It might not be a bad idea to make sure they know by letting a few of the bigger ones slip through, preferably timed to coincide with the time you take vacation and they will notice, so they actually feel the pain of you not being there to filter his crap.

  85. Move on by Ritchie70 · · Score: 1

    We don't know what sort of development you're doing or diagrams you're talking about.

    If they're design diagrams, why are you printing them? Spreading a diagram across "pages" is painful when you're trying to read online and have essentially infinite zoom capabilities. If he wants to do single-page diagrams in four-point font, click that little "+" or drag the slider and zoom in on the part you want to see.

    Unless his code doesn't work, or someone assigned you the task of cleaning his code up, I'm not sure why you're complaining. Guess what - real world code, especially internal code, sucks.

    I work on a C/Unix code base that dates back to 1986 - a time of 80286 processors and Xenix. It's grotesque. There are globals everywhere to deal with lack of stack space, it's K&R, and each programmer had their own idea of "correct" tab stops, so the first thing you do is play with that until things look like they line up in the function you're working in. It might be different elsewhere in the file.

    There's code that hasn't been executed (we hope) since the early 90's, but we leave it unmolested until we're actually changing that file for other reasons. Then, and only then, do we consider carefully excising it - because if you change it, QA has to test it before it's deployed to roughly 15,000 systems scattered around the globe with poor network connectivity back to the main office.

    Maybe you're not cut out for maintenance programming and dealing with someone else's code base. Most people fresh from school aren't very good at it and want to "fix" everything. I suspect that's who you are.

    --
    The preferred solution is to not have a problem.
    1. Re:Move on by interval1066 · · Score: 1

      He's some kind of marketing guy/girl or something, and he's working with visio or its ilk. Their "code" is a business process. Move along.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
  86. Yep. Passive-aggressive. by Jane+Q.+Public · · Score: 2

    While the first poster's comment might have been intended as snide or humorous, there's a grain of truth in it. Not about whining, necessarily, but about his behavior at work.

    The thing is, there is probably no future in doing what he is doing: somebody else's work, without credit.

    I can appreciate that he wants to make sure things are done right, but he's doing work that should have been done by somebody else, and not making sure that it's being noticed. That's a great formula for failure. I know because I have been there.

    If it's just charts and diagrams, then I'd mark each change with a colored * (asterisk), then at the bottom put:

    * change by [blah] on [today's date here]

    And if it's code, I'd make sure to comment any such changes I made.

    Then, at least, he's taking credit for getting it done, and subtly calling attention to the fact that somebody else did NOT get it done right.

    If doing it right and taking credit for the changes will get him in trouble, then he's in a toxic workplace and should start looking for another right away.

  87. Design Reviews? by Anonymous Coward · · Score: 0

    This doesn't sound like code but rather design documents. UML documents produced by a designer. Primary purpose is a communication between the customer and the development team. Secondary purpose is documentation for future development. Possible also used to generate some code. Designer A thinks Designer B charts are messy. Messy charts just slow development down a little and embarrass managers when they are shown to executives.

  88. Serious Problems by Anonymous Coward · · Score: 0

    see a doctor and get some medication

  89. Let go of it by Anonymous Coward · · Score: 0

    1) Does it work? Yes
    2) Is it done on time? Yes
    3) Is it done on or under budget? Yes

    The answer to all three is "Yes," so it's time for you to STFU and understand that practice is not theory, and that while in theory there is no difference between the two, in practice there is.

    In the real world, solutions seldom resemble the ideal solutions you learned about in your elementary college textbooks. A junior engineer looks at those sloppy diagrams and doesn't understand what's going on. A senior engineer looks at those sloppy diagrams and knows EXACTLY what's going on, despite the occasional trivial error in the engineering equivalent of spelling and grammar.

    That's why you are a junior and he is a senior.

  90. The real question is: by PPH · · Score: 1

    What is the push-back from the 'customer' using this data?

    If it is an end customer who can't understand the diagrams or a subcontractor that can't implement the design, then get them in the loop with a customer feed back survey.

    Anonymize the authors of the various components and ask them (the customers) to provide feedback. If they think the work is crap, let them say so. If they can deal with it, then OP is being too picky. Yes, there is an issue of professionalism. Neat work leaves a better impression with the customer. But a well structured customer survey can capture this aspect as well. And management can decide whether it is worth their investing in resources to polish the product beyond the minimum required to just make it work.

    --
    Have gnu, will travel.
  91. Re:Different people have different programming sty by Anonymous Coward · · Score: 0

    I was thinking OP should get help for his OCD. I'm not very OCD but have worked with a bunch. It goes like this.

    Multiple returns from the body of a function that works.
        Fred: Aiiiiggghhhh! Refactor refactor refactor, debug debug
        Me: Ick okay goes and does something else productive.

    Inconsistent tabs and spaces
        Fred: Aiiiiggghhhh! Refactor refactor refactor, debug debug
        Me: Ick okay goes and does something else productive.

    Variables names that are misspelled, punctuation and spelling errors in comments
        Fred: Aiiiiggghhhh! Refactor refactor refactor, debug debug
        Me: doesn't notice, does something else productive.

    Variables names that are misspelled, punctuation and spelling errors in comments
        Fred: Aiiiiggghhhh! Refactor refactor refactor, debug debug
        Me: doesn't notice, does something else productive.

    Variables names that are misspelled, punctuation and spelling errors in comments
        Fred: Aiiiiggghhhh! Refactor refactor refactor, debug debug
        Me: doesn't notice, does something else productive.

    Variables names that are misspelled, punctuation and spelling errors in comments
        Fred: Aiiiiggghhhh! Refactor refactor refactor, debug debug
        Me: doesn't notice, does something else productive.

    Continue statement in a while loop
        Fred: Aiiiiggghhhh! Refactor refactor refactor, debug debug
        Me: doesn't notice, does something else productive.

    Module is a nightmare but works
        Fred: Aiiiiggghhhh! Refactor refactor refactor, debug debug
        Me: Ick, does something else productive.

  92. Re:Welcome to your job and the perks of being seni by interval1066 · · Score: 1

    So "plugging in cables" requires a degree now?

    --
    Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
  93. Ability to respond to requirement changes by tepples · · Score: 2

    it's often better to do your own tasks and focus on your own productivity than cleaning up code that already works.

    Unless a project is completely waterfall model, with the smallest changes billed at the same rate as creating a new system from the ground up, increasing the ability of the company to respond to requirement changes for an existing product increases the productivity of all the company's employees. Is it the fact that a particular person's contribution to such an increase is hard to measure?

    1. Re:Ability to respond to requirement changes by adisakp · · Score: 1
      The code works... he's spending time complaining that he has to beautify it because he doesn't understand it due to the current style. I'd really suggest thinking about this wisdom from another slashdot thread...

      There's also the matter of rewriting things introducing new bugs and getting the "so what good did it do to rewrite it when the new code doesn't work?" element. Worse is when the new bug is difficult to reproduce or troubleshoot.

  94. Take The Money And Run by Anonymous Coward · · Score: 0

    If the software doesn't rise to this level: http://www.king5.com/news/investigators/series/Hanford-Dirty-Secrets-series-radiation-nuclear-waste-205308821.html
    Then enjoy the ride and move on. Nobody ever got anywhere grumbling about sloppy work. You get somewhere by torpedoing the guy by company treachery, not by pointing out flaws in his work.

  95. Re:Visual Studio with ReSharper by Jstlook · · Score: 4, Interesting

    Are you kidding? This is how dice is selling marketing on /. nowadays .. put up a phony "ask slashdot" question, and put the shill at the top of the queue.

    --
    ---jstlook ---For that is the way of Elves, for they say both yes AND no, and mean every word of it. --- J.R.R.T.
  96. That'll speed the process up, you betcha. by Medievalist · · Score: 1

    Fix them and then give them back pointing out what was wrong and where.

    Great idea! That way, you can get on with the process of interviewing for your next job so much faster.

    Because, you know, being a self-righteous irritant to senior staff in the most obnoxious way possible is always a great way to terminate your current employment. You won't have to bother keeping track of any references, either, since you won't want future employers to talk to anyone you've already annoyed. It's win-win!

  97. Rust Never Sleeps by tutufan · · Score: 1

    I can relate, and you have my sympathies.

    The awful truth is that there is likely nothing you can do about this. Just as in the rest of life, slobs will win out over those who value order, following standards, lawful behavior, etc. every time.

    Your best hope is to get your own little pasture (which might be an open source project) of code that you "own" (meaning that you have the power to exclude crap) and learn to satisfy your desire for order there. In the professional world, first to the finish line always wins, no matter how much of a radioactive stinking turd it is.

  98. Re:Visual Studio with ReSharper by hackula · · Score: 1

    It would help with code styling issues (note: styling is important but not MOST important). For people who downvoted the OP for being slashvertisement, here are a few FOSS alternatives for other platforms:
    JSHint (aka Crockford Enforcement Enforcer)
    JSLint (aka Crockford-lite)
    PyLint (PEP8 compliance tool)



    I am sure there are loads of others, but I work with js and python, so that is what I know.

  99. Ask him and prepare to learn by onyxruby · · Score: 1

    You sound like a kid fresh out of college that just hit the real world. You don't want to come across as a whiny brat as you'll sink your own career. Instead of taking an attitude that he is doing it wrong, take the attitude of there is something to learn here. Ask him why he does certain things the way that he does, are there reasons he doesn't do things the way you learned?

    It's okay to say you've got a mismatch, admit your own ignorance and ask why someone does or doesn't do something. You'll get a lot more respect than if you passively aggressively file bug reports and do things 'behind' his back. Once you ask you may discover that he has good reasons for doing some things, but gets sloppy on other things for reasons such as a perceived lack of time. Ask him how you can help or do better and remember that reality and school almost never match.

    I say this as a guy who works at a very large University that has a background in the private sector. I'm surrounded by student workers / interns that think they know how something ought to be done. Listen and learn and you can keep a good head about things you might gain a mentor out of the deal. Of course he might be deadwood whose blackmailed management into his position, but chances are he earned his position by knowing to make things work - even if they aren't pretty.

  100. different environments... by schlachter · · Score: 1

    Not a bad idea at all, but in my environment, the real take away from a demo is usually a concept, algorithm, approach, or user interaction paradigm.

    If people like it, funding increases by 1 to 2 orders of magnitude (i.e. going from $100K to $10M) and a ground up reimplementation and expansion of the idea ensues.

    --
    My God can beat up your God. Just kidding...don't take offense. I know there's no God.
  101. Re:Visual Studio with ReSharper by jones_supa · · Score: 0

    Their web page has a cool effect where the top bar locks to follow you when you scroll down and at the same time the R# logo fades in to the left side of the bar. I'm scrolling up and down, up and down, weeee...

  102. This reminds me by 32771 · · Score: 1

    I'm a bit like that chaotic guy too. If my colleagues wouldn't pay attention, naming conventions would go over board, documentation is so so. What I pay attention to is to not make mistakes regarding memory allocation and concurrent programming. Also making sure that loops run beyond array boundaries is important. I also make attempts to think about what happens "else" even if I end up just writing a comment down.

    The obvious annoying stuff I leave to my colleagues who are way more anal retentive. What I also noticed is that criticisms rarely probe the depths of complex code so that I'm ultimately the only guy who spends enough time with the code and who will be able to fix issues quickly enough should they arise.

    I also noticed that eclipse has this most useful tool where you can go to a declaration of a function or show the call graph. This is really dangerous if your colleagues don't have it since you have much less of a pain when navigating code compared to them. Your code will end up with deeper and possibly more distributed (across files) hierarchies and annoy your colleagues horribly.

    --
    Je me souviens.
  103. You are half way there! by karlphillip9447 · · Score: 1

    1) Publish the issue on Slashdot (you did it, congrats!)
    2) Send him the link to the post.

    Mission accomplished.

  104. Solution. by Anonymous Coward · · Score: 0

    Just stay an extra 8 hours after he leaves and redo all of his work to your standards. Sure you'll be working 16+ hours a day, but the code will be elegant and well documented. What else matters.

  105. Why the hate? Maybe submitter is right? by Just+Some+Guy · · Score: 5, Interesting

    Is it possible - maybe not likely, just possible - that the submitter is in the right? The following is completely fictional and I'm making it up entirely for illustrative purposes. None of it ever really happened. Honest. Ahem.

    I transferred from one department in a previous company to another, and was assigned to help a Principal Software Engineer polish up some code for release. When I first looked at the code, I thought maybe I was in over my head. I felt stupid. I couldn't understand a thing. I brought this up to my manager, who chided me for nitpicking about coding styles.

    So I slaved away to understand how the project worked and how all the pieces fit together. I'd ask questions like "why are we monkey patching standard library classes to alter their behavior" and be told "it's easier this way". I'd ask why we had 9 levels of inheritance and be told it was to keep the abstractions clean (although I couldn't understand why 7 of those 9 layers only had one child class that derived from them). Why are chunks of server code in the client? Because that's how the design diagram works. Why did we invent our own unit test framework? Because the others weren't good enough for us.

    The whole mess came crashing down when our boss asked me to add a data validation check on a certain input. It was a stupidly simple check like "if value < 0: raise ValueError('value must be >= 0')" - that kind of thing. It turned out to be impossible. There was a hell's brew of code that handled errors by returning None, code that returned a string with the error message, and code that used exception handling. There was not one single clean codepath between the API layer and the database model.

    My boss had been more concerned with my questions over the weeks, but it wasn't until I showed him the code that he really "got it". He flipped. Meetings were called. VPs were summoned. Design and code reviews were scheduled. The original coder became so frustrated with what he saw as "micromanagement" - things like "unit tests must actually pass before deployment" and "don't monkeypatch everything" - that he quit and I was given ownership of the ball of mess. Since then, I've managed to make reliable, vastly simpler (seriously, I've probably reduced line count by 2/3 and call stack depth by 3/4), and understandable. It no longer uses ML for a templating language. You can read a method's code to see how it works instead of running "git grep methodname" to see if another module patches it at runtime. I'm no longer ashamed to be associated with it.

    Sorry, submitter, but I don't have any advice for you. I do have advice for the rest of the readers, though: consider the possibility that the submitter was telling the truth. There are silly code style differences that shouldn't get in the way of getting your work done. You like studly capped method names and your coworker likes_under_scores? The sun will still rise tomorrow. But just because someone is senior doesn't mean that their code isn't a fetid ball of fail.

    --
    Dewey, what part of this looks like authorities should be involved?
    1. Re:Why the hate? Maybe submitter is right? by AmiMoJo · · Score: 1

      I'd like to relate a story of my own in similar vein.

      I had to take over an old codebase written by a contractor. This guy wrote exactly to spec. Exactly. The spec would say "has a command line interface that can take up to 255 characters". You put in 256 characters and the whole product would lock up because the spec didn't say "handle more than 255 characters gracefully". His answer was "no one will ever put in more than 255 characters in the real world".

      To me that is sloppiness. Any engineer worth his salt will check the bounds of his buffers. Not this guy, he just wanted to crank the code out as fast as possible and run. I ended up having to fix a lot of these issues.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    2. Re:Why the hate? Maybe submitter is right? by radarskiy · · Score: 1

      "he quit and I was given ownership of the ball of mess"

      I hope you've learned your lesson.

    3. Re:Why the hate? Maybe submitter is right? by Common+Joe · · Score: 1

      You make it sound as if ownership of code and responsibility are a bad thing. On the contrary, had I been given crap and turned it into a shining example of greatness as in the example the GP gave, I'd be proud to sign my name to it and be given recognition for helping the company so much. It's also a great story to tell new potential employers in the future. You can beat your chest and say what a great programmer you are.

    4. Re:Why the hate? Maybe submitter is right? by Anonymous Coward · · Score: 0

      This guy wrote exactly to spec. Exactly. The spec would say "has a command line interface that can take up to 255 characters". You put in 256 characters and the whole product would lock up because the spec didn't say "handle more than 255 characters gracefully".

      How is that bad? If the spec didn't say anything about 256 Characters, the behaviour of the system is undefined and thus a complete failure is completely within the spec boundaries.

    5. Re:Why the hate? Maybe submitter is right? by Just+Some+Guy · · Score: 1

      Sure, but there's a lot of difference between letting the system segfault because you've overrun the command line buffer and having it emit an error message like "command line is specified to be 255 characters or less", then exiting with an error code. The former doesn't tell anyone why their request is failing. The latter lets them know exactly what they can do to fix the problem.

      --
      Dewey, what part of this looks like authorities should be involved?
    6. Re:Why the hate? Maybe submitter is right? by Anonymous Coward · · Score: 0

      Likely you weren't fresh out of college at the time. I know for myself it certainly wasn't until much later that I was at that stage yet.

    7. Re:Why the hate? Maybe submitter is right? by doom · · Score: 1

      Is it possible - maybe not likely, just possible - that the submitter is in the right?

      No it isn't. Or not a possibility worth considering. Take a look at the original question and actually read it: the OP has nothing. He's whining about style and elegance, but the one thing he touches on that might be a real maintenance problem is inconsistent naming, but without more info it's hard to tell if that's for real.

      Software is a collaborative process, none of us really know anything about the right way of doing it, and that means when you're starting work in a new group you've got to find out something about the culture of the people you're working with and try to blend in with it. You may be able to gradually change that culture if you've got a good case, but the OP is just egotripping about how he knows the Right Way to do everything. If the senior programmer is changing things back to the way they were, we're talking about the equivalent of tab wars.

      And if you're going to make changes to a group's practices the way to start is talking to them about it You don't try to slip in changes in the hopes they'll be impressed with your brilliance after the fact.

      Software development == collaborative process --> communicating with human beings.

    8. Re:Why the hate? Maybe submitter is right? by radarskiy · · Score: 1

      It was a joke, except for not being funny.

  106. Company size and culture by opentunings · · Score: 2

    I've seen this happen more often in small companies than in large. When that's the case, I don't think there's a thing you can do about it. If they helped save the company's skin once, ten years ago, then they've been Teflon coated. Nothing you can say or do will stick to them. Regardless of whether their code is poor, or they never bathe, or they demand their own way...they're beyond reproach at that point. Big companies, otoh, have a large enough talent pool on which to draw that they can say "adios muchacho" and replace the annoying staffer with one who's more of a team player.

  107. STOP being OCD by Anonymous Coward · · Score: 0

    Remember? handwriting is bad.. must be DOCTORs'!!

    Engineers and technical people care more about data and not how it is presented.
    Pie charts, color and ppt are for VPs and Directors.
    you are here complaining, so you are not a VP or a Director!
    are you a technical writer or what?

  108. Likely there is no option in this situation... by nerdyalien · · Score: 1

    Here is my story... I work as a web developer at a SME somewhere in far east. So far I have worked in couple of small to large scale Agile projects. And yes, I had company of college interns, developers, senior developers, consultants and architects alike. To be brutally honest, I abhorred my senior's work with a passion. I always pondered how this kind of incompetent, useless people end up handling multi-million dollar worth mission-critical projects.

    Based on my so far analysis, this is how I see it:

    1. Most of these seniors have survived simply because of a historical reason you might not know.

    In my case, most my seniors survived during the 2008-2009 retrench season. Some survived totally through political clout; some by sacrificing their salary and other benefits. So in management's point of view, these are really valuable employees, and they should retain them at every cost.

    2. They were there at the right time.

    Around the time they were promoted, may be there weren't anybody to around to challenge them. After all the good crop leaves a firm, there is a window for all the sloppy bafoons to inflate their ego, convince management and climb the promotion ladder without much external challenge.

    3. They know how to find scapegoats efficiently and effectively pass the buck.

    How do I know about this ? I was a victim ! My firm practiced this 'Russian roulette' style of assigning task, such that everyone ends up get to work in every module of a project; or, bugs get assigned to you, even though you never worked on that module before. Most often, these experienced developer's work break down spectacularly, and I am the one brought in to clear their mess; and when I fail to fix, I end up in prison-cell meeting rooms to receive the brunt of senior management. Over the time, these seniors painted this nice picture of me as a lazy, unreliable, incompetent developer. And the funny thing is, most of these code bases, I didn't write a single line of code and I have absolutely no idea what's going inside. And these code bases are poorly documented/commented, making troubleshooting is a mini-IT project it self (call it "reverse engineering feature XYZ")

    Sadly for most of us in junior positions, it is an arduous task to challenge the existing establishment. But at least you can dampen or insulate your self from the shocks from these stupidos. Here's what I do:

    1. Don't volunteer to amend their codes.

    I made this mistake many times as mentioned. Find who originally developed it in your team. If he/she is there, get him/her to work on it. If he is in a different team, ask project manager to bring him/her back. And importantly, if you are taking up these kind of responsibility, have a written understanding with your project manager that "You are doing your best effort to fix the issue, and if it fails, it is not your fault, it is due to poor implementation of the original developer". Stand up for your self ! in corporate world, nobody is there to stand up for you after all.

    Trust me on this, "it is good a senior doing a bad patch that temporarily fix the problem and eventually breaks in future, than you failing to do a perfect job in fixing it for posterity"

    2. Give seniors a chance !

    Don't bother helping them out of your kindness. Let them shoot their own foot. You entering the picture is the biggest disservice you can do to your self, by becoming the dummy they can shoot.

    In my current team, I have a tech lead, who was doing an important module. I had plenty of time to help him, as I finished my module early. Instead, I sat down and watched him failing brilliantly and had a silent laugh. Maybe I could have helped him in many ways, but I digressed and let him eat his own dog food.

    3. Promote yourself often

    I am not very good in this either. But in this world, hardly people pay attention to other individuals. So if there is an opportunity to shine, or talk about your work... just do it! And if management is still deaf and doesn't acknowledge/appreciate your contributions, move to another firm !

  109. He used to be like you by Anonymous Coward · · Score: 1

    Then he went through years of canceled projects, changed requirements, the constant churn of new frameworks, and so on. Now he writes the most minimal code that will get the job done, because he knows it will be trashed or mutated quickly.

  110. Personal appeal by volvox_voxel · · Score: 1
    One of the best ways to influence people is to make a personal connection to understand you and where you're coming from. Befriending him can accomplish a lot. Eisenhower emphasized how important he thought a sense of humor was, and making personal connections, and was a big factor in why they made him the allied commander. He had to deal with many busy generals with out-sized personalities, but managed to reason with and influence them well enough to be promoted.

    Posting on slashdot likely means that you don't have an open line of communication with him where you can easily make personal appeals. Invite him to lunch, get to know him. Soft people skills are very useful. If he considered you a friend, there is a chance that he would show you a great deal of consideration.

    -Joe

  111. ship functioning software by Anonymous Coward · · Score: 0

    The number one goal is to ship functioning software. If it works the way he does it, you are only increasing expenses by making it pretty.

  112. Re:Visual Studio with ReSharper by Halotron1 · · Score: 1

    Yeah there is software out there that will enforce things like tabs, naming conventions, whitespace and even comments.
    Visual Studio and Netbeans both have built in "Code Analysis" tools. I'd imagine other IDEs have them as well.

    Unfortunately there are plenty of bad programmers who write code that works but is on the whole unsupportable by anyone but them,
    and no amount of formatting software is going to stop someone from writing crappy code.

    Just stay at a company long enough and eventually you'll be supporting everyone else's code anyways
    as your peers quit and move on to bigger and brighter futures. (i.e. places with free coffee)

  113. Dear UML-a-tron 2000 by Anonymous Coward · · Score: 0

    "Help, save me from bad UML..." How whiny can you get??? I noticed you didn't complain about really bad stuff, like: did he start putting ad-hoc SQL inside HtmlHelper extensions, circumventing templates, views, controllers, service layer, repository and even ORM because he was stuck at "How does dependency injection work?" Did his ignorance of editor helpers cause him to implement editing functionality from organic scratch on top of the display functionality using javascript? Did his ignorance of form collections or json serialization cause him to resort to passing all AJAX parameters as "gz" (yes, that's right) delimited strings?

    Be Grateful.

  114. You Have to Leave by dcollins · · Score: 0

    I had this issue at both of the programming jobs I held before leaving the industry. One was epically bad -- I could have written the OP in just the same words myself.

    The problem is that this senior coder comes off as a hero and superman to the higher management. From where they sit, it looks like this guy just ships code and solves all their problems -- regardless of how much it holds the rest of the software staff back in the process (his bad code hygiene is effectively invisible to managers). Also, since he's been there longer he's likely also good buddies with managers on a personal basis. Also, he's just senior staff and so has that ahead of you as well.

    There is no way you can change his slash-and-burn work process, and all the rest of the institution will be actively encouraging him for more of the same. You cannot win this one except by leaving some day. This could possibly be switching to a different project, or changing jobs to a different company. Get what you can out of this job and start look for a switch.

    --
    We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
  115. Yes, You Are Wasting Your Time Obsessing by Anonymous Coward · · Score: 0

    Analyze your own complaints: "Diagrams that should be spread over five or six pages are crammed onto one, naming is totally inconsistent, arrows point the wrong way (without affecting functionality) and so forth.

    Diagrams are not code, they are documentation. I don't like having to flip pages when reading documentation. If it can fit on one page instead of five or six, that may be the better way. Unless you've got a specific example we can look at that would show otherwise, I'd say you're wasting your time on this one.

    The names of structures, variables, and functions in a body of code can be chosen elegantly, poorly, or somewhere in between. It is almost always somewhere in between. By declaring the naming to be "totally inconsistent" without giving examples, you are saying that all of the names are poor. That is, quite honestly, a little hard to believe and I suspect you're exaggerating a bit because you're having a hard time just accepting some of the naming conventions that are good enough.

    Arrows point the wrong way (without affecting functionality). What does that mean? Are you saying that you feel you must insist that all flowcharts only have arrows that point either down or to the right, even if that means expanding a flowchart from a single page to five or six?

    I've been programming for 30 years and I've worked with a lot of people. When I was a young buck, I was lot more adamant and pedantic than today, and I would get incensed about trivial stuff. I didn't know shit. Over the years, I have made an effort to constantly challenge myself, to learn, to grow, to be a better programmer, to do the things that I always envisioned that someone who had dedicated their life to computer programming would do. I still don't know shit, but at least now I have a deeper understanding of what I don't know, and most importantly, a deeper sense of priority. My advice is to focus on data structures, algorithms, and producing working systems quickly with an acceptable level of quality. Force yourself to stop obsessing about things like what other coders pick for variable names or where they put whitespace (I'm assuming certain languages there of course) and don't even think about "refactoring" other's work until you understand all aspects of it forward and backward and could take on their responsibilities (and would) if they were to walk away from it. Good luck.

  116. Re:Visual Studio with ReSharper by bjohnso5 · · Score: 1

    I think you have your Hint and Lint mixed up... JSHint is Crockford-lite, and JSLint is the unforgiving beast.

  117. This guy sounds just like my boss (and company co-owner), with whom I have worked for 20-odd years and find we make a great team. He's a great engineer, but we're polar opposites in some ways. In those 20 years I have taken time to appreciate some of his qualities like carelessness in a "glass half-full" kind of way, and even find myself becoming more like him, especially in the pragmatic ways you describe.

    My advice is stick to what you do best - some people are best in the details, others in the broad sweep. Take time to understand, be patient and even humble if company culture allows it.

  118. Last year...? by Anonymous Coward · · Score: 0

    Am I really the only one that remembers these two articles from last year?
    http://ask.slashdot.org/story/13/01/03/1859210/ask-slashdot-how-can-i-explain-to-a-coworker-that-he-writes-bad-code The rebuttal http://ask.slashdot.org/story/13/01/03/2255204/ask-slashdot-how-to-react-to-coworker-who-says-my-code-is-bad

    1. Re:Last year...? by Desler · · Score: 1

      January 2013 was last year? Are you posting from the future?

  119. Sorry by turgid · · Score: 1

    Anne, Sam, I'm sorry. I'm trying really hard to get this stuff out the door on time. We'll address the Technical Debt after The Deadline and after we've burnt the PHBs at the stake.

  120. help by Anonymous Coward · · Score: 0

    Rather than spending so much time obsessing about what to do, make corrections to the errors

  121. Lazy by Anonymous Coward · · Score: 0

    There sure are a lot of people on this forum defending the "senior guy" and his poor work habits. Sure he knows how to get stuff to work and get it out the door, but he appears to have little regard for those who have to collaborate with him, or those who have to clean up the mess behind him in the maintenance phase. As a software engineer with 18 years in experience in companies large and small, with subject matter both technical and commercial, maybe my gripes against lazy "senior" co-workers will carry a little more weight. Here are my best suggestions, ones I think are far from anal:

    1. Name identifiers meaningfully! You aren't just programming in some language defined by its keywords and syntax, you are BUILDING the language in which you will have to think about and discuss the software you are writing.

    2. Go ahead and use long names. Short, obscure names don't save any keystrokes when you have auto-complete. Call a thing what it is. But if your names get too long, it probably means your code is exposing too much detail.

    3. Use indentation and white space as they were meant to be used -- to provide a visual representation of the structure of your program logic.

    4. Strive to write code that doesn't need comments. When comments are needed, explain clearly in complete sentences (or at least in phrases that will mean something to someone who is not you).

    5. Don't make me scroll horizontally.

    6. Don't make me have to hunt all over the place to find where some key action occurs.

    7. Make your code do exactly what it says it does, with no side effects and no surprises.

    8. Take a few minutes to research things rather than write dumb code. That's all it takes these days -- a few minutes.

    I was going for a "Ten Commandments", but I think this is sufficient. If you do these 8 simple things, you will see that (a) they pay for themselves, and (b) your job just got easier.

    1. Re:Lazy by Desler · · Score: 1

      There sure are a lot of people on this forum defending the "senior guy" and his poor work habits.

      And you know for certain the senior guy actually has lazy habits, how, exactly? All we have is a post claiming this and nothing more.

  122. DON'T Fix Someone Else's Code by edelbrp · · Score: 1

    I've been on both sides of the fence on this over the years. I've had people rewrite my code without asking, and other times I've rewritten somebody else's code.

    First of all, it just annoys people. It's not fixing a problem (at least not long term). I rewrote some code and fixed, perhaps, 10 problems but accidentally introduced a new problem. I was beaten up ad-nauseum in front of management over introducing that one problem into somebody else's code.

    OTOH, a sloppy programmer might get used to you fixing their work. That can turn into a dangerous long term situation if people think it is normal for you to double your workload by cleaning up other people's work as well as doing your own.

    As far as the business is concerned, they aren't paying two people to solve the same problem twice.

    Make sure everyone knows where their responsibilities lie. Let everyone make their own mistakes. If somebody is 'sloppy' but there aren't any repercussions, then perhaps 'sloppy' really is good enough and you are the one wasting too much time and energy being nit picky.

    If a coworker's sloppiness is actually really impacting your productivity, bring it up with the project manager in a pleasant way on specific issues. Keep the conversion focused on the work being done, not the individuals involved. Saying "Bob's work is sloppy" isn't going to help anybody. Say, "It would save me a lot of time if there were more consistent formatting and commenting in the code."

    Don't criticize work that isn't intended for you. For example, those diagrams might only be intended for management, for example, and you might not know that there was a very good reason why they needed to be crammed all on one page (e.g. to be printed out large format to get hung up on a wall, say).

    That said, it's good to have pride in your work and take the extra effort to polish it. Be the example. If nobody notices and appreciates your work, then perhaps you need to look for another job?

  123. Re:Visual Studio with ReSharper by mjwalshe · · Score: 1

    sounds like a passive aggressive Q from stackoverflows workplace discussion forum

  124. Sounds like a genius to me. by n2rjt · · Score: 1

    You make it sound like he's doing dangerously bad designs and implementations, but I suspect this is just a war over style.
    The way you describe your co-worker, it sounds like he is highly productive. Why are you against this?
    Bottom line: does it work? I couldn't care less if it is ugly ... results speak volumes.

    1. Re:Sounds like a genius to me. by n2rjt · · Score: 1

      (Sorry to reply to my own .. this comment just seems to belong here)

      Have you heard/read about liberal versus conservative developers?
      It sounds like the submitter is conservative and his "sloppy" co-worker is liberal.
      I myself am liberal, as are apparently many of the people who have commented here.
      I value the conservatives and am happy that they are willing to clean up my style and diagrams, leaving me to forge ahead with pioneering work!

  125. Quality is paramount by turp182 · · Score: 1

    Enforce it, if a .Net shop, with code analysis and StyleCop. StyleCop helps with code standards, which you should enforce. Nuff said, it's Friday, I want to be sedated after the kids go to bed...

    --
    BlameBillCosby.com
  126. You sound like a dick by Anonymous Coward · · Score: 0

    Pissant.

  127. you have to ask yourself by NemoinSpace · · Score: 1

    Did the company hire you to teach the senior guy or to learn from him?

  128. Perfectionism by Gaalin · · Score: 1

    When you send perfectionism up the ladder someone usually falls on you. Just hold the ladder.

  129. Terminate with extreme prejudice by emzee · · Score: 1

    Go to his manager, show him the pile o'crap and ask him to either light a motivational fire under the senior employee's sorry ass and demand better work or, if that's his best quality work, just fire his sorry ass, send him packing, and hire someone who knows how to code. Seniority does not equal quality.

  130. Chargable hours? by Anonymous Coward · · Score: 0

    I'm not in IT (offshore engineer) so I'm answering from my own perspective:
    - Do the "little errors" put your company in a disadvantage should there be some form of dispute with your client?
    - Do you have chargable hours to work on those "little errors"?

    If the answer's no to both, then don't spend your chargable hours whining online. If the answer to the first qn is yes, then gently remind your colleague / QC guys about correcting them. If it's "yes" to both qns, then work on them and stop whining!

  131. Can't live with 'em can't live without 'em. by andrewr1969 · · Score: 1

    I can certainly understand where the submitter is coming from, I like all the dots and crosses in place (oh, the luxury of lavishing time on dotting and crossing) but I also appreciate how this can slow things down, and trying to change people is just a world of pain. Talk to the guy; talk to the team; talk to your boss. Work out what the project's trying to achieve: a rock solid low-level bit of code, or a fast and dirty prototype, or something in between. Then try and find your place in amongst it where you can appreciate everyone's contribution ... or go work somewhere else. I worked one place where the dotters and crossers got the OS code and the fast and dirty bunch got to write the apps, and we all rubbed along nicely.

  132. Cheese with Your Wine? by LifesABeach · · Score: 1

    Elegant? Sloppy? So you have a clue. It's not your fault, the Gods have given you the gift of pride. It's a hell of problem. Good luck.

    [SOLVED] On your own dime, develope a solution demonstrating your point.

  133. Sloppy workers output is error Free. by lsatenstein · · Score: 1

    This complaint reminds me of the two sisters living in the same house. Both were in the same grade.
    One sister was neat, her homework looked like a piece of art, but she never got marks into the 90's.
    The second sister was sloppy, bedroom upside down, stuff under the bed and on the floor, and her work appeared very messy.
    But the content was great, the marks based on content were rarely below 95%, and this sibling had time for tennis, and girls soccer.

    So, one sister is the person who raised the question, the second victim is the guy that delivers. And does it within the 8 hours per day. And his stuff works.

    Where can I find 5 of the second kind of developer. I am sure his mess is well organized, though the documentation may be missing a few dotted eyes and a few crossed tees .

    --
    Leslie Satenstein Montreal Quebec Canada
  134. You have a better idea? by Anonymous Coward · · Score: 0

    Good for them. They have to compete with any other solution suggested, and they're subject to moderation.

    If they game the moderation, then fuck 'em. All bets are off. Until then, it's pretty brilliant, and hopefully it will keep the doors open here.

    Essentially the way that it will be worthwhile to all concerned is if the product being advertised fills a need. What's going to be best is if they keep that need general, like this one, so it's not an obvious ad. This guy isn't necessarily asking for a product, even if there is one to solve his problem.

  135. As a senior guy... by friartux · · Score: 1

    I would ask you: do you understand how the code works? Are you adding reasonable features, or fixing user-visible bugs? Are you restricting your changes to items that will achieve the project's goals, and meet the required deadlines?

    If you are not doing these things, your changes are doomed to fail. If you are creating huge changesets that require additional review [time which could be spent making meaningful changes] but do not add (or fix) functionality, you are wasting the senior's time. Worse, if your changesets have bugs, you are actively hurting the development effort.

    So what do you do? Add comments to help you find your way around; perhaps make suggestions as to how you think the code should go. Focus on how you can make a positive difference, and earn the senior's trust to rewrite the sections that bother you the most.

    Change for the sake of change -- or to meet some irrelevant book's standards -- does not make production code work any better. And that's the usual goal. Be very aware of it.

  136. Is it a heart lung machine? by killmofasta · · Score: 1

    Wait until they plug his mother into it.
    Look for another job NOW, while you still are SANE.

  137. Re:Visual Studio with ReSharper by sosume · · Score: 1

    ok you had me scrolling there