Elegant Coding looks like a good blog to keep an eye on. Eleven Equations True Computer Science Geeks Should (at Least Pretend to) Know has a list that will have me going back to the books to figure out what the symbols mean (again) and figure out what these important mathematical concepts mean.
A Confederacy of Cargo Cult Coders is another post that doesn’t directly address why Feynman’s cargo cult go applied to coders but does provide a few clues.
a trend that I am seeing, developers who now claim themselves as “senior level” because they have gained proficiency as cargo cult coders, but when you see their non boilerplate code it will often demonstrate an egregious lack of knowledge of basic concepts like cohesion, coupling, inheritance, basic OOP design, threading, the underlying workings of the framework technologies themselves, etc. I think the biggest danger is the complacency and perhaps self delusion or naivety which can even manifest itself as hubris, that these developers acquire from this limited perspective, in fact it is ultimately self limiting behavior because all new technologies and languages are then viewed in the same narrow context, usually as another resume bullet, practitioners of what I call RDD (Resume Driven Development).
… they were cargo cult coders who had taken very defensive and recalcitrant positions, you couldn’t reason with them because if you tried to talk about good design principles or standard practices you were speaking a language they did not understand, they only saw software development as learning some new technology that they could then claim to be experts in. They will pollute your system with redundant inconsistent shoddy code that will degrade its quality, performance and maintainability. Worst yet, they will be excessively defensive in the face of criticism, which makes code reviews hard if not impossible, and since they don’t read or understand good engineering principles they often argue against them. Also they will often disrupt the team dynamics and poison it with their defensive and sometimes arrogant behavior this can result in the team becoming highly dysfunctional which can create a toxic working environment that is hostile to good developers and is the opposite of the optimal environment in that the team will not function as whole that is greater than the sum of its parts it will function as whole that is less than the sum of its parts.
Like the cargo cultists, these coders build things they don’t understand. That seems a stretch as the cargo cult coders at least build more than a non-working model. The description does highlight two concepts underlying much of technology, though. The first is that excellence in engineering often depends upon a foundation that is not visible and craftsmanship depends upon attention to detail even on the inside of the product. A second concept is that of how those who don’t necessary have the engineering knowledge or craftsmanship skills defend their abilities.
Geoff Moes also notes one of the more critical career development issues.
Sadly I have recently been on some pretty dysfunctional teams and I feel the biggest tragedy is that on those teams there have been developers in whom I saw that they could be more than they were on the project, but they mainly lacked guidance
I hit this one when asked by High School students for tips about a college career. It is inherent in the old apprentice model for tradesmen. It is a critical issue for graduate students. It is the social phenomena necessary for setting personal goals and find a direction for focusing efforts. It is an essence of teaching that is often set aside in the model that only sees teachers as information providers.
Finding a mentor is usually a crap shoot. Very often the need for a mentor or hero or role model is seen as something that just happens and not as something sought after and found. The value of such an interaction is not realized until well after it is encountered. Too often, as with gangs, the relationships found can be destructive. If that path to destruction can be avoided, it is still a wandering around in the wilderness until a helping hand can be found to guide one to solid ground. That is what Geoff observes: that managers and leaders often forget that they are the ones who should actively develop their teams individual by individual by offering that hand and providing guidance for growth and development.
Post a Comment