Not saying anything about YOU... experience is important... but 15 years experience doesn't mean 15 years of good experience or lack of bad habits.
Last week, I interviewed someone about to complete a master's degree from Georgia Tech who also could barely do FizzBuzz.
What should we be doing to identify people who fail FizzBuzz but we should actually be hiring? Honestly the bar for our initial phone screens is very low, and yet experienced and well-educated people still manage to fail, sometimes spectacularly. FizzBuzz is one of the most important questions we ask because of this phenomenon.
Based on my experience as an air traffic controller which requires more tests than I care to state, when we would transfer facilities we were given oral tests to gauge our experience. We would mark down the areas deficient that needed review and check areas off where knowledge was deemed satisfactory. There would be zero air traffic controllers if we dismissed candidates answering one question wrong regardless of simplicity.
Necessary, but not sufficient. If you can't code you're worthless as a developer. You can be a great coder, but if your other skills are poor you aren't worth a senior engineer salary.
But, separately from programming, I absolutely love teaching/mentoring. I found that, if I was helping someone with a programming problem, I could code just fine while burnt out. As long as someone else was doing "the programming"—the part involving wanting to create something and actually typing it—I was fine with them "borrowing" my knowledge and expertise in the form of doing all their design work, finding libraries and API functions for them, correcting their syntax errors, doing all their debugging, and basically every other part of programming that isn't typing words.
If someone handed me a college intern—or, hell, even a really passionate and patient elementary schooler—to serve as my "assistant", then I could make them appear to be a great programmer. If you hired me to wander around a team and pair-program with everyone, I could have a multiplicative effect on that team's productivity. But, by myself, I wouldn't be able to code for beans.
What do you call me?
You might still need someone above you to function as the team's abstraction layer to the company at large, but it sounds like you'd be a great leader among the actual workers.
I can't hand you an important task and expect it to get done unless I give you a second resource?
You are talking about burnout. Would you really walk into an interview and respond to a coding question with "Oh, you'll have to write with me directing because I only pair program"?
I'm going to stand by my earlier statement. Being able to code is a necessary skill for a senior developer. Or any developer really.
2. Why hand me the task? Why not hand someone else the task, and I'll wander in and make sure they get it done twice as quickly? Why does everyone need to be modellable as a task-queue that atomic problem-statements can be dropped into?
You don't expect, say, your office manager to program; but you do expect that, by hiring an office manager, more programming will get done, because now your programmers aren't running out to buy drinks for the fridge and toilet paper.
3. Remember that I did say that I could get work done by pair-programming with an intern, not an employee. The phrase "second resource" implies that you're imagining yourself handing me someone who you could get Hard Problems done on their own. My point was that, with a few people like me around, you could mostly just "hire" people (often for free!) who have no idea how to get Hard Problems—or even Regular Problems—done, and me and my type of person would guide them and the work would get done in the process.
This is usually known, in the trades, as an apprentice system. Apprentices do all the "work", you know. They're the hands that build most things that get built. Masters just stand there guiding those hands.
Because that's what this entire conversation is about.
But it still seems weird to push heavy coding sessions without even speaking to the candidate, and that seems weirder the more experienced people are. You might assume that a new grad doesn't care what work they're doing and can just be interviewed for a job in "software", but why throw somebody with 15 years behind them into a funnel without even talking about what it's a funnel for?
Two coders that each had "silos" with wedges to keep the two sides communicating together. One did web side - ordering, registration, etc on a Webform MVC customized hybrid. The other did floor applications.
New customer? New database, website, etc. Sql statements? "If company a then select * from blah where field like '{text}';" everywhere. Why select *? Because the different code bases diverged... why like/text? Because sql injection doesn't exist. Almost everything text fields... 2 wide inventory fields that house more than 99 items... 10 wide inventory fields that house 2 items...
I will have some posts for TheDailyWTF once I get my feet a bit more wet...
As to why it took so long? They were able to keep it running with duck tape and bubble gum... once the company started expanding, the better of the two programmers knew they couldn't keep up and left earlier this year. The other is due gone soon... Good guy, but... unwilling to accept that his code is shit.
* No separation of UI/Code. WinForms in all it's glory.
* SELECT * in code behind. Never anything else.
* WHERE field LIKE '{}' - never 'where field ='. Always like.
* {} is a from text entry fields. Sql Injection? Sanitation? Boundaries? What's that?
* Separate code paths for different companies because each customer had their own unique stack that diverged - Database tables, Winforms, processes. IF Company A then SELECT * FROM DBA.dbo.TblA WHERE FieldA = '{}' ELSEIF Company B then SELECT * FROM DBD.dbo.TblB WHERE FieldB = '{}'... etc.
* Copy Pasta all the way down.
* Never used source control until New Guard arrived (me being newest developer).
* Test environment? Waste of time... Everything done against production. I saw the old programmer jack up a sql query resulting in a data restore, and I've been here less than two weeks.
You can argue that what they did "works"... but you can fix a car with duct tape... then wonder why the door flies off at 65mph.Trust me (as much as you can trust a random guy on the interwebz)... Their code is shit. Not "I'm an artist and think your artistry is shit" shit... but every bad idea you can consider in coding shit.