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?

1
  • more often I've had to code in deliberate errors in order to make things work "the same as the legacy code" where the legacy code contained errors management didn't want to get customers to know about by releasing new versions that yielded different (correct) results...
    – jwenting
    Commented Jun 1, 2014 at 3:27

2 Answers 2

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
  • Honestly, I think I'm one of the guys you're describing. But aside from the CV and experience farming, my greatest beef is that I don't want future maintainers (which could be me too) to be swallowed up whole by 3000 lines of code by a class that "does everything". Or the obvious memory consumption created by instantiating one of these god-classes. IMO they aren't even the bigger design patterns, they're just basic OO principles I've come to live by.
    – Jonn
    Commented Sep 23, 2010 at 14:02
  • 4
    I didn't say code like a moron. I said "keep things simple".
    – user2567
    Commented Sep 23, 2010 at 14:55
  • I didn't mean it that way. But well, that's what I indicated in the question. This isn't in a case where I'm being asked to stop implementing command patterns or MVP or MVC. It's more of along the lines of me being asked to put all stuff into one class. I do get your point though.
    – Jonn
    Commented Sep 23, 2010 at 15:20
  • 1
    MVC is just fine, because it is becoming a standard way of doing things.
    – user2567
    Commented Sep 23, 2010 at 15:21
  • Technical superiority should mean that you in fact eschew needless abstraction/complexity in favor of legible/maintainable code. This answer leans a little bit too much in the direction of writing for the lowest common denominator which can be pretty damn low if your company outsources from the right kind of organization. Just because somebody might not understand a basic principle that they should, doesn't mean you should violate it willingly for instance. Commented Jan 20, 2013 at 17:03
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.

4
  • 1
    +1 for the deleted anonymous delegate. Had similar experience. I started burying such things deep in to libraries where such programmers need not go.
    – James
    Commented Sep 23, 2010 at 13:58
  • 1
    Or you could probably add the "system generated snippet". XD
    – Jonn
    Commented Sep 23, 2010 at 14:08
  • Haha, sneaky - nice tip Commented Sep 23, 2010 at 17:16
  • Picked it up on the comments question on SO. XD
    – Jonn
    Commented Sep 26, 2010 at 12:28

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