Coding Horror

programming and human factors

Do Certifications Matter?

Name any prominent software technology, and you'll find a certification program for that technology. For a fee, of course.

java certifications

It's a dizzying, intimidating array of acronyms: MCSD, SCJD. RHCE, ACSA. And the company offering the certification is quite often the very same one selling the product. No conflict of interest there.

But do these certifications actually work? Are they valid credentials? Do people who have these certifications perform better than those who don't? Imagine yourself as a prospective employer, interviewing a candidate who presents you with this:

Ruby on Rails programming certificate

My reaction is always the same. That's nice, but show me what you've worked on.

Your credentials should be the sum of the projects you've worked on, and specifically how much you learned from your failures. Certainly your actual experience, your portfolio, counts for a lot more than whether or not you passed some arbitrary, one-time test.

That said, I am of two minds on certification.

I've worked with so-called "web" developers who didn't understand how HTTP POST and HTTP GET worked. It's developers like this who make me pine for standard certification. Even if they're borderline incompetent, if they were certified, at the very least they would have a grasp on the basic concepts needed to do their jobs. In theory, anyway. At the junior level, it seems rational to require certification in a particular technology before they're even allowed in the building. It's the same reason most companies won't hire anyone who doesn't have, say, a high school degree, or a college degree.

On the other hand, I've worked with senior developers who had plenty of certifications under their belt, and they still had no idea what they were doing.

The certification debate has raged for years. This 1998 letter to the editor from Tom DeMarco illustrates how contentious the topic of certification can be.

Though the rationale for certification is always societal good, the real objective is different: siezure of power. Certification is not something we implement for the benefit of the society but for the benefit of the certifiers. It is heady stuff be be able to decide which of your fellow human beings should be allowed to work and which should not. Those who hope for a share of that heady stuff are the core of the camp that favors certification.

The entire discussion is somewhat dishonest. The term "certification," for example, conjures up the image of fresh faced young people lining up to be given their mantles of office while parents in the audience blink back tears of pride and a choir softly hums complex harmonies. But the real issue here is not certification; the real issue is de-certification. Certain people are going to be kicked out of the fold, not because they are not useful to the needs of the market, but because they don't jump through the certifiers' hoops. Lost in the shuffle here - at least in Nancy Mead's view - would be people who do not have degrees. Sorry about that Mr. Gates, in the brave new world, you wouldn't be allowed to write software. You can just sense the frustration of the prospective certifiers that companies like Yahoo are hiring kids right out of high school, kids who don't even know what a Data Division is, for gods sakes! Something must be done about that!

DeMarco goes on to humbly suggest that the market is a perfectly fine selection method all by itself:

I vote that we let poor old Citicorp and poor old Aetna and poor old Microsoft figure out for themselves who they should hire. I suggest that we have a perfectly fine selection mechanism at work today; it's called the market. Some people get hired as software developers and some people don't. It is a lot more competent than any appointed elite would be and a lot more ethical.

Personally, I agree with DeMarco. I don't believe in certifications. The certification alphabet is no substitute for a solid portfolio; you should be spending your time building stuff, not studying for multiple choice tests. But that doesn't mean they're worthless, either. I don't think certifications get in the way, as long as you can demonstrate an impressive body of work along with them.

Discussion

There Are No Design Leaders in the PC World

Robert Cringley's 1995 documentary Triumph of the Nerds: An Irreverent History of the PC Industry features dozens of fascinating interviews with icons of the software industry. It included this brief interview segment with Steve Jobs, where he said the following:

The only problem with Microsoft is they just have no taste. They have absolutely no taste. And what that means is, I don't mean that in a small way, I mean it in a big way. In the sense that they don't think of original ideas, and they don't bring much culture into their product. And you say, well, why is that important? Well, proportionately spaced fonts come from typesetting, and beautiful books. That's where one gets the idea. If it weren't for the Mac, they would never have that in their products. And so I guess I am saddened, not by Microsoft's success. I have no problem with their success. They've earned their success.. for the most part. I have a problem with the fact that they just really make third rate products.

