-1

This question already has an answer here:

I am one of two software engineers at my company. Our boss is not a software expert but he understands our work at a decent level and he is a good manager.

The other engineer and I have been working together for about a year. I started at the company before he did but he is a couple of decades older, with the corresponding industry experience. The code he wrote for our first project together was, in my opinion, bad: it worked, but it violated programming conventions left and right. There were unnecessary global variables all over the place, for example, and classes were tightly coupled to each other when they shouldn’t have even known about each other. Programmers will recognize these as signs of a poorly-thought-out application design. (There are reasons why you might need to use one of these so-called antipatterns, but in my opinion none of them applied in our situation.)

Well, okay. My coworker’s experience was in C and C++ and this project was written in Python, so maybe his lack of organization was just due to unfamiliarity with the environment. We’ve been working in C++ for the last six months, though, and my coworker is writing the same kind of code. It’s not just an abstract complaint: we’re reworking part of our application now and it’s taking much longer than it should because the existing code was thrown together more than designed.

My coworker is, on balance, making our team more productive than if it were just me working alone. But when you consider the amount of time I spend refactoring his code, our productivity is much less than it would be if we had two engineers who knew how to design software. (I also end up spending a lot of work time being inwardly pissed off at my coworker for writing bad code that I now have to fix, but maybe that’s a personal concern more than a professional one.)

As I said, my coworker’s code works, in general; it’s just not amenable to being examined or changed. Another issue is my coworker’s age. If he were my age, I’d do my best to teach him how to organize code in a way that makes sense. But the fact that he’s a generation older, and has a job title senior to mine, makes it seem like this would come across as condescending and insulting no matter how I brought it up. (And really, I feel that if he had the desire or ability to learn good engineering principles then he would have already done so.)

So my quandary is this: should I bring these concerns to my boss? And what would I even say? I consider my coworker to be incompetent, given his position, but that’s a pretty darn strong word to use to describe a colleague. I don’t see a way to resolve the situation without firing the guy, so what could I even expect my boss to do?

marked as duplicate by gnat, Garrison Neely, IDrinkandIKnowThings, Jan Doggen, yochannah Oct 5 '14 at 15:11

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 4
    makes it seem like this would come across as condescending and insulting no matter how I brought it up -- and this post doesn't? Stop being inwardly pissed off. If you are going to be a part of an effective team, you either need to get him to drink your kool-aid or you need to start drinking his. I think you'd be better positioned for success if you stopped being a narrow-minded ageist and started being a team member. – Joel Etherton Oct 2 '14 at 16:31
  • 2
    Have you checked out this question? Implementing coding standards and code reviews may help. – sgryzko Oct 2 '14 at 17:07
  • 1
    @KyleStrand: You should read the question in its entirety. It's ageist because of the statement in the 2nd paragraph: but he is a couple of decades older. Also in the 4th paragraph: the fact that he’s a generation older, and has a job title senior to mine. If age has nothing to do with it, these comments are unnecessary. OP states quite frankly as well at the end of the 4th paragraph: I also end up spending a lot of work time being inwardly pissed off at my coworker. I'm not saying OP's complaints are invalid, only that his viewpoint on reasons and solutions is narrow and egocentric. – Joel Etherton Aug 11 '17 at 19:41
  • 1
    @JoelEtherton Many cultures, arguably most, consider it simply a matter of good etiquette to "treat [the elderly] differently", where "differently" means "with greater respect and deference." That is precisely the difference in behavior OP is describing--he's considering that something might be considered "insulting" that otherwise wouldn't be because he would be saying it to his senior. – Kyle Strand Aug 22 '17 at 16:22
  • 1
    @KyleStrand: Possibly. I see your point, but I didn't read that from the context of the question. Probably my own cultural bias in play. – Joel Etherton Aug 23 '17 at 17:20
4

I like working with young people when it is clear that their code shows the progress we've made over the last 30 years when it comes to structuring code - That's partially how I plan to stay up to ate going forward, by the way.

I like the Israeli army's emphasis on merit where professors often find themselves serving under the command of their students, and everyone stays alive because of that.

I assume that your code base is relatively recent and that it is written according to more or less current design principles. If this is the case, then your boss needs to put your colleague under your direction at least temporarily to give him an opportunity to learn how coding is done in your org. And he should stay under your direction until you and your boss are satisfied that he is coding by your organization's standards.

Unless you tell me otherwise, I don't think that the issue is his coding but his code DESIGN. If his code design sucks, it matters little how well he writes the code. It's like having a good command of grammar and an extensive vocabulary - the writing is correct but incoherent. Your colleague needs to be brought up to speed on the design patterns and anti-patterns for one thing. For another, it is absolutely critical that he runs his code design by you before he writes a single line of code. And that's the point you should make to your boss.

I think we all implicitly agree to check our egos at the door when we get into the software engineering business. I have no doubt that twenty to thirty years from now, some young kid is going to post on this site - assuming that this site is still around, and make exactly the same complaint. Except that the complaint will be about you. And his complaint about you will be as solidly grounded as your complaint about your colleague :) In that context, it IS appropriate that your colleague work under your direction, at least until he has caught up with what you know. Pride is nice to have but often enough, it is a luxury item whose price we can't afford :)

I am obviously giving tough advice but I am giving it with no disrespect or ill will intended toward your colleague. I am a merchant of reality and reality is what I have to deal with - the good, the bad and the ugly. It is best to compose with reality before reality hits in the face. Hard.

  • Great point. Does the OP have documentation, or just jump into coding? Requirements, architecture, detailed design, with reviews as you go along, would result in better code – Mawg Mar 9 '18 at 7:21

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