Obamacare,, and how government software gets made

It’s been in the news lately: the site, a component of the Affordable Care Act, fell flat on its face at launch. It was unable to handle the crush of people seeking health-insurance information. I have empathy for the people who built the site, because I’ve built government software before and it was way harder than it needed to be. Here’s my story, at my software-development blog.

Jim Grey

By Jim Grey (about)

I was not surprised when I heard that the Obamacare Web site,, crashed and burned right out of the gate.

But I was disappointed. Regardless of what I think of the Affordable Care Act, it’s the law. I wanted its implementation, including, to go well.

Still, I wasn’t surprised because I know how government software gets made.

obamacare2Several years ago I worked in middle management for a company that built a government Web application related to health-care customer service. I was in charge of testing it to make sure it worked. It is probably not going out on a limb to say that the people who built experienced many of the same kinds of things I experienced on that project.

Let me be plain up front: I was a poor fit for government software development. I was too free-wheeling and entrepreneurial for…

View original post 1,642 more words


Toothpaste is a scam

Given that every toothpaste contains whitening ingredients now, why aren’t we all walking around with teeth that are a perfect #ffffff? (That’s the HTML code for the whitest white, for the nongeeks in the audience.) That’s right: because it’s a scam.

Crest Tooth Paste, 1960

Photo: Allen Sandquist Collection

Anytime a product category requires an entire aisle at Walgreen’s, with many competing brands and even products within one brand, each promising to be the Best Evar!!!!!!! – that is, when something is marketed to the hilt, that’s your clue that you probably don’t need it.

Look, I know that studies say that the fluoride in toothpaste leads to fewer cavities. But when I was a kid in braces, I brushed with baking soda most of the time. It tasted terrible, but it made my metal mouth gleam like nobody’s business. And I saw no uptick in the number of cavities I got.

I’ll bet I could brush dry and still reap brushing’s benefits – but for one. The reason I still use toothpaste, even though it’s a scam, because it makes my mouth feel and taste minty fresh. I like that.



I hate automatic bathroom fixtures

This showed up in the men’s room at work recently, and I rejoiced aloud.


Yes, it’s a soap dispenser pump. It replaced an automatic dispenser. the kind that squirts soap into your palm when you stick your hand under it.

The concept is fine. Futuristic, even. Very House of Tomorrow.

Except that it was overactive. If your hand moved anywhere near it, soap immediately squirted onto the counter. What a mess! And after a while, its squirter grew weak and it took four or five squirts for one handwashing. The facilities guy tinkered with it and tinkered with it, and finally threw in the towel. He put in this old-fashioned pump, which provides endless trouble-free service.

Most automatic bathroom fixtures just don’t work right:

  • At my last job, at one of the sinks the automatic faucet would randomly decide to run for five or ten minutes even though nobody stood before it to wash their hands. This went on for two years, despite frequent repairs trying to get it to behave.
  • The towel dispensers where you wave your hand by a sensor to eject a towel seem only to sometimes recognize your wave. And the towel is tiny, meaning you need to wave six or eight times to get enough.
  • Don’t even get me started on forced-air hand dryers. Well, except for the high-powered Xlerator and the Dyson Airblade; those both work incredibly well. But as for the rest, it’s just faster and better to wipe your wet hands on your pants.
  • But most of all I hate automatic toilet flushers. So you’re sitting there, minding your own business, when you shift ever so slightly. The flusher thinks, “Aha! He’s gone!” and flushes – which sprays some of the toilet’s contents all over your naked butt.

Look, I understand the promise of automatic fixtures. Less wasted paper and water. Toilets that are always flushed for no unpleasant surprises when you approach. No need to touch anything so germs aren’t spread.

But they usually don’t work. Can’t we just go back to flush handles, faucet handles, and paper towels you pull out of the dispenser?

At least in my office, they finally got the soap dispenser right.



I believe in A teams over A players

I’ve heard it again and again at work. “We need to hire a real A player for this job, a total rock star.”


A software test team I used to belong to, dressed up for Halloween.

This statement usually comes at a time some critical task or function isn’t being done well (or at all) and it’s causing projects to fail. “If we can just bring in a super-skilled specialist,” the thinking goes, “it would solve all of our problems!”

Sometimes this gets stretched into a one-size-fits-all approach to hiring. “Let’s hire only A players,” the thinking goes, “and then get out of their way and let them perform.”

No doubt about it: A players are extremely talented and deeply experienced. They are heavily self-motivated and especially hardworking. They are creative problem solvers who focus on getting the job done.

But don’t assume that putting A players on the job is like sprinkling magic fairy dust that makes problems go away. That’s setting them up to fail – and setting your company up to fail, too. Companies are much better served building high-performing teams.