It's not credited on YouTube, but the clip is definitely from Triumph of the Nerds. I remember it very distinctly.

What's remarkable about this brief interview is how succinctly it sums up Jobs' strategy for Apple today. At Apple, taste and culture are designed into every product from day one. Nothing is released until it looks as good on the outside as it works on the inside.

Jobs is dead on with his criticism. But the problem is much deeper than Microsoft; it extends to the entire PC industry. In the PC world, taste and culture are rarely considered, and if they are, it's always as an afterthought. Ship it first, make it look good later. If you ever do.

Consider PC hardware. Why are most PCs little more than black/silver/beige boxes? I've killed myself trying to find a PC case that isn't either hideously ugly or just plain boring. A well designed PC case is rare to the point of absurdity. If you want a PC that looks as good as it works, you have to make it yourself. The PC industry is so inept they can't even copy Apple correctly; the Lian-Li V1000 is ostensibly a copy of the Apple G5 case, but it looks more like its retarded cousin. And it's the same situation for laptops. Only a handful of the most high-end PC laptops can approximate the thoughtful design work that goes into the most basic, inexpensive laptop Apple sells.

The PC software situation is no better. If anything, it's worse. I see vendors writing their own custom user interfaces in a vain, misguided attempt to set their craplets apart from everyone else's.

asus-update-utility

At the other extreme, there are applications so concerned with being functional and utilitarian that they forget about design entirely, reverting to the bland grey Windows 95 UI style. They've given up.

gigabyte-wireless-utility

But I don't blame the third-party vendors. I can hardly expect them to do any better when design barely makes the top 10 priority list for any player in the PC industry. Microsoft is about the only company that's in a position to set PC design standards, and they're not trying very hard. Who else can lead the way on design? Dell? IBM? Compaq? NVIDIA? Gateway? Please. There are no design leaders in the PC world. There's nobody for these third-party vendors to look to as the gold standard of design. There's only the lukewarm, inconsistent, half-hearted design guidelines that Microsoft sets-- and frequently breaks themselves.

Steve Jobs has always been clear about the integral role of design in his products, as outlined in this Smithsonian interview, which is also from 1995:

DM: You used an interesting word in describing what you were doing. You were talking about art not engineering, not science. Tell me about that.

SJ: I actually think there's actually very little distinction between an artist and a scientist or engineer of the highest caliber. I've never had a distinction in my mind between those two types of people. They've just been to me people who pursue different paths but basically kind of headed to the same goal which is to express something of what they perceive to be the truth around them so that others can benefit by it.

DM: And the artistry is in the elegance of the solution, like chess playing or mathematics?

SJ: No. I think the artistry is in having an insight into what one sees around them. Generally putting things together in a way no one else has before and finding a way to express that to other people who don't have that insight so they can get some of the advantage of that insight that makes them feel a certain way or allows them to do a certain thing. I think that a lot of the folks on the Macintosh team were capable of doing that and did exactly that. If you study these people a little bit more what you'll find is that in this particular time, in the 70's and the 80's the best people in computers would have normally been poets and writers and musicians. Almost all of them were musicians. Alot of them were poets on the side. They went into computers because it was so compelling. It was fresh and new. It was a new medium of expression for their creative talents. The feelings and the passion that people put into it were completely indistinguishable from a poet or a painter. Many of the people were introspective, inward people who expressed how they felt about other people or the rest of humanity in general into their work, work that other people would use. People put a lot of love into these products, and a lot of expression of their appreciation came to these things. It's hard to explain.

Whatever you may think of Jobs, he's had the same vision for the last twenty years: the design of a product, the art of it, is just as important as the engineering. This is a lesson that the PC industry needs to take to heart. They better start learning some design chops quickly, because they're now directly competing in the same x86 market with Apple. Why choose a beige box and a schizophrenic UI when you could have something that's beautiful and thoughtfully designed for about the same price?

