DaedTech

Stories about Software

By

Self-Correcting Organizations: Fall of the Expert Beginner

Today, I’m going to make what will be, for now, the last post in the Expert Beginner series. I edited the first post in the series to add a blurb about this, but I’ve actually been working on compiling these posts into an e-book that will sell for a few dollars. More specifics on the availability and timeframe of that to follow.

Also, I’m going to be traveling for a couple of weeks with very limited access to internet, so I doubt that there will be any posts to this blog before Memorial Day (May 27th). I plan to resume a normal posting cadence then. Thanks for your patience.

The Human Cost

If you’ve followed this series of posts, it’s pretty likely that you empathize with observing and dealing with Expert Beginners. That is, you’ve most likely encountered someone like this in your travels and been stymied, belittled, annoyed, exasperated, etc. by this Expert Beginner. So you’re probably rooting for the outcome in the title of the post. This is the post in which the cosmic scales are rebalanced and the arrogant Expert Beginner finally gets his comeuppance: The Fall of the Expert Beginner. But not so fast–there’s some ground to cover first, and if you’re looking for a nice resolution where the bad guy is brought to justice, you might be disappointed.

I mean, it’s nice to read the Daily WTF and see the occasional story about a bungling but nasty manager or architect being dressed down or laid off, but in your life, the players involved are actual people and everyone suffers real consequences. If you hire on with an organization dominated by an Expert Beginner and then leave in frustration, you’re investing time that you’ll never get back and incurring the hassle of a job search sooner than expected. You also probably came on board because you liked the company and its goals and mission, and you leave knowing that its interests are being sabotaged by incompetence and that your friends and everyone else still working there are not doing as well as they could be if the company were enjoying more success. And even if the Expert Beginner does wind up being disgraced somehow, via demotion or termination, that’s a person who now must explain to a family that they’re going to have to batten down the hatches financially until he figures something out.

Escaping Intact

In the last post in this series, I left off with a teaser for this post where I said that Expert Beginners generally enjoy high odds for short term success which drop to zero on a long enough timeline. Here, I’d like to talk about the means by which some Expert Beginners tend to escape that fate before describing it in detail.

The secret to success in the Expert Beginner world is to understand that programming (or really any line-level expertise) has to be a means to an end only. It’s not a skill that you’re going to master, but one of which you’ll fake mastery for just long enough to profit (literally and figuratively) and bail out. This requires some ability to tolerate cognitive dissonance and swallow pride, albeit in a way that allows for ample spinning of the truth. And really, there’s only one category of Expert Beginner from the three that I defined in the previous post that can get out of the game as a success: the Company Man.

Let’s consider casino poker as a metaphor for explaining the fate of Expert Beginners. Expert Beginners are essentially poker novices who sit down at a low stakes table, catch a run of incredible cards, and wind up with a big fat stack through the vagaries of chance. From there, the paths diverge depending on the archetype.

Xenophobe stays at the low stakes table because on some level he knows that he’ll get slaughtered by good players at the high stakes tables. He doesn’t tell himself this, naturally, but rather insists that he likes the down-to-earth vibe of the table or something. He also doesn’t cash out because being good at poker is important to him. So he rides his initial luck as far as it will go, but, sooner or later, that luck runs out. Slowly he loses control of his modest fortune, one bad bet and wrong play at a time until he’s chip-less. He eventually leaves with nothing in his pocket, unable to understand why repeating the exact behaviors that earned him success didn’t continue to work.

Master Beginner takes his initial luck and interprets it brazenly as utter poker mastery. He sits at the tables that have the highest stakes and goes all in all the time, perhaps without even looking at his hand. His beginners’ luck allows him to parlay a larger stack into an intensely successful (but brief) series of bluffs which catch the sharks and good players completely off guard, feeding back into the cycle and making him feel invincible. Once people figure out his game, they quickly and decisively dismantle him no matter at which table he’s seated, but his brief, intensely bright and meteoric rise is as memorable as the explosion and flameout.

It’s the Company Man approach that winds up with a chance for escape. Company Man has neither Xenophobe’s neurotic need to believe himself a poker expert nor Master Beginner’s complete faith in his delusion, so he is the one that might actually cash out and go do something else with the money before it’s all gone. There’s no guarantee, but at least he has a fighting chance.

Tragicomic Explosion: Fall of the Master Beginner

The Master Beginner’s fate is really the least interesting because it’s so entirely predictable. In the poker analogy, he blows into the high stakes table like a hurricane, creating massive disruption before blowing out just as quickly. In the real world, Master Beginners don’t last, either. Their timeline is highly accelerated.

A Master Beginner that is new to a company will come in and proclaim that everything is wrong and loudly bang his own drum as some kind of Messianic figure sent in to save the masses from themselves. Everyone believes him at first–even Experts. The reason is partially what I mentioned in the previous post: people assume someone this brazen must be right. But it’s also partially that people in the Competent to Expert range are aware that they’re not all-knowing and are inclined to accept initially at face value that someone knows things they don’t.

It isn’t long before the Competents, Proficients, and Experts figure out that Master Beginner is a bag of hot air. The only remaining questions then are (1) how long until management starts listening and acts on the words of their good developers; and (2) how many hilarious things happen before it does.

Some Master Beginners mount an impressive enough initial assault to be promoted quickly or named to a position of authority, but this just buys them a few more months or, in extreme cases, years, once the jig is up. The Master Beginner rockets through the atmosphere like a meteorite: blazingly fast, with blinding light, and ending in a spectacular conflagration.

