This is the 43rd episode of the StackOverflow podcast, where Joel and Jeff discuss dealing with incompetent programmers, whether salaries should be public, dealing with technical debt, and programming for small businesses.
We will try to be more careful about our use of Begs The Question.
Joel asks about the rationale behind requiring 50 reputation to leave a comment, but allowing a brand new user to post a question or leave an answer. The reason is mostly because we have no mechanism for voting or marking offensive on comments, because they're ultra-lightweight.
One way to avoid the dilemma of dealing with bad programmers is to be selective who you work for -- only choose employment at companies where they Hit the High Notes. It's even in the Joel Test itself: do new hires have to write code?
I'm not a fan of puzzle-based interview processes. I met with a Stack Overflow user this week, Chris Jester-Young, and he revealed a clever and potentially more useful strategy: give interviewees a C program full of bugs, and have them try to debug them! Of course, Chris is a big Code Golf enthusiast, so of course he nailed that one.
Sometimes you have to try to change your organization to fix the root problems, otherwise you're just fighting the symptoms and not the disease itself. This can be quite a challenge when you have no real authority. Joel offers some advice in Getting Things Done When You're Only a Grunt.
Are there happy incompetents? I argue that there are; Joel argues that there aren't. Among the Inept, Ignorance is Bliss. Perhaps the better question to ask is, how can you help this marginal programmer find a career they'll enjoy? Many so-so programmers can make outstanding testers, for example.
We wonder: what would it be like to work at a commercial for-profit company where everyone's salaries were public knowledge? I imagined it as something like The Lord of the Flies. Just make sure you aren't Piggy!
At Fog Creek, salaries aren't technically public, but they have a formula through which everyone's pay can be derived. This is the Fog Creek Professional Ladder. Fog Creek also does profit sharing, so when the company does well, everyone does well.
Is there a two-class society at Microsoft, between Testers and Developers? Joel wonders why they need different titles. I had always heard Microsoft did a great job of giving test engineers a viable parallel career track.
Joel believes manipulating compensation to motivate people does not work, almost by definition. Top developers will do a good job no matter what compensation system you put in front of them. It's a "blunt instrument" that can cause as much harm as good. Joel is an advocate of "taking salary discussion off the table, paying people fairly and justly and well, so they can stop worrying about it so much."
On matters of customer service, we do endeavor to not make the situation worse. Start practicing saying "I'm sorry, it's our fault."
Updates may slow down on Stack Overflow for a little while. We have built up a lot of technical debt around our database, and we have to hunker down and refactor a few core database tables that affect 80% of our code. If you don't pay down your technical debt every so often, you could end up like Twitter -- a reliability laughingstock. But, somehow, still successful.
There's something liberating and energizing about going in and tearing down huge parts of your application to rebuild it and make it better. Unlike our previous discussion on learning languages, I'm more of an advocate of the big bang model here, whereas Joel proposes something more incremental.
If you work in programming or IT for a small business, can you give an elevator pitch explaining the value you bring to the business to the powers that be? Are you scaling your solutions to the size of your business, and not over-engineering it? What can you outsource, versus what is strategic?
We answered the following listener questions on this podcast:
- Matt Rogish: "How does one ethically get rid of of incompetent programmers?"
Our favorite Stack Overflow questions this week are:
- Choosing a technology stack for a small 'budget conscious' business -- if the company is unwilling to spend any money at all, that means they place no value on what you're doing. Fix that first, if you can.
If you'd like to submit a question to be answered in our next episode, record an audio file (90 seconds or less) and mail it to firstname.lastname@example.org. You can record a question using nothing but a telephone and a web browser. We also have a dedicated phone number you can call to leave audio questions at 646-826-3879.
The transcript wiki for this episode is available for public editing.