-1

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?

  • 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 02 '14 at 16:31
  • 2
    Have you checked out this question? Implementing coding standards and code reviews may help. – sgryzko Oct 02 '14 at 17:07
  • @JoelEtherton ...I really don't understand the critique; I found this question because I was wondering about a similar situation someone I know is in. The asker doesn't sound "pissed" to me, nor do I see any "insults" in the text. I also don't understand what makes this post "ageist"; the OP's concerns don't seem to have anything to do with their coworker's age, and the age is only brought up because it puts him in an awkward position with respect to voicing his concerns. – Kyle Strand Aug 09 '17 at 21:02
  • 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
  • @JoelEtherton I did, and then I read your comment, and then I responded with my comment. You seem to be assuming that any mention of age makes something automatically ageist, which is...just not true. I also didn't say that the question overall has nothing to do with the coworker's age; I said the "concerns" don't have to do with his age, by which I meant the concerns about the coworker's code quality. (Sorry for not making that more clear in the first place; hopefully it is clear now.) The age is relevant for the reason I and the OP have both already stated, i.e., the "awkward position". – Kyle Strand Aug 11 '17 at 20:12
  • You are correct, though, about the use of the word "pissed"; my apologies for forgetting that sentence and not recognizing your phrase "inwardly pissed off" as a quote from the original question. – Kyle Strand Aug 11 '17 at 20:13
  • @KyleStrand: OP directly relates the quality of the code to the attitude of the co-worker and the perception of that co-worker with respect to management. OP specifically mentions age, though you could easily find the same paradigm with younger co-workers who have unearned or false reputation. Age should have nothing to do with the problem at hand. Boiled down, OP has less reputation in the eyes of management than this co-worker for whatever reason. My critique is simply to disregard his reasons, stand up for himself and start considering himself an equal (re: start being part of the team). – Joel Etherton Aug 11 '17 at 21:06
  • @KyleStrand: But to supplement: Yes, any mention of age makes it ageist. Any mention of race makes it racist. Any mention of gender makes it sexist. If it does not provide valuable context it is merely prejudicial information. – Joel Etherton Aug 11 '17 at 21:06
  • @JoelEtherton In context, the mention of age clarifies why the coworker has the reputation, or at least enjoys the perception, of having greater experience, etc, than the OP. I don't think that makes it ageist to mention it; it's potentially important context. Yes, you may be right that it doesn't matter why "OP has less reputation in the eyes of management". But a different answerer could consider that context important. – Kyle Strand Aug 14 '17 at 17:37
  • @KyleStrand: I disagree. 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. -- This is a prejudicial statement based on age that has nothing to back it up. The fact that OP is suggesting he should treat this person differently simply because they are older is ageist. It's actually pretty much the definition of ageist. – Joel Etherton Aug 14 '17 at 20:57
  • 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
  • @JoelEtherton somewhat ironically, the fact that the OP recognizes that his youth makes him vulnerable to ageism in criticizing his colleague has somehow been twisted by you as the OP being ageist. – Chan-Ho Suh Oct 11 '18 at 04:43
  • @Chan-HoSuh it's neither ironic nor a twist of his words. I pointed out a different way of perceiving it to help OP shed assumptions. – Joel Etherton Oct 12 '18 at 05:33
  • @JoelEtherton "I think you'd be better positioned for success if you stopped being a narrow-minded ageist..." <-- comments like that led me to believe you were making accusations of ageism against the OP. I'm sorry to misunderstand the point of your comments. – Chan-Ho Suh Oct 12 '18 at 20:36

1 Answers1

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.

Vietnhi Phuvan
  • 72,342
  • 8
  • 133
  • 268
  • 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 says reinstate Monica Mar 09 '18 at 07:21