Friday, August 10, 2007

Managing Multiple Large Monitors

The Coding Horror blog recently talked about the Large Monitor Paradox. They discuss a variety of difficulties associated with efficiently taking advantage of multiple large monitors. My solution is better than anything I saw there. On my desk at work, I have two large monitors, one is 24" and one is 23". My solution is that they are connected to two different computers. But they behave as if they are one computer thanks to the magic of Synergy. Synergy is a wonderful open source project that allows you to control two computers with one keyboard and mouse. It works with Windows, Linux/Unix, and Mac. It even merges the clipboards allowing you to cut text from one machine and paste to another.

This solution solves several problems. First, since you only have one monitor connected to each machine, you don't have problems with software not playing nicely with multiple monitors, and windows are never split across screens. If your monitors are large, you can have some of the problems that Coding Horror mentions with maximized windows being too big. In Linux, Gnome virtual desktops allow me to place windows on different desktops so I can effectively show/hide multiple windows instantly. This combined with the fact that I stick to a small number of basic window layouts means that I spend virtually zero time managing my windows.

On top of all this, I have twice the computing power that I would have if I was using multi-head on a single computer. This is very useful for me because the projects I work on tend to require lots of it. I do have to admit that money is definitely a factor here. Fortunately, it's not much of a concern where I work. On a limited budget the situation is a little different, but still fairly doable. Instead of adding a monitor, add a computer. Instead of upgrading/replacing a computer, add a computer. If you absolutely don't need the extra computing power or flexibility of having two machines, then two dual head may be the best for you. But at least be aware of the power of Synergy.

Sunday, February 25, 2007

The People Factor: Why Startups Succeed Where Big Corporations Fail

Since the dot-com bubble, there has been increased discussion of startup companies, the differences between them and larger companies, and why they are frequently capable of producing superior products. I would like to submit that the fundamental difference between startups and non-startups is the lens through which they view their employees. Startups are designed to succeed BECAUSE OF their employees, while large companies are designed to succeed IN SPITE OF their employees.

To understand why this is the case, we need to understand what has shaped the modern American worker. In his book Democracy in America, Alexis de Tocqueville observed, "As the conditions of men constituting the nation become more and more equal, the demand for manufactured commodities becomes more general and extensive; and the cheapness which places these objects within the reach of slender fortunes becomes a great element of success." This phenomenon drove the mass production boom of the early 20th century. Mass production taken to extremes essentially reduced the worker to a robot. This is the worker that corporations have become used to.

The transition from the Industrial Age to the Information Age has totally changed the nature of mass production. No longer does physical production and distribution constitute the majority of a product's total cost [1]. With the Internet, products can be copied and delivered for practically nothing. Almost the entire cost of these products is their design. The first cars could be designed and built by a single person. Now it takes hundreds or even thousands of man-years to develop a software product. This fundamental change in the product cost breakdown has caused an increase in the demand for skilled labor.

With unskilled labor, succeeding in spite of your employees is a good thing. Assembly lines set the pace of the workers. Fast workers don't improve anything, and slow workers can't hide. As long as the employee meets a certain minimum threshold, the employer is happy. But skilled labor in the Information Age is very different. Two things have changed. First, variations in worker productivity can now make a big difference to the company. And second, worker productivity has become harder to measure [2]. In this climate, incentives become much more important to decreasing cost, increasing productivity, and improving a company's bottom line.

Corporate practices haven't caught up with the transition from unskilled to skilled labor. The economies of scale that have driven corporate expansion have bred a large workforce chosen indiscriminately. Back in the second industrial revolution almost anyone could perform repetitive mass-production tasks. But now, even entry-level coders writing boilerplate code need a comparatively significant amount of education. Instead of improving how they choose and relate to their workers, large companies have focused on improving process to reduce risk. This is just a fancy (and nicer sounding) restatement of my original premise--that companies are designed to succeed in spite of their employees. What they should be doing is restructuring their companies so their products succeed because they have good people who are given good incentives to produce to their full potential.

There are a few exceptions to this phenomenon. Google is probably the most recognized--due to it's conspicuous search for intelligent employees. Before them there was Microsoft, which was once known as large brain trust. These tech companies have made the transition, but the large part of corporate America hasn't. I believe that this is the single biggest problem facing today's companies. But even tech companies that have gotten it right are not immune to the problem. The recent release of Windows Vista was years behind schedule and devoid of promised features. So there must be more to it than just hiring smart people.

First, once you have smart people, you have to keep them. To keep them, you have to treat them well and keep them happy. There are no shortcuts or tricks you can play to accomplish this. That's the one downside to hiring smart people. They're harder to fool, and will be keenly aware of when their employer is not harnessing their full potential. This brings us to the second problem. Even after a company has succeeded in hiring smart people and making them happy, it is still difficult to resist the tug of the old corporate mindset. As Microsoft has demonstrated, even decent hiring practices have trouble offsetting the creep of unmanageable bureaucracy due to the pervasive big corporate mentalities and culture. I think this is because the old corporate influence is still lurking all over. Any of the many secondary (to the product) departments (i.e. HR) that still do things the old way tend to spread their policies into the people and departments they interact with.

The fact that companies are resisting this change is one of the biggest factors contributing to the surge of startups. The smart people are seeing the opportunity and taking it. They're tired of punching a clock for a pointy-haired boss who doesn't understand. They want to be treated like they are part of the solution, not part of the problem.

[1] When I refer to products and companies, I'm primarily referring to the products and companies in the information industry. There are definitely a host of manufacturing jobs to which my comments here do not apply.

[2] Some skilled jobs still have easily measurable productivity, for example the mechanics who assemble Ford Cobra engines by hand. But information industry jobs do not.