Discussion

Five Things You Didn't Know About Me (and my office)

I've been reluctant to respond to the Five Things You Didn't Know About Me meme. I generally take Kathy Sierra's advice when it comes to describing my background:

How many talks do you see where the speaker has multiple bullet points and slides just on their background? I did it once because I thought it would help people understand the context of my talk, and it did NOT go over well because:

A) Nobody cares.
B) Bullet points do not equal credibility.
C) Nobody cares.
D) You already HAVE credibility going in... you don't have to earn it, you just have to make sure you don't lose it.
E) Nobody cares.

And then there's Hugh MacLeod's take on the Five Things:

1. I dislike you intensely.
2. I love it when bad things happen to you.
3. When your name is mentioned I immediately try to change the subject.
4. I wouldn't read your blog if you paid me.
5. If we were trapped on a desert island together I would kill myself.

It's funny. But it's not really a response to the question. People have shared so generously with the Five Things post, and they've gone out of their way to express an interest in others by tagging them. It would be rude not to respond in kind with equal generosity. Although it's technically off topic, Five Things has made for strangely compelling reading.

I like to think that the important part of my blog is the content, not me. After all, users don't care about me. It's about what you, the reader, get out of this blog. I struggled with this for a while until I realized what I was missing. Blogs, for better or worse, are as much about the writer as they are any other topic. Personality is the essential ingredient that makes blogs so interesting, so compelling, so.. human. To avoid writing about yourself is just as much of a mistake as writing about yourself in every post. So Five Things isn't off topic at all. It's very much on topic. Behind every fascinating blog is a fascinating person.

With that in mind, I thought I'd offer a small pictorial tour of my office at Vertigo Software. It's as much a reflection of my personality as anything else in my life.

Office entrance

Here's the entrance to my office. As you can see, Vertigo does treat developers in accordance with the Programmer's Bill of Rights. The Aeron chair is standard issue to protect developers' second most important asset.

I like to keep new and interesting items on the front table for visitors to play with, and to attract people into my office. Here's what I have out on the front table right now:

I also have iridescent thinking putty out permanently. I love putty. It's my absolute all time favorite desk tcotchke. And it's practical, too. As I noted last year, putty is legitimate exercise for your hand and your brain. I can't recommend it highly enough. I like it so much that I took it upon myself to buy every new Vertigo employee a tin of their very own thinking putty in a unique color.

Office, back wall

Here's a closeup of the back wall. The items on the wall aren't art, but wrapping paper from Knock Knock, the same company behind the flash cards. I spray-mounted them on foamcore backing for a drop-shadow effect and attached them with 3M's amazing Command picture mounting strips. I can't find a link to the wrapping paper on their site any more, so I'm not sure if they still sell it. But each one is a little inside joke:

  1. the colorized DNA sequence on the left is the gene for color blindness.
  2. the barcode is the actual barcode for the actual wrapping paper itself.
  3. the fingerprint belongs to the person who designed the wrapping paper.

Also on the table are some of my other favorite things: a three-dimensional color cube, a "museum size" chrome Tangle, and a cheap, generic digital picture frame that I mounted into a fancy gold leaf frame and matted with black construction paper. Trust me, the original frame was hideously ugly. I usually leave the picture frame running The Office (BBC) episodes 1 and 2 encoded into Xvid on a 512mb SD card. I also have Airplane! and Raising Arizona (among others) encoded in the same format, and I swap them out occasionally. I'm a big movie fan, so it's moving art to me.

Office, computer setup

Here's my computer. I built it myself. You can see a glimpse of it in the first picture under my desk; it's a green Asus Vento. As I've mentioned many times before, I use three monitors at home and at work. The Logitech MX518 satisifies my mouse fetish, and the Microsoft Natural Keyboard 4000 is, as far as I'm concerned, the Keyboard of the Gods. It just doesn't get any better than that rich corinthian naugahyde under your palms. The speakers are mostly for show; you can see the Sennheiser Headphones I swear by on the left-hand side.

