, the Web site at the center of President Obama's federal health insurance exchange, has been plagued with problems since it opened for business Oct. 1. In Monday remarks at the White house, Obama said that his administration is "doing everything we can possibly do" to fix the problems that have kept many applicants from being able to enroll in a health plan online.

But what the government really needs to fix its Web site are more highly-skilled programmers. And the government isn't great at recruiting them. Top programmers are far more likely to take jobs at tech titans such as Google or Microsoft than to work for the federal government.

To find out why, I talked to Ed Felten. He's a computer science professor at Princeton who served as the chief technologist at the Federal Trade Commission from 2011 to 2012. (Full disclosure: He was also my graduate school adviser.) We spoke by phone on Monday afternoon. The transcript has been edited for length and clarity.

Timothy B. Lee: In your work as a computer science professor, you've taught a lot of smart programmers, many of whom went on to work at top technology companies. Why does government have trouble recruiting this type of worker?

Ed Felten: I think some of it has to do with the way government personnel works. Top programmers are in high demand, and they can get excellent salaries or the possibility of major upside from stock options. That's true even in entry-level positions right out of college. It's difficult for the government to compete with that on a civil service pay scale.

Another part of it has to do with the slowness and inflexibility of procurement processes, which people with a software development mindset find frustrating. It takes a long time to do things, and there's a requirement of formal documentation and requirement statements and so on.

That makes it difficult to operate with the kind of agility that startup people are used to, this idea of putting out a simple product and then iterating rapidly, learning from your customers and scaling up gradually. That's the usual model that startups follow. That's difficult to do in government, and it's not what happened with, which was meant to start operating immediately at full scale and with full features.

Right now, the government depends heavily on contracting work out to third parties. That can help with some of the compensation issues you mentioned, right?

If you're going to contract this work out, you still need technically sharp people within government to keep their eyes on the process. One of the challenges in contracting is to know that the contractor is building what you need, and questions that the contractors will do the work they're supposed to. [They also need to manage] the work of integration among contractors. Those are things you'd like employees to be on top of. That requires a set of technical skills, along with management and contracting expertise.

Are there steps agencies can take to help them recruit better technical experts?

There needs to be an attention to recruiting and retaining top technical talent from the top of the agency. And some of that goes to quality of life and quality of workplace issues for programmers who sometimes want different things than other employees.

In government, there are some things that private companies do that you can't do — free meals for employees or an on-site executive chef, for example — which are valued fringe benefits at a lot of leading tech companies. Those are not things that government is really able to do. You can imagine the politics of trying to justify any of those things.

Some of it, I think, is that there are issues of differences in workplace culture between the [Washington] government workplaces and what is the norm in the tech world, including things like dress code and the informality of the workplace. And those are things you can overcome by making an effort to create an environment where folks are comfortable.

If you were in charge of the Center for Medicare and Medicaid Services, how would you approach the problem of fixing

The first step is to understand what the problem is, what's broken. You want people who have experience in troubleshooting big, complicated systems. And once you know what the problem is, then it's really about executing a plan to fix it. You can look carefully at the contractors you have in place and how they've done, try to understand what's gone wrong, and then try to fix those things that are fixable.

Does that mean working with existing contractors or bringing in new ones?

I think you need both. The current people have the best understanding of why the system was built the way it was and what the facts on the ground are. But you also need people from the outside who can look at things with fresh eyes and who are able to question the decisions that were made before.