# Hardware is Cheap, Programmers are Expensive

**URL:** <https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243>\
**Category:** blog\
**Created:** [December 18, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243 "2008-12-18T00:00:00Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![codinghorror](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/codinghorror/32/36371_2.png) [@codinghorror](https://discourse.codinghorror.com/u/codinghorror)\
**Post date:** [December 18, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/1 "2008-12-18T00:00:00Z")

</div>

Given the [rapid advance of Moore's Law](http://www.codinghorror.com/blog/archives/000741.html), **when does it make sense to throw hardware at a programming problem?** As a general rule, I'd say almost _always_.

* * *
This is a companion discussion topic for the original blog entry at: [http://www.codinghorror.com/blog/2008/12/hardware-is-cheap-programmers-are-expensive.html](http://www.codinghorror.com/blog/2008/12/hardware-is-cheap-programmers-are-expensive.html)

---

<div class="post-metadata">

**Author:** ![RamiroG](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/r/a9a28c/32.png) [@RamiroG](https://discourse.codinghorror.com/u/RamiroG)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/2 "2008-12-19T00:00:00Z")

</div>

Hardware is cheap, without programmers is trash.

---

<div class="post-metadata">

**Author:** ![jma](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/j/5f9b8f/32.png) [@jma](https://discourse.codinghorror.com/u/jma)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/3 "2008-12-19T00:00:00Z")

</div>

Hmm, what and ideal picture you paint. The hardware I work with is more than adequate for my job - sure, it’d be nice to have cutting edge bits of kit and to not worry about how our services perform. WOMM (works on my machine), so I’m past caring.

No, rather I would work smarter and with a more efficient sense of mind, learning to eep out every tiny ounce of performance I can before I hit the ‘Buy It Now’ button in accounts. As another poster comments, telling customers to do the same would be the death of a company.

---

<div class="post-metadata">

**Author:** ![Jez](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/j/cc9497/32.png) [@Jez](https://discourse.codinghorror.com/u/Jez)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/4 "2008-12-19T00:00:00Z")

</div>

I agree with the Knuth quote and it’s worth pointing out that people all too often only pay attention to half of the quote, forgetting that 3% of the time you actually should always be paying attention to the right kinds of optimization.

---

<div class="post-metadata">

**Author:** ![DMB](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/d/b782af/32.png) [@DMB](https://discourse.codinghorror.com/u/DMB)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/5 "2008-12-19T00:00:00Z")

</div>

> Always try to spend your way out of a performance problem first by throwing faster hardware at it

Bullshit.

This should be preceded by:

1. Perf test your code
2. Profile
3. Optimize bottlenecks

only when the lowest hanging fruit has been reaped does it make sense to throw more hardware at the problem. Most of the initial perf issues are easily solved. It’s only when you reach the area of diminishing returns that things become expensive.

---

<div class="post-metadata">

**Author:** ![Nicolas](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/n/67e7ee/32.png) [@Nicolas](https://discourse.codinghorror.com/u/Nicolas)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/6 "2008-12-19T00:00:00Z")

</div>

I’ll put those economics up your ass, write my web apps in C++, and run them on a Pentium IV.

I’m not being sarcastic or joking.

---

<div class="post-metadata">

**Author:** ![Lam\_Luu](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/l/59ef9b/32.png) [@Lam\_Luu](https://discourse.codinghorror.com/u/Lam_Luu)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/7 "2008-12-19T00:00:00Z")

</div>

That’s why we have Wirth’s Law:  
Software is getting slower more rapidly than hardware becomes faster

---

<div class="post-metadata">

**Author:** ![BillR](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/b/ac8455/32.png) [@BillR](https://discourse.codinghorror.com/u/BillR)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/8 "2008-12-19T00:00:00Z")

</div>

Can that salary chart be right? A programmer with less than a year of experience makes more than one with 1-4 and even a little more than one with 5-9 years of experience? So if that is right and you are looking for a job just leave your resume blank until you have 10 years of experience!

---

<div class="post-metadata">

**Author:** ![Jake\_Voytko](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/j/47e85d/32.png) [@Jake\_Voytko](https://discourse.codinghorror.com/u/Jake_Voytko)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/9 "2008-12-19T00:00:00Z")

</div>

I think that he is judging this as a cost via employer with benefits:

[http://swz.salary.com/salarywizard/layouthtmls/swzl\_compresult\_national\_IT10000010.html](http://swz.salary.com/salarywizard/layouthtmls/swzl_compresult_national_IT10000010.html)

Breakdown:

25th percentile: $46,047  
50th percentile: $52,141  
75th percentile: $59,139

Breakdown WITH benefits:  
50th percentile: $76,448

---

<div class="post-metadata">

**Author:** ![Alnitak](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/a/4da419/32.png) [@Alnitak](https://discourse.codinghorror.com/u/Alnitak)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/10 "2008-12-19T00:00:00Z")

</div>

That salary chart only has 23 samples recorded for the 1 year experience guys vs 2000+ samples for the other bands.

It’s a statistical glitch.

---

<div class="post-metadata">

**Author:** ![kief1](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/k/f14d63/32.png) [@kief1](https://discourse.codinghorror.com/u/kief1)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/11 "2008-12-19T00:00:00Z")

</div>

While I agree in principle, I’d caution against assuming that the cost of adding a server to a hosting farm is equal to the cost of buying the hardware. First there’s the supporting infrastructure - more servers mean more storage, which means more backups, just to name one element.

On top of that, more servers mean more work for the systems people, whether you have them on staff or pay a hosting provider. A well designed infrastructure architecture (e.g. good automated configuration management) will mean you can scale your number of servers more quickly than your staff, but it’s not insignificant.

---

<div class="post-metadata">

**Author:** ![David](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/d/aeb1de/32.png) [@David](https://discourse.codinghorror.com/u/David)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/12 "2008-12-19T00:00:00Z")

</div>

How can the top chart be correct? After that I stopped reading, if all the conclusion were based on an incorrect chart, then why bother with the rest of the article?

---

<div class="post-metadata">

**Author:** ![Richard](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/r/f0a364/32.png) [@Richard](https://discourse.codinghorror.com/u/Richard)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/13 "2008-12-19T00:00:00Z")

</div>

Yes, the salary chart is right. That’s because it’s based on newly employed programmer with x years experience - driven by job ads.

And a newly employed person with no experience includes a small number of superstars who have just left college (and not just with a BS - some will have a masters or even a PhD) who lift the average, but no-one advertises for $100,000 jobs for PhDs with two years’ commercial experience.

---

<div class="post-metadata">

**Author:** ![cpns](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/c/ecae2f/32.png) [@cpns](https://discourse.codinghorror.com/u/cpns)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/14 "2008-12-19T00:00:00Z")

</div>

On high volume low cost products (a typical consumer product embedded system for example), smart coding for cheap hardware definitely pays dividends. Often the performance is limited by the need to run from batteries.

---

<div class="post-metadata">

**Author:** ![David](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/d/aeb1de/32.png) [@David](https://discourse.codinghorror.com/u/David)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/15 "2008-12-19T00:00:00Z")

</div>

Jeff is using the wrong chart. The chart he is using is a Sr. Software Engineer/Developer/Programmer.

Here is just non-Sr Chart link

[http://www.payscale.com/research/US/Job=Software\_Engineer\_%2f\_Developer\_%2f\_Programmer/Salary](http://www.payscale.com/research/US/Job=Software_Engineer_%2f_Developer_%2f_Programmer/Salary)

There less than 1 years is 57k, with 20 years or more at 81k.

---

<div class="post-metadata">

**Author:** ![Jeremy](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/j/82dd89/32.png) [@Jeremy](https://discourse.codinghorror.com/u/Jeremy)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/16 "2008-12-19T00:00:00Z")

</div>

Ok, it is 5:40 on the west coast. Why are you awake!?

Also. I have had a couple of employers who wouldn’t spend a dime on their developers, designers or anything. I recently came to a very amazing company where each employee received a brand new computer and individual licenses for CS3, VS 2008, VS 2005, Vista Ultimate and a few others. Now that is awesome!

---

<div class="post-metadata">

**Author:** ![codinghorror](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/codinghorror/32/36371_2.png) [@codinghorror](https://discourse.codinghorror.com/u/codinghorror)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/17 "2008-12-19T00:00:00Z")

</div>

> Also. I have had a couple of employers who wouldn’t spend a dime on their developers, designers or anything.

Obviously this is a very bad sign, and I’d avoid working for companies this dumb.

---

<div class="post-metadata">

**Author:** ![Josh23](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/j/59ef9b/32.png) [@Josh23](https://discourse.codinghorror.com/u/Josh23)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/18 "2008-12-19T00:00:00Z")

</div>

View’s shared by some very smart people.

Does Django scale?

Yes. Compared to development time, hardware is cheap, and so Django is designed to take advantage of as much hardware as you can throw at it.

---

<div class="post-metadata">

**Author:** ![Tony](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/t/ee7513/32.png) [@Tony](https://discourse.codinghorror.com/u/Tony)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/19 "2008-12-19T00:00:00Z")

</div>

Oh, you forgot: Make it scalable. No sense in trying to spend your way out of misery if you code uses only 1 core…

---

<div class="post-metadata">

**Author:** ![Joe\_Chin](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/j/45deac/32.png) [@Joe\_Chin](https://discourse.codinghorror.com/u/Joe_Chin)\
**Post date:** [December 19, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243/20 "2008-12-19T00:00:00Z")

</div>

We are waiting to receive our brand new workstations. My old one is no slouch and I’m still going to take a few months of transition before I finally turn it in. In the meantime I’ll finally have something to run Vista. My previous machine could, technically, run it but the performance was underwhelming.

For programming I think it’s easy to throw more hardware at the problem. Almost every IDE I use is memory/CPU hog. When it comes time to ship I keep an old P4 around just for testing. While my company has the resources to buy good new hardware regularly a lot of our users don’t have the same capabilities.

[Next page](https://discourse.codinghorror.com/t/hardware-is-cheap-programmers-are-expensive/243.md?page=2)
