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?"

204 of 332 comments (clear)

  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: 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.

    4. 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.

    5. 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.
    6. 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.
    7. 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.

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

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

    9. 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
    10. 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.

    11. 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
    12. 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.

    13. 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.

    14. 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................

    15. 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.

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

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

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

      +1 insightful, who modded this troll?

    18. 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 Diss+Champ · · Score: 4, Insightful

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

    3. 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.
    4. 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: 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."

    6. 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

    7. 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.

    8. 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.
    9. 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.

    10. 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.

    11. 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.
    12. 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.

    13. 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.

    14. 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.

    15. 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.

    16. 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
    17. 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.

    18. 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.

    19. 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
    20. 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
    21. Re:Get over it. by Improv · · Score: 1

      +1

      --
      For every problem, there is at least one solution that is simple, neat, and wrong.
    22. Re:Get over it. by KZigurs · · Score: 1

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

  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. 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 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.
    5. 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.

    6. 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.

    7. 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.

    8. 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.

    9. 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.

    10. 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.

    11. 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.

    12. 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.

    13. 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!

    14. 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
    15. 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).

    16. 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.

    17. 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
    18. Re:WTF does elegant mean? by FlutterVertigo(gmail · · Score: 1

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

    19. 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.

    20. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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 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
  11. 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.

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

    Oh god, not this guy again!

    might as well queue up this story again.

  13. Dupe by Hentes · · Score: 1

    This is the third time this question comes up.

  14. 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 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
  15. 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
  16. 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.
  17. 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.

  18. 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.
  19. 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.
  20. "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.

  21. 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".)

  22. 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.
  23. 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....

  24. 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 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
    2. 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.

  25. 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.

  26. 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?
  27. 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
  28. 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).

  29. 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.

  30. 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
  31. The usual by bickerdyke · · Score: 1

    Recommend him for promotion - to another team.

    --
    bickerdyke
  32. 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.

  33. 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.

  34. 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.

  35. 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.

  36. 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.

  37. 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.

  38. 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.

  39. 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.

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

    Boycott stupidity.

  41. 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 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.
  42. 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
  43. Re:Bring up his incompetence loudly at lunch. by pigiron · · Score: 1

    Someone mod this up to funny!

  44. 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 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.

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

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

  46. 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.
  47. 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.

  48. 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.)

  49. 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!

  50. 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
  51. 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.

  52. 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.
  53. 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.
  54. 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.

  55. 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.

  56. 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".'
  57. 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.

  58. 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.
  59. 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".'
  60. 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.

  61. 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.
  62. 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!

  63. 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.

  64. 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.

  65. 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.

  66. 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.
  67. 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.
  68. 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.

  69. 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 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?
    5. 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.

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

      It was a joke, except for not being funny.

  70. 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.

  71. 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 !

  72. 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.

  73. 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

  74. 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)

  75. 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.

  76. 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.

  77. 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.

  78. 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?

  79. Re:Visual Studio with ReSharper by mjwalshe · · Score: 1

    sounds like a passive aggressive Q from stackoverflows workplace discussion forum

  80. 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.

  81. Re:Last year...? by Desler · · Score: 1

    January 2013 was last year? Are you posting from the future?

  82. 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!

  83. 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
  84. you have to ask yourself by NemoinSpace · · Score: 1

    Did the company hire you to teach the senior guy or to learn from him?

  85. Perfectionism by Gaalin · · Score: 1

    When you send perfectionism up the ladder someone usually falls on you. Just hold the ladder.

  86. 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.

  87. 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.

  88. 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.

  89. 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
  90. 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.

  91. 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.

  92. Re:Visual Studio with ReSharper by sosume · · Score: 1

    ok you had me scrolling there