Master Beginners are probably the least pitiable not only because they’re usually insufferable, personally, but also because they tend to land on their feet. If one’s shtick is being able to pull off a ridiculous skill bluff for a little while, securing interviews and getting job offers tends not to be a problem. Most people who know Master Beginners tend to shake their heads and say, “I can’t believe people keep hiring that guy!” Master Beginner inevitably fails at his goal because his goal is to receive the recognition he deserves as a consummate expert, and that never lasts for any length of time, wherever he goes.

Slow, Agonizing Defeat: Fall of the Xenophobe

Xenophobe’s arc is a longer-playing one by far than Master Beginner, and there is actually some remote chance for limited success. The goal of Xenophobe is to freeze the world in its current state, within the cocoon of his comfort zone. He wants to keep the same members on the same team using the same technologies to do the same work, in perpetuity. If you’re a bettor, you probably wouldn’t take those odds on a long timeline. Nevertheless that’s what he aims for.

If he happens to work for some remote outfit, nestled snugly within some byzantine bureaucracy, he might be able to keep the dream alive as he runs out the clock toward retirement. But situations where nothing about the work environment changes are rare, especially in software, and are only becoming rarer. There aren’t that many opportunities to lead a team that cranks out maintenance updates to some COBOL system and plans to keep doing so until 2034.

The far more common case is that things do change. People come and go. New frameworks must be learned. New ideas sneak in through various channels, and all of it chips away at the credibility of Xenophobe’s qualifications. He can manage at first, but eventually management overhears whispers from other developers of ways of doing things that could save tons of time and money. People from other departments hear about tech buzz words and Xenophobe doesn’t even know what they are. Day after day, month after month, his credibility erodes until something happens.

That something can vary. Perhaps it’s the appointment of a “co-architect” or a reorganization of the group. Perhaps he’s shuffled onto a different project or asked to continue to maintain the old version while an up-and-comer is tasked with architecting the rewrite. It could be outside consultants brought in as “staff augs” or farming off of whole projects elsewhere.

Interestingly, end for Xenophobe is rarely a termination. Unlike Master Beginner, Xenophobe doesn’t squirt gasoline on bridges and gleefully ignite them. He’s more pitiable and shrewd. So what happens is that he’s effectively put out to pasture in all but name. He might even get a better title or an office or something, but his responsibilities are divvied up and portioned out to others until he just collects a handsome wage to sit in his office and do very little.

While Xenophobe’s capacity for self-delusion is high, as is generally the case with Expert Beginners, his tolerance for cognitive dissonance is extremely low. This makes this “reorg” too much for him to take lying down. He may rage-quit–a sad option since he’s probably going to need to take a massive pay-cut to get hired anywhere else. He may simply rage, at which point his management is likely to show him a starker view of reality than he’s accustomed to seeing, which is a sad sight. Or he may do neither of those things and bitterly accept the new situation.

The fate of Xenophobe is actually intensely depressing. If you’ve worked with him directly, you probably don’t find it such during the short term since he’s often pretty hard to work with, but he’s not a pathological grand-stander like Master Beginner. He’s just a guy that lucked out, believed his own hype and got out of his depth. In a way, he’s like a lottery winner that squanders his fortune and winds up broke. Almost invariably, Xenophobes drift bitterly toward retirement, stripped of all real responsibility and collecting paychecks at the mercy of mid-level managers that continue to bolster (fake) the business case for keeping him on staff. When he’s not so lucky, he winds up in the same boat as the rage-quitter–taking a huge pay and responsibility cut, or crawling back to his former employer and then taking a huge pay and responsibility cut.

A Glimmer of Hope: The Company Man

Company Man lacks the neurotic pride of Xenophobe and the pathological cockiness of Master Beginner, and that has the potential to provide a way out. But let’s consider what happens to Company Men who don’t escape first. These are the ones who find their way into project management or line management and squander the false capital of their ‘technical expertise.’

At the core of the Expert Beginner experience is a quest for status and recognition. It’s not about money or even organizational power (beyond the software group, anyway). Truly. If it were, the Expert Beginner would never become Expert Beginner. He’d recognize that the path to a corner office usually doesn’t wind its way through the land of “knowing the Java compiler inside and out.” Someone interested primarily in being a C-level executive would recognize that programming is something you do for a few years and put up with until you can make the jump to project management, then line management, then VP-hood, etc. Expert Beginners relish being the best bowler in the alley and are willing to chase better bowlers away with baseball bats to protect their status if it comes down to it (or simply claim they won in spite of having a lower score, in the case of wildly delusional Master Beginner).

Company Men who don’t make it fail to recognize a life raft being floated to them. Once put into a managerial position of authority, they rule like technical Expert Beginners (architects or tech leads or whatever they used to be). To put it another way, they micromanage. In their previous role, they likely had some actual programming to do or else their control wasn’t absolute, so others could defy them, pick up the slack, or do what needed to be done to keep the wheels on the machine as it flew down the tracks. But a micromanaging Expert Beginner has nothing to do but meddle, bark orders, and chew people out for thinking for themselves. The wheels start to come off pretty quickly under his (mis-) management.

This Company Man unwittingly sabotages himself by finally having and exerting total technical control. Ironically, he sinks the ship by totally assuming the helm. Work stops getting done, morale plummets, projects fail, and HR issues abound as employees choose between defying the Expert Beginner and getting things right or obeying and having the project fail. Attrition mounts in these circumstances, and the Dead Sea Effect cycle time is radically accelerated with developers jumping ship like rats. Clearly, this is unsustainable, and the Company Man is demoted or let go. This is a tough spot for Company Man because he’s bad at tech but has a good track record for it on paper. He could theoretically be less incompetent at managing, but he’s crashed and burned in his only stab at that role. So he likely winds up hiring on as some senior developer elsewhere and trying to repeat the cycle. He isn’t quite as nimble as Master Beginner, but he’s not utterly trapped like Xenophobe, either. He’ll move on and probably have a chance to get management right the second time around by ceasing to play at technical acumen: a face-saving strategy.

