last day (16 days later) » 

01:19
3
Q: More junior teammates don’t understand my work...and that’s my fault?

XophmeisterI’m a software engineer and the most experienced within our team. My code has been labelled as “complex” and “hard”, by both my junior colleagues and (vicariously) my manager. My code is “complex” because it’s well engineered. It’s like that for many good reasons, which make it easier to read, re...

Since your coworkers do not understand your code, how can it objectively be good? Isn't one of the hallmarks of quality code the ability to read it by others?
@TymoteuszPaul but if you are trying to teach monkeys it may take a while...
@SolarMike Are you implying that OP works at a zoo, or insulting OP coworkers, whom you've never met?
I should perhaps emphasise “junior”. Yes, good code should be readable. I maintain that my code is readable — previous colleagues, who were more senior, had no problems with it — but my current colleagues are so inexperienced that they don’t reach the bar. They’re not monkeys, but as an analogy, take legal language: it’s precise and there for a reason, other legal experts understand it, but laypeople find it “hard”.
@TymoteuszPaul I think the OP clarified quite nicely, works for you?
01:19
I have a couple of questions.1) Are you using a programming language which has some very complex features (like c++)? 2) Are you using a relatively new framework or other library which you are an expert with, but which others would have to spend many hours learning?
@speciesUnknown In this instance, I’m writing Python, which is already easy to follow. I’m not using any exotic frameworks or libraries.
I'll update my answer accordingly. One more question - are you responsible for their training?
@speciesUnknown I am not responsible for their training, but there is an expectation that we help each other, of course. Which I am happy to and do regularly.
@Xophmeister - what does your manager say you should do? Do that.
Yes, it's your fault. Your company is paying you to write code that is maintainable by the company, and often that means programming to the "lowest common denominator". If that level is below the standards for which you may need to program, you're probably in the wrong company.
01:19
"I’m not using any exotic frameworks or libraries." Well, that's your problem right there.
user481095
@Xophmeister Can you be more specific about which things your co-workers are complaining about, or which kinds of advanced technique/structures you're using? Thanks.
You are indeed payed for writing code that your collegues can read and mantain. It's likw when you work for a non-IT client: part of the work is to talk to the client in terms they can understand and diacuss with you.
Regarding your law analogy: say you are a law expert and you have to advise your collegues who are lawpeople about law. What would you do? Would you talk to them in a language they don't understand and make your own decisions without including them? Or request they take years of study? Or talk simpler? Or change company to work with law experts? Or a mixture of some?
@guest My point is that my colleagues shouldn’t be lay people and are presumed not to be.
@mtw It’s not even very advanced. It’s not like I’m writing weapon’s grade Haskell. The most “advanced” thing I’m probably doing is dependency inversion, which is done specifically to make it easy to write tests against. It’s not done to show off, it’s there to make the code more maintainable.
sounds like lazy juniors
"My code is “complex” because it’s well engineered." - that isn't arrogance. It's self-delusion. Neither will be appreciated by your co-workers, of course.
01:19
I feel like assigning blame here is unhelpful. It's nobody's fault - it's simply an issue of mismatch. That said, everybody on the team should be able to understand the code. Preferably, your boss would set the standards and either hire people who can adhere to those standards or provide appropriate training. If your boss doesn't want to get involved, then as the most senior member, you are probably most suited to either "dumbing down" your code (easy) or bringing your team up to speed (more effort). The option is really up to you.
@JoelEtherton how do they ever get better? How does the craft progress? As the demand for engineers continues to increase, that lcd is going to move down, should we start dumbing down our languages and style in anticipation of that? When I look over my documentation should I be saying to myself "nope, no good, still too many syllables"? And I honestly don't have an answer here, but I'm pretty sure that isn't it either.
 
6 hours later…
06:58
@Xophmeister: Why shouldn't they lay people? Who presumes them not to be? Being able to code is not something moral (like being.truthful) nor is it some basic skill like reading that everybody must have (like reading in many parts of the Western World.) Nobody does have to be able to code. The exception are people working as coders. But they are presumed to be able.to code just because they are paid for that. Thereforw, the company (who pays) decides how much they should be able to code.
The company has the risk and gives the monwy
. And apparently, your manager is fine with their level. So why are they presumed to be able to do more? Who presumes them so.and on what basis?

  last day (16 days later) »