Nearly fifteen years ago, I wrote Pounding A Nail: Old Shoe or Glass Bottle?. It opened by asking how one might respond to the following question:
A client has asked me to build and install a custom shelving system. I'm at the point where I need to nail it, but I'm not sure what to use to pound the nails in. Should I use an old shoe or a glass bottle?
The parallel to software development was that so-called professionals would ask questions just as preposterous in "the newsgroups/forums/lists" (i.e. the pre-StackOverflow days). And even worse, the answers given by other professionals may as well be step-by-step instructions for how to pound finishing nails using a half-empty bottle of Jack Daniels.
This didn't seem right to me at the time. I wondered if being a "grumpy curmudgeon" by berating them for asking such an absurd question would work. Perhaps, it'd be the form of shock therapy they'd need to set them on the right path? That's what worked for me, anyways.
I learned from my menor, Joe CELKO
Joe CELKO was, and still is awesome. He's a database legend, and wrote a series of database books that should be mandatory reading for all software developers.
CELKO is also a very scary man. But the right kind of scary... exactly the way that an Internet mentor you've never gotten a chance to meet should be like.
There is an old fanblog dedicated to some of CELKO's greatest hits, which range from genius-level SQL answers to... well.... harsh.... answers to frankly stupid question. For example:
>> What is the proper syntax for stacking these IFs in a Stored Procedure What the hell are you talking about?? IF-THEN-ELSE-ENDIF constructs in any procedural programming language are nested or sequential. This has nothing to with SQL. Don't you know how to program in ANY language??!! Please post something that makes sense when you are sober --CELKO--
To me, watching someone with godlike SQL abilities scold the unworthy masses was inspiring. And also hilarious, in a dunce cap sort of way. Getting scolded is a rite-of-passage, I had believed, and the "victims" of scoldings walk away with war stories and ultimately become better people.
Although I was never a victim of a CELKO scolding, I still feared the man. But it was the right kind of fear... that CELKO would somehow, using whatever black magic database gods possess, see terrible code I wrote and unleash a scathing-yet-hilarious critique. To this day, I still live by the database motto WW--CELKO--D. As should you.
I became a much better developer thanks to CELKO. All of the data integrity, performance, and maintainability problems that CELKO warned were very real; I saw them countless times at countless clients. But they never impacted any of the systems I built, because I had a good mentor. CELKO saved me and my team countless headaches and problems.
Not everyone learns like me
In the many years since I wrote that article, I've come to realize that different developers have different capabilities, different skills, and different learning styles. Nearly all developers want to do a great job, but most don't even know that they don't know what they're doing. While someone like CELKO does indeed have all of the answers, they aren't the right mentor for most people.
One of the most important responsibilities that a development manager has is to navigate the differences on their team, and help everyone learn. Whether that's transferable skills like C# or SQL, or institutional knowledge that lets them succeed within the company. This isn't easy to do, and most managers -- like their team -- are ill-equipped to do their job.
But I also believe managers want to do a great job, and I think I've got one way to help: provide them what different developers want to learn and how they want to learn it. This is where you come in.
The Developer Mentorship Survey... win fabulous prizes!
I've put together a survey with questions on a number of topics:
- Code Review; are these used as a learning opportunity
- Technology Skills; how you learn skills like C#, SQL Server, JavaScript, etc.
- Institutional Knowledge; who guides you within the company and systems
- Technical Debt; how bad do things look on the inside, and are they fixing it
- Understanding the Mission; how well you see how your code adds value to the business
- Development Process; your understanding and usage of the overall software process
Your answers will help paint a picture of not only different learning styles and ambitions, but how those vary in different kinds of organizations. I'll analyze this data, review other management studies, apply my many years of experience studying curious perversions in information technology, and compile everything in an easy-to-digest report. And then I hope to continue doing this year after year, refining and improving on the process along the way.
And did I mention... win valuable prizes? I'll randomly be selecting at least 25 respondents who entered an email address to win a free The Daily WTF mug. I'll also pick out some respondents who left some great/insightful comments as well.
Take the Developer Mentorship Survey »
Please spread this survey far and wide! I'd like to get as many developers as possible to take this survey, so please ask your coworkers, developers friends, and random peple on the internet with your social media network.