And that brings us to the successful escapee of Expert Beginnerism: the (subconsciously) self-aware Company Man. He’ll never admit it, even to himself, but the successful Expert Beginner can feel the wolves closing in as the world changes and his policies are increasingly not successful. As he contemplates where to go from “Architect That Frequently Squabbles with Some of his Senior Developers,” this is the guy who hears a little, nagging voice in the back of his head that says, “You know, times are changing here faster than you want to, so perhaps its time to hang up your obviously quite impressive spurs and ‘retire’ to management.”

When he makes the jump, he also makes a clean break with his former life. He’s content to be known as the guy who used to be the architect but is now in management. There will be some amount of shared, mutual fiction between him and his formerly restless techie underlings as they’re grateful for his departure and wish him the best, in earnest, so that he stays where he’s at. They’ll agree with him that he was truly an awesome architect whose incredible skill set is just needed elsewhere. Everyone wins here, so why not?

And from here, there’s a new period of acquisition and the slate is wiped clean. The former technical Expert Beginner reaps the benefits of being considered an ‘Expert’ as he embarks on a new learning curve. And while certain personality leanings make this possible, there’s no guarantee that he’ll become an Expert Beginner at management. He might excel in it and be receptive to continued learning in a way that he wasn’t as an erstwhile techie. He might also become an Expert Beginner in management, but the odds here aren’t nearly as bad since management is really a lot more subjective–competence versus incompetence is harder to assess concretely. By keeping his hands off of the ship’s helm, sails, and really anything of import, the former Expert Beginner can be a decent captain by relying heavily on his competent crew, even if he was a poor sailor.

A Sad Tale

Following the career arc of Expert Beginners is really quite sad. In the early stages, one feels annoyed and a little indignant while watching advancement by luck instead of competence. As things progress, real damage is caused by poor implementation and wrong-headed approaches, resulting, for a lot of people, in stress, frustration, failure, and at times even lost jobs and failed ventures. In the end, the fate of the one that caused these things is probably poetically just, but it’s hard to find happiness in. A person ill-suited for a role assumed it, caused problems, and then suffered personal hardship. It’s not a great story.

This is my last Expert Beginner post on the blog until after the release of the E-book, when I will eventually publish the conclusion, entitled, “Wasted Talent: The Tragedy of the Expert Beginner.”

But the one thing to take away from this post is a bit of ability to assess what effect Expert Beginners may have on your career. You will usually see them crash and burn on a long enough timeline, if you can outlast them. Occasionally they will be promoted out of your way. Should you stick around and fight them or wait for their demise (or try to help them, if you’re altruistic and masochistic)? That certainly has to be a decision for you to make, but it should help to know that even slow-acting or overly-loyal organizations will self-correct eventually, provided they have a track record for success. So consider the company, its Expert Beginner, the type of Expert Beginner, and the distance along in the process of their fall from power when you make your decision.

Edit: The E-Book is now available. Here is the publisher website which contains links to the different media for which the book is available.

By

Is He Technical?

A short post today–I’m still sort of in frantic mode and switching gears in a variety of ways, but I didn’t want to go the whole week with just the one post.

Some time back, I observed some people working on a project in which the team consisted of some developers of varying experience levels and skill sets. There was also a project manager assigned to the project, but he definitely wanted to put the “manager” in “project manager.” Rather than Gantt charts and status reports, he insisted on being part of every technical decision, however coarse or fine grained. It was hard to tell, from my outsider perspective, whether his inputs (orders) made any sense or whether he was just wasting time and clouding the issue when he could have been focusing on logistics, communication, and removing obstacles from the path of the developers, as one might expect from a pure project manager.

It appeared to me that he wasn’t just failing to remove obstacles, but that he was an obstacle. This was confirmed by a conversation that I later overheard among a few of the developers in the form of a simple but profound and damning question. My understanding of this project manager’s background was that he was the sort of PM who had cut his teeth as a developer for a number of years and ‘graduated’ to project management. The unintentionally damning question from one of the developers was a simple, frustrated, “is he even technical?”

That might not seem like it matters at first blush, but that’s the kind of thing where, if you let it wash over you, there’s something important and fundamentally bad happening. The PM either has a technical background or not, and the badness is present either way. If he does not have a technical background, the obvious question is “why is he attempting to stick his nose in development and design discussions?” But if he is technical…ouch.

If he is technical, he’s communicating so poorly or getting concepts so wrong during the course of (micro) management that the developers are genuinely unclear on whether or not he has a programming background. Unintentionally damning. They’re not accusing him of anything or gossiping or anything along those lines–they’re so underwhelmed by his contributions that they think he doesn’t even possess table stakes, bare-minimum competence in the field.

The “duh” lesson here is not to blather on or bark orders when you don’t know what you’re talking about, but that’s really kind of an edge case. I’d say the take-away for the readership here is to ask yourself, assuming you’re in a position of authority, whether anyone would quietly wonder if you’re technical. Maybe it’s because you’ve been doing too much delegating or are busy with other things, but still, don’t let this be said about you. I’ve touched on this subject before in the context of a team lead, but this is a broader concern. As you go along working with others, take inventory from time to time, asking yourself whether anyone might be wondering skeptically how you came to be in a position of authority. If you think they might be, don’t blow that off and think it’s not worth proving. It is. Responsibility without respect is empty, so remember to earn yourself some respect from time to time.