A players are no substitute for leadership. The most important step in that leadership is to help your people form solid teams. I make software for a living, and I’ve been in leadership roles for more than 15 years now. I’ve delivered many, many successful software projects with teams made mostly of B players. That’s because company leadership:

  • Created a shared, common vision that everybody rallied around and focused on
  • Built a process framework within which team members worked, which set standards for workflow, quality, and completion
  • Praised and rewarded team members for jobs well done
  • Hired for fit within the company culture, as well as for skill

A players are hard to find. A reason why I often hire B players is because most people aren’t A players. I’d say maybe one in ten people I’ve ever worked with are that good. Many of the truly outstanding geeks move to the coasts or to Texas, where the opportunities are greater. Here in Indianapolis, anybody who wants to hire only A players will soon run out of them and will sooner or later be forced to hire B players too. Those B players will work best under strong leadership and in highly functioning teams.

A players often have the biggest egos. A little swagger is part of the A-player territory. If you don’t lead well and help them gel into a team, conflicting egos will put your projects at risk.

A long time ago I used to follow, a once-popular Internet forum about music. In a recurring discussion thread, members wrote about which musicians they’d put in the best supergroup ever. The debate raged — Eric Clapton on guitar, and Neil Peart on the drums, and Paul McCartney on bass, … no no, Phil Collins on drums and Jeff Beck on guitar! …no! It must be John Paul Jones on bass!

It was fun to fantasize about such things. But do you really think a band with some of the biggest egos in music would gel? I’m reminded of We Are the World, the 1985 charity song recorded by a supergroup of pretty much every popular musician of the time. The famous story goes that someone taped a sign that read, “Check Your Egos At the Door” on the recording-studio entrance – but that didn’t stop arguments over many of the recording’s details, with at least one musician walking out and not returning.

Still, A players can be mighty useful. There are times when it’s right to hire A players. Here are the times when I’ve settled for no less than an A player:

  • Lead roles – I needed someone to figure out some thorny problems, and to set the pace and point the way for the team.
  • Lone wolves – I needed someone for a highly specialized job where I was unlikely to need more people in that role for a long time, especially a role where I lacked the skills to do it myself and therefore would have a hard time managing its details.

Really, I’ve never not hired an A player just because he or she was an A player. Who wouldn’t want their skill and determination on the team? I’ve only passed on A players when they would be a poor cultural fit in my company and in my teams.


Technical problems are easier to solve
than people problems. Read why.


Yahoo! CEO Marissa Mayer says no more working from home – and I say, “Right on!”

Yahoo!'s Marissa Meyer. TechCrunch photo.

Marissa Mayer. TechCrunch photo.

They say that the first secret of success is simply showing up. For those of us who work in software development, I say that means going to the office every workday.

Marissa Mayer, the new CEO of Yahoo!, seems to agree. She recently told the Internet company’s employees that they would no longer be allowed to work from home. She thinks that employees need to work in a Yahoo! office to create the highly collaborative culture Yahoo! needs to be successful. The decision has polarized the press, some of which vilify her for what they call a family-unfriendly move, and some of which praise her for a bold move aimed at righting a long-troubled ship.

Sure, the technology exists to develop software almost anywhere. But making software of any size and scale is not a solitary pursuit. Lots of people have to work together closely to make it happen. And my experience after more than two decades making software is that the best working together happens face to face.

The second best working together happens when almost everybody works remotely. The company that makes WordPress, the platform I use for this blog, famously embraces a “distributed workforce” with more than 80 percent of its employees working somewhere other than in the company’s offices. I wish that any software product I’ve worked on in my entire career worked as well and was as enjoyable to use as WordPress! If the goodness of WordPress is any measure, a distributed workforce really can work. But I think what makes it work is that because almost everybody works somewhere other than the office, they have to embrace the technologies that make it work.

That’s hard to do because most of those technologies are terrible. Chat and instant-messenger software seems to work pretty well and are the notable exception. Voice and video conferences are a pain to set up, and it’s fairly routine that calls drop or the quality of transmission fades; “Can you hear me now?” is a common statement on conference calls. Information-sharing tools such as file shares, wikis, and the like need people whose job it is to manage them or it soon becomes impossible to find things in them.

If everyone depends on these tools, there is enough impetus to tune them to work as well as they can, and to make working through them the norm despite their shortcomings. But when only a small portion of a software team works outside the office, that impetus simply isn’t there.

But more importantly, it is simply easiest to reach people who are in the same place as us. When most people work in the office, the people who work remotely can easily be left out of key conversations and become marginalized.

In one of my past jobs, one of my employees had an unexpected life change that forced her to move far enough away that commuting to work every day was impossible. Because she had been a longtime successful employee, I allowed her to work from home. She drove in every other Monday to maintain her office relationships, but the office momentum ran on face-to-face interaction and when important conversations spontaneously happened she was usually not there to participate in them. For a long time she tried hard to stay plugged in, but her enthusiasm finally waned and she started to ask for projects she could work entirely alone. I had some, but most of them were not as important to the business as what everybody else was working on. There’s no way to get around it – it stalled her career. She seemed to understand and accept this, but it was a bit of a shame nonetheless.

This is why I say that having everybody work in the office together is really best. It avoids the awful collaboration technologies, lets us play to our natural human strengths around face-to-face interaction, and keeps everybody fully engaged and involved.

I’m not opposed to someone working from home on occasion. When someone is doing a task that requires protracted concentration, sometimes home offers fewer distractions than a bustling office. And sometimes you have to meet a repairman at home, or one of the kids turns up sick. You can often get some work done while you’re dealing with these things. Heck, a couple years ago I worked from home for three days after a bad ice storm made driving treacherous.

But now I say no when someone who works for me asks to work from home after 3 pm each day so they don’t have to pay for after-school child care, or every Monday to take a turn staying home with an elderly mother, or Tuesdays and Thursdays because they live far away and would like to cut back on the commute. Although I’m sympathetic to their needs, I can’t meet them and keep up the tight collaboration my company needs to be successful.

Actually, I care a great deal about work-life balance. I work very hard to plan projects carefully so that people who work for me seldom have to work extra hours to keep up. I very much value going home at 5 pm myself so that I can have plenty of time with my family and to relax.

In the end, people who need to work from home need to find a line of work where it makes sense. In 1994 I took an 18-month career detour to edit technology books. I really could do that job from anywhere, and except for an occasional phone call with my authors or my boss I could work alone for hours and hours and be incredibly productive.

But that doesn’t work in most software-development shops. And apparently, it doesn’t work in Marissa Mayer’s Yahoo!, either.


Essay, Personal

Technical problems can almost always be solved, but people problems are hard

I’ll never forget the revelation it was when I figured out how to write computer programs. You mean, I thought, I can make this machine do what I want it to?

It was a watershed moment in my life.

A portrait of the geek as a young man

I was shy, introverted. People often frightened me, at least a little. I struggled to interact with people I didn’t know well, and I had no idea how to influence others. And then here was this machine that I could order around. It had limits – it couldn’t make my breakfast for me. But within those limits, it was all about what my mind could imagine and then code. I wrote games that my dad and my brother played. I wrote programs that illustrated concepts of geometry, which I demonstrated to math classes in school. I wrote a payroll application for my aunt’s small business. I even wrote a very rudimentary operating system once – it was terrible, but I learned a lot.

So I went off to college to learn how to make software. When I got out, the job market was terrible, so I took the only software job I could find, writing user guides for a software company. Later in my career I moved into testing, and into management. I’ve delivered a lot of software since I started almost 24 years ago.

Here’s the crazy thing I’ve learned: The hardest thing about making software is not the technical stuff. The hardest thing is getting people aligned and pointing the same way!

I’ve often said that it’s a modern miracle when a software project succeeds. Any software development project that involves more than about two people will have coordination challenges, differences of opinion, and all the other normal issues of working together. My experience has been that the programmers and the testers can do whatever you need them to (short of, say, telepathic user interfaces). They will work hard at it, they may struggle to get it right, and there may be frustration and late nights getting it done. But those struggles can pale in comparison to how hard it is to get everyone to agree on what to build, how to build it, and what it means to be done. Here’s how code is better than people:

Code People
Once coded, code stays coded and reliably does the same thing over and over. You think you have people all organized and then they go off and do whatever they want anyway.
You will sometimes struggle and work hard to make your code do what it needs to, but you can almost always get the job done. Sometimes you simply can’t influence people. Drat their free will.
Change your code, it doesn’t mind. It knows no fear. People hate change! When change is thrust upon them, they often resist it or even run away, screaming.

By the way, the WordPress editor doesn’t offer a way to create tables, so I wrote some HTML code to generate one. Fear my mad, l33t sk1llz.

Unfortunately, even if you have the best coders in the world, if you can’t get them to work together their projects will fail. Fortunately, I understand geeks, for I am one. I know what makes us tick. I’ve learned how to influence us and get us all reasonably pointing the same way. And I’ve built on these skills to learn how to influence non-geeks such as upper management, salespeople, and customer service folks to get them all working together. It’s not easy, and it’s impossible to ever get it perfect, but I’ve had pretty good success over the years and it’s contributed strongly to any number of successful software releases. And it’s helped me come out of my nerdly introverted shell.

I can’t remember the time I last wrote any serious code. I don’t miss it. To my astonishment, I’m having much more fun and success on the people side now.


Life got lots easier for me
when I embraced my inner geek.