I have been troubled by some stuff for some time now and would like to hear if anybody has opinions about it. Over the years I have seen several developers that would be considered smart and get things done. As it turns out the code they make is surprisingly crappy.
I certainly don´t claim to be an expert myself but there are issues I consider any decent developer must know about, such as proper naming of variables, methods and classes, which goes a long way to making cleaner code. Other things include issues such as, code should be readable, easy to understand, preferably have some thought behind it, use small methods instead of mammoth methods with hundreds or even thousands of lines of code in it. These are things that in my experience (11 years) has been proven to work well no matter what kind of project I have been involved in.
In the last 2 to 3 years I have been working with several really smart guys.I have seen them solve some really tricky problems and I have seen them use some rather advanced programming constructs. They have been able to get some advanced stuff working.
So they are truly smart people and yet the code I have seen them do is totally unacceptable by my standards. Do I have a right to judge them considering they are smarter than me and that I certainly need their help at times? Well, here is my problem, the code they make have crappy variable names, very very long methods and OO design is absent but the code tries to be OO. (In one medium-sized project the smart developer had only used three! classes, that is not OO to me.) Once I had a suggestion for an improvement, plenty discussed with a developer I totally trust, and implemented it. One of the smart guys remove my code and reverted it to the old ways "this is the way it always has been done before". And so the list goes on.
Som my questions are something like this: Firstly, am I totally missing something here? Is good variable naming unimportant? I am a sucker for code quality, and perhaps I am overdoing it? How do we define smart? Being able to do sophisticated c++ code and being able to do some smart algorithms, is that by itself smart enough? I don´t know what to believe, either the smart guys aren´t really smart and mess things up or I have to rethink my own ways of doing things.
What do you folks out there think?
/Confused developer