By

Guerilla Guide to Developer Interviews

Over the course of my career I’ve done quite a number of technical interviews, and a pretty decent cross-section of them have ended in job offers or at least invitations to move on to the next step. That said, I am no expert and I am certainly no career coach, but I have developed some habits that seem pretty valuable for me in terms of approaching the interview process. Another important caveat here is that these are not tips to snag yourself an offer, but tips to ensure that you wind up at a company that’s as good a fit as possible. Sometimes that means declining an offer or even not getting one because you realize as you’re interviewing that it won’t be a good fit. On any of these, your mileage may vary.

So in no particular order, here are some things that you might find helpful if you’re throwing yourself out there on the market.

Avoid the Firehose

Programming jobs are becoming more and more plentiful, and, in response to that demand, and contrary to all conventional logic about markets, the supply of programmers is falling. If you work as a programmer, the several emails a week you get from recruiters stand in not-so-mute testimony to that fact. If you decide that it’s time to start looking and throw your resume up on Dice, Monster, and CareerBuilder, your voicemail will fill up, your home answering machine will stop working, and your email provider will probably throttle you or start sending everything to SPAM. You will be absolutely buried in attempts to contact you. Some of them will be for intern software tester; some of them will be for inside sales rep; some of them will be for super business opportunities with Amway; some of them won’t even be in your native language.

DrinkFirehose

Once you do filter out the ones (dozens) that are complete non-starters, you’ll be left with the companies that have those sites on some kind of RSS or other digital speed dial, meaning that they do a lot of hiring. Now, there are some decent reasons that companies may do a lot of hiring, but there are a lot of not-so-decent reasons, such as high turnover, reckless growth, a breadth-over-depth approach to initial selection, etc. To put it in more relatable terms, imagine if you posted a profile on some dating site and within seconds of you posting it, someone was really excited to meet you. It may be Providence, but it also may be a bit worrisome.

The long and short of my advice here is that you shouldn’t post your resume immediately to sites like these. Flex your networking muscle a bit, apply to some appealing local companies that you’d like to work at, contact a handful of recruiters that you trust, and see what percolates. You can always hit the big boards later if no fish are biting or you start blowing through your savings, but if you’re in a position to be selective, I’d favor depth over breadth, so to speak.

Don’t Be Fake

When it comes time to the do the actual interview, don’t adopt some kind of persona that you think the interviewers want to see. Be yourself. You’re looking to see whether this is going to be a fit or not, and while it makes sense to put your best foot forward, don’t put someone else’s best foot forward. If you’re a quiet, introverted thinker, don’t do your best brogrammer imitation because there’s a ping pong table in the other room and the interviewers are all 20-something males. You’re probably going to fail to fit in anyway, and even if you don’t, the cultural gulf is going to continue to exist once you start.

And above all, remember that “I don’t know” is the correct answer for questions to which you don’t know the answer. Don’t lie or try to fake it. The most likely outcome is that you look absurd and tank the interview when you could have saved yourself a bit of dignity with a simple, “I’m not familiar with that.” But even if this ruse somehow works, what’s the long-play here? Do you celebrate the snow-job you just pulled on the interviewer, even knowing that he must be an idiot (or an Expert Beginner) to have fallen for your shtick? Working for an organization that asks idiots to conduct interviews probably won’t be fun. Or perhaps the interviewer is perfectly competent and you just lucked out with a wild guess. In that case, do you want to hire on at a job where they think you’re able to handle work that you can’t? Think that’ll go well and you’ll make a good impression?

If you don’t know the answers to questions that they consider important, there’s a pretty decent chance you’d be setting yourself up for an unhappy stay even if you got the job. Be honest, be forthright, and answer to the best of your ability. If you feel confident enough to do so, you can always pivot slightly and, for instance, turn a question about the innards of a relational database to an answer about the importance of having a good DBA to help you while you’re doing your development work or something. But whatever you do, don’t fake it, guess, and pray.

Have the Right Attitude

One of the things I find personally unfortunate about the interview process is how it uniquely transports you back to waiting to hear whether or not you got into the college of your dreams. Were your SAT scores high enough? Did you play a varsity sport or join enough clubs? Did you have enough people edit your essays? Oh-gosh-oh-gee I hope they like me. Or, really, I hope I’m good enough.

Let me end the suspense for you. You are. The interview process isn’t about whether you’re good enough, no matter how many multiple choice questions you’re told to fill out or how much trivia an interviewer sends your way in rapid fire bursts of “would this compile!?” The interview process is ultimately about whether you and the company would be a good mutual fit. It isn’t just a process to help them determine if you’d be able to handle the work that they do. It’s also a chance for you to evaluate whether or not you’d like doing the work that they give you. Both parts are equally important.

So don’t look at it as you trying to prove yourself somehow. It’s more like going to a social event in an attempt to make friends than it is like hoping you’re ‘good’ enough for your favorite college. Do you want to hang out with the people you’re talking to for the next several years of your life? Do you have similar ideas to them as to what good software development entails? Do you think you’d enjoy the work? Do you like, respect, and understand the technologies they use? This attitude will give you more confidence (which will make you interview better), but it also sets the stage for the next point here.

Don’t Waste Your Questions

In nearly every interview that I’ve ever been a part of, there’s the time for the interviewer to assess your suitability as a candidate via asking you questions. Then there’s the “what questions do you have for me” section. Some people will say, “nothing — I’m good.” Those people, as any career site or recruiter will tell you, probably won’t get an offer. Others will take what I believe is fairly standard advice and use this time as an opportunity to showcase their good-question-asking ability or general sharpness. Maybe you ask impressive sounding things like, “what’s your five year plan,” or, “I have a passionate commitment to quality as I’m sure you do, so how do you express that?” (the “sharp question” and “question brag,” respectively).