Office, closeup of pong clock

Directly above my monitors is my pride and joy: my very own Pong clock. I'm fascinated with clocks, so the Pong clock was my holy grail: it mixes art with classic video games, and it's a functional clock, too. I waited six months to get this delightful piece of art, and every day was worth it. Every minute the right side wins. Every hour the left side wins. Forever.

Office, bobblehead ninja

Here's a closeup of my bobblehead ninja. I can't stop thinking about ninjas. You can also see my small collection of Kikkerland windups in the background behind the monitors. It's fun to wind these things up and watch them grind around, to temporarily leave the digital world behind and revel in the purely analog.

Office, right wall

To my left and behind me, I have a few other items of interest. On the lower level, from left to right:

  • A Kikkerland wall clock, one of my favorites, but quickly demoted after the Pong Clock arrived.
  • Some Visibone cheatsheets. As if you needed any more evidence that I cheat my way to the top.
  • A Swiss Business Tool, so I am ready for any business situation that might befall me. Businesspeople beware!
  • A mug boss to organize my archaic writing implements. I also own its big brother, the bucket boss, for my tools.

On the upper level, from left to right:

Office, front corner

Here's a shot directly in front and to the left of my desk. I've always wanted a mobile in my office. This one is from flensted. It's always moving, and as far as I'm concerned, it's the next best thing to having a window overlooking the ocean. The art on the wall is cheap stuff from IKEA that caught my eye. My wife and I are huge IKEA fans. When we lived in North Carolina, the closest IKEA was in Baltimore, more than 5 hours away. Going there was a rare pleasure. Here in California, there's an IKEA barely 15 minutes away, so we can go any time we want. Life is sweet.

Office, left wall

On the other wall, I have a standard-issue whiteboard, along with more inexpensive wall art from IKEA. Above the whiteboard is my BetaBrite LED sign. I use the .NET API I wrote for the BetaBrite to route the current weather conditions and top RSS news feeds to it.

And that concludes my office tour. But in the spirit of Five Things, I'll go even further. Here are five things you didn't know about me:

  1. I do not own any jeans, or any denim clothing whatsoever. I had enough denim in high school to last the rest of my life. I'm done with that.

  2. I was arrested for wardialing and phreaking by a small telco in 1987. They even tapped my phones and everything. I used a program I wrote in AmigaBasic to repeatedly dial numbers and guess calling codes. Luckily I had been away for high school senior beach week during part of the investigation, so I hadn't been running the program as much. Since I had no prior record, with the help of a lawyer, I was able to get the charges dropped. And yes, I stopped doing that. In the dark ages before the internet, all we had were BBS systems and modems. And long distance charges were incredibly expensive back then. To get your BBS fix, you had to find some way around the long distance charges. I'm glad today's kids don't face the same dilemma.

  3. I am terrible at math. How terrible, you ask? Well, I thought I might head off to business school in 1994 so I took the GREs. This was the first standardized test I actually studied for. Not because I'm so smart, mind you, but because I'm very, very lazy. With the additional effort of studying, I did my best on the tests: I scored in the 99.9th percentile on the verbal part of the GRE, but barely made 77th percentile in math. This has always bugged me, because computers and math are so closely linked. I love computers, but I can't stand math. No matter how hard I apply myself, I'm terrible at it. I could never quite wrap my brain around the concepts. But I'm really good at writing about how much I suck at math, for what that's worth.

  4. I met my wife on the dance floor during 80's night. There I was, minding my own business, getting my groove on to The Safety Dance at this club in Denver in April 1994. As I'm dancing, I suddenly felt a tap on my shoulder. I turned around and there was this cute girl telling me "you're doing it wrong". As in, I was doing the Safety Dance wrong. I thought it was just a song; who knew it was an actual dance? Live and learn. That may be why, to this day, I still have an obsessive love for 80's music. I probably own 60-70 discs worth of 80's song collections (including remixes), and I listen to it regularly.

  5. I don't really even like computers. Just kidding. My wife often tells me, half-jokingly, that I love computers more than I love her. Of course that's not true. Love is an awfully strong word. But I do think I'd have sex with my computers if it was physically possible.

