Take away developers' PCs and send them to Walmart
Why is it so hard to get developers to realize the software they design is slow, bloated and does not have the "fast and fluid" experience we all would like? End users may not appreciate this about many programmers and their mindset, but many developers don't like to use old computers? They love their technology and demand leading-edge PCs.
Maybe it's time to take away their computers, and send them to Walmart to buy new ones.
Developers and Their Computers
When a programmer starts working on his software, he or she has to deal with two problems.
The first is speed of development. If it takes 20 minutes to compile an application, before he or she can even run it, then it takes forever to write software. Programming is often a write some code, compile, test, then write some more code, compile and test process, which just goes on and on. I can understand the need to be productive, so the speed of the development cycle is critical to getting software finished in a reasonable amount of time.
The second problem is that today's software often tends to be a bit sluggish, because it is so CPU intensive. The 32-bit color displays we use, high-resolution monitors, heavy emphasis on graphics and large databases we access, put heavy loads on applications. Software has to do a lot of work, just to do the basic stuff, so everything else we add as programmers, slows it down even more.
The solution for most programmers to these problems is to buy bigger and better computers.
Simply put (please correct me if I am wrong): developers rarely are satisfied with a cheap PC. Most likely they have the leading-edge in computers. Just give them that multicore CPU, with enough RAM for three computers and a mean, gamer's graphic card and a programmer is happy and productive. But this is the solution from a programmer's point of view and there is one big problem with it.
Everybody Else buys PCs from Walmart
The people who use their software often don't buy the bleeding-edge computers (unless they do CAD and 3D games or create videos). The average end user, even in businesses today, buys from Walmart or from manufacturers like Dell -- the more mass-market lower-cost models available.
These computers have lower-end CPUs and even if the microprocessors are dual-core they are lower-end dual core. Integrated graphic GPUs is the name of the game today for mass-market computers and simply put, they just don't perform like a decent discreet graphics card does.
The Programming Paradox
Programmers develop their software on the leading-edge computers, while end users consume their software on computers with likely one-quarter the performance of the developer's computer. This is the programming paradox. Hopefully most programmers have the sense to at least test their software on a low-end computer to make sure it runs well, but this still creates a problem. When the software does not run well, it is easy for a developer to say to himself: "That's what you get for having a cheap computer", rather than take a serious look at ways to improve performance in the software.
The Solution, but You won't like It
While I say this partly in jest, part of me wants to say this in all seriousness: Why not put away your computers, go to Walmart, buy the cheapest PCs you can find and make use them for the next few months. Let's see how well they do now.
OK, be Realistic
Most programmers will likely have a good laugh at the suggestion, chuckle and then move on. But guess what? I am partly serious. Not only can I suggest this, but I live by it. I have been developing a long time now (started in the 1980s), and I design and develop all my software on mass-market PCs. I do all my work on a low-end computer, with previous versions of Windows and then do my testing of the software on newer, faster, PCs with the more current operating system.
When I tell other programmers this, they usually laugh, since most would not work this way. But I have done this for years, and it changes how you look at the software you develop. Performance becomes a key issue. Currently, I work on a Windows XP computer, with a 2.5 GHz Celeron CPU and 768MB RAM.
I then test my software on my Windows 7 (and Windows 8 beta) computers. But even the more current computers I have are not leading edge. They are in the mass-market catagory. Now I did add some 3D graphic cards to two computers recently (Windows 7, Vista Home Basic/Windows 8) so I can test some OpenGL 3D stuff I have been working on, but even there I only purchased as inexpensive a 3D card I could find. Both were in the $50 range (normal retail price), so they are very low-end graphic cards.
Why? Really! Why?
Developing software, especially if you lean towards a more agile style of development, is something where you do a lot of coding, compiling, running and testing -- and continue this over and over again. I need to know how my software will run on the average computer immediately, not after some development time and later testing on a low end computer.
I feel that if my software runs well on a low-end computer , then guess what happens when it is run on better computers by end users. Simply put, "it flies" -- "fast and fluid" or what ever you want to call it. If a programmer spends a day working on their software, with a high end computer and then only tests it at the end of the day on the low end, mass market computer, it is much more difficult to go back and find what slows things down.
While I honestly don't expect most programmers to work the way I do (I am realistic), there is a lesson in this, which may benefit them.
Performance in software has a great deal to do with the mindset of the programmer developing it. Can developers put themselves into the shoes of those who will use their software? Even the choices we make in how (and on what computers) we develop the software can make a big difference. Performance should not be an afterthought, but instead needs to be a mindset.
Chris Boss is an advanced Windows API programmer and developer of 10 year-old EZGUI, which is now version 5. He owns The Computer Workshop, which opened for businesses in the late 1980s. He originally developed custom software for local businesses. Now he develops programming tools for use with the PowerBasic compiler.