I think it’s best to avoid either of those. You can really only ask a handful of questions before things start getting awkward or the interviewer has to go, so you need to make them count. And you’ll make them count most by asking things that you really want to know the answer to. Are you an ardent believer in TDD or agile methodologies? Ask about that! Don’t avoid it because you want it to be true and you want them to make an offer and you don’t want to offend them. Better to know now that you have fundamental disagreements with them than six months into the job when you’re miserable.

As an added bonus, your interviewer is likely to be a pretty successful, intelligent person. She’s probably got a fairly decent BS detector and would rather you ask questions to which you genuinely want to know the answers.

Forge your Questions in the Fires of Experience

So you’re going to ask real questions, but which questions to ask… My previous suggestion of “ones you want the answer to” is important, but it’s not very specific. The TDD/agile question previously mentioned is an example of one good kind of question to ask: a question which provokes an answer that interests you and gives you information about whether you’d like the job. But I’d take it further than this.

Make yourself a list of things you liked and didn’t like at previous jobs, and then start writing down questions that will help you ferret out whether the things you liked or didn’t will be true at the company where you’re interviewing. Did you like way your last company provided you with detailed code reviews because it helped you learn? Ask what kinds of policies and programs they have in place to keep developers current and sharp. Did you not like the mess of interconnected dependencies bogging down the architecture of the code at your last stop? Ask them what they think of Singleton as a design pattern. (I kid, but only kind of.)

You can use this line of thinking to get answers to tough-to-ask questions as well. For instance, you’re not going to saunter into an interview and say, “So, how long before I can push my hours to second shift and stroll in at 2 PM?” But knowing things about a company like dress code, availability of flex hours, work-from-home policy, etc. is pretty valuable. Strategize about a way to ask about these things without asking–even during casual conversation. If you say something like “rush hour on route 123 out there seems pretty bad, how do people usually avoid it,” the next thing you hear will probably be about their flex hours policy, if the company has one.

Negative Bad, Zero-Sum Fine

Another piece of iconic advice that you hear is “don’t talk badly about your former/current employer.” I think that’s great advice to be on the safe side. I mean, if I’m interviewing you, I don’t want to hear how all of your former bosses have been idiots who don’t appreciate your special genius, nor do I want to hear juicy gossip about the people at your office. Staying upbeat makes a good impression.

That said, there is a more nuanced route you can travel if you so choose, that I think makes you a pretty strong candidate. If I’m interviewing you, I also know that your former positions aren’t all smiles and sunshine or you wouldn’t be sitting in front of me. When talking about past experience, you can go negative, but first go positive to cancel it out.

My current employer has some really great training programs, and I’ve enjoyed working with every project manager that I’ve been paired with. That’s contributed to me enjoying the culture–and feeling a sense of camaraderie, too. Of course, there were some things I might have done differently in our main code base, from an architectural perspective. I’d have liked to see a more testable approach and an IoC container, perhaps, but I realize that some things take time to change, especially in a legacy code base.

Now you’ve communicated that you recognize that the architectural approach to your code base was sub-optimal, but that you maintain a positive attitude in spite of that. Instead of the interviewer hearing, “man, those guys over there are procedural-code-writing cretins,” he hears, “some things were less than ideal, and I’d like them to improve, but I grow where I’m planted.”

Gather your Thoughts

After you’re done, stop and write down what you thought. I mean it. Walk out of the building, and in your car or on a nearby bench, plop down and write your impressions while they’re fresh in your mind. What did you like, what worries you, what questions should you follow up with, what specifics can you cite? Things will be fuzzy later, and this information is solid gold now.

Your brain is going to play weird tricks on you as time goes by and you’re considering an offer or the next round of interviews. Something that struck you as a red flag might be smoothed over in your mind as you grow increasingly tired of your job hunt. I know they said that they’re as waterfall as Niagra and proud, but I think the tone of voice and non-verbal cues might have indicated a willingness to go agile. You’ll fool yourself. You’ll talk yourself into things. That is, unless you write them down and bring them up as concerns the next time you talk with the company or a representative thereof.

Maintain Perspective

Interviewing is an inherently reductionist activity, both for you and for the company. Imagine if marriage worked like job interviews. The proposition would be put to you and your potential mates this way:

Alright, so you have have about two or three cracks at this whole marriage thing before you’re too old for it, so take your time and make a good decision and all that, but do it really fast. You’re going to meet for lunch, a little Q&A, and then you’ll have just enough time to send a thank-you note before you hear thumbs up or thumbs down from your date. If it’s thumbs up, you have a few days to decide if the prenuptial agreement looks good, if you have similar opinions on when to have children and how many, yadda-yadda, and hurry up, and, “do you take this person to be your lawfully wedded, blah, blah, you may now kiss, etc., whatever, done.

Think a few important details might get missed in that exchange? Think you might be left after an inexplicable rejection, stammering, “b-b-but I know how to cook and I really have a lot to offer… why… I just don’t get it.” It’s pretty likely. There are going to be a lot of bad decisions and the divorce rate will be pretty high.

Back to the interview process, just remember to keep your chin up. You might have interviewed for a job that had already been filled except for the detail of technically having to interview a second person. Maybe the CEO’s son got the job instead of you. Maybe you wore a gray suit and the man interviewing you hates the color gray with a burning passion. Maybe you had a lapse when talking about your WPF skills and said WCF, and someone thinks that makes you a moron. The list goes on, and it often makes no sense. It makes no sense in the way that you’ll look at a company’s website and see a weirdly blinking graphic and think it looks unprofessional and decide not to apply there. You make snap judgments, and so do they. It’s the name of the game. Don’t take it personally.