I'm tagging my Vertigo Software coworkers who blog in the hope that they'll share five things about themselves, too: Eric Cherng, Scott Stanfield, Alan Le, Dan Swearingen, and last but most of all least, Matt Hempey.

Discussion

The Problem With C++

MIT's Technology Review recently interviewed Bjarne Stroustrup in a two-part article (part one, part two). You may know Bjarne as the inventor of the C++ programming language. Indeed, he even maintains a comprehensive C++ FAQ that answers every imaginable C++ question.

Here are a few select quotes from the interview that I found notable:

C++ has indeed become too "expert friendly" at a time where the degree of effective formal education of the average software developer has declined. However, the solution is not to dumb down the programming languages but to use a variety of programming languages and educate more experts. There has to be languages for those experts to use-- and C++ is one of those languages.

What I did do was to design C++ as first of all a systems programming language: I wanted to be able to write device drivers, embedded systems, and other code that needed to use hardware directly. Next, I wanted C++ to be a good language for designing tools. That required flexibility and performance, but also the ability to express elegant interfaces. My view was that to do higher-level stuff, to build complete applications, you first needed to buy, build, or borrow libraries providing appropriate abstractions. Often, when people have trouble with C++, the real problem is that they don't have appropriate libraries--or that they can't find the libraries that are available.

Other languages have tried to more directly support high-level applications. That works, but often that support comes at the cost of specialization. Personally, I wouldn't design a tool that could do only what I wanted--I aim for generality.

I think [making computer languages easier for average people] would be misguided. The idea of programming as a semiskilled task, practiced by people with a few months' training, is dangerous. We wouldn't tolerate plumbers or accountants that poorly educated. We don't have as an aim that architecture (of buildings) and engineering (of bridges and trains) should become more accessible to people with progressively less training. Indeed, one serious problem is that currently, too many software developers are undereducated and undertrained.

In the FAQ and the interview, Bjarne comes off as a little defensive about C++ and its role in the history of computer languages. Maybe that's because the importance of C++ has diminished over time, principally for two reasons:

  1. C++ is fast but unforgiving. It was an appropriate solution for an era of limited computing resources. But we've long since left that behind; we live in an era of abundance. We have more computer power than we possibly know what to do with on the desktop. Even the naive solutions for most computing problems are "fast enough" these days. Computers get faster every day, but programmers' brains, sadly, do not. It'd be a waste not to trade some of that abundant raw power to make things easier on us. It's time to evolve up the one trillion dollar programming pyramid.

  2. C++ is designed for any possible programming task, from the lowest level to the highest. It makes sense to use C++ to write operating system kernels and device drivers. But when was the last time you used C++ to write a line of business app or website? C++ is perhaps the ultimate generalist language. Because it can do all these things, it's complicated and dangerous. Other languages don't try to span the entire range of low-level to high-level programming tasks; they simplify to attack a specific high-level problem domain.

C++ is a key historic milestone in the evolution of computer languages. There will always be a place in a programmer's toolbox for C++, but I'd argue that it's an increasingly a niche language for a very specific subset of programming tasks. The most important question to ask about any language these days isn't how fast it is, or how general it is, but how well does it protect you from yourself? Stroustrup has a great quote that says it all:

C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.

Discussion

If It's Not in Google, Does Your Website Really Exist?

Rich Skrenta, who may have written the first microcomputer virus, calls Google the start page for the Internet:

The net isn't a directed graph. It's not a tree. It's a single point labeled G connected to 10 billion destination pages.

If the Internet were a monolithic product, say the work of some alternate-future AT&T that hadn't been broken up, then you'd turn it on and it would have a start page. From there you'd be able to reach all of the destination services, however many there were.

