8

I am a senior software engineer, on an algorithm development team, with the algorithm engineer title (I wanted to stop being a software engineer by title, and move to algorithm development, which I did).
I am quite new at my Startup (some months).

On my team is a junior engineer, who is extremely sharp and enthusiastic, about algorithms. Not about software or team-work. She is a very nice person, but doesn't care much about software methodology, or writing code such that others can benefit, or benefiting from others' code.
This is apparent in many monoliths, a lot of mixing up "what" with "how" (lack of encapsulation), bad naming, (very) slow code, multi-typed variables (python) and a general write-only attitude. I could go on.

I tried to talk about it a few times, and she said frankly, she doesn't really care about software engineering or coding. She wants the algorithm to work for her, and that's all.

This situation makes life very difficult for someone who wants to work with her code, and even more frustrating when she doesn't adhere to existing conventions on existing code. Since she started some of the repos, she is considered their owner, and doesn't go through PRs, which is what I would like to change, in order to at least prevent design catastrophes, if not improve quality overnight. Not to mention her gradually improving, and helping the code base.

The team leader is a very startup-minded person, who is also not a SW major, and though he cares about improving code-collaboration, in practice, he prefers her to write fast, and not learn to code better. He doesn't deal directly with her code. She also works a lot of overtime, for fun, so if her code gives her trouble, that's how she deals with it.

This also prevents me from coding fast using her code, as she is the only one that can read it fast. This forces me either to be slow, or refactor her code in order to become faster overtime.


I would like to prevent this in the future, and gradually improve the team's code quality.

I thought a good way would be to do regular code reviews with her, but I'm afraid I am stepping out of my place.

Meanwhile, technical debt increases much faster than is required, and coding is not a tool, but a liability.

How can I approach this?

5
  • Technical debt is unfortunately not your problem, but that of upper management. Considering that this is a startup, they are not worried about that. The only solution is to make code that has less technical debt and hope that events happen to show the value of such to upper management (but the probability is low right now).
    – David R
    Apr 8 at 14:36
  • Does she deliver code? Why can she not provide a library, so you don't have to deal with code? Apr 8 at 19:07
  • 1
    "she doesn't adhere to existing conventions" Are those conventions written down? Can you agree to some coding conventions and write them down together? "who is also not a SW major" Is this a student-led startup? If it is, do yourself a favor, look for another employer (and even if it's not). If you're into algorithms, look for an employer that screens for that kind of developer from the get go. Apr 9 at 1:27
  • Try pair programming for a week, maybe
    – androidguy
    Apr 11 at 6:14
  • If she does what she is paid for, this is just extra work for everyone. Bring her in every time her code needs to be reached from your code, and have her make an API for you. Apr 12 at 6:33

3 Answers 3

9

You cannot. Your team lead is a paper pusher and not a developer. When called to task, he's going to kowtow to his management to deliver fast results. Such a leader will have no concept of engineering software for long term reliability, maintainability, or scalability. The junior developer's values align more with the team lead's than your own, and she has no reason to change because the crappy development style is encouraged by the team lead. You, my friend, are the odd person out.

The junior developer will balk at the idea of code reviews -- claiming that it will slow her down -- and the lead will support her.

You can plead with the team lead but he lacks the experience and vision that you have, and can't relay your concerns to his management in a way that they'll listen and be concerned with any criteria other than "fast".

Unless the management changes, it's not likely to improve. They'll have critical hiccups, and likely stress you out to fix things as they come, but never address the root cause (poor practices) until there's a catastrophic loss of money or credibility from some incident.

I hope you have outside interests in which you can express your good judgment and feel accomplished, because you're just not gonna experience that on this particular job.

4
  • You are probably right but that sounds very bleak. In my experience there is often some things you can change (but often only in small steps). Also, the question is - are those 3 people the only ones in that team?
    – kedavle
    Apr 7 at 20:09
  • I must stress this is an algorithm development team. I doubt I will find good software skills very easily on such teams, much less to my standards. The team lead does listen to me, yet he can't come up with his own arguments, software-wise. He is NOT a paper-pusher. He is skilled in computer vision, algebra and coming up with creative solutions. Fast, now, IS an important criterion, which made and make this company exist. That is is forte. He also listens to me, and I doubt I pushed hard enough, or correctly enough.
    – Gulzar
    Apr 7 at 20:36
  • Also - I did not suggest code reviews to her yet. I came here first to find out how to do that. Thing is I want to do them FOR ME, rather than FOR HER. For the company, for sure. My experience in life shows people don't like to be controlled (duh), which is kind of what I am trying to do. I have to find a way to explain this (also to myself) and find a way to do this without coming off controlling, thus making others WANT in on this. Some understanding only comes with SW experience, which they simply don't have.
    – Gulzar
    Apr 7 at 20:42
  • @kedavle There's another one who is not important for the discussion, he mostly works alone. I will once again stress this is an algo team, there is a lot of POC code by nature, but I am talking about shared code.
    – Gulzar
    Apr 7 at 20:51
2

I think you will increase the chance of her accepting code-reviews if you present it as "peer-reviewing each other's code". Instead of "me controlling your code" which seems to me is how you want to approach it. When you start doing code-review as peer-review she might even teach you a thing or two or spot some errors in your code.

-3

Two options:

  • Easy: ask the junior to review your code instead. They will learn a tonne from it, and might eventually want to try to have their code reviewed too.

  • Better: work with the entire team to institute a process where every single line of code that goes into production has been reviewed by someone else.

    That your manager is opposed to this is not an issue. You are the software engineers. You are the experts on how good engineering happens. A surgeon should never be talked out of washing their hands by their manager.

1
  • @JoeStrazzere you're right. I phrased that way too bluntly. I should have said something to the effect of "is a roadbump to be worked delicately around, but is not a show-stopper".
    – kqr
    Apr 11 at 12:10

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .