Darel Rex Finley in PhotoBooth

Primary + Reviewer — An Alternative IT Plan For Corporations

2009.03.18   prev     next

Most corporate IT departments seem to follow this philosophy: Hire a fairly large group of developers (four or more), none of them particularly high-talent. Then have them develop in a really big, multi-layered, OO, framework-intensive environment, that utilizes several different languages and technologies. This approach is based on the ideas that:

  • Developers should be easily replaceable — we don’t want most of our code written by one high-talent developer, because then he’ll be the only one who understands it, and if he leaves for any reason, or if his code becomes unworkable even by him, we’ll be hosed.

  • Big frameworks force developers to create code that can be understood and modified by other developers.

The downside of this approach is that:

  • Lots of developers cost lots of money, even if none of them are getting high-talent bucks.

  • Lots of developers are slowed down by the needs to frequently communicate with each other, to avoid stepping on each others’ toes while developing, and to figure out other developers’ code.

  • Having several developers, none of whom think of their current job as any more permanent than the last few similarly-paying jobs they’ve held in the past several years, results in a “fix it later; maybe never” attitude towards minor bugs, intermittent bugs, and other imperfections. The software winds up with a flaky, half-baked feel — and can become hard to work on despite its frameworks and other code-organization technologies.

  • Big frameworks make an application much larger and slower, create more failure points and dependencies, increase development time, and incur much larger licensing fees.

Wouldn’t it be great if there was a way to get the best of both worlds? Wouldn’t it be great to get the speed and skill of a small, high-talent development force, programming to a limited, low-cost set of languages, resulting in a snappy, low-overhead app with a minimum of failure points — while not running the risk of having to start over if your key developer disappears or creates an unworkable mess?

Wouldn’t it be great indeed.

Primary + Reviewer

How about this:

Hire two developers: A primary developer and a reviewer. They never meet each other, and communicate with each other only by sending messages to their manager, who reads them before forwarding them to the other party. Neither of these two developers know how to contact each other independently, and they are told at the time of hiring that they are expressly prohibited from doing so.

The primary developer is high-talent, and has proven his abilities through prior programming projects which he developed from the ground up. (The polish — stability and lack of bugs — of such projects is very important in evaluating a candidate.) The primary developer does all your development work. He is paid very well — somewhere between 50% and 100% more than he would make at the software development job he could get at a typical company. He still costs a lot less than a whole team of developers, but his individually high pay provides him a strong inducement to stay with your company long-term, and to develop your software with the intention of continuing to work on that same code for years to come (i.e. to agressively attack all known bugs and imperfections).

As much as possible, your primary developer should not be required to use any particular frameworks, object systems, languages, technologies, etc., but instead has tremendous leeway to decide what he thinks is best for the company and for his own efficiency as a developer. This is certainly not absolute — for example, if the primary developer thinks that a back-end database is not needed for this particular project, and data should be stored in flat files, but management has plans for how the back-end data eventually will be used in conjunction with other products that require a database, then of course management can override that decision. But this should be done only when there is a specific reason to do so. If, instead, the manager says, “I agree with these things the primary developer wants to use, but not these other things, so I’ll override those other things” — then the primary isn’t really being given any leeway at all; the manager is simply making all technology decisions.

Whatever technologies and languages the primary chooses, his code must be well-commented, sensibly organized, and use rigorously consistent (but developer-chosen) conventions of code formatting and variable naming.

The primary developer must check-in all code changes every night.

Constant Review

The other developer, the reviewer, is paid the salary of a typical developer — not a lot more than he has been making lately — but works subtantially less than forty hours a week, and doesn’t write any code. His job is to continuously review the code written by the primary developer, and (via the aforementioned managed e-mail forwarding system) talk with the primary developer, asking questions such as “what is this statement for,” and “what happens when the user does such-and-such?” That kind of thing.

The reviewer does not just skim the code looking for obvious problems, as one might have to do if asked to review another developer’s work at some typical IT department. No, this reviewer studies all the code very thoroughly, aiming to understand how it works just as well as the primary developer does. That’s his job.

The manager also looks at the code periodically, and reads all communications between the two developers, to make sure that steady progress is being made.

The primary developer may be allowed to work remotely from any location of his choosing, or may have to spend at least part of each week working in the office with the QA and requirements personnel. The reviewer, however, never comes to the office, and is known only to the manager (and that manager’s higher-ups, of course). So, although the reviewer is not paid much more than he could make elsewhere, he still has a very strong incentive to stay with your company, since his current post allows him much more free time, plus the opportunity to work from any place where he can VPN into your network.

The Primary + Reviewer system has the potential to achieve:

  • Lower development costs

  • Lower technology licensing fees

  • Faster, cleaner development

  • Snappier and less buggy end-user experience

  • Faster turnaround for user requests

  • Strong, long-term loyalty from both developers

Contingencies

If the primary developer ever does leave, for whatever reason, the code is well-written, well-commented, and thoroughly understood by the reviewer, who can now step in as the primary developer until a new primary developer is found — or can permanently occupy the primary developer seat (with commensurate pay boost), in which case a new reviewer will be hired.

If a new reviewer has to be hired, for the reason mentioned above, or because the current reviewer just leaves, then the new reviewer will spend two-thirds of his time reviewing the primary developer’s ongoing work, and the other one-third of his time studying pre-existing code.

In the absolute worst case, where both developers leave nearly simultaneously, the code is still well-organized, well-commented, and consistently formatted. Plus the manager has a good feel for it from her periodic examinations — perhaps she could step in as the primary or reviewer for a time.

Will the developers like it?

They’ll love it.

And if your primary developer ever thinks that it might be a little annoying to have to explain things to a reviewer via forwarded e-mail, and to have all his new code reviewed every day, then he’ll just remember how much less he was making at all his previous jobs, how much less real coding he got to do at those jobs, how bad it was to be unemployed inbetween them, etc.

And if your reviewer ever thinks it might be a little annoying to review someone else’s code for a living, he’ll just remember how much less free time he had at his previous jobs, and how bad it was to commute to the same cubicle day after day — and how bad it was to be unemployed between jobs, etc.

They’ll love it; they really will. And so will you.

prev     next

 

Hear, hear

prev     next

Favorite links

Starbucks

Apple

RoughlyDrafted

Daring Fireball

Joel on Software

Grupo Fantasma

Macalope

Red Meat

Despair, Inc.

The J. Peterman Company

Zombie Survival Guide plus Dawn of the Dead

Charlie Superfly Check “The First Time” to hear what she actually sang in the competition. HowardTV ripped it out and spliced in utter crap they had her sing later.

Real Solution #9 (Mambo Mania Mix) over stock nuke tests.

Ernie & Bert In Casino

Great Explanation of Star Wars

Best Superbowl 43 Commercial

Kirk & Spock get Closer

American football explained.

Piada. Yum. Like, Chipotle meets Italian.

TV: Survivor; Justified; Heavy; The Chicago Code; Cash Cab; Wipeout

God’s kitchen

My vote for best commercial ever.

Entire site as a zip file — last updated 2012.01.05

My books

Now available on the iBookstore!

   

Previous articles

Microsoft’s Dim Prospects

Humanity — Just Barely

Hanke-Henry Calendar Won’t Be Adopted

Collatz Conjecture Analysis (But No Proof; Sorry)

Rock-Solid App Stability

Microsoft’s Uncreative Character

Microsoft’s Alternate Reality Bubble

Microsoft’s Three Ruts

Society’s Fascination With Mass Murder

PlaysForSure and Wikipedia — Revisionism At Its Finest

Procrastination

Patent Reform?

How Many Licks

Microsoft’s Incredible Run

Voting Socialist

Darwin Saves

Collatz Conjecture ... Not Yet

The Size of Things In the Universe

The Self-Fulfilling Prophecy That Wasn’t

Fun

Nobody Was In Love With Windows

Apples To Apples — How Anti-Apple Pundits Shoot Themselves In the Foot

No Holds Barred

Betting Against Humanity

Apple’s Premium Features Are Free

Why So Many Computer Guys Hate Apple

3D TV With No Glasses and No Parallax/Focus Issues

Waves With Particle-Like Properties

Gridlock Is Just Fine

Sex Is A Fantasy

Major Player

Why the iPad Wannabes Will Definitely Flop

Predators and Parasites

Prison Is For Lotto Losers

The False Dichotomy

Wait and See — Windows-vs-Mac Will Repeat Itself

Dishonesty For the Greater Good

Barr Part 2

Enough Information

Zune Is For Apple Haters

Good Open, Bad Open

Beach Bodies — Who’s Really Shallow?

Upgrade? Maybe Not

Eliminating the Impossible

Selfish Desires

Farewell, Pirate Cachet

The Two Risk-Takers

Number of Companies — the Idiocy That Never Dies

Holding On To the Solution

Apple Religion

Long-Term Planning

What You Have To Give Up

The End of Elitism

Good and Evil

Life

How Religion Distorts Science

Laziness and Creativity

Sideloading and the Supersized-Mastodon-In-the-Room That Snell Doesn’t See

Long-Term Self-Delusion

App Store Success Won’t Translate To Books, Movies, and Shows

Silly iPad Spoilsports

I Disagree

Five Rational Counterarguments

Majority Report

Simply Unjust

Zooman Science

Reaganomics — Like A Diet — Works

Free R&D?

Apple’s On the Right Track

Mountains of Evidence

What We Do

Hope Conquers All

Humans Are Special — Just Not That Special

Life = Survival of the Fittest

Excuse Me, We’re Going To Build On Your Property

No Trademark iWorries

Knowing

Twisted Excuses

The Fall of Google

Real Painters

The Meaning of Kicking Ass

How To Really Stop Casual Movie Disc Ripping

The Solitary Path of the High-Talent Programmer

Fixing, Not Preaching

Why Blackmail Is Still Illegal

Designers Cannot Do Anything Imaginable

Wise Dr. Drew

Rats In A Too-Small Cage

Coming To Reason

Everything Isn’t Moving To the Web

Pragmatics, Not Rights

Grey Zone

Methodologically Dogmatic

The Purpose of Language

The Punishment Defines the Crime

Two Many Cooks

Pragmatism

One Last Splurge

Making Money

What Heaven and Hell Are Really About

America — The Last Suburb

Hoarding

What the Cloud Isn’t For

Diminishing Returns

What You’re Seeing

What My Life Needs To Be

Taking An Early Retirement

Office Buildings

A, B, C, D, Pointless Relativity

Stephen Meyer and Michael Medved — Where Is ID Going?

If You Didn’t Vote — Complain Away

iPhone Party-Poopers Redux

What Free Will Is Really About

Spectacularly Well

Pointless Wrappers

PTED — The P Is Silent

Out of Sync

Stupid Stickers

Security Through Normalcy

The Case For Corporate Bonuses

Movie Copyrights Are Forever

Permitted By Whom?

Quantum Cognition and Other Hogwash

The Problem With Message Theory

Bell’s Boring Inequality and the Insanity of the Gaps

Paying the Rent At the 6 Park Avenue Apartments

Primary + Reviewer — An Alternative IT Plan For Corporations

Yes Yes Yes

Feelings

Hey Hey Whine Whine

Microsoft About Microsoft Visual Microsoft Studio Microsoft

Hidden Purple Tiger

Forest Fair Mall and the Second Lamborghini

Intelligent Design — The Straight Dope

Maxwell’s Demon — Two Real-World Examples

Zealots

Entitlement BS

