Employers: Put Your Money where Your Mouth Is
I had an interesting exchange on Twitter a couple of days ago with Dave Schinkel. Here’s the most salient tweet:
@daedtech thx, Good to know. I’m actually building a list of companies doing TDD in Chicago. So far around 50, all downtown. I’ll add GE
— Dave Schinkel (@DaveSchinkel) March 11, 2015
Both local to this area, we were discussing how it’s hard to find a shop that would describe itself as craftsmanship-centric outside of, perhaps, downtown Chicago. Mostly you’ll find a lot of get ‘er dun kind of approaches where management holds its nose and measures productivity in what amounts to raw output. The folks that rise to the top in such shops are what Michael O Church describes as “Brawlers”:
First I will focus on the Brawlers (also known as “rock stars” or “ninjas”). They write hideous code, and they brag about their long hours and their ability to program fast. There’s no art in what they do. They have only a superficial comprehension of the craft. They can’t be bothered to teach others what they are doing, and don’t have enough insight that would make them passable at it anyway. What they bring is a superhuman dedication to showing off, slogging through painful tasks, and kludging their way to something that works just enough to support a demo. They have no patience for the martial art of programming, and fight using brute strength.
Brawlers tend, in fact, to be a cut above the typical “5:01″ corporate programmers. Combine that with their evident will to be alpha males and you get something that looks like a great programmer to the stereotypical business douche. Brawlers tend to burn themselves out by 30, they’re almost always men, and they share the “deadlines is deadlines” mentality of over-eager 22-year-old investment banking “analysts”. There is no art in what they do, and what they build is brittle, but they can do it fast and they’re impressive to people who don’t understand programming.
(I highly suggest reading his whole post, by the way.)
If you’ve put in enough tours in the corporate programming theater, you’ve probably seen this in action. You watch a shop promote people for making huge code messes and then “saving the day” with a series of 70 hour weeks spent cramming mountains of bugs into the proverbial closet and hoping that they don’t blow the door off its hinges before Mom is done inspecting the room for cleanliness. After their promotion, they start ordering their underlings to stuff more things into the closet. The game is to get promoted before anyone figures out that you’ve deposited a ticking time-bomb into the code base and then blame the explosion on The New Guy or The Guy that Just Left.
Not all shops are like that, however, and going in search of one that isn’t is rewarding when you find one. If you find one. After all, it’s really not easy to find them. I’ve talked about this before in the context of interview processes incenting employers and candidates to put on artificially good faces. That is, no shop is going to say, “yeah, we have a bunch of Brawlers working here that never saw a global variable they didn’t like — our code is a nightmare.” Instead, they say, “We have a fast-paced environment filled with smart, A-players who set the bar high for delivering on commitments.” Instead of “snarled legacy mess” its “ASP MVC Latest a Plus because we have green-field, migration plans!” In fact, there’s such intense demand for software developers that employers probably have more incentive than candidates to hand out rose colored goggles for interviews.
And those goggles bring me back to what Dave said: “I’m building a list of companies doing TDD in Chicago.” My first thought on reading that was “holy crap, give me that list in case I ever decide to look for W2 employment again!” It’s not that I’m particularly zealous about a software development approach, but that list is solid gold if only for the fact that it’s a list of companies extremely unlikely to be populated by brawlers and expert beginners.
If you follow the rest of the twitter exchange, you’ll see where my thinking went next. I said something along the lines of “there oughtta be a thing that does that — like Glassdoor for clean code.” In my head, I had a vision of an inverted form of Stack Overflow Careers. In essence, as a developer, you could go in and browse tags and see what practices shops followed and what languages and frameworks they used. But then I thought a little further on the matter and realized this would be subject to the same kind of gaming that’s plagued the industry forever — the equivalent of some company’s “social media guru” logging into Glassdoor and posting a bunch of fake positive reviews. “Oh yeah, we’re all about test driving development and we’re literally the most agile company ever, and we do design patterns and stuff.” And, on the flip side, you might simply get disgruntled former employees maligning the company.
So that brings me to the culmination of my thought process on the matter (at least up until this point). I’m wondering what the feasibility might be of an organization (let’s call them “Craft Auditors”) running a site similar in concept to what I’ve described, but not based on self-reported, anonymous information from former employees. What if, instead, companies invited Craft Auditors in to observe their shop, process, code, etc (with appropriate NDAs and everything signed and all that) and list their attributes. I see this as purely opt-in, so if the shop claimed to be following Scrum and they were, in fact, following Scrum, that would be listed. If Craftsmanship Auditors observed that their code was a snarled mass of global state and eventing feedback loops, they simply wouldn’t say anything about that. Shops would stake their claims to what they wanted applicants to see, and Craft Auditors would list for them the ones they actually lived up to.
The use case I’m imaging here is simple. While I don’t ever anticipate conducing another “cold job search,” if I were going to, it’d be nice to go somewhere and say, “show me all the shops within 30 miles of Chicago that practice TDD as the norm, keep up with the latest development tools, and give developers creative autonomy without them being micromanaged.” Imagine if I tried to conduct that search today. I’d get a slew of false positives, perhaps only to be discovered during an interview or even after starting. And, what’s more, I’d only come up against the organizations for which recruiters were actively chumming the waters when maybe what I’d prefer would be “I see that none of those shops is hiring, so I’ll just wait until one is.”
Anyway, that’s the idea, and I have no time to write the site. So, maybe someone reading will. Maybe you’ll take it and run with it. Maybe you’ll overcome its half-baked nature and polish it to a shine. Maybe you’ll figure out how not to have it sound eerily like some kind of bureaucratic standards organization. Or, maybe not. But it never hurts to ask. And, if you build it, I’ll use it, endorse it, and recommend it.