Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I work with three other guys; I'll call them Adam, Brian, and Chris.

Adam and Brian are bright guys. Give them a problem; they will figure out a way to solve it. When it comes to OOP, though, they know very little about it and aren't particularly interested in learning. Pure procedural code is their MO.

Chris, on the other hand, is an OOP guy all the way -- and a cocky, condescending one at that. He is constantly criticizing the work Adam and Brian do and talking to me as if I must share his disdain for the two of them. When I say that Adam and Brian aren't interested in learning about OOP, I suspect Chris is the primary reason.

This hasn't bothered me too much for the most part, but there have been times when, looking at some code Adam or Brian wrote, it has pained me to think about how a problem could have been solved so simply using inheritance or some other OOP concept instead of the unmaintainable mess of 1,000 lines of code that ended up being written instead.

And now that the company is starting a rather ambitious new project, with Adam assigned to the task of getting the core functionality in place, I fear the result.

Really, I just want to help these guys out. But I know that if I come across as just another holier-than-thou developer like Chris, it's going to be massively counterproductive.

I've considered:

  1. Team code reviews -- everybody reviews everybody's code. This way no one person is really in a position to look down on anyone else; besides, I know I could learn plenty from the other members on the team as well. But this would be time-consuming, and with such a small team, I have trouble picturing it gaining much traction as a team practice.
  2. Periodic e-mails to the team -- this would entail me sending out an e-mail every now and then discussing some concept that, based on my observation, at least one team member would benefit from learning about. The downside to this approach is I do think it could easily make me come across as a self-appointed expert.
  3. Keeping a blog -- I already do this, actually; but so far my blog has been more about esoteric little programming tidbits than straightforward practical advice. And anyway, I suspect it would get old pretty fast if I were constantly telling my coworkers, "Hey guys, remember to check out my new blog post!"

This question doesn't need to be specifically about OOP or any particular programming paradigm or technology. I just want to know: how have you found success in teaching new concepts to your coworkers without seeming like a condescending know-it-all? It's pretty clear to me there isn't going to be a sure-fire answer, but any helpful advice (including methods that have worked as well as those that have proved ineffective or even backfired) would be greatly appreciated.

UPDATE: I am not the Team Lead on this team. Chris is.

UPDATE 2: Made community wiki to accord with the general sentiment of the community (fancy that).


migration rejected from stackoverflow.com Apr 20 at 14:18

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

put on hold as off-topic by Ixrec, GlenH7, MichaelT, Snowman, durron597 Apr 20 at 14:18

  • This question does not appear to be about software development within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.

Good question, but it should be somewhere else. It isn't programming-related, in that the same situation could come up in other fields. –  David Thornley Aug 17 '10 at 16:19
@Raj: Should it? I kind of thought that community wiki was for "What's your favorite X?" questions and the like -- that is, totally subjective questions where answers are mostly expressing users' opinions rather than helping the OP solve a problem. Maybe I've misunderstood the spirit of community wiki? –  Dan Tao Aug 17 '10 at 16:53
@Dan Tao suggest a TeamOverflow on area 51. –  user1936 Aug 17 '10 at 19:54
68 upvotes, 29 favorites, 22 answers, 1400+ views and marked as community wiki for a subject that is incredibly important to working well with fellow programers. How could this possibly be closed as off topic? Off topic was the question of what a girlfriend of a programmer should put on his birthday cake to make it geeky! Did that get closed? stackoverflow.com/questions/2420689/… –  Paul Sasik Aug 18 '10 at 15:40
Voting to close as this is about team management rather than software development, which is no longer considered on-topic on this site (similar questions now belong on The Workplace). –  Ixrec Apr 19 at 11:52