By

How Stagnation is Justified: Language of the Expert Beginner

So far in the “Expert Beginner” series of posts, I’ve chronicled how Expert Beginners emerge and how they wind up infecting an entire software development group. Today I’d like to turn my attention to the rhetoric of this archetype in a software group already suffering from Expert Beginner-induced rot. In other words, I’m going to discuss how Expert Beginners deeply entrenched in their lairs interact with newbies to the department.

It’s no accident that this post specifically mentions the language, rather than interpersonal interactions, of the Expert Beginner. The reason here is that the actions aren’t particularly remarkable. They resemble the actions of any tenured employee, line manager or person in a position of company trust. They delegate, call the shots, set policy, and probably engage in status posturing where they play chicken with meeting lateness or sit with their feet on the table when talking to those of lesser organizational status. Experts and Expert Beginners are pretty hard to tell apart based exclusively on how they behave. It’s the language that provides a fascinating tell.

Most people, when arguing a position, will cite some combination of facts and deductive or inductive reasoning, perhaps with the occasional logical fallacy sprinkled in by mistake. For instance, “I left the windows open because I wanted to air out the house and I didn’t realize it was supposed to rain,” describes a choice and the rationale for it with an implied mea culpa. The Expert Beginner takes a fundamentally different approach, and that’s what I’ll be exploring here.

False Tradeoffs and Empty Valuations

If you’re cynical or intelligent with a touch of arrogance, there’s an expression you’re likely to find funny. It’s a little too ubiquitous for me to be sure who originally coined the phrase, but if anyone knows, I’m happy to amend and offer an original source attribution. The phrase is, “Whenever someone says ‘I’m not book smart, but I’m street smart,’ all I hear is, ‘I’m not real smart, but I’m imaginary smart.'” I had a bit of a chuckle the first time I read that, but it’s not actually what I, personally, think when I hear someone describe himself as “street smart” rather than “book smart.” What I think is being communicated is “I’m not book smart, and I’m sort of sensitive about that, so I’d like that particular valuation of people not to be emphasized by society.” Or, more succinctly, “I’m not book smart, and I want that not to be held against me.”

“Street smart” is, at its core, a counterfeit status currency proffered in lieu of a legitimate one. It has meaning only in the context of it being accepted as a stand-in for the real McCoy. If I get the sense that you’re considering accepting me into your club based on the quantity of “smarts” that I have, and I’m not particularly confident that I can come up with the ante, I offer you some worthless thing called “street smarts” and claim that it’s of equal replacement value. If you decide to accept this currency, then I win. And, interestingly, if enough other people decide to accept it, then it becomes a real form of currency (which I think it’d be pretty easy to argue that “street smart” has).

Whatever you may think of the “book smart vs street smart” dichotomy notwithstanding, you’d be hard pressed to argue that the transaction doesn’t follow the pattern of “I want X,” “I don’t have that, but I have Y (and I’m claiming Y is just as good).” And understanding this attempted substitution is key to understanding one of the core planks of the language of Expert Beginners. They are extremely adept at creating empty valuations as stand-ins for meaningful ones. To see this in action, consider the following:

  1. Version control isn’t really that important if you have a good architecture where two people never have to touch the same file.
  2. We don’t write unit tests because our developers spend extra time inspecting the code after they’ve written it.
  3. Yeah, we don’t do a lot of Java here, but you can do anything with Perl that you can with Java.
  4. Our build may not be automated, but it’s very scientific and there’s a lot of complicated stuff that requires an expert to do manually.
  5. We don’t need to be agile or iterative because we write requirements really well.
  6. We save a lot of money by not splurging on productivity add-ins and fancy development environments, and it makes our programmers more independent.

In all cases here, the pattern is the same. The Expert Beginner takes something that’s considered an industry standard or best practice, admits to not practicing it, and offers instead something completely unacceptable (or even nonsensical/made up) as a stand-in, implying that you should accept the switch because they say so.

Condescension and Devaluations

This language tactic is worth only a brief mention because it’s pretty obvious as a ploy, and it squanders a lot of realpolitik capital in the office if anyone is paying attention. It’s basically the domain-specific equivalent of some idiot being interviewed on the local news, just before dying of hurricane, saying something like “I’m not gonna let a buncha fancy Harvard science-guys tell me about storms–I’ve lived here for forty years and I can feel ’em comin’ in my bones. If I need to evacuate, I’ll know it!”

In his fiefdom, an Expert Beginner is obligated to have some explanation for ignoring best practices that at least rises to the level of sophistry and offers some sort of explanation, however improbable. This is where last section’s false valuations shine. Simply scoffing at best practices and new ideas has to be done sparingly or upper management will start to notice and create uncomfortable situations. And besides, this reaction is frankly beneath the average Expert Beginner–it’s how a frustrated and petulant Novice would react. Still, it will occasionally be trotted out in a pinch and can be effective in that usage scenario since it requires no brain cells and will just be interpreted as passion rather than intellectual laziness.

The Angry Driver Effect

If you ever watch a truly surly driver on the highway, you’ll notice an interesting bit of irritable cognitive bias against literally everyone else on the road. The driver will shake her fist at motorists passing her, calling them “maniacs,” while shaking the same fist at those going more slowly, calling them “putzes.” There’s simply no pleasing her.

