14

I've been on the constant road of learning new concepts in OOP, Software Design, Architecture, etc. But there are times when you are in a team where those concepts are foreign to them and they don't have the time or the same eagerness to learn as you.

The problem is if you design your code the "right" way, the people who code with 2kLOC classes won't understand it. Would you sacrifice good coding principles to support your team? What about a scenario where this will be a long term arrangement?

Jonn
  • 2,028

2 Answers2

14

Welcome in the real world.

I worked with hundred of different developers around the world, in startups and large enterprises. The vast majority of them doen't understand advanced concepts, and won't in the future. It's just too complicated to master something unless you spend over a decade in that particular field. Very few are able to do that.

That's why I'm really upset when one of my developers is too "CV driven" and try to implement design patterns that do nothing better but allow him to put something new in his resume (or the title "Architect"), while the rest of the team is strugling to understand and maintain HIS code.

That's why I think that a good developer is not the technically supperior, but the most pragmatic of the pack:

An excellent developer try to convert a functionnality the business ask by maximizing the ROI.

IMHO, keeping things simple, is the way to go. If you want to do the "right" stuff, do it at home. Your boss is especting something else from you.

5

I think there's a difference between what you're referring to and technical debt.

Technical debt is when you deliberately do a hacky and quick implementation with the full knowledge that you will have to change the design at a later stage. Similar to financial debt this can be beneficial to a project but you need to be aware of it and eliminate it at a later stage.

In terms of deliberately not using certain language features - I have been in that situation as well. I remember I once implemented anonymous delegates just after C# 2.0 came out, and a few months later I saw someone had simply deleted my delegate and replaced it with a normal method. They simply didn't understand the code :-(

Having said that, it's not always a bad thing. Let's keep it simple.

Jaco Pretorius
  • 4,037
  • 2
  • 29
  • 38