Saturday, December 16, 2006
At the place where I'm working, there is an increasing consensus that they need to give up on legacy Linux systems and port all the apps to Windows. The reasons are that they have a lot of trouble getting device drivers to work for their hardware, and they don't like any of the libraries, frameworks, or development tools for Linux.
Given their budgets, schedules, and skill sets, I can't argue against them. They probably will get more done if they can move everything into the familiar land of Windows. But I will be sad when that happens.
They ask me why I'd rather use Linux, when Windows is so much "easier." As a contractor, I'm diplomatic and simply say it's a personal preference. But here, in my blog, I can give my non-diplomatic answer.
There are basically two approaches to solving a software-related problem. The first approach is to do some Google searches to find similar experiences other people have had, try all the approaches those other people have tried (reinstall some things, uninstall some things, change registry entries, etc.), and if you're lucky, eventually you will have a solution. You won't understand the solution, but the problem will be magically gone.
This approach is a bit like relying on a million monkeys banging on typewriters to produce the works of Shakespeare. If you wait long enough, they may do it. This approach works well for Windows users, because there are lot of Windows-using monkeys out there. Unfortunately, it does not work well for Linux users, due to the smaller number of Linux-using monkeys.
The other approach is to investigate the problem, using source code, logs, debuggers, and other diagnostic tools to determine the cause and the correct solution. This often takes longer, and requires skills that a lot of people don't have, but the result is that you truly understand the solution, and you will be better equipped to handle the next problem that comes along.
Linux users have to become comfortable with the second approach. Unfortunately, the second approach doesn't work well with a closed proprietary system like Windows, so most Windows users have never tried the second approach.
Windows encourages its users to stay stupid. Linux encourages its users to get smarter. That's why I prefer to use Linux.
As a user, I often wish the damned printer would just work. As a software developer, however, I don't understand why other developers don't relish the opportunities to learn more about the systems they use.