An Expert Beginner employs this tactic with all members of the group as well, although without the anger. For example, if she has a Master’s degree, she will characterize solutions put forth by those with Bachelor’s degrees as lacking formal polish, while simultaneously characterizing those put forth by people with PhDs as overly academic or out of touch. If the solution different from hers is presented by someone that also has a Master’s, she will pivot to another subject.

Is your solution one that she understands immediately? Too simplistic. Does she not understand it? Over-engineered and convoluted. Are you younger than her? It’s full of rookie mistakes. Older? Out of touch and hackneyed. Did you take longer than it would have taken her? You’re inefficient. Did it take you less time? You’re careless. She will keep pivoting, as needed, ad infinitum.

Taken individually, any one of these characterizations makes sense and impresses. In a way, it’s like the cold-reading game that psychics play. Here the trick is to identify a personal difference and characterize it; anything produced by its owner as negative. The Expert Beginner controls the location of the goalposts via framing in the same way that the psychic rattles off a series of ‘predictions’ until one is right, as evidenced by micro-expressions. The actual subtext is, “I’m in charge and I get to define good and bad, so good is me, and some amount less good is you.”

Interestingly, the Expert Beginner’s definition of good versus bad is completely orthogonal to any external characterizations of the same. For instance, if the Expert Beginner had been a C student, then, in her group, D students would be superior to A students because of their relative proximity to the ideal C student. The D students might be “humble, but a little slow,” while A students would be “blinded by their own arrogance,” or some such thing. It’s completely irrelevant that society at large considers A students to be of the most value.

Experts are Wrong

Given that Expert Beginners are of mediocre ability by definition, the subject of expertise is a touchy one. Within the small group, this isn’t really a problem since the Expert Beginner is the designated Expert there by definition. But within a larger scope, actual Experts exist, and they do present a problem–particularly when group members are exposed to them and realize that discrepancies exist.

For instance, let’s say that an Expert Beginner in a small group has never bothered with source control for code, due to laziness and a simple lack of exposure. This decision is likely settled case-law within the group, having been justified with something like the “good architecture” canard from the Empty Valuations section. But if any group member watches a Pluralsight video or attends a conference which exposes them to industry experts and best practices, the conflict becomes immediately apparent and will be brought to the attention of the reigning Expert Beginner. In the last post, I made a brief example of an Expert Beginner reaction to such a situation: “you can’t believe everything you see on TV.”

This is the simplest and most straightforward reaction to such a situation. The Expert Beginner believes that he and his ‘fellow’ Expert have a simple difference of opinion among ‘peers.’ While it may be true that one Expert speaks at conferences about source control best practices and the other one runs the IT for Bill’s Bait Shop and has never used source control, either opinion is just as valid. But on a long enough timeline, this false relativism falls apart due to mounting disagreement between the Expert Beginner and real Experts.

When this happens, the natural bit of nuance that Expert Beginners introduce is exceptionalism. Rather than saying, “well, source control or not, either one is fine,” and risk looking like the oddball, the Expert Beginner invents a mitigating circumstance that would not apply to other Experts, effectively creating an argument that he can win by forfeit. (None of his opponents are aware of his existence and thus offer no counter-argument.) For instance, the Bait Shop’s Expert Beginner might say, “sure, those Experts are right that source control is a good idea in most cases, but they don’t understand the bait industry.”

This is a pretty effective master-stroke. The actual Experts have been dressed down for their lack of knowledge of the bait industry while the Expert Beginner is sitting pretty as the most informed one of the bunch. And, best of all, none of the actual Experts are aware of this argument, so none of them will bother to poke holes in it. Crisis averted.

All Qualitative Comparisons Lead Back to Seniority

A final arrow in the Expert Beginner debate quiver is the simple tactic of non sequitur about seniority, tenure, or company experience. On the surface this would seem like the most contrived and least credible ploy possible, but it’s surprisingly effective in corporate culture, where seniority is the default currency in the economy of developmental promotions. Most denizens of the corporate world automatically assign value and respect to “years with the company.”

Since there is no bigger beneficiary of this phenomenon than an Expert Beginner, he plows investment into it in an attempt to drive the market price as high as possible. If you ask the Expert Beginner why there is no automated build process, he might respond with something like, “you’ll understand after you’ve worked here for a while.” If you ask him this potentially embarrassing question in front of others, he’ll up the ante to “I asked that once too when I was new and naive–you have a lot to learn,” at which time anyone present is required by corporate etiquette to laugh at the newbie and nervously reaffirm that value is directly proportional to months employed by Acme Inc.

The form and delivery of this particular tactic will vary a good bit, but the pattern is the same at a meta-level. State your conclusion, invent a segue, and subtly remind everyone present that you’ve been there the longest. “We tried the whole TDD thing way back in 2005, and I think all of the senior developers and project managers know how poorly that went.” “Migrating from VB6 to something more modern definitely sounds like a good idea at first, but there are some VPs you haven’t met that aren’t going to buy that one.”

It goes beyond simple non sequitur. This tactic serves as a thinly veiled reminder as to who calls the shots. It’s a message that says, “here’s a gentle reminder that I’ve been here a long time and I don’t need to justify things to the likes of you.” Most people receive this Expert Beginner message loudly and clearly and start to join in, hopeful for the time they can point the business end at someone else as part of the “Greater Newbie Theory.”

Ab Hominem

In the beginning of this post, I talked about the standard means for making and/or defending arguments (deductive or inductive reasoning) and how Expert Beginners do something else altogether. I’ve provided a lot of examples of it, but I haven’t actually defined it. The central feature of the Expert Beginner’s influence-consolidation language is an inextricable fusing of arguer and argument, which is the polar opposite of standard argument form. For instance, it doesn’t matter who says, “if all humans have hearts, and Jim is a human, then Jim has a heart.” The argument stands on its own. But it does matter who says, “Those of us who’ve been around for a while would know why not bothering to define requirements is actually better than SCRUM.” That argument is preposterous from an outsider or a newbie but acceptable from an Expert Beginner.