Well, that's how the net has organized itself after all.

From this position, Google derives immense and amazing power. And they make money, but not only for themselves. Google makes advertisers money. Google makes publishers money. Google drives multi-billion dollar industries profiting from Google SEM/SEO.

Most businesses on the net get 70% of their traffic from Google. These business are not competitors with Google, they are its partners, and have an interest in driving Google's success. Google has made partners of us all.

But what happens when the start page for the internet-- the source of more than 70 percent of your traffic-- decides it will no longer index your web site?

Google blur

That's exactly what happened to JavaLobby over the christmas break:

It had been aggravating to spend holiday time cleaning up the unwanted [50,000 spam forum messages], but the real problem didn't surface until we started going through our normal morning routine yesterday, having just returned to work from our holiday break. We generally take a look at a variety of statistics in the morning before proceeding into whatever development work we're doing. Having been out of the office for almost two weeks, we had a lot of stats to look at. It took no time to see that something was wrong - traffic was down. A little more investigation revealed the problem.

We had completely disappeared from Google's main index! If you run a website, then you know how serious a problem this is. On any given day over 10,000 visitors arrive at Javalobby as a result of Google searches, and suddenly they stopped coming! We had apparently been grouped together with the spammer's viagra and casino sites, and poof! Suddenly we no longer existed in the eyes of Google, the world's largest search engine. Countless thousands of well-ranked pages gone in a blink. Perhaps you now understand why I would commit a violent crime if I caught those forum spammers? In essence, they have wiped out strategic positioning that we took years to build.

Google's response in this situation is arguably justified. They can't have query results redirecting users to sex sites; the public good requires that rogue or defaced websites get removed from their index as soon as they're discovered. Google's Matt Cutts, in response to a similar Google delisting incident posted on Slashdot, wrote an entire blog post documenting exactly how Google handles hacked websites:

But let's take a step back. This site was hacked and stuffed with a bunch of hidden spammy porn words and links. Google detected the spam in less than 10 days; that's faster than the site owner noticed it. We temporarily removed the site from our index so that users wouldn't get the spammy porn back in response to queries. We made it possible for the webmaster to verify that their site was penalized. Then we emailed the site, with the exact page and the exact text that was causing problems. We provided a link to the correct place for the site owner to request reinclusion. We also made the penalty for a relatively short time (60 days), so that if the webmaster fixed the issue but didn't contact Google, they would still be fine after a few weeks.

Ultimately, each site owner is responsible for making sure that their site isn't spammy. If you pick a bad search engine optimizer (SEO) and they make a ton of spammy doorway pages on your domain, Google still needs to take action. Hacked sites are no different: lots of spammy/hacked sites will try to install malware on users' computers. If your site is hacked and turns spammy, Google may need to remove your site, but we will also try to alert you via our webmaster console and even by emailing you to let you know what happened. To the best of my knowledge, no other search engine confirms any penalties to sites, nor do they email site owners.

I had completely forgotten about Google's Webmaster console until Matt mentioned it. If you own a website, you should take advantage of these tools. They'll let you diagnose and fix most Google-related problems. On top of that, they'll even give you some basic stats on the search queries people used to get to your website. All you have to do is prove ownership of your website by either uploading a specially-named file, or modifying a page to include a specific META tag.

But let's put aside, for a moment, the fact that the webmaster response to Google's delisting was a little hysterical in the face of Google's excellent webmaster tools. Can you blame them? You'd probably be upset, too, if more than 70 percent of the website to your traffic disappeared overnight.

That's the truly scary part. Google's lead over its competitors is so complete, so total, that if your website isn't in Google, it effectively doesn't exist. I'm not sure the Microsoft monopoly has ever wielded that kind of power. And even if they did, it would by definition be limited to desktops. Google has shown few signs of abusing their position so far. But I'm not sure I'm comfortable with a single company having such near-absolute power over the sum of all information on the internet, either.

Discussion