Agenderle

Mutations

Einstein’s Error — The Confusion of Laws With Their Effects

The Museum Is the Art

Polly Sooth the Air Rage

The Truth

The Darkness

Morality = STDs?

Fulfilling the Moral Duty To Disdain

MustWinForSure

Choice

Real Design

The Two Rules of Great Programming

Cynicism

The End of the Nerds

Poverty — Humanity’s Damage Control

Berners-Lee’s Rating System = Google

The Secret Anti-MP3 Trick In “Independent Women” and “You Sang To Me”

ID and the Large Hadron Collider Scare

Not A Bluff

The Fall of Microsoft

Life Sucks When You’re Not Winning

Aware

The Old-Fashioned Way

The Old People Who Pop Into Existence

Theodicy — A Big Stack of Papers

The Designed, Cause-and-Effect Brain

Mosaics

IC Counterarguments

The Capitalist’s Imaginary Line

Education Isn’t Everything

I Don’t Know

Funny iPhone Party-Poopers

Avoiding Conflict At All Costs

Behavior and Free Will, Unconfused

“Reduced To” Absurdum

Suzie and Bubba Redneck — the Carriers of Intelligence

Everything You Need To Know About Haldane’s Dilemma

Darwin + Hitler = Baloney

Meta-ware

Designed For Combat

Speed Racer R Us

Bold — Uh-huh

Conscious of Consciousness

Future Perfect

Where Real and Yahoo Went Wrong

The Purpose of Surface

Eradicating Religion Won’t Eradicate War

Documentation Overkill

A Tale of Two Movies

The Changing Face of Sam Adams

Dinesh D’Souza On ID

Why Quintic (and Higher) Polynomials Have No Algebraic Solution

Translation of Paul Graham’s Footnote To Plain English

What Happened To Moore’s Law?

Goldston On ID

The End of Martial Law

The Two Faces of Evolution

A Fine Recommendation

Free Will and Population Statistics

Dennett/D’Souza Debate — D’Souza

Dennett/D’Souza Debate — Dennett

The Non-Euclidean Geometry That Wasn’t There

Defective Attitude Towards Suburbia

The Twin Deficit Phantoms

Sleep Sync and Vertical Hold

More FUD In Your Eye

The Myth of Rubbernecking

Keeping Intelligent Design Honest

Failure of the Amiga — Not Just Mismanagement

Maxwell’s Honey Do?

End Unsecured Debt

The Digits of Pi Cannot Be Sequentially Generated By A Computer Program

Faster Is Better

Goals Can’t Be Avoided

Propped-Up Products

Ignoring ID Won’t Work

The Crabs and the Bucket

Communism As A Side Effect of the Transition To Capitalism

Google and Wikipedia, Revisited

National Geographic’s Obesity BS

Cavemen

Theodicy Is For Losers

Seattle Redux

Quitting

Living Well

A Memory of Gateway

Is Apple’s Font Rendering Really Non-Pixel-Aware?

Humans Are Complexity, Not Choice

A Subtle Shift

Moralism — The Emperor’s New Success

Code Is Our Friend

The Edge of Religion

The Dark Side of Pixel-Aware Font Rendering

The Futility of DVD Encryption

ID Isn’t About Size or Speed

Blood-Curdling Screams

ID Venn Diagram

Rich and Good-Looking? Why Libertarianism Goes Nowhere

FUV — Fear, Uncertainty, and Vista

Malware Isn’t About Total Control

Howard = Second Coming?

Doomsday? Or Just Another Sunday

The Real Function of Wikipedia In A Google World

Objective-C Philosophy

Clarity From Cisco

2007 Macworld Keynote Prediction

FUZ — Fear, Uncertainty, and Zune

No Fear — The Most Important Thing About Intelligent Design

How About A Rational Theodicy

Napster and the Subscription Model

Intelligent Design — Introduction

The One Feature I Want To See In Apple’s Safari.