A well-formed argument says, “if you think about this, you’ll find it persuasive.” The language of the Expert Beginner says, “it’s better if you don’t think about this–just remember who I am, and that’s all you need to know.” This can be overt, such as with the seniority dropping, or it can be more subtle, such as with empty valuations. It can also be stacked so that a gentle non sequitur can be followed with a nastier “get off of my lawn” type of dressing down if the first message is not received.

In the end, it all makes perfect sense. Expert Beginners arrive at their stations through default, rather than merit. As such, they have basically no practice at persuading anyone to see the value of their ideas or at demonstrating the superiority of their approach. Instead, the only thing they can offer is the evidence that they have of their qualifications–their relative position of authority. And so, during any arguments or explanations, all roads lead back to them, their position titles, their time with the company, and the fact that their opinions are inviolate.

If you find yourself frequently making arguments along the lines of the ones that I’ve described here, I’d suggest putting a little more thought and effort into them from now on. No matter who you are or how advanced you may be, having to defend your opinions and approaches is an invaluable skill that should be kept as sharp as possible. You’ll often learn just as much from justifying your approach as formulating it in the first place. If you’re reading this article, it’s pretty unlikely that you’re an Expert Beginner. And, assuming that you’re not, you probably want to make sure people don’t confuse you with one.

Next: “Up or Not: Ambition of the Expert Beginner”

Edit: The E-Book is now available. Here is the publisher website which contains links to the different media for which the book is available.

By

I Screwed Up… You’re Welcome!

I’ve had trouble with the hosting of this site lately. As you may have noticed if you visit via the site instead of a feed reader, page load times had slowed to a crawl and sometimes the site was actually down. The hosting company, hostmonster, has provided me with good service over the last couple of years, both in terms of quality of hosting and responsiveness. I expected this to be no different a few days ago.

I called the first time I noticed substantial slowness, and I was told that it was some kind of aberration and everything was fine. A few days later, there was a problem again, and this time the source, I was told, was that there was a node down somewhere between me as a client and my site. Between these two incidents, my site had been slow. I shrugged it off and then noticed the next day that, yet again, my site was pretty much non-functional. Hoping for quicker turn-around and to see if anyone else was having issues, I mentioned this on Twitter and was quickly replied to by the Hostmonster help account with this message: “We see our admins quickly fixed an issue that came up on your server. It is already running now again.”

The only problem was that, in their hurry to congratulate themselves, they’d forgotten to see whether the problem had been fixed. It hadn’t. I called again and was told that everything looked fine to them, at which point I took to Twitter to solicit suggestions for alternative hosting options. A couple of days and a number of phone calls later, Hostmonster did work with me and the issue appears to be resolved. Apparently, a user sharing a physical machine with my site had been infested with some kind of SPAM or something and was causing resource thrashing and throttling of my site. They eventually migrated me to another machine. I haven’t yet decided what to do about hosting. I’m weighing the annoyance of my site being unresponsive for a few days against the hassle of migrating and the fact that there were some very helpful people there that I eventually got to deal with after the first few had told me what a great job they’d done at fixing my imaginary problem.

But pulling back from my experience and looking a little more critically, I think the point at which my reaction as a user went from “annoyed but understanding” to “pissed” holds some lessons for consultants or anyone who deals with end users in a support capacity. I base this on examining the situation and discovering what I found galling.

  1. Don’t publicly declare a user’s problem fixed without confirming the user’s agreement.
  2. Avoid minimizing the user’s problems with words like “little” to describe the scope of the problem or, as in my case, “[quick]” to describe the downtime.
  3. Make every reasonable attempt to reproduce a user’s problem and prove to them that you’re doing so.

I know that there’s a balance to be struck between avoiding unfair blame (i.e. marketing and spinning your product/service in the best light) and between providing your users with solutions. I also know that there is no shortage of user error to go around. But I think it’s really important to understand and empathize with users when they’re frustrated. Go on Twitter or some other public forum and read the really negative comments about software or technology services, and, at the core, you’ll see extremely frustrated users.

You’ll see users whose websites have been down for two days and who don’t know when they’ll be back up. You’ll see users who have been struggling for hours to figure out how to get “hello world” out of the stupid thing. You’ll see users who just needed to get some work done for a deadline when your horrible update rendered their software non-functional and caused them to catch flak at a meeting. And the list goes on. These are the people you’re dealing with. They’re not malicious or looking to drag your name through the mud; rather, they’re looking to vent. And that’s your opportunity to be a sympathetic ear and to turn an incensed customer into a loyal one.

How’s that, you ask? Well, as much as people hate it when they’re frustrated, they can be mollified by the sense that you see that they’re having a problem, you understand it, you can fix it, and that you’re sorry that it happened to them. “Geez, I’m really sorry that update made you miss your meeting–I’d be mad too.” I bet that’d take the edge off of most people’s anger. Probably more so than “that update ran fine for me here, and check out that awesome new font it gave you–you’re welcome!”

I’m going to make it a point to try to harness the memory of these experiences as a user to make me better and more conscientious as a software provider. I’d rather be remembered for the kind things that users say about me than the flattering things I say about myself when others are within earshot.

(I’m still weighing my options for the hosting situation and running tests to confirm the response times continue to be better than they were, but my thanks to Daniel and Bradyn at Hostmonster who were actually quite helpful following my initial period of frustration.)