Slashdot Mirror


Hardware Is Cheap, Programmers Are Expensive

Sportsqs points out a story at Coding Horror which begins: "Given the rapid advance of Moore's Law, when does it make sense to throw hardware at a programming problem? As a general rule, I'd say almost always. Consider the average programmer salary here in the US. You probably have several of these programmer guys or gals on staff. I can't speak to how much your servers may cost, or how many of them you may need. Or, maybe you don't need any — perhaps all your code executes on your users' hardware, which is an entirely different scenario. Obviously, situations vary. But even the most rudimentary math will tell you that it'd take a massive hardware outlay to equal the yearly costs of even a modest five person programming team."

465 comments

  1. Timing is everything by BadAnalogyGuy · · Score: 4, Interesting

    Sure, right now it may be more expensive to hire better developers.

    But just wait a couple more months when unemployment starts hitting double digits. You'll be able to pick up very good, experienced developers for half, maybe a third of their current salaries.

    Sure, invest in some HW now. That stuff will always be handy. But don't just go off and assume that developers will be expensive forever.

    1. Re:Timing is everything by tsa · · Score: 1

      For a third of the price of a developer you can buy an enormous amount of hardware.

      --

      -- Cheers!

    2. Re:Timing is everything by samkass · · Score: 5, Insightful

      We'll see. The good developers probably won't be in the first wave of folks looking for jobs. I know our company is still in the "we have to figure out how to hire fast enough to do next year's work" mode.

      Where having good engineering really helps, though, is in version 2.0 and 3.0 of the product, and when you try to leverage embedded devices with some of the same code, and when you try to scale it up a few orders of magnitude... basically, it buys you flexibility and nimbleness on the market that the "throw more hardware at the problem" folks can't match.

      Despite Moore's Law being exponential over time (so far), adding additional hardware is still sub-linear for any snapshot in time. So it's not going to automatically solve most hard scalability problems.

      --
      E pluribus unum
    3. Re:Timing is everything by diskofish · · Score: 5, Informative

      I think there will be more developers looking for work in the future, but I don't think the price is going to drop THAT much. I just think you'll be able to find qualified developers more easily.

      As for the article, it makes a lot of sense when you're running in a controlled environment. It's really a no brainier in consulting work. Upgrading hardware or optimizing software will both meet the customers needs only the hardware upgrade is $2,000 and the software optimization costs $20,000.

      Of course, if you're releasing software into the wild and it needs run on many different machines you better make sure it performs well especially if it's a retail product. So spend the extra money and make it really good.

    4. Re:Timing is everything by dexmachina · · Score: 2, Funny

      And if that still doesn't appeal to you, Walmart sometimes has developers going as loss leaders during the Christmas season...you can pick one up today for a fraction of its wholesale value!

    5. Re:Timing is everything by ijakings · · Score: 3, Funny

      Yeh but you have to appreciate where all this enormous amount of hardware, enormous amount of hardware goes. It doesnt just come on a truck you can dump things on, it has to come via a series of tubes. Oh... Wait.

    6. Re:Timing is everything by ShieldW0lf · · Score: 5, Insightful

      Everyone knows a blind mapmaker will finish his work much faster on a motorcycle than he will on foot. This is basically the same thing...

      --
      -1 Uncomfortable Truth
    7. Re:Timing is everything by WindowlessView · · Score: 1

      You'll be able to pick up very good, experienced developers for half, maybe a third of their current salaries.

      It's not as if software development exists in isolation from the rest of the economy. If SE salaries dropped to 1/2 or 1/3 of current levels it is almost certainly the case that virtually every other profession would have as well. In that case employers should be less concerned about buying computer hardware than loading up on armaments since there would be a full-blown revolution and complete social chaos taking place.

      --
      Leave the gun, take the cannolis.
    8. Re:Timing is everything by Anonymous Coward · · Score: 0

      Did you even read the article? Troll.

    9. Re:Timing is everything by jopsen · · Score: 5, Interesting

      Of course, if you're releasing software into the wild and it needs run on many different machines you better make sure it performs well especially if it's a retail product. So spend the extra money and make it really good.

      People usually buys a product before they realize the performance sucks... And retailers always says that it's just because your computer isn't new enough... Which makes people buy new computers, not complain about the software...
      - Or may be I'm wrong...

      But, I don't know many non-computer-freaks who can tell you the system requirements of their computer, and even less that compare them to the minimum requirements of a game, and almost nobody who know that recommended system spec. is actually the minimum requirements for any practical purpose...
      And I don't blame them... I'm a nerd, no gamer, and I can't tell the difference between most modern graphics cards...

    10. Re:Timing is everything by Anonymous Coward · · Score: 0

      Why? Micro$oft never did - just spend like crazy on marketing!( and then on legal )

    11. Re:Timing is everything by Anonymous Coward · · Score: 0, Redundant

      A blind mapmaker will crash his motorcycle and never finish.

    12. Re:Timing is everything by GravityStar · · Score: 3, Insightful

      Imagine server-software so craptastically written, that the maximum amount of people that can use the app at any one time is, say: 20. Now, imagine that when you double the hardware capacity, user capacity only goes up by a factor of say 1.4

      Still sure you're _only_ going to throw hardware at the issue when business wants the application online for a couple of thousand people?

    13. Re:Timing is everything by nabsltd · · Score: 2, Interesting

      Big deal.

      Right now, I've got a problem with a software upgrade where it has to convert the Oracle database to the new version. The conversion takes 40 hours on a database with less than 6 million rows because the code starts a transaction, updates one row, then ends the transaction. After seeing the actual SQL being used, it could be replaced by "UPDATE thetable SET field1 = field2 + constant WHERE field3 = anotherconstant".

      I literally could not buy hardware fast enough to overcome the stupidity of these programmers, and it would be far better to pay a lot more money for the people instead. Unfortunately, this is not an in-house product, and I don't get to pick the programmers that an outside company is going to hire.

    14. Re:Timing is everything by gbjbaanb · · Score: 2, Insightful

      The biggest problem is that poorly optimised software can be ok (everyone runs Java or .NET acceptably, and they're not exactly resource light), but some poorly written software can be dreadfully slow - so much so that throwing more hardware at it will never work.

      You know, the websites written as a single jpeg image cut into 100 pieces, the loops that iterate over themselves several times to get 1 piece of data, etc etc. I'm sure we've all seen stuff that makes us gawk in wonder that someone actually did it like that. (if not, take a look at TheDailyWTF).

      So, although hardware is much more powerful that it makes some sense to run 'easy' languages like java, C# or a scripting language, that still doesn't mean you can get away with cheap, poor programmers. (if you think it does, you can hire someone for $100 to rewrite your entire app on rentacoder, assuming you find one who knows the right codez :).

      Something that no-one considers in this 'hardware cost v programmer cost' is the user. If you have an app that is used by 10 users, it could be that you don't care so much about software quality. If it's used by 10 million users, you'd be saving the wrong pennies by not spending the money on writing it with as much skill as you can hire.

    15. Re:Timing is everything by maz2331 · · Score: 1

      It really depends on why the app is slow enough to require a performance boost.

      There are times when more hardware doesn't improve performance much. For example, a database application that has queries requiring a page lock will be inherently slow, and simply rewriting the query can result in a 100X performance boost.

      I've done that one a lot recently. Even multiplying the number of servers by 10X would have still been much more costly than the few hours it took to track down the bottleneck.

    16. Re:Timing is everything by MrMr · · Score: 1

      Upgrading hardware or optimizing software will both meet the customers needs only the hardware upgrade is $2,000 and the software optimization costs $20,000
      Except that the software optimization will 'upgrade' all hardware the customer will ever buy in the future by the same factor. And that the more efficient software is not something a competitor can buy off the shelf.

    17. Re:Timing is everything by quanticle · · Score: 1

      What Java and .NET do is optimize your code for you. By virtue of their virtual machine architecture, Java and .NET can look at the bytecode and apply some "higher level" optimizations to the code before running it through an optimizing compiler to produce assembly.

      In essence, by using Java or .NET, you're leveraging Sun or Microsoft's optimizations, rather than having to figure out those optimizations by yourself. For the vast majority of cases that's beneficial - Sun and Microsoft have far larger budgets than you do, and can spend much more time looking at these sorts of things. However, if your program is esoteric, or if you're looking at hardware that is outside the mainstream, you'll run into trouble, since the very optimizations that help Java and .NET on "standard" (x86) architectures may in fact hurt you on your nonstandard architecture.

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    18. Re:Timing is everything by deraj123 · · Score: 2, Funny

      Did I use to work with you? I got to experience this first hand once - I left when we had gone from 3 servers to 84. (our factor of capacity increase was a bit better, the first server supported about 25, the 84th about 15...)

    19. Re:Timing is everything by DMUTPeregrine · · Score: 1

      The system requirements of my computer are 2 120v AC electric outlets, and some air for cooling.

      --
      Not a sentence!
    20. Re:Timing is everything by Bodrius · · Score: 3, Insightful

      The $hardware$ $programmer-time$ equation is always based on the assumption that the programmer is always worth their qualifications.

      You are correct that this is an unrealistic assumption but, like the "rational self-interest" assumption in economics, it is a very useful one.

      Given a set of uniformly competent programmers, you quickly reach the point of diminishing returns on optimizing performance over hardware - but that's because a competent programmer should implement code with reasonable performance in the first place. Sadly, some people think they can compensate one with the other (competence vs hardware), when that is an entirely different problem, entirely different variable (e.g.: an incompetent programmer with more time is not always a good thing).

      First you have to reach the point of competence where you can talk about performance optimizations in the first place. What you describe is not 'unoptimized code', it is not a naive but reasonable implementation - its gross incompetence (assuming SQL qualifications were claimed in the first place).

      As you said, you can't pay for enough hardware to compensate for that. But in the same vein, you really, *really* do not want to pay for more of that programmer time either.

      --
      Freedom is the freedom to say 2+2=4, everything else follows...
    21. Re:Timing is everything by sentientbrendan · · Score: 1

      You'll be able to pick up very good, experienced developers for half, maybe a third of their current salaries.

      Uh, good luck with that.

      So, after you've tanked moral by paying your developers way less than they think they are worth, what do you think is going to happen when the economy picks up? They are all going to jump ship, and you are going to be left with code written by people who hate their job. Hint: not quality code.

    22. Re:Timing is everything by Civil_Disobedient · · Score: 1

      Upgrading hardware or optimizing software will both meet the customers needs only the hardware upgrade is $2,000 and the software optimization costs $20,000.

      There's no guarantee where the source of any particular system's inefficiencies lie. Sometimes you can throw more iron at the problem. But let me tell you as a software developer, it's trivial to accidentally write something that will bring a server/connection pool/database to its knees--such to the extent that no amount of extra hardware will save your ass.

      In those sorts of situations, your choices are either pay $20,000 for a software solution, or pay $22,000 for a fruitless hardware solution which then convinces management to get a software solution.

    23. Re:Timing is everything by Xest · · Score: 1, Funny

      But if he's blind he might crash and not finish at all :(

    24. Re:Timing is everything by Kaz+Kylheku · · Score: 1

      You'll be able to pick up very good, experienced developers for half, maybe a third of their current salaries.

      Nope, just some of their ex-coworkers.

      Smart companies know that you don't cut the slaraies in half across the board, but cut departments in half, leave the good people who did all the work anyway, at their original salaries.

      Anyway, hardware has been cheaper than programmers for quite a long time. Throwing hardware at problems doesn't eliminate software, and doesn't shift a whole lot of responsibility from software to hardware.

      More capable hardware tends to create opportunities and challenges for software developers, except in cases when you simply want to solve yesterday's problems a constant factor faster.

      consider for example situations in which you avoid doing certain things in the software due to performance limitations. For instance some inexact query over a large data set may restrict itself to less interesting semantics, because it would take too long. When the hardware improves, someone will realize that now is the time to revisit that TODO: in the code to make the function look deeper.

      There are cases like that in real-time and quasi-real-time programming too. TOday the response time is just so fast, so there are only so many things we can do in processing an event. We'd like to do more complicated event processing, but the cycles aren't there. When the cycles open up (new hardware), you can add semantics there. Someone has to write the code.

      Lots of opportunities like that in interactive systems, where you can cram more and more behavior into the system which has to execute in a responsive way in between user interface events. Merely speeding up the old system doesn't provide any visible improvement, because the old system already has instantaneous response time; the user can't tell much difference between 100 milliseconds and 50 milliseconds. So the new hardware is a waste unless you make it do more, which brings down the program's 100 ms response back to the original 50 ms.

    25. Re:Timing is everything by Xest · · Score: 3, Insightful

      Indeed. It depends entirely on the problem, this is where computational complexity comes in, but cheap programmers wont even know what computational complexity is. The more complex the problem, the more knowledgeable your programmers will need to be in coming up with novel solutions.

      You only have to look at most combinatorial optimization problems to see where you may run into trouble, a cheap programmer may try and brute force it and no matter how much hardware you throw at the problem that method simply isn't going to work for all but the smallest of data sets. You're going to have to get someone who knows the tricks (algorithms such as ACO) to produce acceptable solutions in a sensible time frame.

      But you don't even need the hardest COPs to demonstrate the types of problems you may run into, even the most basic COPs can throw lesser skilled programmers whilst better programmers can implement a solution without even needing to look up any references.

      It's another case of cutting corners. To the companies considering this option; sure if you wanna hire cheaper programmers and throw hardware at the problem that's fine. Just don't come crying when your entire system keels over under the weight of a problem it can't solve with the method implemented to solve it and when you then have to get someone in to do the job properly. Also then when you find yourself with a load of hardware lying round you never actually needed had it been done right to start with.

      Cheap programmers are great for throwaway or non-mission critical software, but make sure you have at least some good programmers around who have the computer science background underlying their software engineering abilities to deal with the tough/complex stuff.

    26. Re:Timing is everything by laffer1 · · Score: 1

      Wrong. Java and .NET compilers cannot unroll all code and determine what it does and then "rewrite" it to be fast. Sure there are things it can do, but if some idiot picks the wrong data structure or writes a O(n^3) algorithm, it won't matter.

    27. Re:Timing is everything by jcrash · · Score: 1

      Better make sure your triggers are designed for set based logic and not row based updates. If the application only updates one row at a time, the trigger might very well only handle that. Bad coding, but I've seen it plenty and your mass update would produce unpredictable results in such a case.

      --
      I do not fear computers. I fear the lack of them. Isaac Asimov (1920 - 1992)
    28. Re:Timing is everything by davester666 · · Score: 1

      Either way, you will know the outcome much sooner...

      --
      Sleep your way to a whiter smile...date a dentist!
    29. Re:Timing is everything by gbjbaanb · · Score: 1

      wrong, they always optimise your code without thinking about the consequences - so it uses more memory than you'd ever use, or it'd be more inefficient then yopu could code yourself. that's the problem with generic systems, they're always done for the common case, not what you wanted.

    30. Re:Timing is everything by hackstraw · · Score: 1

      I literally could not buy hardware fast enough to overcome the stupidity of these programmers, and it would be far better to pay a lot more money for the people instead.

      Hardware doesn't fix bugs, nor provides new features, nor does it automagically port the new software to the new hardware.

      Hardware w/o developers just sits there.

      YACA (Yet another car analogy), the fastest car does not win all of the races. The best drivers seem to win the most races. A fast car with a sucky driver ends up wrecked more quickly too.

    31. Re:Timing is everything by BiAthlon · · Score: 1

      When you can upgrade hardware for $2000 and achieve the same result with $20,000 in development costs that makes sense but it doesn't always work that way.

      I've been in situations where we had over $20 million in hardware and we have increased performance or scalability by 50% with no additional hardware. In this case it was not even close when comparing the cost of hardware, licensing, and additional administrator capacity to the software devleopment time.

    32. Re:Timing is everything by mrchaotica · · Score: 1

      (e.g.: an incompetent programmer with more time is not always a good thing)

      Are you sure you got the order of "not" and "always" right?

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    33. Re:Timing is everything by JoeMerchant · · Score: 1

      Good people have always been worth Nx average people, where:

      1. N=2 in the infantry,
      2. N=1.1 in portfolio management,
      3. N=4 in team sports, and
      4. N=50 in programming

      The challenge is in identifying, recruiting, and retaining good people - money isn't the only component necessary. I have found that luck seems to be the most important factor.

      Meanwhile, if the boneheads you have working for you are producing slow but at least accurate code, it is certainly cheaper to throw hardware at the problem rather than trying to teach discrete mathematics to a macacque.

      Problem I always had was that my boneheads would miss the optimal performance mark by factors of 1000 and more - needs some pretty expensive hardware to make up that kind of ground.

    34. Re:Timing is everything by petermgreen · · Score: 1

      Sure a bytecode environment can do some optimisations that a traditional compiler can't but in my experiance they are at best a little faster and at worst considerablly slower than similar code written in a native language.

      In general I agree with the gp. While choice of language may in some cases make a noticable performance difference no language can make up for WTF code and even adding hardware will struggle.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    35. Re:Timing is everything by thePowerOfGrayskull · · Score: 1

      Why wait? Offshore now, and get 1/3rd of a developer for 1/3rd the price!

    36. Re:Timing is everything by Anonymous Coward · · Score: 0

      I think there will be more developers looking for work in the future, but I don't think the price is going to drop THAT much.

      That depends on how you look at it. Based on the way that inflation was measured pre-Clinton-meddling, we're at about 11% inflation right now. So if salaries are just froze at their current levels, there's an effective pay cut that's taking place. And, like you said, there's likely to be actual pay cuts on top of that.

    37. Re:Timing is everything by Anonymous Coward · · Score: 0

      So true... Hardware is a goods excuse... "Vista isn't slow, you have an old PC". This is a shitty excuse.

      Thanks to piracy, we can test if a new version of our favorite application is better and not slow.

      For example I love Cool Edit Pro (Syntrillium), a sound editing software. A nice lightweight application, which can run on a 200 MHz machine. some time ago Adobe bought Syntrillium and Cool Edit became Adobe Audition. And required a super machine just to load the GUI for God's sake! I wonder... the application does a lot of DSP. How can be the DSP routines which by their nature are demanding can run on an old PC and the darn GUI can be so slow????

      Please stop that old hardware excuse. Programmers should write some lines of code instead of building apps with mouse clicks...

    38. Re:Timing is everything by Repossessed · · Score: 1

      Erm, if Java is doing optimizing, why is it slower than my shitty C++ skills?

      --
      Liberte, Egalite, Fraternite (TM)
    39. Re:Timing is everything by Anthony · · Score: 1

      I have a couple of anecdotes to back you up. As a system admin I saw two projects, one Java and one .NET, where the managers were panicking about slow applications. The system admins checked out the performance and, at least on the Solaris box, a memory leak was probably the cause. The delivery date was looming. Both managers were seriously looking at spending another 30-40% on top of their hardware budget to "speed things up". In both cases, a day's work by their lead programmer discovered the memory leaks and plugged them. Millions of dollars saved by a day's work.

      --
      Slashdot: Where nerds gather to pool their ignorance
    40. Re:Timing is everything by Diag · · Score: 1

      The number one, top tier, highest revenue producing application at the company I work for is single threaded. It was originally written about 15 years ago, and I guess they didn't think multi-threading was worth worrying about at the time.

      It used to be OK - CPUs kept getting faster. As the work this application needed to do increased, so did CPU operations per second, so they'd just upgrade the RISC based servers.

      But now the few CPU developers left are concentrating on more cores, rather than faster processing per core (Moore's law? I guess). Multiple cores doesn't really help a single threaded application.

      The company has outsourced all of their development to India. They know they need to rewrite the whole application to be multi-threaded, but they've got a snowball's chance in hell of this happening with their current developers.

      --
      Serving Suggestion: Defrost
    41. Re:Timing is everything by Anonymous Coward · · Score: 0

      Maybe you are better at C++ than Java programming?

    42. Re:Timing is everything by bwcbwc · · Score: 1

      The other unrealistic assumption is that the overall hardware performance increases with CPU performance. While many hardware capabilities have increased dramatically over recent years, disk drive access and throughput speeds have taken about 5-7 years to double, and main memory speeds have taken about the same time.

      So unless you're running a program that fits inside the CPU cache, a bloated program will still be a lot slower and inefficient, even if you have scads of memory and a multi-core CPU.

      The other side of assuming that your programmers are competent is a parallel assumption that your HR team is competent and your hiring process is adequate. If you have a set of low-grade developers and engineers on your team, either you aren't paying enough to attract the people you need or the problem is in your hiring process.

      And apart from the unrealistic assumptions on both sides of the equation, now that most gains in CPU performance come from adding cores, you need programmers who understand multi-threading and multi-processing. A poorly threaded program isn't a problem you can throw hardware at.

      --
      We are the 198 proof..
    43. Re:Timing is everything by mstahl · · Score: 1

      Cheap programmers are great for throwaway or non-mission critical software, but make sure you have at least some good programmers around who have the computer science background underlying their software engineering abilities to deal with the tough/complex stuff.

      This is a really important point. There's nothing wrong with having inexperienced programmers around if you have a couple of more capable guys to guide them. I would say a programmer is only truly useless if they lack not only the proper background but also the ability to accept direction from more experienced programmers.

      If you have a team of cheap programmers and no one to guide them or they're more lone wolf types who don't like direction, no amount of hardware will ever guarantee success.

    44. Re:Timing is everything by turbidostato · · Score: 1

      "The $hardware$ $programmer-time$ equation is always based on the assumption that the programmer is always worth their qualifications."

      The $hardware$ $programmer-time$ equation is always based on the *stupid* assumption that the programmer is always worth their qualifications. There, corrected for you.

      As I read the article, this all about a programming problem, not a running environment. While your post is quite sensible, real environments are not. My reality check is that when on a dev mill the question is risen about throwing iron or minds to a problem the answer is *always* "minds". Think about it for a moment: it is either stated as "this is CPU|I/O|whatever problem we have, our experts can|can't cope with it and it would cost $$$ deal with the problem with new hardware for so much time at current growth rate, or we can|hope to cope with it if Joe and Anne work on it somewhere between 100 and 200 hours each" and then there's no margin for even begging the question; the answer is an almost immediate output from the analysis... Or it is risen like "we don't have the slightest idea why this runs so slow, but we *hope* we can deal with it with bigger iron, what should we do?"

      Even when a sensible manager faced at the second situation thinks like "this is obviously a 'more mind' -well, more like 'better minds' situation, but we don't have the expertise here, nor the time and/or the ability to find it elsewhere, so let's go for the more iron path and hope for the better", things go no better. The problem is the development team tried to bite bigger than their mounths and the more iron you throw to the problem, the more stressed the lacking codebase becomes and the more it falls appart.

      I am not telling that "all things being equal", throwing more iron is not a solution -in fact it is, but that most of the time, the "more iron or more people" dichotomy it's only "we don't know any better" in disguise, which is, in fact, "we don't know good enough to make it work". You can find a "more iron" situation rarely and on short periods if your app changes niche (our nice app designed to work on a single server does indeed so nice that some fortune-500 want it so it's going from 10tps to 300tps. What can we do to fullfill the situation for some months while we rethink it?), but I'd say 99% when an app is not outspec'd but still seems to require more iron than initially planned it is because a design fault, and design faults on anything more complex than a "hello world" are never so easy to fix as changing just one environment variable: they tend to fail on a lot of fronts and you are not going to cope with the situation just "throwing more iron to it".

    45. Re:Timing is everything by Anonymous Coward · · Score: 0

      developers will stay more expensive than hardware and will continue to be thrown at tasks where hardware can not cope with the complexity of the inefficient algorithms or increased load on existing efficient solutions.

      Often clients choose inefficient algorithms because they are cheaper and faster to implement and because hardware is capable to cope with these inefficiencies. Then if business demands grow and with increased N hardware can no longer cope with the complexity O(N) then they come back to hire developers to solve the problem :)

    46. Re:Timing is everything by Anonymous Coward · · Score: 0

      everybody has hardware for $2000. The competitive advantage came out of the $20000. Who has correctly invested in human resources now is in advantage and difficulty will have real problems. Who have bought a lot of iron, pointing on quantity, is one of many, and now his less experienced programmer are more on the market. This is really a generalization, but statiscally I believe this as true.

    47. Re:Timing is everything by Anonymous Coward · · Score: 0

      of course, if we put things into perspective, what is expensive? A six figure programmer or what they're paying Executives to run companies? What was the salary they gave GM and other car manufacturers' execs last year? If you use that, then programmers are a dime a dozen. Heck, with one executive's salary, you could probably hire a fleet of programmers!!

      oh... but I guess they give obscene amounts of money to execs who run businesses because they're supposed to know what they're doing... right? Oh, yea, right, that's why GM and other manufacturers are going under and it's these same executives who want to off-shore programmers to a cheaper staff.... (of course that will only be cheaper for a short time).... same "geniuses" who also put our economy in the rump today and are pulling in billions...

    48. Re:Timing is everything by Repossessed · · Score: 1

      I purged all knowledge of Java from my head with large amounts of alcohol. Was the only way I could sleep at night.

      --
      Liberte, Egalite, Fraternite (TM)
    49. Re:Timing is everything by Nutria · · Score: 1

      when you then have to get someone in to do the job properly

      Hah hah hah hah hah hah.

      Incompetent managers are usually expert at CYA, muddling thru, first denying that there's a problem, then blaming the database, then the DBA, then the hardware and then the specs. All while regularly releasing minor update after minor update, patching this open wound or that.

      --
      "I don't know, therefore Aliens" Wafflebox1
    50. Re:Timing is everything by Akral · · Score: 1

      But just wait a couple more months when unemployment starts hitting double digits. You'll be able to pick up very good, experienced developers for half, maybe a third of their current salaries.

      We need "-1, Sad" ._. (By the way, what is wrong with Slashdor parser? The following should be four characters of quotes: â â(TM) âoe â)

      --
      Don't worry, be happy!
    51. Re:Timing is everything by Fulcrum+of+Evil · · Score: 1

      What you're telling me is that you need an analysis phase where you measure the problem, find out what's maxed, and then issue recommendations with dollars attached.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    52. Re:Timing is everything by Fulcrum+of+Evil · · Score: 1

      Still sure you're _only_ going to throw hardware at the issue when business wants the application online for a couple of thousand people?

      Who said that? This advice is for people with a brain - you have an immediate need, and assuming a weblike app, throwing boxes at the problem is low risk and fast. It assumes that you know something about your app and how it scales and why. If you don't, then you're SOL anyway.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    53. Re:Timing is everything by cromar · · Score: 1

      Or just don't use triggers and do it in application-level code. That's always seemed a lot cleaner. To me anyways.

  2. The Original Story from Coding Horror by rice_web · · Score: 2, Informative

    Not sure if this site copied Jeff Atwood's post with permission or not, so I'm posting the original link to Coding Horror: http://www.codinghorror.com/blog/archives/001198.html

    --
    The Political Programmer
    1. Re:The Original Story from Coding Horror by HisMother · · Score: 1

      Why is this modded "informative" -- there's a link in the story, and it states where the story comes from!

      --
      Cantankerous old coot since 1957.
    2. Re:The Original Story from Coding Horror by Warll · · Score: 0

      Use a little reasoning fool, this story was posted nearly two hours ago. The GP post was linking when the original link in the story was to a scraper.

    3. Re:The Original Story from Coding Horror by julesh · · Score: 1

      Use a little reasoning fool, this story was posted nearly two hours ago. The GP post was linking when the original link in the story was to a scraper.

      When a story on a site like this is changed, for whatever reason, it's usual for the editor to put something like updated 16:45 - linked to original source, not a spam site. I'm not sure why this hasn't been done in this case, but it is a practice that is normally followed here, and I can understand why the poster you're replying to may have been confused by the lack of an update note.

  3. Water is wet, Pope Catholic? by Anonymous Coward · · Score: 0

    Bears shit in the woods?

    It's been this way for 15 years.

    1. Re:Water is wet, Pope Catholic? by aliquis · · Score: 1

      Personally I don't understand how they are comparable at all, since when does hardware programming? =P

      The amount of programming scenarios where more hardware solves anything must be severely limited. Optimisation of software vs adding more hardware?

  4. I agree. by theaveng · · Score: 5, Insightful

    Recently my boss reviewed my schematic and asked me to replace 1% resistors with 2 or 5% "because they are cheaper". Yes true, but I spend most of the day doing that, so he spent about $650 on the task, thereby spending MORE not less.

    So yeah I agree with the article that's it's often cheaper to specify faster hardware, or more-expensive hardware, than to spend hours-and-hours on expensive engineers/programmers trying to save pennies.

    Or as Benjamin Franklin said, "Some people are penny-wise, but pound foolish." You try to save pennies and waste pounds/dollars instead.

    --
    FOX NEWS.com should be BANNED from television and internet. Have the Congress take it over and give us Truespeak.
    1. Re:I agree. by tinkertim · · Score: 3, Interesting

      Or as Benjamin Franklin said, "Some people are penny-wise, but pound foolish." You try to save pennies and waste pounds/dollars instead.

      The same can be true in programming, but usually the scenario describes development itself, i.e. premature optimization. If your team is experienced, the only reason for this would be people trying to do big things in small spaces.

      I think it comes down to what you need, what you want and what you need to spec for your software to actually run.

      If your willing to spend quite a bit of money on some really talented people, what you need as far as hardware (at least memory) can be reduced significantly.

      What you want is to roll a successful project in xx months and bring it to market, so raising the hardware bar seems sensible.

      Then we come down to what you can actually spec, as far as requirements for your clients who want to use your software. Microsoft ended up lowering the bar for Vista in order to appease Intel and HP .. look what happened.

      If your market is pure enterprise, go ahead and tell the programmers that 4GB/Newer dual core CPU is the minimum spec for your stuff. If your market is desktop users .. may be a bad idea.

      I don't think there's a general rule or 'almost always' when contemplating this kind of thing.

    2. Re:I agree. by aliquis · · Score: 1

      Uhm, you get paid / cost more than $ 650 / day? Consult cost for him or what? Will whatever you did only be used once?

      Can't wrong resistance give wrong results since one have calculated on the result and what is needed using exact values?

    3. Re:I agree. by Velox_SwiftFox · · Score: 2, Informative

      But it is so much fun to explain to the bean counter who ordered twice as many disk drives of half the capacity you specified, because their painstaking research found they were a few percent cheaper per byte, that now they have to add in the cost of twice as many raid card channels or storage servers, rack expenses, et cetra when figuring out how much money they saved the company.

    4. Re:I agree. by theaveng · · Score: 2, Funny

      Engineers are billed at about $90 an hour. That includes wages, health benefits, rental for the cubicle space, and heating.

      --
      FOX NEWS.com should be BANNED from television and internet. Have the Congress take it over and give us Truespeak.
    5. Re:I agree. by Sponge+Bath · · Score: 1

      ...replace 1% resistors with 2 or 5% "because they are cheaper"

      Did your boss implement a QA process to screen each resistor and discard any that exceed the 2 or 5 percent accuracy?
      You can't achieve the increased efficiency with out proper controls.

    6. Re:I agree. by DerekLyons · · Score: 1

      Recently my boss reviewed my schematic and asked me to replace 1% resistors with 2 or 5% "because they are cheaper". Yes true, but I spend most of the day doing that, so he spent about $650 on the task, thereby spending MORE not less.

      Which [potentially] shows why he's a boss - and you aren't. That $650 (overpaid in salary to you) is a one time cost - but it can also represent considerably savings, in setup time if 2 or 5% resistors are the standard wherever you circuits are manufactured, in total cost (of hardware) across a large production run (even more so if your design contains many resistors), etc... etc...
       
      Any engineer worth a damn knows enough accounting to be able to figure this stuff out.

    7. Re:I agree. by smack.addict · · Score: 2, Insightful

      This is a failure on your part. Bean counters are not penny-wise, pound foolish. They do need a concrete financial analysis, however, to prove that you aren't just blowing smoke up their skirt.

      Because most of the time, programmers are doing just that.

      And also, programmers often fail to understand the cost of money and that sometimes it is better spend more tomorrow than a little bit today.

    8. Re:I agree. by OolimPhon · · Score: 1

      ... to prove that you aren't just blowing smoke up their skirt.

      Your ideas intrigue me and I would like to subscribe to your newsletter.

    9. Re:I agree. by KeithJM · · Score: 1

      Yes, but now you know his preferences. You'll do it with fewer 1% resisters the next time too. The question here is would it have made more sense for him to offer that note and just suggest you work it into further schematics.

    10. Re:I agree. by ScrewMaster · · Score: 2, Insightful

      Recently my boss reviewed my schematic and asked me to replace 1% resistors with 2 or 5% "because they are cheaper". Yes true, but I spend most of the day doing that, so he spent about $650 on the task, thereby spending MORE not less.

      Which [potentially] shows why he's a boss - and you aren't. That $650 (overpaid in salary to you) is a one time cost - but it can also represent considerably savings, in setup time if 2 or 5% resistors are the standard wherever you circuits are manufactured, in total cost (of hardware) across a large production run (even more so if your design contains many resistors), etc... etc... Any engineer worth a damn knows enough accounting to be able to figure this stuff out.

      I think you missed the point. The guy was saying that he's well aware of the cost savings of using cheaper resistors, but that he'd already done the analysis. The boss overrode him using financial criteria alone, rather than what a good engineer does, which is try to find a balance between cost and functionality (or reliability, or performance, or accuracy, or whatever your project's target criteria.) Chances are, that design will go into production and not meet spec, which means the expense of a redesign and lost manufacturing time. I see that happen all the time.

      --
      The higher the technology, the sharper that two-edged sword.
    11. Re:I agree. by ultranova · · Score: 2, Insightful

      So yeah I agree with the article that's it's often cheaper to specify faster hardware, or more-expensive hardware, than to spend hours-and-hours on expensive engineers/programmers trying to save pennies.

      Multiplied by how many servers, now that is the question ?

      I mean, if you have a thousand-server farm already, then a speedup of just one percent is going to save you from having to buy (and power, manage and eventually replace) ten servers. How much developer time is that one percent really going to cost ? And this is assuming absolute scalability, which is almost certainly not the case.

      The bigger site you already have, the more it makes sense to buy programmer time instead of hardware, because program optimizations are multiplied by site size.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    12. Re:I agree. by julesh · · Score: 1

      Recently my boss reviewed my schematic and asked me to replace 1% resistors with 2 or 5% "because they are cheaper". Yes true, but I spend most of the day doing that, so he spent about $650 on the task, thereby spending MORE not less.

      Perhaps he assumed, like I would, that it would be a 5 minute job? I mean, every EDA tool I've ever used has an automatic update facility that could easily be used to script a change like this.

    13. Re:I agree. by Gorobei · · Score: 1

      All comes down to how good the boss is. I was talking to a serious animal boss-dude (80+ hours a week, still writes good code, gets paid super-well) and asked him how he got to be the way he was. Simple, he said, on his first project, he spent months building a widget for the military. He evetually presented it to his boss (all nicely rigged up in a test harness.) His boss looked at it for a few minutes, then took a can of freon and sprayed a corner of the casing. The widget failed within 10 seconds. Then and there, he pledged to adopt the management approach of always beng more expert than the people you are managing, even if it means working 16/7 for years on end.

      Not so oddly, most people who worked for that guy say that time was the best work experience of their lives.

    14. Re:I agree. by Anonymous Coward · · Score: 0

      Except that normally hardware designs are manufactured thousands of times. So every penny saved in the design is actually 10's of dollars saved in production. When I was still designing hardware the cost component of the entire design and test phase almost never exceeded 5% of the production cost. The only design in which hardware cost are lower than design cost are in one off products or small series. And these will never make a company money.

    15. Re:I agree. by theaveng · · Score: 2, Interesting

      I don't know why this is "funny"? Ask a manager sometime how much he charges per hour for his programmers/engineers, and he'll tell you $90 or maybe even $100.

      What we actually get PAID is far below that. ;-)

      --
      FOX NEWS.com should be BANNED from television and internet. Have the Congress take it over and give us Truespeak.
    16. Re:I agree. by Anonymous Coward · · Score: 0

      Depends on the industry I guess, but in mine, low to mid level engineers are charged at ~185/hr, high level at ~$250/hr.

    17. Re:I agree. by ScrewMaster · · Score: 1

      Then and there, he pledged to adopt the management approach of always beng more expert than the people you are managing, even if it means working 16/7 for years on end.

      That's one way. The other way is to make sure that you hire good people who can be trusted to make good judgments ... and then trust them.

      --
      The higher the technology, the sharper that two-edged sword.
    18. Re:I agree. by theaveng · · Score: 1

      >>>Depends on the industry I guess, but in mine, low to mid level engineers are charged at ~185/hr, high level at ~$250/hr.

      That must be external costs. I was discussing *internal* cost that the company bills to itself (to track budgets). My boss told me I'm charged at $90 an hour.

      --
      FOX NEWS.com should be BANNED from television and internet. Have the Congress take it over and give us Truespeak.
    19. Re:I agree. by mrand · · Score: 2, Interesting

      The difference between 1% and 5% is 0.1 cents according to Digikey, so it is going to take 650k resistors to recoup that cost. Assuming your board has 100 resistors on it, the cost is recouped after selling ~6500 boards. Only you can tell me if it the board is going to sell that many over its lifetime.

      Having said that, if you are going to need a 1% resistor somewhere for a reason, it makes even less sense to use both 1% and 5% for that value. Just buy the 1% and eliminate the duplicate effort required to buy, receive, stock, inventory, etc a second component of the same value.

            Marc

      --
      -- PGP keyID: 0x4C95994D
    20. Re:I agree. by kevinT · · Score: 1

      We had a 24 processor AIX machine running our database. During peak periods it was running 90% CPU utilization.

      A senior developer (me) looked at the piece of code - rewrote it and now during peak the same CPU only runs 40%!

      (The prior programmers were ---- not the best in the world!).

      Sometimes throwing hardware at the problem doesn't solve the problem. Running 4 queries and 1 stored procedure to get two integers isn't the smartest way of doing things.

    21. Re:I agree. by Anonymous Coward · · Score: 0

      While it may not be your case, sometimes it still might save money.

      If you sell in mass quantities a fraction of a cent can add up. Or if you reduce the number of different resistors, you can save costs elsewhere via possibly savings by buying in larger quantity, less ordering time and inventory tracking.

      There are additional costs to consider beyond the actual cost of the resistor.

    22. Re:I agree. by DerekLyons · · Score: 1

      Except - he didn't say he'd already done the analysis. Nor did he say that *he* was aware of the cost savings. Or to put it shortly, your whole rebuttal depends entirely on assumptions, rather than facts.

    23. Re:I agree. by Poltras · · Score: 1

      Engineers are billed at about $90 an hour. That includes wages, health benefits, rental for the cubicle space, and heating.

      Add to that the cost of gravity and air (which are provided by your employer on the work place).

    24. Re:I agree. by canadian_right · · Score: 1

      Now that your work is done, how many of these thingies are going to be churned out? How many have to be manufactured to earn back your $650?

      --
      Anarchists never rule
    25. Re:I agree. by JoeMerchant · · Score: 1

      He's trying to train you so you won't make the same "expensive mistake" next time. Yeah, right. My first boss had me work for over a week to eliminate $12 worth of "unnecessary" transistors on a one-off test jig - too bad that they really were necessary for stability of the system. If he doesn't push you around a bit, he's not being a boss (in his mind.)

    26. Re:I agree. by petermgreen · · Score: 2, Insightful

      Can't wrong resistance give wrong results since one have calculated on the result and what is needed using exact values?
      We can't achive perfection so we have to be able to deal with variation in our designs. Designers should know when to specify precision components and when something more run of the mill is ok (1% resistors is kinda on the edge, it used to be regarded as precision but manufacuring improvements have meant 1% resistors are pretty cheap nowadays).

      What the parent was getting at was that swapping 1% resistors for 2% or 5% resistors in a design is a fools errand unless you are producing huge volume. You can't just blindly change tollerances you have to check whether it is appropriate in each case and that takes time. It takes a lot of 1% resistors to equal the cost of a day of engineer time.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    27. Re:I agree. by jnork · · Score: 1

      Recently my boss reviewed my schematic and asked me to replace 1% resistors with 2 or 5% "because they are cheaper". Yes true, but I spend most of the day doing that, so he spent about $650 on the task, thereby spending MORE not less.

      Considering the cost difference (not very much), it's probably cheaper to use 1% for everything than it is to stock three different tolerance ratings. Or even two. Inventory costs are one of those "hidden" costs that people easily forget about.

      They have to be bought. They have to be checked into stock. They have to be given space (enough of those will then require you to expand your stock area). They have to be counted at inventory time. Every additional item adds to the possibility of human error (getting put into the wrong bin), even more easily done if they're almost identical to other items. This can be especially bad if the 5% get put into the 1% bin (or pulled by accident). They have to be kept track of and re-ordered when they get low.

      And then there's the design factor. When you create a new design, you have to decide what tolerance to use for each value. If you only stock 1%, there's no decision to make. If you make the wrong decision, it will require a review of the design and an engineering change.

      All that on top of the time you spent making the changes. Pound foolish indeed.

      --
      Cleverly disguised as a responsible adult.
    28. Re:I agree. by Velox_SwiftFox · · Score: 1

      No, in this case it was the failure of a management process which allowed said bean counter to modify the order without review. It is rarely wise to spend more tomorrow than a little bit today. It may be wise to spend more next month than a little bit today.

      But not even then, if the entire infrastructure being built was needed to serve customers whose service level agreement could not be met otherwise. It becomes a worse case - loss of income today that will never be made up for.

    29. Re:I agree. by Anonymous Coward · · Score: 0

      Why is your boss reviewing your schematics? That's your first problem.

    30. Re:I agree. by bwcbwc · · Score: 2, Funny

      Uhh, you can't "throw hardware" at a hardware design. In the HW manufacturing case, you WANT to spend money on the upfront design to reduce the parts cost.

      If your design forced to use 1% resistors instead of 2%, you'd better have been building a medical device or something else with tightly regulated specifications. Otherwise, when your boss says to use 2% or 5%, tell him to loosen the specs. Otherwise you're just over-engineering.

      --
      We are the 198 proof..
    31. Re:I agree. by Anonymous Coward · · Score: 0

      650/day is nothing.
      We bill 130 / hour for a decent competence level on contracts 6 months, and around 150 / hour for contracts 3 months.
      If you want a higher competence level and/or are looking for rare talents, that number is easily doubled.

      Of course, for our long-term clients, we generally don't bill as much.

      captcha: hiring (lol)

    32. Re:I agree. by Narnie · · Score: 1

      Damn, your cubicles get heated? I don't know how many proposals I've written to get heat to ours, I guess management doesn't agree with the cost savings of more efficient engineers.

      At least the proposal for suspending the gladiatorial events was approved. It's always such a blow to moral when a newly trained engineer gets sacked for the entertainment of the HR office.

      --
      greed@All_Evils:~#
    33. Re:I agree. by Fulcrum+of+Evil · · Score: 1

      Does that include the time to test the circuits and redesign where necessary? Dropping the tolerances like that requires a lot of testing.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    34. Re:I agree. by dsavage · · Score: 1

      Well, if you are only making *one* of the products in your schematic, then yeah, your math is probably right. But what if your company makes a couple hundred thousand or a million of them? Then that's 650 bucks well spent... And a better BF quote would be an ounce of prevention is worth a pound of cure... or in other words, spend the 650 now, and save thousands later. A little spending on the front end will save you on the back end. -D

  5. Programmers From India by Anonymous Coward · · Score: 0

    are cheap. But they also suck, so expensive in the long run.

  6. But who's going to fly it? by malefic · · Score: 5, Insightful

    "10,000! We could almost buy our own ship for that!" "Yeah, but who's going to fly it kid? You?"

    1. Re:But who's going to fly it? by tinkertim · · Score: 5, Funny

      "10,000! We could almost buy our own ship for that!" "Yeah, but who's going to fly it kid? You?"

      Typical Management Response:
      "You bet I could!, I'm not such a bad programmer myself!"

    2. Re:But who's going to fly it? by theaveng · · Score: 1

      You've met my boss?

      "Why isn't this done yet?" "You only gave it to me four days ago." "Don't give me excuses; I would have had it done by now." (whispers quietly): "So why don't YOU do it then?"

      My favorite:

      "Add a voltage regulator." "Okay. Do you have a suggestion boss?" "Figure it out yourself." "Surely we've used these on other cards? Do you have a current schematic I can look at?" "I don't know. Leave." (whispers): "I thought my boss said he knew this stuff and could have it done in four days. Now he can't even provide a simple schematic."

      --
      FOX NEWS.com should be BANNED from television and internet. Have the Congress take it over and give us Truespeak.
    3. Re:But who's going to fly it? by Anonymous Coward · · Score: 0

      Reading this another way - it says throw hardware at the problem. Okay, who sets that up and maintains it? Is their time worthless?

    4. Re:But who's going to fly it? by julesh · · Score: 1

      You've met my boss?

      "Why isn't this done yet?" "You only gave it to me four days ago." "Don't give me excuses; I would have had it done by now." (whispers quietly): "So why don't YOU do it then?"

      Jesus. Didn't know you worked for my company. And... wait... there's only the two of us here! Are you invisible or what? Perhaps my boss has a side project he hasn't told me about??

    5. Re:But who's going to fly it? by JoeMerchant · · Score: 1

      Not all bosses are like yours, in fact, I think I've had two (of about 8) who weren't just like that.

    6. Re:But who's going to fly it? by turgid · · Score: 1

      Get a new job.

      The company (or your department) will not last long with a boss like that. Management by Intimidation is rarely successful. Does your department have high staff turnover?

  7. Original Article here... by Ckwop · · Score: 4, Informative

    http://www.codinghorror.com/blog/archives/001198.html

    Give the person who actually wrote the article the ad revenue rather than this bottom feeding scum.

    1. Re:Original Article here... by Anonymous Coward · · Score: 0

      [citation needed]

    2. Re:Original Article here... by Anonymous Coward · · Score: 0

      What ad revenue? Are there any Slashdot users that don't use Adblock?

      (That being said, yeah, I agree linking to intermediate sites that don't add anything of value when you can just as well link to the original instead is a no-no.)

    3. Re:Original Article here... by barzok · · Score: 1

      Bottom-feeding scum? Intermediate pages? The only link in the summary points to the same URL you give.

    4. Re:Original Article here... by cr_nucleus · · Score: 1

      Give the person who actually wrote the article the ad revenue rather than this bottom feeding scum.

      As much as i can agree with you, i must also note that there is no advertising on the page you mentionned.
      But at least, we can still give the guy the credit he (might) deserves (didn't RTFA).

    5. Re:Original Article here... by Slashdotvagina · · Score: 0

      The problem with just throwing hardware at the problem is that it identifies that the application doesn't scale very well. What happens when your usage requirements double or triple? Now you have to go out and get three racks instead of just one? Wouldn't it have been better making the software itself more efficient?

      The other fallacy that this exposes is that hardware maintains itself. It doesn't. Proper operation of hardware requires IT staff, which are similarly expensive. I agree with the premise that if a company is operating in bootstrap mode, just keep pushing and throw as much hardware as is required. However, once you get beyond a certain level of success it makes sense to pause for a bit and optimize what you have. That way, you can continue to grow and get more scalability out of the hardware that you already have.

      --
      Advertising that I'm a girl on Slashdot since 2008.
    6. Re:Original Article here... by Anonymous Coward · · Score: 0

      Now it does. Editors do try to do their job, sometimes.

  8. Recalculate for the crisis by Baldrson · · Score: 2, Interesting
    Better recalculate the trade-offs for the current economic crisis:

    TFA says the average programmer with my experience level should be getting a salary of around $50/hour but you'll see I've recenetly advertised myself at $8/hour.

    How many hundreds of thousands of jobs have been lost in Silicon Valley alone recently?

    The crisis has gutted demand for hardware as well, but things are changing so fast, yesterday's calculations are very likely very wrong. Tomorrow, hyperinflation could hit the US making hardware go through the roof due to the exchange rate.

    1. Re:Recalculate for the crisis by MickLinux · · Score: 4, Interesting

      Well, unless the $8/hr is an introductory rate (that is, the first 200 hrs are at $8.50, then after that you go up to $15 or $20/hr), you could do better by joining a construction site. At our place (prestress, precast concrete plant), we are paying warm bodies $10/hr.

      Show that you can read drawings, and you can quickly rise up to $12-$14/hr. Which is, admittedly, a pittance, but if you live in a trailer home, you can make ends meet. Then you can still program in your spare time, and keep the rights to your work, to boot.

      --
      Correct Horse Battery Staple: 72 bits of entropy. Enter "Correct H" into google. When it generates the phrase, that's
    2. Re:Recalculate for the crisis by Jeff+DeMaagd · · Score: 1

      I think some people would take less money rather than work outside in the winter. Working outside in the summer isn't always a picnic either.

    3. Re:Recalculate for the crisis by Baldrson · · Score: 1

      It's true that for permanent on-site work my compensation requirements are much higher, so my advertised $8/hour for remote temporary consulting is apples to the $50/hour permanent salary annualized to $99k given in TFA. But I think it trades fairly when you consider that employers don't want to commit to fixed recurring costs in the present economic climate, and the vast majority of programming work can be done remote.

    4. Re:Recalculate for the crisis by theaveng · · Score: 1

      That's me! I would rather work for $8 at walmart than $12 in construction. Working at walmart has all the comforts of working in an office, like A/C and heat. Minus the websurfing but plus lots of attractive women to flirt with.

      --
      FOX NEWS.com should be BANNED from television and internet. Have the Congress take it over and give us Truespeak.
    5. Re:Recalculate for the crisis by Anonymous Coward · · Score: 1, Insightful

      Exactly. I live up in Canada where the cost of life is MUCH lower, and we'd hire just about anyone who wants to work for more than that. Couple months ago we hired a guy in his 50's that spends most of his day screwing PCBs into enclosures at like $12/hr (no qualifications needed whatsoever, you just need to want to get up in the morning), including good benefits and all (med insurance and everything). And that's work inside (no weather or anything), not particularly physically intensive, etc. I wouldn't even expect to find a half-way competent programmer, even out of school, at $8/hr (no offense).

      Hell, I have to turn down tons of existing clients at like $25/Hr myself... I just don't have the time. If I could somehow manage to work 120Hr/week, my boss would gladly use them all up!

    6. Re:Recalculate for the crisis by A+Friendly+Troll · · Score: 1

      I'm an experienced developer who had been fiddling around with programming since the days of ZX Spectrum, and I'd be very happy if I earned the equivalent of $14 per hour (it's more like $8.50). Maybe I should switch to construction... Or another country :)

    7. Re:Recalculate for the crisis by FugitiveMind · · Score: 1

      Attractive women? At Walmart?

      Didn't you just say you make $90 an hour? http://developers.slashdot.org/comments.pl?sid=1069291&cid=26184295

      Unless you're horribly mismanaging your finances, you wouldn't ever need to work at Walmart. I make about half of that and I am financially secure.

    8. Re:Recalculate for the crisis by Brandybuck · · Score: 1

      I live in Silicon Valley, and there have NOT been hundreds of thousands of jobs lost.

      --
      Don't blame me, I didn't vote for either of them!
    9. Re:Recalculate for the crisis by ratnerstar · · Score: 1

      Hey, not to be Captain Obvious or anything, but maybe you'd be getting higher rates if you didn't do your advertising on racist websites.

      --
      Just because you sold your soul to the devil that needn't make you a teetotaler. --The Devil and Daniel Webster
    10. Re:Recalculate for the crisis by 0xdeadbeef · · Score: 3, Funny

      I will send you $20 bucks if you post a photo of yourself holding a sign that says "A non-white immigrant paid me $20 to hold this sign."

    11. Re:Recalculate for the crisis by theaveng · · Score: 1, Informative

      No I said engineers are BILLED at $90. What we're actually paid is somewhere around $30-60.

      And there are attractive women at Walmart, although you'd be better off working in a mall store like Penneys or Bon Ton, since there's a better clientele. I used to flirt with all the cute teens and 20-somethings when I was selling shoes at JCP.

      --
      FOX NEWS.com should be BANNED from television and internet. Have the Congress take it over and give us Truespeak.
    12. Re:Recalculate for the crisis by Baldrson · · Score: 1
      I wasn't aware that /. was a racist website. Better call the SPLC about CmdrTaco.

      Or did you mean to say it should be obvious to me that the First Amendment doesn't prohibit private discrimination on the basis of political speech but that the Fourteenth Amendment does prohibit private discrimination on the basis of race unless it is discrimination against "whites" in "affirmative action"?

      Yeah, I'd admit, I just haven't been programmed by the Ministry of Love.

    13. Re:Recalculate for the crisis by FugitiveMind · · Score: 1

      Which state are you in that has attractive females at Walmart? All the Walmarts I've ever been into were... somewhat scary.

    14. Re:Recalculate for the crisis by Anonymous Coward · · Score: 0

      you'll see I've recenetly advertised myself at $8/hour

      No offense, but judging by the web site, I perhaps can see why. It annoys the hell out of me to have to use the horizontal scroll bar to view the content instead of having it flow like it's supposed to because the coder didn't test it in multiple browsers.

    15. Re:Recalculate for the crisis by Rakishi · · Score: 1

      I guess that everyone who sees you selling your time at $8 thinks to themselves "he must be an idiot to have to ask that little, I don't want him anywhere near my project." Human reactions are fun, you can sell more product sometimes by increasing the cost.

    16. Re:Recalculate for the crisis by Anonymous Coward · · Score: 0

      Posting Anonymously because I moderated the thread.

      If you ask for $25/hr and you have to turn down clients, you're doing it wrong.

      With services (any kind) you should set the prices as high (or low) as to constantly have clients, without turning them down.

      An example:
      You can work 50 hrs/week.
      At $25/hr you get demands for 100 hours, and you have to turn down the clients. Income = 25*50 = $1250
      At $50/hr you get demands for 20 hours. Income = 1000
      At $35/hr you get demands for 50 hrs, maximizing your income; 35*50 = $1750
      Note: the price-demand relationship may not be linear.

    17. Re:Recalculate for the crisis by Baldrson · · Score: 1

      Unless there is some study showing a good correlation between marketing savvy and technical savvy of which I am not aware, then even assuming you are right, there should still be a market segment for rationality at the upper end of the bell curve.

    18. Re:Recalculate for the crisis by pommiekiwifruit · · Score: 1
      you could do better by joining a construction site.

      Yeah, that sounds like a sensible move in a *worldwide global shutdown* of property development due to a *global mortgage crisis*. Last I heard, Dubai was shipping construction workers home by the plane load, and the UK building industry had ground to a halt. I don't know what the situation is like where you live though (the US government spent a few trillion dollars bailing out mortgage companies) but I'm not convinced that that is the best industry to join in the coming year. Constructing a new power-grid/series of eco-power stations for the government maybe.

  9. This has been true since at least 1980. by mbone · · Score: 1

    Back in the mainframe days (when you were likely to be charged for every byte of storage and CPU cycle, hardware was viewed as expensive. But at least in my career, since about 1980 programmer time is viewed as the most expensive piece.

    1. Re:This has been true since at least 1980. by Krishnoid · · Score: 4, Interesting

      And at least one skilled person from that era in a leadership position made this tradeoff with significant economic -- as well as entertaining and educational -- consequences.

    2. Re:This has been true since at least 1980. by TheLink · · Score: 1

      Looking at that story, it would be interesting to see the before and after code.

      Maybe he was using it as an excuse to clean up the code (aka refactoring) - and since management was willing to give him the time, he took it.

      If I were the newcomer, it might be a good idea to keep my mouth shut and ask him about it later in private. A better strategic move I think.

      He could be that silly of course, but then at least you would then confirm it for yourself, rather than just make him look silly (and not knowing what he is really up to), while immediately making a potential enemy.

      Well at least he didn't say there was evidence of WMD in the code and so it needed a change.

      --
    3. Re:This has been true since at least 1980. by Kent+Recal · · Score: 1

      It's a slippery slope.
      The anecdote (true or not) has some merit, but in reality you're often not looking at the upgrade of one server but at the upgrade of n servers.
      Remember that the sheer act of doing hardware maintenance (always at the risk of something breaking etc.) incurs a cost, too.

      Moreover, the resident parts of a webapp (excl. cache) should *indeed* not exceed 512M, except for very special cases or esoteric languages.
      If your app needs more than that then it likely either has a leak or suffers from bad programming practices, both will lead to even more memory consumption in the future.

    4. Re:This has been true since at least 1980. by Alioth · · Score: 1

      The story is cute, but it also must be remembered that all the redundant code may also have unknown bugs and security holes. What would the cost of being pwned be? Would being pwned cost the company more than having good quality code without redundant and possibly exploitable internet-facing code that probably never gets tested?

  10. I agree...to a point by MpVpRb · · Score: 3, Insightful

    With cheep hardware readily available, I agree that, for many projects, it makes no sense to spend lots of time optimizing for performance. When faced with this situation, I optimize instead for readability and easy debugging, at the expense of performance.

    But, and this is a big but, fast hardware is no excuse for sloppy, bloated code. Bad code is bad code, no matter how fast the hardware. Bad code is hard to debug, and hard to understand.

    Unfortunately, bad or lazy programmers, combined with clueless managers fail to see the difference. They consider good design to be the same as optimization, and argue that both are unnecessary.

    I believe the proper balance for powerful hardware is well thought out, clean unoptimized code.

    1. Re:I agree...to a point by nine-times · · Score: 4, Insightful

      I think if you're paying for programming vs. hardware, you're just paying for different things. I would think that would be somewhat obvious, given their very different nature, but apparently there's still some uncertainty.

      The improvements you get from optimizing software are limited but reproducible for free-- "free" in the sense that if I have lots of installations, all the installations can benefit from any improvements you make to the code. Improvements from adding new hardware cost each time you add new hardware, as well as costing more in terms of power, A/C, administration, etc. On the other hand, the benefits you can get from adding new hardware is potentially unlimited.

      And it's meaningful that I'm saying "potentially" unlimited, because sometime effective scaling comes from software optimization. Obviously you can't always drop in new servers, or drop in more processors/RAM into existing servers, and have that extra power end up being used effectively. Software has to be written to be able to take advantage of extra RAM, more CPUs, and it has to be written to scale across servers and handle load-balancing and such.

      The real answer is that you have to look at the situation, form a set of goals, and figure out the best way to reach those goals. Hardware gets you more processing power and storage for a given instance of the applcation, while improving your software can improve security and stability and performance on all your existing installations without increasing your hardware. Which do you want?

    2. Re:I agree...to a point by dzelenka · · Score: 1

      I wish I had mod points...

      The cost of maintaining code is almost never fully considered during the design phase. Clean code is MUCH cheaper in the long run. Reworking code should not be spend on optimization, but on simplification.

      It's like the famous Mark Twain line 'I didn't have time to write a short letter, so I wrote a long one instead.'

      When you have some "hamster code" that HAS to be optimized, it should be isolated and heavily documented.

      --
      Bah!
    3. Re:I agree...to a point by Anonymous Coward · · Score: 0

      What is "cheep" hardware? Is it made with birds?

    4. Re:I agree...to a point by Wdomburg · · Score: 1

      Right, because programmers are expensive but administrators, managers, rack space, electricity and cooling are all free. Some level of optimization is always worth it for any but the most trivial applications. If you're doing an application that's realistically only going to service a relatively fixed amount of traffic and you're talking the difference between a $1000 server and a $2000 server (maybe an application server deployed in branch offices or an MTA for a small business) - sure, go ahead and go with slow and unoptimized. Any serious enterprise-wide or internet facing application and you're just asking for trouble if you don't keep performance in mind from the get go and at least identify the low-hanging fruit.

    5. Re:I agree...to a point by Anonymous Coward · · Score: 0

      From the perspective of someone starting out a prototype application, there are few variables that can be predicted, let alone, be planned for. I just finished working on a piece of software that used much more processing power that I had ever expected in the beginning and having a PC that could handle it, and then some, was a saving grace.

      Sure, the software will be tweaked to perform better to make it more reliable and easier to maintain, but that is looking at the situation after the first official release. In the beginning it's easier and a lot more cost effective to dump a little more money in hardware for the devs to have more wiggle room than it is to face a potential deal-breaker during deployment.

      It doesn't matter how good a dev is, programs will ultimately reach an absolute minimum of processing power needed at their peak of optimization. Developers will always reach a hard limit, no matter how much time and effort they spend to make it more performant. Optimizations are usually progressive and are almost always unpredictable. Who knows when a dev will wake up with the next great idea to patch a performance issue. What can be predicted is, how powerful the platform the devs are working on is, and, what and how long will it take for the devs to optimize the system enough so the hardware spec of the original dev pc is no longer an issue.

      The concept is simple, control what you can and have faith in the rest. If you hired competent people, planned accordingly, and the job turned out to be a success, feel free to look in the mirror pat yourself on the back and give yourself a little attaboy. This is one more realm that I believe should remain beyond the reach of inexperienced bean counters, spreadsheet junkies, and desk jockeys. Some times you have to be patient and wait for the light bulb to burst. That phenomenon can't be measured with finite math double-entry bookkeeping.

  11. Assuming of course hardware is the bottleneck by Analogy+Man · · Score: 4, Interesting

    Toss as much CPU and memory as you want at a chatty transaction and you won't solve the problem. What about the cost of your 2000 users of the application that wander off to the coffee machine while they wait for an hour glass to relinquish control to them? Over the years I have seen wanton ignorance from programmers that ought to know better about efficiency, scalability and performance.

    --
    When the people fear their government, there is tyranny; when the government fears the people, there is liberty.
    1. Re:Assuming of course hardware is the bottleneck by AmberBlackCat · · Score: 4, Interesting

      I remember being subject to a class called Data Structures & Algorithms, which was all about choosing the right data structures to efficiently handle a problem, and then calculating the efficiency of algorithms to make sure it works well when you throw a huge amount of data or cycles at it. I also seem to remember being subject to Computer Architecture, in which we were taught about the underlying structure of the computer to better understand the hardware before we try to write software for it. I wonder if they teach that in those call centers in India, or those single programming courses companies make people take when they're trying to cut out the cost of programmers altogether.

    2. Re:Assuming of course hardware is the bottleneck by ScrewMaster · · Score: 3, Funny

      I remember being subject to a class called Data Structures & Algorithms ...

      Yes, I believe Nicholas Wirth taught that one. Supposedly when you've added the Data Structures to the Algorithms, you get Programs or something.

      --
      The higher the technology, the sharper that two-edged sword.
    3. Re:Assuming of course hardware is the bottleneck by Anonymous Coward · · Score: 0

      You're talking about IBM Rational ClearCase & ClearQuest, right?

    4. Re:Assuming of course hardware is the bottleneck by mandelbr0t · · Score: 1

      ...and that the developer is a consultant. This entire article tries to portray a developer as a person who costs nothing when he's not coding. This, of course, is only the case for independent consultants. Having been one for a few years, management has always been of the opinion that I am easily replaceable, and that the only time I'm working is when I am writing code.

      I've observed full-time developers during this time, too. Since actually writing code doesn't always take up their entire day, they spend time writing redundant documentation in different formats, attending meetings with people that have ridiculous expectations, and generally screwing around while the consultants work. That costs a lot of money as well, but sure, blame the hardware and the consultant.

      As a consultant, I would always put forward a hardware solution if it were the correct one. But it usually isn't. The problems I've fixed in my consulting time are usually the same: the all-star full-time developer they hired isn't as good as they thought he was. Applications weren't responding slowly, they were crashing randomly, and occasionally corrupting data in the process. I don't know of any hardware that would fix this problem.

      Cost-wise, this company spent upwards of $200,000 on this developer. They spent four years trying to fix his broken code. I spent 4 months cleaning up his broken code, and made considerable progress, and still managed to add some key new features. My take in these 4 months? About $13,000.

      So yes, there are over-priced developers out there. But I earn my salt, and I don't charge that much. Certainly, I've not fixed a problem to date that would have been easily fixed by buying new hardware.

      --
      "Please describe the scientific nature of the 'whammy'" - Agent Scully
    5. Re:Assuming of course hardware is the bottleneck by Orestesx · · Score: 1

      This isn't about picking the data structure or algorithm that has the lowest complexity. In real world applications, the bottleneck is most often either the volume of disk or network operations, the kinds of problems that often cannot be solved by adding more hardware.

    6. Re:Assuming of course hardware is the bottleneck by shashark · · Score: 0

      I wonder if they teach that in those call centers in India, or those single programming courses companies make people take when they're trying to cut out the cost of programmers altogether.

      Yes, they do. Not in call centers though, but in Universities across India. If your purpose was to slander Indian education system or belittle the coders there - then that's a FAIL. The guys there are as good [or bad] as they are over here. The spread is larger because of the bigger population.

    7. Re:Assuming of course hardware is the bottleneck by AmberBlackCat · · Score: 1

      I didn't mention Indian universities. I was questioning methods from various groups that think they can improve the quality of their software by cutting their software engineering budget. My comment was an about people who suggest true software engineers aren't worth very much. They're deriding the people with degrees from India as much as they're deriding me.

    8. Re:Assuming of course hardware is the bottleneck by owlstead · · Score: 1

      Yes, that's the way to go. Somehow, at my university, we had people saying: "yes, but this simpler scheme is more efficient at N smaller than X". WTF? Who cares for the performance for N X? It will be fast enough, won't it? OK, if X is 10.000.000, I'll take another look, but that's just in those extreme rare cases.

      Things like saying for small sizes direct compares can be faster than a hash table. Well? So?

      Sorry, had to spit out some anger here.

    9. Re:Assuming of course hardware is the bottleneck by Chandon+Seldon · · Score: 1

      Have you fixed any problems that wouldn't have every existed if the developers had written code that worked instead of screwing around with unnecessary premature optimizations?

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    10. Re:Assuming of course hardware is the bottleneck by Anonymous Coward · · Score: 0

      Data Structure classes for call center operators in India ?
      ohh... I getit... thats how American programmers solve their problems.

    11. Re:Assuming of course hardware is the bottleneck by mattwarden · · Score: 1

      No, they don't. I manage a team of such developers, and I know they don't have the fundamentals. It has not caused any problems that I can point to.

      By the way, I am CS trained and took all the courses you mention. Those topics influence design, not execution. I don't need programmers to understand those subjects and pay 2x for it; I need them to follow my design.

      I know that's probably not the response you want to hear; you want to hear that the extra knowledge you have is valuable and needed. It is, just not in anything but a senior architect or project management role.

  12. Shiny! by trold · · Score: 1

    If you buy the newest hardware gizmo on the market, the geeks will be begging you to let them code for it.

  13. Everything Old is New by critical_point · · Score: 1

    This is the original justification for using high level languages e.g. FORTRAN, COBOL, etc, instead of working with machine instructions.

    Just like the debate over mainframes vs thin-clients/cloud-computing, this is an old notion that waxes and wanes in cycles. Besides FORTRAN the biggest single step in trading execution speed for higher level programming was the adoption of Java, unless you include the minority of programmers who get to use a fourth generation programming language at work.

  14. How clueless can someone get? by Marcos+Eliziario · · Score: 5, Insightful

    From someone who has been there, done that. I can say that throwing hardware at a problem rarely works.
    If nothing else, faster hardware tend to increase the advantage of good algorithms over poorer ones.
    Say I have an alghorithm who runs at O(N) and another one functionally equivalent that runs at O(N^2). Now let's say that you need to double the size of the input keeping the execution time constant. For the first algorithm you will need a machine which is 2X faster than the current one, for the second O(N^2) you'll need a 10X times faster machine.
    Let's not forget that you need not only things to run fast, but to run correctly, and the absurdity of choosing less skilled programmers with more expensive hardware will become painfully evident.

    PS: Sorry for the typos and other errors: english is not my native language, and I've got a bit too much beer last night.

    --
    Your ad could be here!
    1. Re:How clueless can someone get? by BadAnalogyGuy · · Score: 1

      Now let's say that you need to double the size of the input keeping the execution time constant. ...for the second O(N^2) you'll need a 10X times faster machine.

      4x, actually, but I think we all get what you're saying.

      Basically, the angle of the dangle is geometrically proportionate to the motion of the ocean.

    2. Re:How clueless can someone get? by tukang · · Score: 2, Interesting

      From a purely algorithm perspective you are correct, but it will be easier to implement that O(n) algorithm in a high level scripting language like python than it would be to implement it assembly or even C and I think that's where the submitter's argument of relying on hardware to make up the speed difference makes sense.

    3. Re:How clueless can someone get? by Anonymous Coward · · Score: 0

      That is from an CPU load perspective. I work mainly with databases and it always surprises me that someone willing to spend millions on a project will begrudge buying lots of storage space (terabyte dbs). When doing things like precalculating aggregated data, etc would help improve performance they seem reluctant to spend a few grand on more drives. Then there are the folks who would rather avoid spending money on a license for a high performance db like Oracle and insist on getting cheaper, less capable ones, just to avoid the capital cost. They end up spending more in the long run as we struggle for months trying to improve performance for them.

    4. Re:How clueless can someone get? by Anonymous Coward · · Score: 0

      Say I have an alghorithm who runs at O(N) and another one functionally equivalent that runs at O(N^2). Now let's say that you need to double the size of the input keeping the execution time constant. For the first algorithm you will need a machine which is 2X faster than the current one, for the second O(N^2) you'll need a 10X times faster machine.

      So 2^2 == 10, eh?

      and I've got a bit too much beer last night.

      I really would like some of that :-)

    5. Re:How clueless can someone get? by Anonymous Coward · · Score: 0

      Say I have an alghorithm who runs at O(N) and another one functionally equivalent that runs at O(N^2). Now let's say that you need to double the size of the input keeping the execution time constant. For the first algorithm you will need a machine which is 2X faster than the current one, for the second O(N^2) you'll need a 10X times faster machine.

      Surely in the latter case it would need to be 4X faster?

    6. Re:How clueless can someone get? by GWBasic · · Score: 1

      From someone who has been there, done that. I can say that throwing hardware at a problem rarely works. If nothing else, faster hardware tend to increase the advantage of good algorithms over poorer ones. Say I have an alghorithm who runs at O(N) and another one functionally equivalent that runs at O(N^2). Now let's say that you need to double the size of the input keeping the execution time constant. For the first algorithm you will need a machine which is 2X faster than the current one, for the second O(N^2) you'll need a 10X times faster machine. Let's not forget that you need not only things to run fast, but to run correctly, and the absurdity of choosing less skilled programmers with more expensive hardware will become painfully evident.

      I think I can sum it up without numbers:

      • Make sure the programmers understand the requirements
      • Make sure the programmers have a decent understanding of the theory behind the language. (They don't have to be C# experts but should understand OO; they don't have to be SQL experts but should understand relational theory.)
      • Make sure that the programmers understand that the implemented code has to meet the requirements.

      Last week, I had to fix a bug where a value in the database was constantly flipping to a default state. Upon inspection of the code, I found that the bug existed because the code wasn't written to requirements; and the programmers who wrote it just didn't understand relational theory. They were using a port of Hibernate as a magic object persistence tool.

      The irony was that once I understood the requirements; I realized that query that was overwriting existing data was completely unnecessary. Once I replaced it with queries that met the requirements; the program started running much, much, much faster! The program went from trashing the disk for a few minutes to trashing the disk for a few seconds. I then added an index to the database, and the program stopped trashing the disk.

      So, by understanding relational theory and writing code to meet requirements; I significantly improved performance. No extra hardware needed!

    7. Re:How clueless can someone get? by Agripa · · Score: 1

      So 2^2 == 10, eh?

      Maybe he works for a hard drive manufacturer or, even worse, in marketing.

    8. Re:How clueless can someone get? by Anonymous Coward · · Score: 0

      Say I have an alghorithm who runs at O(N) and another one functionally equivalent that runs at O(N^2). Now let's say that you need to double the size of the input keeping the execution time constant. For the first algorithm you will need a machine which is 2X faster than the current one, for the second O(N^2) you'll need a 10X times faster machine.

      Why not 4X for the ?

    9. Re:How clueless can someone get? by Shados · · Score: 1

      I agree with most of your post, but what does understanding relational theory have to do with anything? There's no RDBMS out there that is theoritically sound, and even the most complex of stored procedure won't need any relational algebra. That stuff is only useful if you're -writing the RDBMS itself-, not if you're using it. Oh, you need to know the basics of normalisation (IF you're designing the database...), know how keys work... index aren't part of the theory and is a purely pragmatic concept... By port of Hibernate, you probably mean NHibernate (thus the C# reference above), and thats used by thousands of companies, including extremely large projects with high levels of success (and is actually growing in adoption).

      I do agree with everything else though.

    10. Re:How clueless can someone get? by EsbenMoseHansen · · Score: 1

      Then there are the folks who would rather avoid spending money on a license for a high performance db like Oracle and insist on getting cheaper, less capable ones, just to avoid the capital cost.

      You mean a database that can actually distinguish an empty string from null?

      The only thing I've noticed you get form Oracle over pg is a bigger invoice. But I'm sure you willl tell me that it doesn't scale or other such vapour :P

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    11. Re:How clueless can someone get? by Marcos+Eliziario · · Score: 1

      Understanding the relational model is important, but performance-wise it's also very important to understand the inner workings of the concrete implementations of RDBMS you'll find out there.
      Unfortunatelly, most developers know nil out of dbms. They don't understand how data is stored, how indexes work, why you have all those logs, what are the main different concurrency protocols used by different databases, they don't understand how buffer caches are used and so on. As an anedocte, once I've heard an history about someone who could not come with a counter argument for the idea that distributed caches like memacached or hibernate could not offer any advantage because if you give more memory to your dbms it would cache it anyway in memory. Well, the bottom line is that the developer thought memcached was cool(and it is), and Oracle is a piece of trash (it's not) but could not explain why that Oracle kept *blocks* on buffer caches, not objects, or individual rows, that Oracle had to maintain consistency (what memcached is not concerned with) and because of it there was merit of using a distributed cache for mostly-read-only data behind the webservers. So what is the problem here? We have tools that isolate most of the things that were the concern of programmers of ancient ages like middleware, distributed transaction controllers, dbms, garbage collection, but most programmers have forgotten, or have never learned, what those tools have to do behind the scenes, I am not advocating that everyone should be able to implement an OS, or a dbms system, a compiler or a garbage collection module for a VM, but instead, that people should be acquainted with the fundamental problems that exists on the system level, that every programmer should not see the computer as a black box, but that he should understand some fundamental things on the system level.

      And it's not only the fault of the programmers. As DBAs became more and more specialized, they understand less and less of programming, and thus are sometimes unable to understand simple things, because they don't see their DBMS under a programmer's point of view, and thus with all those point and click management interfaces they have no idea of why things like having a low page density on SQL Server table leads to bad performance on reads. I've seen it too many times: People with lots of certifications but that would not understand how Virtual Memory works, and thus would configure their systems on the worst possible way. People who procured large multi-core system but that have no idea of how Ahmdal's law would broke their dreams of linear performance improvements on pieces. People who could not believe that IO is terribly slow, and that because of that could not believe that putting a lot of log statements in their production code would waste most of the available processor time waiting on IO.
      Those things may not look like very much important on the short run, you can get away with horribly optimized code for most of the time. The trouble is: Ignoring performance will hurt your businness on the worst of the circunstances, in the christmas period for a retail chain, on vacations time for a airline reservation system and so on.
      I know that Dijkstra said that "Early Optimization is the root of all evil" and I agree with him. But I humbly must add a phrase of mine:
      "Reckless regard for optimization is the cube of all evil"
      Marcos Eliziario - Brazilian-Joe-Nobody(1974- )

      --
      Your ad could be here!
    12. Re:How clueless can someone get? by Anonymous Coward · · Score: 0

      Amusingly enough, you were doing just fine until the last sentence; the earlier parts aren't perfect, but I wouldn't have pegged you as non-native from them. On the other hand, "I've got a bit too much beer" should be "I've had a bit too much beer" or even "I had", and the construction you chose was very un-native.

      (Of course, if you aren't looking to eventually develop native-level fluency you can probably ignore this.)

    13. Re:How clueless can someone get? by Anonymous Coward · · Score: 0

      Well, that math is not correct here... 2^2 is 4, not 10. But I agree with you, bad algorithms cannot be repaired by fast machines... at least not in the long run.

    14. Re:How clueless can someone get? by Anonymous Coward · · Score: 0

      Say I have an alghorithm who runs at O(N) and another one functionally equivalent that runs at O(N^2). Now let's say that you need to double the size of the input keeping the execution time constant. For the first algorithm you will need a machine which is 2X faster than the current one, for the second O(N^2) you'll need a 10X ...

      4X, isn't it?

    15. Re:How clueless can someone get? by GWBasic · · Score: 1

      I agree with most of your post, but what does understanding relational theory have to do with anything? There's no RDBMS out there that is theoritically sound, and even the most complex of stored procedure won't need any relational algebra. That stuff is only useful if you're -writing the RDBMS itself-, not if you're using it. Oh, you need to know the basics of normalisation (IF you're designing the database...), know how keys work... index aren't part of the theory and is a purely pragmatic concept... By port of Hibernate, you probably mean NHibernate (thus the C# reference above), and thats used by thousands of companies, including extremely large projects with high levels of success (and is actually growing in adoption).

      I called NHibernate a "magic object persistence layer." Hibernate and NHibernate never work well when used as a "magic object persistence layer."

      To be frank; I spent a day reading the book on Hibernate and it's really is useful when developers understand how to do SQL and mapping the old-fashioned way. At that point, Hibernate can save a lot of time with boilerplate queries. It's very nice to not have to write a getById() or getByName() method.

      The root cause of the problem I fixed was that the previous developers only understood object-oriented programming. In OO, you can iterate over a collection of in-memory objects with very little performance overhead. This isn't the case when working a database. Running 1000 update statements is much faster then loading 1000 objects into RAM and then calling the magic save method. Other times, one only needs to manipulate IDs instead of loading and saving full objects. Because the programmers didn't understand this, they wrote painfully slow and buggy code.

      The above statement is also very relevant when it comes to throwing hardware at a slow program! Yeah, one could throw hardware at a program that needlessly loads data into RAM; however I doubt that fancy hardware will get a poorly written program to run with acceptable performance.

      I do have issues with NHibernate; some are based on its immaturity, and others are based on its approach to lazy loading. (The version we use can't map a nullable int column to a nullable enumeration. WTF?!?!?) That's another discussion, however.

    16. Re:How clueless can someone get? by Shados · · Score: 1

      I understand and I agree, but what you're describing has nothing to do with relational theory, which what confused me. Its pure I/O and RDBMS considerations. Even in the realm of "magic object persistence layer" (what you're refering to is called an ORM though, Object Relational Mapper), there are pure OOP ways of doing things without having to load everything in RAM though, that don't even require loading all the objects... That said, on a large enough table, you ARE better off running 1 update statement with the 1000 objects in batch rather than running 1000 updates :). 2 queries + 1 mapping job, vs 1000 queries going back and forth...the I/O overhead will be less (but I understand what your original point was).

      In any case, LLBLGEN Pro is better than NHibernate anyway, but thats a whole other story, I suppose.

    17. Re:How clueless can someone get? by GWBasic · · Score: 1

      Even in the realm of "magic object persistence layer" (what you're refering to is called an ORM though, Object Relational Mapper), there are pure OOP ways of doing things without having to load everything in RAM though, that don't even require loading all the objects...

      The senior engineer's attitude was that he wanted something along the lines of "I don't care how you store my objects, just store them". These guys decided to use a schema generator and NHibernate code generators to write ALL the SQL. That's why I'm saying "magic object persistence layer" instead of ORM. ORM implies that you actually know what the database is doing.

      Another reason why I say "Magic object persistence layer" instead of ORM is that they would call a generated GetXXXByName method 50,000 times instead of writing a query that used the "in" clause and adding an index. See what I mean? They wrote code that would perform thousands of table scans because they just assumed that NHibernate would do all the work.

      It doesn't matter at this point, anyway. The people who don't understand data access are no longer on the project and we're throwing out the really bad code and redoing it in Java.

    18. Re:How clueless can someone get? by Gnavpot · · Score: 1

      So 2^2 == 10, eh?

      Yes.

      0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31, 32, 33, 100, 101 ...

    19. Re:How clueless can someone get? by syousef · · Score: 1

      You should have said 10X the size, meaing it'll take 10x as long for O(N) and 100x as long for O(N^2). I think that'd have made your point much better and is closer to a realistic situation.

      --
      These posts express my own personal views, not those of my employer
    20. Re:How clueless can someone get? by Marcos+Eliziario · · Score: 1

      You're right. But for the sake of civilization, and for sparing me from such public and google-indexed embarassment, please let me get by with the story of having had too many beers before writing my post. I just got home, cheked up /. and I saw this. I got outraged and I decided that I had to reply to this. Unfortunately I was still a bit under the influence, and could not come with my ideas very clearly, and add to this the fact that is very hard to write in a second language when drunk :-) That said, let me add that I've had several recent experiences at my current employer (soon to be former, may I add with undeniable relief) where they failed prey to the stupid idea that throwing some million dollars on the mouths of servers, network and storage vendors could help solving problems caused by bad code. Right now I am still trying to convince a Database Administrator that one of the main database production servers is swapping like hell, just because the user account that run the RDBMS doesn't have the right to lock pages in physical memory and the database server is setup to the default memory limits (that means, all memory). Well, considering that this is the same shop where we pay a huge lot for Oracle on licenses and maintanance, but keeping on using MSSQL and it's shitty concurrency model for most things, because they don't want to rewrite their systems, it's no wonder that such an article strung a very personal string on me. For me, this situation is analogue to the situation of bad doctors vs. good doctors. Bad Doctors can't have a clue about an issue, and so they ask for a NMR Scan if you get to them with a sore throath, as well as every other conceivable exam they can imagine of. Good doctors know from your story how to get to plausible hypothesis of what is causing your illness, and thus, they ask for exams only for confirming things and testing their hypothesis. For me, the Bad Doctor standard procedure is the medical equivalent of the "Let's throw hardware at it and hope it works" philosophy. Of course, We should not go over the board with endless and premature optimizations, but we also cannot get away forever with hordes of script kiddies writing bad code, and being told by incompetent managers that this is the Right Thing to do, this is bad for the script kiddies (And I am not being derrogatory here, being a script kid is a step on the evolution of a programmer, we all have been there somewhere in the past). And let me tell you that I am not telling it only from a technical point view, but also from a business point of view. We are all seeing the effect of the short time thinking on the big automakers. After years of massive layoffs, massive R&D investment cuts, reckless regard for qualtiy, and an insane dependency on the humours of short-sighted so-called analysts that could not see beyond quarterly results, we are now seeing were they are heading. While GM and chrysler were busy cutting jobs, closing factories, and looking good for a while for the clueless wall-street types, Toyota was keeping jobs open in the US, investing on more power-efficient technologies, keeping quality as No 1. But this kind of thinking is now costing their stakeholders the economies of their lifes. We've also seen the permanent damage that Carly Fiorina did to the spirit of the Old HP, and we saw what happened. So, business story is full of examples of where this kind of short-term thinking can lead on the long-run. I don't see why this obsession on short term results at the expense of long term sustainabilty could not also be damaging on our industry.

      --
      Your ad could be here!
    21. Re:How clueless can someone get? by Marcos+Eliziario · · Score: 1

      THE SAME TEXT AS ABOVE, BUT FORMATTED AS GOOD OL' Plain Text.

      You're right.
      But for the sake of civilization, and for sparing me from such public and google-indexed embarassment, please let me get by with the story of having had too many beers before writing my post. I just got home, cheked up /. and I saw this. I got outraged and I decided that I had to reply to this. Unfortunately I was still a bit under the influence, and could not come with my ideas very clearly, and add to this the fact that is very hard to write in a second language when drunk :-)

      That said, let me add that I've had several recent experiences at my current employer (soon to be former, may I add with undeniable relief) where they failed prey to the stupid idea that throwing some million dollars on the mouths of servers, network and storage vendors could help solving problems caused by bad code. Right now I am still trying to convince a Database Administrator that one of the main database production servers is swapping like hell, just because the user account that run the RDBMS doesn't have the right to lock pages in physical memory and the database server is setup to the default memory limits (that means, all memory). Well, considering that this is the same shop where we pay a huge lot for Oracle on licenses and maintanance, but keeping on using MSSQL and it's shitty concurrency model for most things, because they don't want to rewrite their systems, it's no wonder that such an article strung a very personal string on me.

      For me, this situation is analogue to the situation of bad doctors vs. good doctors. Bad Doctors can't have a clue about an issue, and so they ask for a NMR Scan if you get to them with a sore throath, as well as every other conceivable exam they can imagine of.
      Good doctors know from your story how to get to plausible hypothesis of what is causing your illness, and thus, they ask for exams only for confirming things and testing their hypothesis. For me, the Bad Doctor standard procedure is the medical equivalent of the "Let's throw hardware at it and hope it works" philosophy.

      Of course, We should not go over the board with endless and premature optimizations, but we also cannot get away forever with hordes of script kiddies writing bad code, and being told by incompetent managers that this is the Right Thing to do, this is bad for the script kiddies (And I am not being derrogatory here, being a script kid is a step on the evolution of a programmer, we all have been there somewhere in the past).

      And let me tell you that I am not telling it only from a technical point view, but also from a business point of view. We are all seeing the effect of the short time thinking on the big automakers. After years of massive layoffs, massive R&D investment cuts, reckless regard for qualtiy, and an insane dependency on the humours of short-sighted so-called analysts that could not see beyond quarterly results, we are now seeing were they are heading. While GM and chrysler were busy cutting jobs, closing factories, and looking good for a while for the clueless wall-street types, Toyota was keeping jobs open in the US, investing on more power-efficient technologies, keeping quality as No 1. But this kind of thinking is now costing their stakeholders the economies of their lifes. We've also seen the permanent damage that Carly Fiorina did to the spirit of the Old HP, and we saw what happened. So, business story is full of examples of where this kind of short-term thinking can lead on the long-run. I don't see why this obsession on short term results at the expense of long term sustainabilty could not also be damaging on our industry.

      --
      Your ad could be here!
    22. Re:How clueless can someone get? by Shados · · Score: 1

      Another reason why I say "Magic object persistence layer" instead of ORM is that they would call a generated GetXXXByName method 50,000 times instead of writing a query that used the "in" clause and adding an index

      Ouch, yeah thats bad =P -Especially- since NHibernate does support the correct ways of doing things like that...its not like GetXXXByName is the only thing it gives you....good thing you got rid of these people :) Even if you know NOTHING about database, and just know how to use the "Magic object persistance layer", you wouldn't do stuff like that...even from an OOP perspective...

      These guys probably needed to be reminded to breath.

    23. Re:How clueless can someone get? by GWBasic · · Score: 1

      good thing you got rid of these people :)

      Well, they're on different projects; hopefully in a situation where they can't do much damage.

    24. Re:How clueless can someone get? by Anonymous Coward · · Score: 0

      if u run for NM where M stays rather small then hardware solution with inefficient O(N^2) is still cheaper. Such things happen all the time because in the end we are looking for fastest ROI and not best technical efficiency

    25. Re:How clueless can someone get? by Fulcrum+of+Evil · · Score: 1

      So 2^2 == 10, eh?

      In base 4 I'm fine!

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  15. But first: Profile, Analyze, Understand by StCredZero · · Score: 5, Insightful

    This only works for certain cases. Some your problems are too many orders of magnitude too big to throw hardware at them.

    Before you do anything: Profile, analyze, understand.

    It might be useless to spend a month of development effort on a problem that you can solve by upgrading the hardware. It's also useless to spend the money on new hardware and the administrator time setting it up and migrating programs and data, when you could've just known that wouldn't have helped in the first place.

    Two questions I used to ask when giving talks: "Okay, who here has used a profiler? [hands go up] Now who has never been surprised by the results? [almost no hands]"

    Before you spend money or expend effort, just take some easy steps to make sure you're not wasting it. Common sense.

    1. Re:But first: Profile, Analyze, Understand by ceoyoyo · · Score: 2, Insightful

      There's the hardware, cooling, space, someone to administer it, replacing it for the next twenty years (or isn't your code going to last that long?)....

      Of course, in my line of work the goal is to go from "a million years" to "realtime" so all the hardware in the world isn't really going to help much.

    2. Re:But first: Profile, Analyze, Understand by frehe · · Score: 2, Funny

      Of course, in my line of work the goal is to go from "a million years" to "realtime" so all the hardware in the world isn't really going to help much.

      Here's a free pro-tip for you: Just find and use some really small years, and you should be able to solve your problem.

    3. Re:But first: Profile, Analyze, Understand by Poltras · · Score: 1

      Of course, in my line of work the goal is to go from "a million years" to "realtime" so all the hardware in the world isn't really going to help much.

      You're working on methodologies for the government?

    4. Re:But first: Profile, Analyze, Understand by Anonymous Coward · · Score: 0

      I need to be anonymous here because of this story from my work place from this very week...

      BigHead Boss and BoneHead Director have a problem on their hands. They need to allow some WidgetEngineers to work faster with large amounts of data. A computer at East-side-building has the data, and a computer at West-side-datacenter processes the data.

      BigHead and BoneHead decide all by themselves, without consulting network engineer or sysadmins, that they need to upgrade their 100Mbps WAN circuit to 1000Mbps. So, they place an order with the metro-net carrier and tell network engineers and sysadmins to do whatever it takes to turn up this circuit, without consideration to why they are being asked to do so.

      Months and hundreds of thousands of dollars later, circuit gets turned up and network engineer says, "Here you go, just like you asked for!".

      But BigHead and BoneHead are furious! "There's something wrong with the circuit", they say! "Call the carrier!" "Have them test end-to-end!" "Why is the network broken?!?!?"

      It would seem that nothing is any faster than it was before. Shocking! Just shocking!

      So, network engineer (me) spends about two working days looking into the issue. What I discover is that StupidWidgetEngineer program has it's own little data sending-receiving program that can't scale it's internal TCP window beyond 64KB, thus unable to send at more than about 112Mbps. WidgetEngineers are also using scp to move data around, which can't do more than about 70Mbps. Finally, the servers need TCP window tuning because nearly all operating systems really really suck at large-bandwidth transfers with TCP. Before turning, TestTool gives me 220Mbps, post-tuning results in nearly 940Mbps over said WAN 1Gbps circuit.

      Network engineer gives report to BigHead and BoneHead that says, "Change the network transfer methodology, stop using scp, and tune you server's TCP window settings." "Oh, and BTW: If engineers would just compress the data before sending it, it would go down to about 5% of it's original size.".

      Real story from a real workplace. So, while buying new hardware/solution-in-a-box can sometimes be cheaper than using up the time of your smart people, it can't fix stupid, and you can spend a whole lot of money being stupid.

      If you don't profile, analyze, and understand, you can't do squat.

    5. Re:But first: Profile, Analyze, Understand by tepples · · Score: 1

      It might be useless to spend a month of development effort on a problem that you can solve by upgrading the hardware.

      Unless you sell the hardware, and the cost of upgrading the hardware would pay for 100 months of development work.

      It's also useless to spend the money on new hardware and the administrator time setting it up and migrating programs and data, when you could've just known that wouldn't have helped in the first place.

      Unless your product is designed for hardware that is about to be end-of-lifed. This often happens with video games for platforms other than Windows.

  16. Another u.s. specific problem. cost of living by unity100 · · Score: 1, Insightful

    everything ranging from a measly meal to healthcare is so expensive that, any kind of rare labor becomes exponentially expensive. because, people need multiples of pay to make any advance in their standard of living due to cost of living.

    in u.s., due to the ease you let mega corporations run rampant because they yelp and wank 'hands off business', you people are paying a fortune for almost anything that is sold for much cheaper in any other country. even, the SAME corporations are selling same products for much cheaper in europe, whereas they are giving you the shaft on the price of the same product in u.s.

    'hands off business' was supposed to 'create jobs', 'increase standard of living' and so on.

    did it ? what we see currently is totally to the opposite.

    the wealth did not 'trickle down' (and why the hell should it anyway), you're losing jobs whilst cost of living almost stays the same (after all, corporations have to make profits, so that they can provide jobs arent they - but where are the jobs), spiral goes deeper and deeper.

    i blame this on one thing alone - extremism.

    extremism is bad at EVERYthing. every aspect of life, social or personal, without any exception.

    when you go extreme on something, you break some other things to the extent that it becomes a disaster. just make a list of such stuff you experienced in your life, and you'll see.

    business, economy are just features of social life, and they are no exceptions. if you go to extreme to ANY side, be it extreme 'freedom' or extreme regulation, it breaks down.

    america went to the extreme lawless end in the last 30 years. it cost entire world a crisis. n. korea went extreme control in the last 50 years, it cost their people a poverty.

    balance is the answer, balance is the key. take europe as an example. with all its faults, the system seems to be working exceptionally well. a lot of petite european countries which should not have any significance at all because of their lack of natural resources and manpower, are producing and creating much more compared to u.s. in a ratio scale. not only that, but the life standard of their people is much, much higher.

    one word; balance.

    1. Re:Another u.s. specific problem. cost of living by Warll · · Score: 1

      Mind actually using some examples? The only thing I can think of that is cheaper in Europe is candy or other sugar based foods thanks to the sugar subsidies. Mean while the German exchange student living with us was impressed with how much cheaper our clothing is.

    2. Re:Another u.s. specific problem. cost of living by chrb · · Score: 2, Informative

      you people are paying a fortune for almost anything that is sold for much cheaper in any other country. even, the SAME corporations are selling same products for much cheaper in europe

      Well, recent currency fluctuations aside, it has certainly been the case that historically UK prices were well above those of the US, hence coining of the phrase Rip-off Britain. Stuff like the Tesco-Levi jeans battle, where an independent retailer was barred from importing and re-selling goods from the US, reinforced the perception that British consumers get a tough deal.

      Things seem to be better now - partly due to more competition, particularly from online dealers and Ebay, where the traditional good communication links from Hong Kong to the UK mean you can often get fast shipping at Chinese domestic prices. I mean, £10 for a 2GB iPod nano clone including shipping, delivered in 3 days... amazing really.

      The big issue now is that we seem to be paying much more than our European neighbours for energy costs. Apart from petrol at the pump, this has nothing to do with taxes - the UK has one of the lowest corporate tax rates in Europe, and domestic energy VAT of only 5%, so there is really no reason why energy companies can't deliver lower prices. I blame lack of competition in the market - if we paid for energy the same way we paid for (unlocked) mobile phone service, the costs would come crashing down.

    3. Re:Another u.s. specific problem. cost of living by YttriumOxide · · Score: 1

      Some things are significantly cheaper, some are significantly more expensive. I can't really speak too much for the US as I've never lived there, only visited. I did notice hotel prices, and especially things such as food and alcohol were more than I'm used to (although, as is often mentioned, petrol is amazingly cheap there still).

      I can better compare Hannover, Germany to Sydney, Australia though, as I used to live in Sydney and now live in Hannover. Yes, Sydney is a much bigger city, but when I moved here, my cost of living halved (actually, my rent here is about 40% of what it was in Sydney for slightly higher quality and slightly smaller size) and my income went up about 50%, so I really do feel significantly "richer". (not relevant to the US topic, but probably interesting to people reading this thread anyway)

      I haven't noticed clothing being too expensive over here, but I've never looked at US prices (I don't tend to buy a lot of clothes on business trips!), but I can get a nice shirt here for about 10 to 15 euro, or a cheap nasty one for between 3 and 5. So, for perspective, a nice shirt costs around half an hours work for a moderately paid programmer (well, "Developer Support" technically - I write code specifically to help other people write code), which seems more than reasonable to me.

      --
      My book about LSD and Self-Discovery
      Also on facebook as: DroppingAcidDaleBewan
    4. Re:Another u.s. specific problem. cost of living by blahplusplus · · Score: 1

      "i blame this on one thing alone - extremism. "

      No you're blaming it on capitalism, extremism is the clueless man's excuse.

      "So the badge of contemporary economic expertise lies with those recognising extreme capitalism as the cause of the current economic crisis. Political figures, media commentators, and theologians concur that "extreme capitalism" must be addressed. The problem is that "extreme capitalism" is just a meaningless slogan without definition or meaning in formal economics. Such economic sloganism identifies how debased the current economic commentary has become. It is becoming increasingly clear that the slogan brigade is out if its depth. The current crisis is about fundamental economic philosophy and theory.

      1980's structural reform was based upon 19th century economic philosophy modernised in the 1950's by Milton Friedman. Political scientists mistakenly attribute contemporary orthodox economics to Hayek. While Hayek is undoubtedly the darling of the far right free market brigade, it is Friedman whose modern monetarism pervades western economic policy. The Australian Reserve Bank and Australian Treasury accepted Friedman's theories in the mid 1970's. Independent central banks, inflationary expectations, natural rate of unemployment and inflation targeting policies are identifying characteristics of modern monetarism.

      Led by the outgoing President Bush, the G20 and Lima Conference reaffirmed more of same. As modern monetarists assume a full employment stable real sector, monetary policy is anointed as the major policy arm. Fiscal policy is relegated to dividing the economic cake among contending sectoral interests. Consequently, free markets and free trade become critical to world growth and prosperity; and protectionism must be resisted at all costs. After all President Bush claimed protectionism caused the Great Depression.

      The truth is that periodic economic depressions are recorded persistently in annals of economic literature. Six economic depressions are recorded between 1815 and 1866. Between 1876 and 1938 seven more occurred. Periodically through the history of capitalism depressions and wars have been the "cleansing mechanisms" through which excesses of the system are sorted and a more stable system restored. Historically, periodic failure of free market capitalism lies in economic philosophy based upon three 18th and 19th century theories: Adam Smith's invisible hand, Ricardo's comparative advantage; and Jean Baptiste Say's Law of Markets."

      http://www.onlineopinion.com.au/view.asp?article=8251

    5. Re:Another u.s. specific problem. cost of living by 0xdeadbeef · · Score: 3, Funny

      extremism is bad at EVERYthing.

      See? You used the shift key. That wasn't so hard, now, was it?

    6. Re:Another u.s. specific problem. cost of living by unity100 · · Score: 1

      unbridled capitalism is an extremism. it is basically a chaotic, lawless premise. both nature, and its extension social life leans towards order with time. any chaotic environment that is let be, is brought to some kind of order by the strongest factors.

      we humans invented democracy so that it would be the people, all of them, who decides how the order would be.

      in unbridled capitalism, you basically take out the will of the people, instead leave it to the biggest cartel of biggest corporations. which works out to the detriment of everyone apart from those corporations - which are in fact nothing but individual subsets in the big set of 'the people'.

      yes. another form of extremism. similar to communism, fundamentalism and any other extremism - instead of the most influential religious or political leader controlling everything like in fundamentalist or communist societies, in capitalism, the strongest and most influential corporations control everything. and just as iran maintains a 'parliament' as a facade to make everything look like the will of the people, whereas instead everything is in fact decided beforehand by the religious order and how communist countries maintain a party in which everyone can become a member and a parliament that anyone can run for to maintain facade, whereas everything is decided by the most influential political elite of the time, in american capitalism a congress and a senate is maintained, which are heavily under the control of big corporations, which effectively buy congressmen, senators, and outright laws in order to have their way. the fact that there are more lobbyists than the number of congressmen (to the 3x amount or so actually), the bills that passed in the recent 20 years, who are to the detriment of people, and even the 'competition' they much yelp about, are proof of how things are going wrong. i wont even mention about judiciary there - its basically whomever has the most money wins.

      extremism. capitalism is in the same basket with communism, fundamentalism, fascism. they are all products of the same century (last 100 years), and lived out their usability in the same century.

      now we are in the tech age, in the age of balance, at the start of the age of direct democracy and unbounded freedoms. everyone should adapt accordingly.

    7. Re:Another u.s. specific problem. cost of living by jcnnghm · · Score: 3, Informative

      Are you high? Granted, I haven't been to Europe (France, Germany, Netherlands) since 2006, but I can't name a single thing that was less expensive, and I live in one of the most expensive cities in the US ($9 Beer Night).

      I specifically went looking for cheap Lacoste stuff in France, and there was essentially dollar to euro parity, while the exchange rate was about 1.5:1. In other words, while I would pay $70 (just got a couple for $30 each on sale) for a shirt in the US, in France the same shirt was going for 70 euros. Food and drink prices seemed to be roughly comparable as well. Consumer Electronics, however, were considerably more expensive than in the US, as was gas. The metro was no less expensive than the DC subway, and the trains weren't cheaper than Amtrak, though 1000% better. I'd have to assume the reason that you believe it's actually cheaper is because you enjoy being banged out for taxes all the time.

      --
      You don't make the poor richer by making the rich poorer. - Winston Churchill
    8. Re:Another u.s. specific problem. cost of living by zenyu · · Score: 1

      France -- good wine is practically free, Germany -- beer and sausages, Netherlands -- high quality Belgian beers for 1/6th the cost, clothing, hotels, and food.. (admittedly it is hard to find good food in the Netherlands, but it is possible.)

  17. Yes... that's the answer... by borgheron · · Score: 1

    Throwing hardware at a bad application is ALWAYS the right way to go.

    There's an old saying "Never throw good money after bad."

    GC

    --
    Gregory Casamento
    ## Chief Maintainer for GNUstep
    1. Re:Yes... that's the answer... by borgheron · · Score: 1

      The above was sarcasm by the way. ;)

      --
      Gregory Casamento
      ## Chief Maintainer for GNUstep
  18. Always thought the same about managers by jmcnaught · · Score: 1

    I always thought the same about managers. Companies are better off spending money on productive workers and the machines they need than with cushy managers who IMHO do work that is way less hard.

    I think companies would see real productivity gains from having the programmers (or whatever type of worker) manage themselves... either by meeting together regularly, rotating the leadership position, or preferably a mixture of both.

    This way the skills and competency of the workers are enhanced, the decisions are made those doing the work, they have a bigger stake in decisions that are made (because they helped make them) and they can divide that extra high management salary amongst themselves.

    In my experience, in professional technical settings the supervised almost always have a better understanding of their worker than the supervisors. And the further up the further up the management train you go, the less likely you'll find anyone with a clue.

    Not to mention, this idea of just throwing hardware at efficiency problems kinda bucks the trend of finder lower energy IT solutions.

    What a fucking douche-bag.

    1. Re:Always thought the same about managers by YttriumOxide · · Score: 1

      I think companies would see real productivity gains from having the programmers (or whatever type of worker) manage themselves... either by meeting together regularly, rotating the leadership position, or preferably a mixture of both.

      I absolutely agree, however the people that would be in charge of making the decision to do that are managers... half a seconds thought on that should be sufficient.

      It'll also never happen in most companies, and especially where I work, as we're a Japanese company (although I work in the European HQ of the company, based in Germany, it's still run more "Japanese style" than German) and Japanese companies just LOVE as many layers of management as they can get.

      I have a lot of respect for my current boss, and I know very well that he does an excellent job of shielding me and the rest of the team from the bureaucracy and annoying "non technical" details that we have neither the time nor inclination to deal with on top of our busy technical jobs, but looking above him, or at other areas of the company, I do see a lot of pointless management positions.

      --
      My book about LSD and Self-Discovery
      Also on facebook as: DroppingAcidDaleBewan
  19. Wrong objective by trold · · Score: 2, Insightful

    Good hardware running code written by bad programmers just means the code will fail faster. The primary goal of a programmer is to make the code work, and that does not change no matter how fast your hardware is.

  20. Not always the case by mark99 · · Score: 3, Interesting

    In a lot of big orgs it is amazing how expensive it can be to upgrade your hardware, or add to an existing farm. Not because of the hardware cost, but because of all the overhead involved in designing/specifying the setup,ordering, waiting for it to come, getting space for it, installation, patching, backing up, etc.

    In fact I've seen several orgs where the cost of a "Virtual Server" is almost as much as a physical one because the cost of all this servicing it is so high. Whether or not this is necessary I don't want to debate here, but it is undeniably the case.

    So I think the case for throwing hardware at issues is not as clear cut as this article implies.

    1. Re:Not always the case by Fulcrum+of+Evil · · Score: 1

      In fact I've seen several orgs where the cost of a "Virtual Server" is almost as much as a physical one because the cost of all this servicing it is so high.

      That's because they're doing it wrong - don't these people realize that server deployment can be reduced to a web-based wizard and a backend workflow?

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  21. What a crock... by johnlcallaway · · Score: 4, Insightful

    For pure CPU driven applications, I would agree with this statement. But NONE of the business applications I write are bogged down by CPUs. They are bogged down by I/O, either user uploads/downloads, network, or disk access.

    I have yet to see any application that was fixed for good by throwing hardware at it. Sooner or later, the piper has to be paid and the problem fixed. Someone improved response time by putting in a new server?? Does that mean they had web/app/database/data all on one machine?? Bad, bad, BAD design for large applications, no where to grow. At least if it's tiered and using a SAN with optical channels more servers can be added. Sometimes, more, not faster is better. And resources can be shared to make optimal use out of the servers that are available.

    The FIRST step is to determine WHY something is slow. Is it memory, cpu, or I/O bound. That doesn't take a rocket scientist, looking at sar in Unix or Task Mangager in Windows can show you that. Sure, if it's CPU bound, buying faster CPUs will fix it.

    The comment about developers having good boxes isn't the same as for applications. My latest job gives every developer a top-notch box with two monitors, I was in heaven. Unfortunately, it can't stop there. I also need development servers with disk space and memory to test large data sets BEFORE they go into production.

    Setting expectations is the best way to manage over optimization. Don't say "I need a program to do this", state "I need a program to do this work in this time frame". It is silly to make a daily batch program that takes 2 minutes run 25% faster. But it's not silly to make a web page respond in under 2 secs., or a 4 hour batch job to run in 3 *if* it is needed. But without the expectation, there is no starting or stopping point. Most developers will state "it's done" when the right answer comes out the other end, while a few may continue to tune it until it's dead.

    --
    I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
    1. Re:What a crock... by StrawberryFrog · · Score: 1

      You concentrate on CPU. Many web apps, including probably the one that I am looking at now (stats from the live system are still pending...), could go faster with more and better caching. I.e. more memory on the web or D=batabase tier. That's hardware too.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    2. Re:What a crock... by Anonymous Coward · · Score: 0

      Too bad you ruined your comment with that asinine sig.

    3. Re:What a crock... by mjensen · · Score: 1

      If bogged down by CPU, get more CPU.
      If bogged down by network, get more bandwidth.
      If bogged down by disk access, get better disk access.

      It will take the people to tell you which one you need....

  22. Get a rope by Anonymous Coward · · Score: 5, Interesting

    I almost feel an order of magnitude more stupid for reading that article. Throwing more hardware at a problem definitely makes more sense for a small performance issue, but this is rarely the case. The whole idea makes me sick as a developer. This reminds me of the attitude of many developers of a certain web framework out there. Instead of fixing real problems, they cover up fatal flaws in their architecture with a hardware band aid. There's no denying it can work sometimes, but at quite a high cost and completely inappropriate for some systems. Not everyone is just building a stupid to-do-list with a snappy name application.

    Consider that many performance problems graphically have an upper limit. At some point throwing more hardware at the problem is going to do absolutely nothing. Further, the long term benefit of hardware is far less than the potential future contributions of a highly paid, skilled programmer.

    Another issue is there are plenty of performance problems I have seen that cannot be scaled easily just by adding more hardware. A classic example are some RDBMS packages with certain applications. Often databases can be scaled vertically (limited by RAM and IO Performance), but not horizontally because of problems with stale data, replication, application design, etc. A programmer can fix these issues so that you can yes then add more hardware, but it is far more valuable in the long-term to have someone to enable you to grow in this way properly.

    Actually fixing an application is a novel idea, don't you think? If my air conditioning unit is sometimes not working, I don't go and install two air conditioning units. I either fix the existing one or rip it out and replace it.

    Further, there are plenty of performance problems that can never be solved with hardware. Tight looping is one that I often see. It does not matter what you throw at it, the system will be eaten. Another example is a garbage collection issue. Adding more hardware may help, but typically delays the inevitable. Scaling horizontally in this case would do next to nothing because if every user hits this same problem, you have not exactly bought more time (therefore you must go vertically as well, only really delaying the problem).

    The mentality of this article may be innocent in some ways, but it reminds me of this notion that IT people are resources and not actual humans. Creativity, future productivity, problem solving skills, etc are far more valuable to any decent company than a bunch of hardware that is worthless in a few months and just hides piss poor work by the existing employees.

    I feel like a return to the .com bubble and F'd Company. I am sure plenty of companies following a lot of this advice can look forward to articles about their own failures. If someone proposes adding hardware for a sane reason, say to accommodate a few thousands more visitors with some more load balanced servers, by all means do so. If your application just sucks and you need to add more servers to cover up mistakes, it is time to look elsewhere because your company is a WTF.

    1. Re:Get a rope by Anonymous Coward · · Score: 0

      I'm curious, which web framework are you talking about? Good to know what to avoid.

    2. Re:Get a rope by Thumper_SVX · · Score: 4, Insightful

      Besides, one thing that's not covered in the article is that hardware has an exponentially higher residual maintenance cost.

      In order to maintain production, many companies these days insist that hardware be in-warranty and thus able to be replaced at a moment's notice. There comes a point as well at which the amount that the hardware will cost on an ongoing basis far exceeds the cost of a single programmer to write a decent app that doesn't need it.

      I have recently saved my company the equivalent of my salary, doubled for the next two years purely in the cost of maintenance contracts for around 150 servers. Granted, this was using virtualization rather than programming to combat the problem, but in this case it made sense. The concept is still the same regardless.

    3. Re:Get a rope by Anonymous Coward · · Score: 0

      my hero. "I love you, man!"

    4. Re:Get a rope by Anonymous Coward · · Score: 0

      RoR, i assume.

    5. Re:Get a rope by Anonymous Coward · · Score: 0

      I'm right with you on this one. You can get a 10x performance improvement by fixing queries, and you don't have to fix them all. How much money do you have to spend to get a 10x improvement in hardware? Remember, when it comes down to it, disks just bits of spinning metal.

      We're dealing with systems here. Contention tends to cause an avalanche of other performance problems. Got a severe problem somewhere? Want to bet it's not impacting anything else?

      If all your apps dev people think this way, it's insulting to the infrastructure people, who think the apps dev people are unprofessional, if not idiots. What you get is a fingerpointing nightmare, and it will happen when a critical new app hits the floor. All of a sudden it doesn't work. Why? Because nobody took the time and trouble to understand. There won't be anyone who can talk to everyone, because everybody is in one camp or the other. If that wasn't the case, the situation wouldn't have arisen.

      Cue expensive consultants.

  23. Wait, what? by zippthorne · · Score: 4, Interesting

    Surely that might work for a one-off, but if you're selling millions or even thousands of copies of your software, even a $100 increase in hardware requirements costs the economy millions. Just because it doesn't cost YOU millions doesn't mean you don't see the cost.

    If your customers are spending millions on hardware, that money is going to the hardware vendors, not to you. And more importantly, that money represents wasted effort. Effort that could otherwise be used to increase real wealth, thus making the dollars you do earn more valuable.

    So i guess the lesson is, If you're CERN, throw hardware at it. If you're Adobe, get a lot of good programmers/architects.

    --
    Can you be Even More Awesome?!
    1. Re:Wait, what? by Marcos+Eliziario · · Score: 1

      And if you are microsoft, make your users think it's normal to throw hardware at it. After all, it's their money, not yours.

      --
      Your ad could be here!
    2. Re:Wait, what? by sribe · · Score: 1

      I almost feel an order of magnitude more stupid for reading that article.

      Everything you said was right, but you missed a big one. For commercial software (or software distributed to end users in a large corporation), it is going to get run on the hardware the users have right now, period. If it performs well, the users will like it and it will (all other aspects being good) develop a good reputation. If it's a sluggish resource hog, it will not be liked and develop a poor reputation. Which one does the original author feel is better for the company/organization producing the software???

    3. Re:Wait, what? by bcrowell · · Score: 1

      For commercial software (or software distributed to end users in a large corporation), it is going to get run on the hardware the users have right now, period. If it performs well, the users will like it and it will (all other aspects being good) develop a good reputation.

      Unfortunately what often happens instead is somewhat different. Users aren't usually in a good position to decide how software will perform on their machine. If the software is not OSS, for example, they may not have the option of trying it on their actual hardware, using it they way they'd actually use it in real life. Also, people often have no real choice but to upgrade their software, even if the newer version is slower. So what actually happens a lot of the time is that you have software houses putting out slow software with the excuse that hardware is getting faster anyway, so there's no point in working hard on performance. As time goes on, the inefficiency of software tends to get worse faster than the speed of hardware can make up for. That's why my word-processor today takes longer to load than the word-processor I used in 1981, on a machine with a clock speed and disk drive that was orders of magnitude slower. There are real economic losses from all this, but they're economic losses due to millions of people sitting around waiting for their software. Because the problem is spread around evenly across the economy, nobody really takes enough of a hit to get upset.

    4. Re:Wait, what? by julesh · · Score: 1

      Surely that might work for a one-off, but if you're selling millions or even thousands of copies of your software, even a $100 increase in hardware requirements costs the economy millions. Just because it doesn't cost YOU millions doesn't mean you don't see the cost.

      Yes. But remember that somewhere around 99% of all software development is for deployment to only a handful of users (or, more often these days, servers) inside a single company. The case you're talking about is vanishingly rare. The suggestion in the article is helpful a lot more often than it isn't.

    5. Re:Wait, what? by zrq · · Score: 3, Insightful

      So i guess the lesson is, If you're CERN, throw hardware at it. If you're Adobe, get a lot of good programmers/architects.

      Actually, I think that is the wrong way round. Places like CERN do 'throw hardware at it', lots of hardware, and it still isn't enough.

      Modern desktop systems have giga bytes of memory, hundreds of giga bytes of disk and multi core processors ... and in the Adobe example you are using it to display PDF documents or Flash movies. Your application would typically be using less that 1% of the available resources. Spending lots of money optimizing the performance does not make commercial sense.

      Large science projects like CERN are pushing the limits of hardware and software. They typically deal with data sets, data rates and processing requirements that are orders of magnitude larger that most systems can cope with.

      A typical science desktop application needs to be able to process and display giga byte data sets, often comparing more than one dataset visually in real time. A typical eScience grid service needs to be able handle extremely large (peta byte) datasets in real time, and you can't drop data or pause for a moment - the data stream is live and you only get one chance to process and store it.

      Same applies to Google, Yahoo, FaceBook etc. If your application is pushing the hardware to the limits, then optimizing the software to increase performance by 5% is worth a lot of developer time.

    6. Re:Wait, what? by mollymoo · · Score: 1

      Modern desktop systems have giga bytes of memory, hundreds of giga bytes of disk and multi core processors ... and in the Adobe example you are using it to display PDF documents or Flash movies. Your application would typically be using less that 1% of the available resources.

      I'm guessing you've never visited websites with Flash ads or tried to search a moderately sized document in Acrobat. Those two applications use a lot more than 1% of the CPU and RAM.

      --
      Chernobyl 'not a wildlife haven' - BBC News
  24. energy consumption increases? by itzdandy · · Score: 2, Insightful

    I think you need to complicate this logic a bit by taking into account added electricity required to power the extra servers, run the servers at a higher load, or run the clients at a higher load as well as the air conditioning cost increase as well.

    also, time is money. If a program takes more time, there is more time for users to be idle which will also have a cost.

    best practice? program as efficiently as possible. Programming expenses are only spent once which the power bill lasts forever.

  25. Maybe its simpler than that..... by 3seas · · Score: 2, Insightful

    ... throw the money at genuine software engineering (not psuedo engineering) so that we have much better tools by which to program with.

  26. Depends on type of problem by foobar123 · · Score: 2, Informative

    Problem that has nonlinear impact on performance can not be solved by adding of two more servers...
    Simplest example is index in database. Before adding of index it takes 2 days to execute it, after adding of an index query executes in 100 milliseconds. How can you solve that by adding of more hardware? Also you usually can not solve IO issues between app and DB servers by "just adding of two more servers"...
    Not to mention that when it comes to scaling of DB you really can not just depend on "adding of another server in cluster"...

  27. Hardware doesn't just configure itself by olyar · · Score: 2, Insightful

    One thing not in the equation here: Hardware is cheap, but having that hardware managed isn't so cheap. When you scale from a couple of servers to a big bank of server, you have to pick up system admins to manage all of those boxen.

    Less expensive than a programmer (some times) but certainly not free.

    --
    Custom, hands-free Linux installs. Instalinux
    1. Re:Hardware doesn't just configure itself by Sxooter · · Score: 1

      I've found that a GOOD sysadmin costs more than an average programmer, and often you only have one or two sysadmins, even for a large shop, so you can afford to pay more.

      Imagine something the size of amazon, google or ebay. There, a 10% performance boost in software could result in saving a million dollars in yearly operation / admin costs.

      --

      --- It is not the things we do which we regret the most, but the things which we don't do.
    2. Re:Hardware doesn't just configure itself by Fulcrum+of+Evil · · Score: 1

      Imagine something the size of amazon, google or ebay. There, a 10% performance boost in software could result in saving a million dollars in yearly operation / admin costs.

      More than that at amazon (specifics are proprietary). The interesting thing there is that individual teams own their area front to back - this means that a slow service is the devs' problem and shows up on weekly reviews. The cool thing there is that a lot of the provisioning stuff is fully automated, so throwing more hardware at something takes all of a minute in a webtool (plus a few hours for the host spinup). It's bad to under/over provision, but recovering from a lot of mistakes is easy (unless there isn't enough hardware on hand). Sysadmin stuff is split into OS/hardware maintenance and group specific operational support, although a lot of teams do that for themselves - putting out prod fires sucks, but so long as it's limited to stuff that you could have prevented, it does serve a purpose.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  28. People Are Expensive by Greyfox · · Score: 2, Informative

    And using them inefficiently is also expensive. If you're looking for a quick fix perhaps you should first consider your company's processes and the tools you use to support those processes. If you can hire a programmer or two to write and maintain tools that allow you to eliminate some of the meetings you have to have every week because no one knows what's going on, you'll find it doesn't take very long for him to pay for himself.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  29. Yes, but algorithm complexity makes that moot by Anonymous Coward · · Score: 0

    It is true programmers are expensive and hardware is cheap. But, trying to keep the explanation simple, say you have an algorithm that operates on 100 objects and requires 100^2 = 10,000 computing resources to work. So lets say You want you app to handle 10% more objects. That's 110 so you need (110)^2 computing resources or 12,100 computing resources, a 21% increase in hardware for a 10% increase in capacity. Now 100^2 is very good. What if you had stupid ass programmers that wrote something that's N^4? 100^4 = 100,000,000 computing units, or 10,000 times the capacity to hand 100 objects. And to increase the capacity a mere 10%, you would need (110)^4 = 146,410,000 computing resources.

    That's a whopping 46% increase in computing resources for a 10% gain in capacity. Maybe you should just pay a programmer to straighten out that spaghetti code instead? Hardware is cheap. But the best investment a development shop can make is dedicated employees to performance optimization.

  30. Depends, as noted in the article by Velox_SwiftFox · · Score: 1

    But not with enough emphasis. To the suggested procedure:
          1. Throw cheap, faster hardware at the performance problem.
          2. If the application now meets your performance goals, stop.
          3. Benchmark your code to identify specifically where the performance problems are.
          4. Analyze and optimize the areas that you identified in the previous step.
          5. If the application now meets your performance goals, stop.
          6. Go to step 1.

    I would add:
          0. If the performance is lower than you can possibly fix with faster hardware, skip to step 3 and find out the real problem first.

    Hardware upgrades may be cheaper, but software design problems can make a program orders of magnitude slower. I've seen 6 large, sorted database queries followed by a small one that was the only one that really had any reason to be sorted, for example. Hardware can't perform miracles.

  31. Absolutely True by titzandkunt · · Score: 4, Interesting

    When I was young, eager and naive I worked at a place that was doing some pretty heavyweight simulations which took a good three-four days on a (I think) quad-processor Sun box.

    It was quite a big site and had a relatively high turnover of decent hardware. Next to the IT support team's area was a room about 6 yards by 10 yards almost full to the ceiling with older monitors, printers and a shitload of commodity PC's. And I'd just stated reading about mainstream acceptance of linux clustering for paralellizable apps.

    Cue the lightbulb winking into life above my head!

    I approached my boss, with the idea to get those old boxes working again as a cluster and speed things up for the modelling team. He was quite interested and said he'd look into it. He fired up Excel and started plugging in some estimates...

    Later that day I saw him and asked him what he thought. He shook his head. "It's a non-starter" he said. Basically, if the effort involved in getting a cluster up and working - including porting of apps - was more than about four man-weeks, it's cheaper and a lot safer just to dial up the Sun rep, invoke our massive account (and commensurate discount) with them and buy a beefier model from the range. And the existing code would run just fine with no modifications.

    A useful lesson for me in innovation risk and cost.

    --
    Political language ... is designed to make lies sound truthful and murder respectable...
    1. Re:Absolutely True by gbjbaanb · · Score: 1

      and then you look at the TPC benchmarks and see that the cluster does eventually outperform the single mainframe. However, for your anecdote your boss was quite right, optimise where needed and appropriate only - nearly always the best approach is to maintain what you have instead of a complete rewrite.

    2. Re:Absolutely True by Orestesx · · Score: 2, Interesting

      Four man-weeks is, what, $10,000? How much was the machine that he bought? My guess is that it wasn't cheaper to buy a new machine, but it was easier and safer.

      The risk is the thing. If it doesn't work, you're screwed.

  32. Yeah, that'll work by Chris+Mattern · · Score: 1

    Because throwing more hardware at the problem will fix your software bugs. Oh wait...

  33. I'm not sure I understand the article by Kupfernigk · · Score: 1
    What point is he trying to make? Programmers do not spend 100% of their time on optimisation. They have to design front ends, create business logic, debug, document, and optimise when necessary. Let's say the average programmer spends 10% of his or her time on optimisation. That's maybe $8000 per year per programmer.

    Now assume that the application has a low number - say 10 customers per programmer, for a server application, and each customer instance needs 2 boxes. So the programmer optimisation cost is currently around $400 per server per annum.

    The root flaw in the article is an assumption that each application has only one customer. That may be true of some in-house projects, but in these cases the main value of programmers tends to be their specialist knowledge of the company and the application. In these cases too, the process of updating and replacing servers taking into account all the internal constraints (likely to be limited by lack of resources) is probably many times the hardware cost.

    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
  34. Some reasonable criteria... by digsbo · · Score: 1

    1) When the pending performance issue can be solved for the next year's worth of growth with an affordable amount of hardware, buy hardware.

    2) If the system is only deployed in one place (not a problem multiplied across 10s, 100s, or 1000s of sites)

    3) When the hardware to be purchased is NOT expensive legacy hardware that makes it more expensive to fix the right way later (or makes finance think you don't know what you're doing saying you can replace a $1M AIX machine w/ $40K in commodity hardware, leaving them with a huge capital cost to depreciate).

    4) When the marginal cost of hardware is less than the marginal cost of hiring a new programmer. This is true for most Sun machines and all x86.

    I've been in the opposite of each of the above scenarios, when we used programming talent to solve the problems because the criteria above were actually the opposite.

  35. objective is correctness, always by pikine · · Score: 2, Insightful

    The article seems to assume that bad programmers write slow but correct code, which is a big assumption. But the observation on cost also means that good programmers should focus on correctness rather than performance.

    Just to illustrate how difficult it is to get correctness right, on page 56 of The Practice of Programming by Kernighan and Pike---very highly regarded book and highly regarded authors---there is a hash table lookup function that is combined with insert to perform optional insertion when the key is not found in the table. It assumes that the value argument can be safely discarded if insertion is not performed. That assumption works fine with integers, but not with pointers to memory objects, file descriptors, or any handle to a resource. An inexperienced programmer trying to generalize int value to void *value will induce memory leak on behalf of the user of the function.

    --
    I once had a signature.
    1. Re:objective is correctness, always by julesh · · Score: 3, Insightful

      But the observation on cost also means that good programmers should focus on correctness rather than performance.

      Just to illustrate how difficult it is to get correctness right, on page 56 of The Practice of Programming by Kernighan and Pike---very highly regarded book and highly regarded authors---there is a hash table lookup function that is combined with insert to perform optional insertion when the key is not found in the table. It assumes that the value argument can be safely discarded if insertion is not performed. That assumption works fine with integers, but not with pointers to memory objects, file descriptors, or any handle to a resource. An inexperienced programmer trying to generalize int value to void *value will induce memory leak on behalf of the user of the function.

      Or, for a modest increase in hardware requirements to get the same performance, we can introduce automatic resource management (aka garbage collection) which makes this particular little difficulty go away.

  36. Nothing new by fermion · · Score: 2, Insightful
    This has been the trend for a very long time. Once, a long time ago, people wrote code in assembly. Even not so long ago, say 20 years, there were enough applications where it still made sense to do assembly simply because it was the only way for affordable hardware to perform well.

    Ten years ago many web servers were hand coded in relatively low level complied languages. Even though hardware had become cheaper, and the day of the RAID rack of PCs were coming on us, to get real performance one had to have software developers, not just web developers.

    Of course cheap powerful hardware has made that all a thing of the past. There is no reason for an average software developer to have anything but a passing familiarity with assembly. There is no reason for a web developer to know anything other than interpreted scripting languages. Hardware is, and always has been, cheaper than people. That is why robots build cars. That is why ISM sold a but load of typewriters. That is why the jacquard loom was such a kick but piece of machinery.

    The only question is how much cheaper is hardware, and when does it make sense to a replace a human wiht a machine, or maybe a piece of software. This is not always clear. There are still reletively develop places in the world where it is cheaper to pay someone to wash you clothes by hand than buy and maintain a washing machine.

    --
    "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    1. Re:Nothing new by Percy_Blakeney · · Score: 2, Interesting

      Once, a long time ago, people wrote code in assembly... Of course cheap powerful hardware has made that all a thing of the past.

      Actually, I would argue that advances in compilers and interpreters have been just as important to that trend as advances in hardware.

    2. Re:Nothing new by MindVirus · · Score: 1

      Ten years ago many web servers were hand coded in relatively low level complied languages.

      Yeah, as opposed to nose-coded. Good times.

    3. Re:Nothing new by Chirs · · Score: 1

      "There is no reason for an average software developer to have anything but a passing familiarity with assembly."

      If anyone reading this _is_ interested in assembly, you might want to try doing some OS work. For the past 8 years I've been a professional linux kernel developer, and I've had to do some assembly work for several different architectures.

      Alternately, there is still very low-level userspace work being done in high performance computing, lockless algorithms, and such.

      On the other hand, it does mean that I'm not up to speed on database programming, and my coding skills with higher-level and interpreted languages are definitely rusty.

    4. Re:Nothing new by Alioth · · Score: 1

      Don't forget embedded. Everyone forgets embedded, despite you having probably more embedded devices in their house than desktop computers!

      Lots of assembly language used there. When you're trying to fit your washing machine code in an Atmel AVR with 1K of flash and 64 bytes of RAM, optimisation is important and throwing more hardware at it is expensive - because each instance of the software comes with an instance of the hardware, too. Anyone who likes getting down and dirty with the bare iron, try doing embedded. Or if it's just some fun programming you want to do, get a retrocomputer like a Sinclair Spectrum or Commodore 64.

    5. Re:Nothing new by pommiekiwifruit · · Score: 1
      Once, a long time ago, people wrote code in assembly.

      In my case, last Thursday... not every computer chip in the world is made by Intel you know. In fast, desktop chips are a tiny minority of the chips in your house, although they may employ more programmers.

      On the other hand, most of my code was in C, but the compiler is inefficient enough that I'm going to have to rewrite chunks of code in assembler to get acceptable performance.

      And if our client can save 10 cents a unit by removing one hardware component and causing us to rewrite the code, they will definitely tell us to do that. :-(

  37. Well... by Anrego · · Score: 1

    The main goal of writing solid code isn't to lower resource requirements.. it's to increase maintainability.

    Sure you can hack out shitty code and make up for it with more hardware to handle the mem leaks and bloat... and probably save some money in the short term. In the long term though, when you need to add something to your mess of spaghetti code.. you're going to spend much more programmer time .. which is what you were trying to save from the get go.

    I`m a firm believer that a little extra time and money spent on writing good, clean code will pay off in the long run.

  38. theory vs practice by Anonymous Coward · · Score: 0

    had to be written by someone not working in a real business.

    As mentioned by others cpu speed is rarely the case, and even if so optimization isn't always for page response or even speed.

    Much of my optimization is to reduce transaction fees and user speed. More machines won't reduce io bound per-user speed.

    I wish you could just throw hardware at it. Also even if you do, software has to be changed to accommodate various levels of scaling, you often can't just plug and go. You're going to increase your infrastructure engineering staff and costs, it's gotta come from somewhere.
     

  39. Java, PHP et al by Midnight+Thunder · · Score: 1

    This is why interpreted or semi-interpreted programming languages make so much sense, especially for stuff such as web applications. Here you can scale to what ever the best hardware is, even changing CPU, without worrying that you will need to recode, or recompile. The same can't generally be said for languages such as C++. Its ironic that you would have to choose a approach that is probably less optimal to get cheaper long term improvements in performance.

    --
    Jumpstart the tartan drive.
  40. What about desktops? by br00tus · · Score: 2, Insightful

    This uses servers as an example, but what about desktops? We use Windows desktops where I am, and having AIM and Outlook open all the time is more or less mandatory for me. Plus there are these virus-scanning programs always running which eat up a chunk of resources. I open up a web browser and one or two more things and stuff starts paging out to disk. I'm a techie and sometimes need a lot of stuff open.

    We have a call center on our floor, where the people make less than one third what I do, and who don't need as many windows open, yet they get the exact same desktop I do. My time is three times more valuable than theirs, yet the company gives me the same old, low-end desktop they get, resulting in more of my productive time being lost - those seconds I wait when I switch from an ssh client to Outlook and wait for Outlook to be usable add up to minutes and hours eventually. Giving everyone the same desktop makes no sense (I should note I eventually snagged more RAM, but the point is about general company policy more than my initial problems).

  41. Is this news? by AvitarX · · Score: 1

    Practical C programming lists in their "optimization" chapter that hardware is often the most cost effective optimization. It even gives an example of a couple of thousand on a new machine cut execution time in half instantly with no effort. The programmers then did some optimizations, but it was the easy stuff, not hard core.

    The book is old now, and the anecdote older.

    --
    Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
  42. A couple of things that were ignored by Todd+Knarr · · Score: 2, Insightful

    The first is that the hardware cost isn't the only cost involved. There's also the costs of running and maintaining that hardware. Many performance problems can't be solved by throwing just a single bigger machine at the problem, and every one of the multiple machines means more complexity in the system, another piece that can fail. And it introduces more interactions that can cause failures. An application may be perfectly stable using a single database server, but throw a cluster of 3 database servers into the mix and a problem with the load-balancing between the DB servers can create failures where none existed before. Those sorts of failures can't be addressed by throwing more hardware at the problem, they need code written to stabilize the software. And that sort of code requires the kind of programmer that you don't get cheap right out of school. So now you're spending money on hardware and you're still having to hire those pesky expensive programmers you were trying to avoid hiring. And your customers are looking at the failure rates and deciding that maybe they'd like to go with your competitor who's more expensive but at least delivers what he promises.

    Second is that, even if the problem's one that can be solved just by adding more hardware, often inexperienced programmers produce code whose performance profile isn't linear, it's exponential. That is, doubling the load doesn't require twice the hardware to maintain performance, it requires an order of magnitude more hardware. It doesn't take long for the hardware spending to become completely unbearab le, and you'll again be caught having to spend tons of cash on enough hardware to limp along while spending tons of money on really expensive programmers to try and get the software to where it's performance curve is supportable and watching your customers bail to someone offering better than same-day service on transactions.

    Go ask Google. They're the poster boy for throwing hardware at the problem. Ask them what it took on the programming-expertise side to create software that would let them simply throw hardware at the problem.

    1. Re:A couple of things that were ignored by Anonymous Coward · · Score: 0

      Don't forget sysAdmin costs: in order to run that new hardware efficiently you need better sysAdmins, which also cost more money.
      At one place where I worked the sysAdmins didn't keep up with the hardware changes - so they ended up paying more for me (a programmer) to re-setup the boxes after the sysAdmins did.
      Then they let me go, and the next sysAdmin lost the code, the passwords and the server (it was on VMware). Sometimes ya can't win for losing...

    2. Re:A couple of things that were ignored by Anonymous Coward · · Score: 0

      Who are these mythical inexperienced programmers.. relics from a previous time where high-school students could be programmers? It's so freaking hard to even get started as a programmer now.. Where are these programmers who don't understand complexity? Is it even possible to be a programmer without a 4-year degree these days? It's been my experience that companies won't even look at your resume unless you're almost-over-qualified for the role (especially in this recession and after the dot com boom).

    3. Re:A couple of things that were ignored by Todd+Knarr · · Score: 1

      All over the place. At work I just finished cleaning up a thread-safety problem. We hold an identifier in a data member of an object, and we log that identifier as part of all messages to identify where the transaction came from. At the end of a transaction this programmer spawned off a new thread to log the final statistics and timings for the transaction the object was for, then destroyed the object and terminated the processing thread. I got tasked with figuring out why the identifier being logged for the statistics and timing messages were garbage.

      And this isn't atypical. 50-75% of our applicants fail to even see that there's a problem in the above case.

  43. Developer=Engineer by DanMc · · Score: 1
    I really disagree with this article. There's very few real world cases where a problem lands on a dev team's plate that could otherwise easily be solved by throwing hardware at it. In cases where it is possible, it's usually an exotic hardware change. For example, moving from local disks to a SAN or SSDs, which is not to be taken as a hardware swap. If you have an app that's CPU bound and you go from a single core 3gz to a quad core, any dev will tell you that it won't ever get close to 4x faster unless it was very carefully developed for multiple cores in the first place.

    Consider one of the most common cases. A web application that starts to bog down quickly when it reaches a certain threshold. Let's assume it's not as simple as the network bandwidth (I *wish* my customer's bandwidth doubled every year for the same price!). You've got 200 visitors and they're all responsive, but when you get 300 it's twice as slow, and when you get 350 it's 3 times as slow. Go ahead and replace the servers with double the CPU & RAM, and the next step up of disk tech (raid 5 SCSI to RAID 10 SAS for example) and see if you can suddenly support 400 users.

    Part of the developer's skill set, and the reason they are expensive, is engineering and architecture. Consider the mechanical engineering world. Humans have been doing that for a lot longer than programming, so we have a better understanding of a solution that is plain stupid. If a device is underperforming, can you skip talking to an engineer and solve it by swapping out the engine for one twice as big? Have you ever talked to an engineer who said, "yeah, just double the power and that won't affect anything else!" Maybe you've got a steel rod that keeps breaking, and the actual solution is to make a slightly bigger rod out of titanium. But if that actually works, it just means the engineering wasn't done right in the first place. This is how engineering disasters happen.

    And finally, good programmers are not dumb. If a problem lands on their desk that can be fixed with a few thousand dollars worth of hardware, they're going to consider it after they've billed that much time. Chances are they've got better things to do because their skills can be better used elsewhere.

    1. Re:Developer=Engineer by landonf · · Score: 1

      Commenting to remove accidental redundant moderation. It's right next to "Insightful".

      Sorry!

      Since I'm here -- I've always though that the "hardware is cheap, programmers are expensive" position presented a false dichotomy: a choice between achieving passable performance through good design, versus optimizing for developer efficiency. Efficient use of resources and ease of development are not mutually exclusive.

      --
      http://plausible.coop
    2. Re:Developer=Engineer by Fulcrum+of+Evil · · Score: 1

      Have you ever talked to an engineer who said, "yeah, just double the power and that won't affect anything else!" Maybe you've got a steel rod that keeps breaking, and the actual solution is to make a slightly bigger rod out of titanium. But if that actually works, it just means the engineering wasn't done right in the first place. This is how engineering disasters happen.

      No, if that actually works, it means the engineering was done right - the part fills the requirements and is cost effective. They probably also engineered it so the weakest part is cheaper to replace, which means you get to think about that when doing a power upgrade.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  44. All depends... by lpfarris · · Score: 1

    It's always programmers that claim programmers are expensive, and hardware is cheap. People who make this claim rarely take other costs into consideration. Like support, power, rack space, etc. I would just love to see someone do a study tracking total project costs against the money spent up front in planning, design, and development.

  45. Re:Frist? by couchslug · · Score: 5, Funny

    "Natalie Portman can't act for shit and she has the tits of an 11-year old girl. Grits are bland and best served to the inbred, down-syndrome-afflicted inhabitants of the Southern United States."

    OK, OK, ya got me horny, hungry, and nostalgic for the folks back home, but what was your point?

    --
    "This post is an artistic work of fiction and falsehood. Only a fool would take anything posted here as fact."
  46. There's more to hw cost than just the initial pric by Anonymous Coward · · Score: 0

    There's more to hw cost than just the initial price. There's also the sw licensing, people support for adding hw to your infra and the cost to move applications from 1 platform to another. If virtualization is used effectively, then you don't necessary need to buy anything new to get more CPU, RAM, whatever. If small servers are used, the ability to place multiple servers on shared hardware is limited and overall company costs will probably be higher.

    In general, newer hw is significantly faster and cheaper to run than any 2 year old hardware. It also tends to reduce license costs purely due to a fewer number of CPUs being needed to perform the same amount of work.

    As an example, I was forced to redeploy an E6800 wit 8 CPUs when I needed a V240 with 2 faster CPUs. I had to upgrade the E6800 with RAM and HBAs that costed more than 2 V240s including double the RAM and the correct HBAs.

    Why? I don't know the answer for certain, but believe the other 16 CPUs were planned to be used by other projects. Personally, I think the company should have traded in that class of server for whatever discount they could have gotten. This happened about 18 months ago. This company had more than 40k servers so adding more without removing some is a really big problem. Most of their data centers were "full" whether by power or space capacity.

    Software developers don't seem to understand the complexities of running data centers. Larger volume costs need to be considered whenever making policy decisions concerning new equipment. BTW, I did software development for over 10 years.

  47. This only works with LAMP/FOSS by Alpha830RulZ · · Score: 2, Funny

    If your performance problem is in an Oracle or SQL Server database, throwing more hardware at the problem probably has a license fee attached to it, and that can easily be measured in multiple developer salaries. This also causes people to scale using bigger boxes, rather than more boxes, and that gets you out of the range of commodity hardware and into the land of $$$$$.

    Which is why I don't care to deliver on Oracle, but my employer hasn't figured out that Postgres and MySQL will work for a lot of problems, and is still fellating the Oracle and IBM reps.

    --
    I was taught to respect my elders. The trouble is, it's getting harder and harder to find some.
    1. Re:This only works with LAMP/FOSS by Anonymous Coward · · Score: 0

      You can scale Oracle with RAC on commodity hardware. That doesn't address the license costs, but pricing is always a matter between you and your sales rep, who in this climate is likely to be fellating you.

    2. Re:This only works with LAMP/FOSS by Anonymous Coward · · Score: 0

      "... fellating..."

      I for one have never before seen the gerund form of fellatio before.

      I salute you sir.

  48. Cheap programmers = cheap results by Anonymous Coward · · Score: 0

    Sure- we can easily throw 3 or 4 systems at a problem that can be solved by 1 with good programmers.

    But what do you do when the code is unmaintainable and stuck together with bubble gum and duct tape? That too is the results of that way of thinking. You're not paying for good programmers to make things fit on less hardware. You're paying for good programmers to make good software, and a side effect of that is that it runs efficiently.

  49. Re:Frist? by tomhudson · · Score: 5, Interesting

    Natalie Portman can't act for shit and she has the tits of an 11-year old girl. Grits are bland and best served to the inbred, down-syndrome-afflicted inhabitants of the Southern United States. Get off it already.

    that's the point - they DO get off on it!

    As for the rest, if you REALLY want to improve productivity:

    • HARDWARE
      1. Dual monitors. They pay for themselves within weeks. This is a real no-brainer.
      2. Dual monitors. They pay for themselves within weeks. This is a real no-brainer.
      3. Dual monitors. They pay for themselves within weeks. This is a real no-brainer.
      4. Did I mention dual monitors? They really make a difference ...
    • PEOPLE
      1. Learn to manage people. The biggest time-waster is bad management.
      2. Learn some communications skills. This applies to everyone. Management, programmers, get your "people skills" in order.
      3. Give people the time they need to better self-organize. Unrealistic deadlines waste time as corners are cut.
      4. Learn to manage projects. This includes cutting features right at the beginning, instead of the usual "we have this checklist of features", and then the inevitable "feature creep", followed by the "what can we cut so we can ship the *^&@&%&^% thing?"

    The real productivity killers are poor morale, poor management, poor communications, poor specifications, poor research, lack of time for testing, lack of time for documenting, lack of time for "passing on knowledge" to other people, etc. Not hardware.

    Yes, hardware IS cheap. Poor management is the killer - in every field. Just ask anyone who has been on a death march project. Or bought GM stock a year ago. Or who supported John McCain, then watched Sarah Palin become his "bimbo eruption." They all have one thing in common - people who thought they knew better, didn't do their research properly, and then screwed the pooch.

  50. are you kidding? by speedtux · · Score: 1

    That's a tradeoff that's at the start of every software development project: you pick the tools that allow you to get the job done with overall minimum cost. That's why so many projects are written in Perl, Python, etc.

    Unfortunately, many people make the wrong tradeoffs and then don't even follow through. In particular, they pick languages that in theory permit high performance implementations (e.g., C, C++), but then actually fail to write high performance code. A lot of desktop applications written in C and C++ fall into this category.

  51. Typical Windows-aera response ... by garry_g · · Score: 1

    The pretense of solving performance problems by adding more performance to the hardware is something typical of the MS Windows generation ... instead of clean, optimized programming, relying on more CPU (or whatever) power to solve the problems is a very short-sighted solution. Sure, you'll be able to get your system performance up to par again, but what when you run out of performance yet again?

    Instead, check where the actual bottlenecks are ...

    I believe, every person who wants to get into programming should get some hands-on training with either ancient systems like Atari or C64, or embedded systems like AVR or PIC. All of which with limited resources, but with decent programming style they are capable of getting the job done well!

  52. Dinosaur Lesson by anorlunda · · Score: 1

    Yes we learned that lesson generations ago.

    When I started writing code, memory cost $1 per bit, and programmers cost about $4 per hour. If you were writing a program that would be installed on many machines, you could afford very many man hours to save a bit or a byte here or there. It was precisely that misguided sense of economy that created spaghetti code and the worst programming practices ever.

    I was personally responsible for a programming horror as a green youngster. I wrote a load-flow program for real time applications. I was given only 100K bytes budget for disk (drum) storage for code plus data plus saved results. To fit in that constraint I had to invent a 16 bit floating point number format. That made my application unusable and useless in the long run.

    After the end of the project, I belatedly learned that all the other programmers routinely exceeded their memory constraints by 300-400%; and by doing so they managed to deliver something useful.

  53. Thats why javascript became popular. by Anonymous Coward · · Score: 0

    I think this is one of the main reasons (AJAX etc. aside) why JavaScript became popular and accepted lately. Why waste YOUR server resources generating structure of the page? Just vomit raw data with adequate classes/id's and let THEIR machine structure it client-side. Makes perfect sense to me.

  54. hardware costs have personel costs too by misterjava66 · · Score: 1

    Although I'm an advocate of buying good hardware, and not getting silly on the hardware to developer ratio. You must also note that more complex hardware requires more skilled/talented operators and more numerous hardware requires more skilled/talented operators and either one runs up the electric bill. Most of the cost of a server is operator costs, NOT purchace. So be careful on how you run the numbers. With that said, custom software development should be a choice of last resort. I am one of those guys, and if I'm bringing less than a factor of 10 improvement in speed in a redevelop project, it probably would have been cheaper to just buy more hardware.

  55. Stupid question. by drolli · · Score: 1

    It depends on how many instances of the code will be run. In the innermost loop of an PDE integrator, which will be run in a monte-carlo simulation on 1000 cores, even a small time saving can be valuable and pay off immediatly.

    If you are running on a system which has intrinsic limitations (e.g. embedded systems battery) you also may find it useful *NOT* to run into the platforma limitation without need (changing the platform may be expensive).

    However, if its about aggregating the database in the evening, the it maybe does not matter.

  56. More factors by Lazy+Jones · · Score: 2, Insightful
    Generally, investing into hardware will usually mean more people with salaries like programmers' on the payroll (designing the architecture, the maintenance tools, installing the software and hardware, keeping it running ...). A lot of these things can be automated / done with little effort, but it takes someone as competent (and expensive) as a good programmer to get it right.

    In the long run, your best investment is still the good programmer, as long as you can keep him happy and productive, because then you can grow more/faster (by buying hardware as well).

    --
    "I love my job, but I hate talking to people like you" (Freddie Mercury)
  57. time is the key by decairn · · Score: 1

    I've done this many times. It boils down to simple stuff and its all a trade off; time vs money vs quality. Time is usually the key where I work as the environment is a highly changing one. Deploying new hardware is generally less risk and faster than upgrading software, and uses different people from the (always too busy) software teams. So it buys you time which is often fine for the business folks that don't care about how inefficient that algorithm or SQL query is as long as the business needs are met. However, there's only so many times you can band-aid this stuff until hardware cannot solve it. When you do new software, its a full development cycle. If it requires major rethink on the design you can bet new issues are raised in production when it goes live; the business do care about this and you have to do some extra preparation to deal with these new risks as the new software is rolled out. Having gone all through is, the goal-posts change again. New activity happens from business that drives software in ways you didn't imagine or get the chance to implement for ahead of time. You're back to square one on the hardware versus software again.

  58. dont think that way by scientus · · Score: 2, Informative

    Programmers and efficiency are not unrelated free market resources. Good coders write more efficient code regardless of weather thet is a primary goal. While premature optimization is athe root of all evil, claiming there is no need to optimize at all is equally a fallacy.

  59. programmers save lifetimes by johnrpenner · · Score: 4, Interesting

    Andy Hertzfeld, engineer on the original Macintosh team:

    Steve was upset that the Mac took too long to boot up when you first turned it on so he tried motivating Larry Kenyon by telling him well you know, how many millions of people are going to buy this machine - it's going to be millions of people and let's imagine that you can make it boot five seconds faster well, that's five seconds
    times a million every day that's fifty lifetimes, if you can shave five seconds off that you're saving fifty lives. And so it was a nice way of thinking about it, and we did get it to go faster. (PBS, Revenge of the Nerds, Part 3)

    1. Re:programmers save lifetimes by Anonymous Coward · · Score: 5, Funny

      Someone evil (like me) may ponder the other side of that. If I can *put* another 5 seconds on the boot time then I can effectively kill 50 people and get away with it. But then I'm a bastard.

    2. Re:programmers save lifetimes by Anonymous Coward · · Score: 0

      Correction: Five seconds times a million every day *for 1 year* is fifty lifetimes. Otherwise it doesn't make sense to have a rate equal to an amount.

  60. Prevent the problems, don't patch them! by davecb · · Score: 4, Interesting

    Throwing hardware at a problem means the writer failed to use his sysadmin staff to do basic capacity planning while there wasn't a problem.

    And as johnlcallaway, said, the problem isn't usually CPU: most bottlenecks are either disk I/O or code-path length.

    I'm a professional capacity planner, and it seems only the smartest 1% of companies ever think to bring me in to prevent problems. A slightly larger percentage do simple resource planning using the staff they already have. A good example of the latter is Flickr, described by John Allspaw in The Art of Capacity Planning, where he found I/O was his problem and I/O wait time was his critical measurement.

    Failing to plan means you'll hit the knee in the response-time curve, and instead of of a few fractions of a second, response time will increase (degrade) so fast that some of your customers will think you've crashed entirely.

    And that in turn becomes the self-fulfilling prophecy that you've gone out of business (;-()

    Alas, the people who fail to plan seem to be the great majority, and suffer cruely from their failure. The last few percent are those unfortunates whose professional staff planned, warned, and were ignored. Their managers pop up, buy some CPUs or memory to solve their I/O problem, scream at their vendor for not solving the problem and then suddenly go quiet. The hardware usually show up on eBay, so I think you can guess what happened.

    --dave

    --
    davecb@spamcop.net
    1. Re:Prevent the problems, don't patch them! by StrawberryFrog · · Score: 1

      Throwing hardware at a problem means the writer failed to use his sysadmin staff to do basic capacity planning while there wasn't a problem.

      The writer is Jeff Atwood, who runs Stack overflow, a web site that has become quite popular since it launched this year. For sites like that, I think the best approach is to start small (i.e. cheap) and expand as needed.

      If you think otherwise, tell me: how would you do capacity planning for a new website with an unknown growth curve?

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    2. Re:Prevent the problems, don't patch them! by Thumper_SVX · · Score: 1

      If you think otherwise, tell me: how would you do capacity planning for a new website with an unknown growth curve?

      Easily. You test your application thoroughly before you start, putting as many torture tests on it as you can. Sure, you start with cheap and simple dev systems, and using them appropriately with the right monitoring you identify your bottlenecks (you'll usually find I/O or Database to be your bottlenecks in most instances)

      Once you've identified those problems, plan your production systems accordingly. If I/O is the problem, provide a method whereby your I/O can be optimized and usually the answer on how to grow that will present itself as part of that process.

      For example I recently worked on a very similar example where we had an application that was VERY I/O intensive we were trying to deploy. I got involved in the project late (typical Corporate BS; they decided to involve the systems analyst after they'd already passed their original go-live date... go figure). Anyway, I immediately saw their I/O bottleneck and was able to make some educated guesses as to how to combat this; i.e. work with the app folks to move stuff around appropriately so that I/O could be split up easily across multiple paths, and using the right filesystem format for the job. Since the application created and deleted a large number of files that were reasonably large in size, I spec'ed out that we have the filesystem (unfortunately NTFS... the app was .net based) formatted with a 32K block size, alignment of 64 on a proper multi-path controller to our HP EVA. I also made use of junction points so that we had multiple LUNs presented that made up the "F:" drive (the working drive for the application), and made sure our MPIO drivers supported active load balancing.

      The programmers had originally spec'ed out a farm of systems to run the application properly... just getting involved from a capacity planning perspective because the upper management nixed the expense meant that their originally spec'ed 10 server farm dropped to two... and we could in fact drop to one except that we wanted some fault tolerance :)

      Now, we don't know what the growth curve of this site/app are going to be. Simple fact is that since it was built intelligently, it's easy to expand I/O bandwidth now; hell, we can add new LUNs with new paths to the drives... or we can even add another multi-path controller if I/O becomes an issue. In our case, growth of our app does not necessarily need hardware thrown at it... it only took me three days of work with the programmers to do all this analysis and give them a proof of concept.

    3. Re:Prevent the problems, don't patch them! by Anonymous Coward · · Score: 0

      If you think otherwise, tell me: how would you do capacity planning for a new website with an unknown growth curve?

      The same way you manage unknown disasters--make it someone else's problem (i.e. insurance companies).

      Amazon's S3 comes to mind as one example of a way to scale with an unknown growth curve. I'm sure there are others.

    4. Re:Prevent the problems, don't patch them! by davecb · · Score: 1

      Yes, one absolutely should start small and build only as you get the business and a profit margin to pay for the growth!

      If he's talking about his own site, and not a more general problem, then he seems to have staff he can put on tracking the actual growth and correlate it with resource usage: that gives him an amount of resources per N users, and he can start the plan there. Along with his current (wildly approximate) growth rate.

      The other thing he needs is to know when he 'hits the wall". Assume one page view takes 1/10 second at his server, with a single CPU (queue) active. At a load of 10 page requests, he's at 100% utilization (of the app/queue, not the cpu) and he's hit the inflection point. After that, performance will fall off.

      Now he can look at his current growth and say "I'll hit the knee on my 12-processor machine next week: I won't buy more processors, I'll tell apache to reject anything over 120 simultaneous page requests, and then have a script send me email".

      If he get the email tomorrow, growth is super high. If not until next month, low.

      And finally he looks at his budget and decides when to buy more resources, balancing cost against whatever he makes off the site at his current load.

      If he plans a big marketing push and expects 50% more, then he gets to decide if he'll but resources now or try the marketing effort first and buy only if it works.

      --dave (brutally oversimplified, you understand) c-b

      --
      davecb@spamcop.net
    5. Re:Prevent the problems, don't patch them! by davecb · · Score: 1

      I strongly agree: performance is a functional requirement, so test it from the time your app first replies to a test. If your target is 1/10 second and you're only taking 1/100th, stop! it's fast enough.

      Once it's built, re-measure and see what resources it needs to meet your speed target per 1000 users, and stick that in a spreadsheet. use that to do what-ifs for the hardware you start with and plan to grow to, so the manager can know how much it costs, and price it so you can afford resources when the business grows.

      --dave

      --
      davecb@spamcop.net
    6. Re:Prevent the problems, don't patch them! by Just+Some+Guy · · Score: 1

      I'm a professional capacity planner, and it seems only the smartest 1% of companies ever think to bring me in to prevent problems.

      Funny - I was just thinking the same thing about me and my specialty.

      --
      Dewey, what part of this looks like authorities should be involved?
    7. Re:Prevent the problems, don't patch them! by davecb · · Score: 1

      Just out of idle curiosity, what do you do?

      --
      davecb@spamcop.net
    8. Re:Prevent the problems, don't patch them! by Just+Some+Guy · · Score: 1

      Just out of idle curiosity, what do you do?

      System administration, network management, email system design. I hedge my bets.

      --
      Dewey, what part of this looks like authorities should be involved?
  61. Not entirely accurate by WindBourne · · Score: 1

    Both India and China who are sucking the jobs have tied their money to our dollar. Yes, china has it in a "basket" that does not match any known formula. They have it fixed. In addition, India recently was trying to strengthen the rupee against the dollar, but numerous companies like Qwest and Verizon threatened to pull out. They dropped trying to untie them.

    --
    I prefer the "u" in honour as it seems to be missing these days.
  62. Re:Frist? by techprophet · · Score: 1

    You hit the nail on the head. Of course there is always what's in my sig too. (just in case I ever change it: For every problem there is a solution that is simple, elegant, and wrong.)

  63. Re:Frist? by ScrewMaster · · Score: 1

    One reason corporations don't like part-time is that as long as you are full-time, you actually tend to work way past 40 hours a week. You do whatever it takes to get the job done, under impossible deadlines.

    Quite the opposite in many cases. Companies like part-timers because they can be worked right up to 39.999 hours per week, thereby allowing the company to avoid paying any bennies (talk about violating the spirit of the law.) Oh, need more hours? Just hire some more part timers. A lot of big companies that laid off huge swaths of their workforce found out that the work still needed to be done ... so they hired back the exact same people for a fraction of the cost. Bit hard on the workers, of course, who suddenly found themselves umemployed and then re-hired, but for less pay and no health insurance or retirement benefits. This kind of treatment of your employees makes perfect sense: that is, if you're a bean-counting android CEO (or a human sociopath in the same position.)

    --
    The higher the technology, the sharper that two-edged sword.
  64. OT: profiling question by zippthorne · · Score: 1

    Speaking of which, are there any good tools for profiling your system in a little more detail?

    At the consumer level, the knobs I can turn are:

            CPU speed, Last-level cache, RAM size, RAM speed, FSB speed, HDD size, speed, RPMs, GPU speed, GPU RAM size, GPU bus type&speed, GPU shared memory (if applicable), and probably more, but those are the easy-ies.

    But top and task manager are not nearly detailed enough to make guesses about which improvements would actually be useful, and if you've got an upgrade budget of one or two hundred dollars, you can only make one dramatic change or two or three small changes. Across the board = new system, but then I have to guess what combo of those is most efficient.

    anyway, I'd really like to be able to buy a cheap, but upgradable system, load the software I'm going to use on it, and then determine what additional upgrades, if any, to bother with.

    For instance, does an extra 4 MB of L2 cache really make a difference? (most importantly, would it make a difference to me?) Would it be better to just spend that money on RAM, or would the applications I'm running not actually need any more?

    --
    Can you be Even More Awesome?!
  65. Anectodical counter example by Sique · · Score: 5, Insightful

    When I was programmer, we once had a programming job at a large bank. One of our main reports was running across all booked loans and calculated the futural finance stream (interest and amortization) either until the debt was paid off, or up to 40 years at current interest rates. This report was sent to the Federal Bank for control, and to the department tasked with managing the bonds to get enough capital for further loans.

    This report took 200 processor hours to complete. To get it done, it was split into 18 tranches, each running 11 hours. So it was possible to complete the job during a weekend run on 18 processors, and restart it twice in case of errors.

    A colleague of mine took the task to rewrite the report to speed it up. For that she hooked into each booking that changed the amount of loan or the interest rate, repayment, end-of-contract or amortization and modified it so it wrote a flag into a table.

    Then she rewrote the central report to store the calculated finance stream each time it was calculated. Loans that were unchanged since the last calculation didn't have a flag set, so the report took the old calculation. This sped up the report about 150 times: Instead of 200 processor hours now it completed within 1:20 h.

    It allowed to put four large RS/6000 out of service, cancelling of the service contracts, rescheduling the report to run daily instead on weekends and saving on weekend man hours. With the daily report to the bond managment department also the finance controlling unit became interested and used the report results to refine their own tools. This together easily paid the amount of programming time put into the report.

    As you can see: There are programming task where just throwing more computing power at doesn't solve the problem. It hasn't even to be some high level programming job, sometimes it's a dull task (finding all points in a bookkeeping system where the booking changes the finance stream of a loan is a dull task!), but if someone gets it done, it pays off easily.

    --
    .sig: Sique *sigh*
    1. Re:Anectodical counter example by Krishnoid · · Score: 2, Insightful
      It makes me think that applying data related to this together with Moore's law could produce a heuristic to estimate the relative benefits of each approach:
      • Say you can optimize the code to give you a shot (P probability) at speeding up your entire operation by a factor of N or by M orders of magnitude, for a cost of D dollars in person-hours
      • speedup/dollar == f(P, N or M, D), a mostly multiplicative estimate assuming you can get a rough idea of P from a profiling run and a little thought about the architecture
      • Applying some form of Moore's law to your hardware setup to compare c (CPU speed), i (I/O speed), and m (amount of memory) of your existing setup, vs C, I, and M for a new setup, costing H dollars in total upgrade costs
      • speedup/dollar == g(c,i,m,C,I,M,H), where g involves knowledge of how much your operation depends on the speed of the various components, again assisted by the profiling run, and likely depends on C/c, I/i, and M/m ratios

      One could compare the speedup/dollar in both cases, and if they're off by some major multiplicative factor adjusted against the absolute dollar figure involved in each case ($100::$200 (expense report) != $3400::$3500 or $3000::$6000 (purchase order)), you'd have a good first guess to use. In your situation, buying even 100x faster hardware wouldn't have improved the situation, and it seems like with one good profiling run (assuming the tools are available), your colleague could have easily made the case, at least in numbers.

    2. Re:Anectodical counter example by Anonymous Coward · · Score: 0

      When I was programmer, we once had a programming job at a large bank.

      I think you need to look into taking that ring off - I've heard it can do *bad* things to people...

  66. One stupid programmer can kill a Cray by tjstork · · Score: 1

    It's one thing to say that you should not spend too much time making optimizations in business applications because they seemingly don't care. However, that is not a license to do things that result in O(n^2) or even O(c^n) performance hits. If I have had a nickel for every time I've seen a double loop to compare lists, or, the effective double loop, like, have an invariant select inside ... it goes on and on and there's a lot of stupid programmers out there and the laws of physics are pretty much on the side of the smart programmers for now. Stupid programmers can make programs too slow and too big to run, without even really thinking about it, because they can't, or they don't.

    --
    This is my sig.
  67. Dangerous slope by mi · · Score: 1

    Not investing in programmers may cause problems, that no amount of hardware can solve. A difference between a linear search though and array vs. implementing a hash-table explodes very quickly, for example, and no hardware can keep up.

    So, if you only have junior developers, who a) don't anticipate this sort of problems; b) only test on small data-sets, you'll hit a wall — and will need a (very expensive) consultant to solve a customer's production problem. A human being can't distinguish a millisecond from a microsecond. Times a million, however, the former turns into 15 minutes, but the latter is only a second...

    Then comes the difference between programmers, who can write a program, and software engineers, who can maintain a software project — not only writing the first version, but managing the project's growth, implementing (and enforcing!) automatic non-regression tests. If you ignore this last aspect, for example, as one company I know did, you'll paint yourself into a corner very quickly with per-customer source-code branches. Why? Because, without proper non-regression tests, fixing one bug may either create or expose another. Bitten by this, your customers will reject upgrades with "pre-emptive" fixes for problems, they haven't encountered (yet) — they'll be (justifiably) afraid of encountering problems, your recent bug-fixes created instead.

    In short, hardware is only one part of a computer system, and solves only some of the problems, that better developers can solve. You may not need many of them (indeed, this leads to its own set of problems), but you need at least some of them to be really good.

    (Oh, and just as we thought, hardware is fast enough for just about anything, XML was imposed to set us all back ten years or so...)

    --
    In Soviet Washington the swamp drains you.
    1. Re:Dangerous slope by Shados · · Score: 1

      Thats correct. You still need someone who can make out bubble sort from quicksort.

      What people who say we should use hardware over programmers usually mean though, is that you don't need to go all out. Take a framework like Java or .NET. They have data structures built in. Sets, hashtables, linked lists... These are generic implementations meant for everyday use. You could throw a computer science guru (well, more like someone who remembers their data structure class...) at them and make them better for a specific business model. Or you can upgrade your CPU.

      Both ways will work fine. Just one way you better hope the programmer types fast to be cost effective.

      Hardware will not allow you to trade a competent developer for a code monkey. It, however, allows you to get a competent developer to do the job of two, by not having to optimize every single line of code. As long as it somewhat scale, there's some caching for the edge cases, and that it remembers to use librairies when available instead of using a sketchy hand-made implementation thats poorly optimized, RAM and new CPUs will pretty much solve 90% of your problems. Just make sure the dev is competent enough to spot the last 10%, which is a LOT easier than having to SOLVE all and every problems.

      Case in point: I have a fairly strong CS and algo background. Over a decade ago that is... by now, I forgot most of it. I remember enough to not do something completly stupid, and I know when to use the cache and all the best practices, but thats really it, by now I forgot the rest. Yet I have systems in productions getting hammered by hundreds of thousands of requests, growing everyday, and the servers didn't so much as hiccup.

      When I have some scalability issue, I can just take the good old Profiler, and I'll spot it within minutes. A couple of years ago, this wouldn't have been possible.

  68. Yeah, this makes sense. by SilentBob0727 · · Score: 1

    "Given the rapid advance of Moore's Law, when does it make sense to throw hardware at a programming problem? As a general rule, I'd say almost always.

    even the most rudimentary math will tell you that it'd take a massive hardware outlay to equal the yearly costs of even a modest five person programming team

    All the hardware in the world isn't going to fix an insidious segmentation fault, or ensure that your database queries properly handle all inputs, or rework a poorly designed algorithm that runs in O(n^n) time. "Throwing hardware at a programming problem" is like trying to fix a flat tire by putting more gas in your car.

    --
    Life would be easier if I had the source code.
  69. It's all a matter of scale by Ritchie70 · · Score: 1

    If it's a one-off program, or a program for in-house use, then throwing hardware at it might make sense.

    I have a deployed base of about 13,000 locations, with 5 - 10 systems per location. Spending $100 per on more memory is talking some real money.

    --
    The preferred solution is to not have a problem.
    1. Re:It's all a matter of scale by Shados · · Score: 1

      Thats why usually a system for this type of environment would be server side, with only the UI on the client... a web application or something in Flex/XBAP/Silverlight/whatever... or even a thick client, but something that does all the heavy processing server side.

      So even if you have 12974170240192740971249071290 locations, you'll still only need to upgrade your servers, unless you decided your UI was going to be in OpenGL

    2. Re:It's all a matter of scale by Ritchie70 · · Score: 1

      That's fine until you look at the cost of guaranteed connectivity to 13,000 locations.

      And guaranteed would be needed, because this is the POS system - if it's down, they're closed.

      --
      The preferred solution is to not have a problem.
    3. Re:It's all a matter of scale by Shados · · Score: 1

      Actually (and I realise this varies widely from company to company), all retail companies (including some of the size you're talking about) I worked for all have server based PoS system. It was required for retail time inventory and sales tracking (I realise this isn't the main focus of a POS, but it was all interconnected)... We just had backup procedures for when the connectivity was down (which simply involved a local mode with synchronisation... not much to it).

      Really depends on requirements, I suppose.

    4. Re:It's all a matter of scale by Ritchie70 · · Score: 1

      We've got some really ugly legacy stuff. 90% of the systems are MS-DOS, including the in-store "server." Inventory is handled by a back-office system, not the POS system proper.

      We're moving slowly to a Windows-based system (Ooh, shiny!) but still the same basic architecture, - local application, in-store basically file server coordinating.

      --
      The preferred solution is to not have a problem.
  70. What could possibly go wrong? by uberjoe · · Score: 1

    Solution: Robot Programmers!

    --

    The days of the digital watch are numbered.

  71. Re:Frist? by Ethanol-fueled · · Score: 1, Interesting

    When developers ask for a new monitor or dual monitors, let them have 'em but mandate that the monitors be in a vertical orientation as opposed to the typical horizontal orientation. That way, they'll have to use the monitors for efficient viewing of code rather than watching movies all day long. It's such a simple idea that I'm surprised that more businesses and coders haven't caught on to it.

  72. Poor man's economics by Spazmania · · Score: 1

    Just throwing hardware at it is what I like to refer to as "poor man's economics." Poor man's economics works like this: you go to K-mart and buy a $20 pair of shoes. They last about 3 months, so then you go back and buy another pair. After a year you've spent $80. The smart guy goes to the Nike outlet and buys a $70 pair of shoes which last the whole year and don't hurt his feet.

    If the software is inefficient enough that additional developer resources could significantly reduce the hardware requirements then chances are unfortunately good that you face another problem with the software: it isn't just inefficient; it's also incorrect.

    Scaling a software system up doesn't mean getting it to run under heavy load. It means architecting the system for parallelism and getting it to produce correct results under heavy load. If your system depends on a database (it usually does) and the database has a probability of bugs corrupting data that varies in proportion to the number of records and the queries per second (it usually does) then just throwing more hardware at it isn't going to solve your problem for long.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    1. Re:Poor man's economics by Shados · · Score: 1

      Depends how you read into it. If I take a web application written in Java, .NET or PHP...let say...Facebook? And I throw a LOT more developer resources at it, rewrite the bottlenecks in raw C, the algorythms in pure assembly optimized for the hardware, get some PhDs in the research development to develop new more advanced operational research algos that cut out the edge cases to improve performance.... I'll get a LOOOOOOOOOOT more performance.

      Is it worth it though? Probably not.

      The whole "throwing hardware instead of dev at a problem" doesn't necessarly mean you're comparing using $100k devs vs $30k code monkeys. It may mean you take less $100k devs and give them better tools, that have some overhead.

    2. Re:Poor man's economics by Spazmania · · Score: 1

      And the rich guy can buy a $500 pair of shoes that are somewhat more comfortable than the $70 Nikes. My point was not that you should optimize slashdot's code so that it can run on a Commodore 64. My point was that if you have a genuine scalability problem, throwing more hardware at it is a temporary solution at best which is likely to cost you more in the long run that hiring someone to correct the system architecture. So you'd better figure out which situation you're dealing with.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    3. Re:Poor man's economics by Shados · · Score: 1

      And the article isn't advocating that you should be using code monkeys and compensate with hardware. Its just saying that you're better off throwing hardware at a problem then hiring an army of PhD. Its two extremes, with the middle being the best... you actually agree, you just disagreed on the extremes :)

  73. Software costs money once by Darkn3ss · · Score: 1

    Every time you buy hardware, you pay for it. Software can be copied an infinite amount of times for the price of the developer. If you are selling things in quantity, it makes sense to always solve problems with software and not hardware. If you're buying one or two, then hardware can be cheaper.

  74. And idiots are fatal by 0xdeadbeef · · Score: 3, Insightful

    The idea expressed in that article isn't just stupid, it is economy destroying, civilization threatening, mind-bogglingly stupid.

    The author is trying to solve the problem of inadequate resources buy spending more to increase the brute force effort toward his already failing solution. It is the mythical man month expressed in CPU horsepower.

    That isn't improving your situation, that is merely delaying your inevitable downfall. You're running to stand still, and eventually your organization will collapse of exhaustion, while your competitors, who invested in smart design and smart people, lap your corpse.

    And if you simply can't afford better people, then your reach is exceeding your grasp. Scale back your ambition, plan for when you can, or accept your niche and buy the third party solutions produced by experts who can write scalable software.

  75. Re:Frist? by tomhudson · · Score: 1

    There should always be someone who says "should we be doing this" - whether it's adding a feature, or even the whole project. I've always maintained that the most bug-free code is the code that never gets written because the [ feature | idea | whatever ] is dropped. Part of the problem is that the people involved in "conceptualizing" what they think is a "really good feature" have terrible math or other instincts.

    Then there's the whole "web apps" thing. People confuse "web apps" with "web pages." The two require completely different skill sets.

    Then there's the problem with "the browser as application platform" model. Eventually, we're going to have to realize that it's better to eliminate the browser and let our apps communicate directly with servers, if we want to have better security and performance.

    ... and buzzwords - "we'll just use xml - that should make it fast." -wtf???

    ... and developers who spend 10 minutes clicking around to do something that can be done in seconds with a text editor ... because their platform of choice doesn't have a proper shell, the most basic tools, and trying to find where the files are on their latest system so you can back everything up is a real pain.

    ... or worse, can't read source code because their tool "hides all that" from them.

  76. Java by s800 · · Score: 1

    It's thinking like this that gives us poorly performing garbage like Java.

    1. Re:Java by mandelbr0t · · Score: 1

      Java performs just fine for jobs for which it is appropriate. It's just not the right tool for many jobs. Writing it correctly helps a lot too.

      --
      "Please describe the scientific nature of the 'whammy'" - Agent Scully
  77. Obviously... by m6ack · · Score: 1

    The author's not a Linux/BSD Kernel developer.

  78. Re:Frist? by infosinger · · Score: 2

    Minor tweak to your presentation-- BIG dual monitors.

  79. That depends on your problem by rrohbeck · · Score: 1

    We have 16 cores and 32GB in our product and still need to optimize the code very carefully. Right now we're looking at Assembler for some of the inner loops. Can't find better algorithms any more and Moore doesn't help enough.

    1. Re:That depends on your problem by Creepy+Crawler · · Score: 0, Troll

      Have you thought about a functional language , so that you could just add X computers with Y cores and Z memory? I'm still learning Erlang, but to a point I can write neat servers that auto scale and balance.

      Once you run the interpreter on each machine (one could use Damn Small Linux as your backbone) and set the network key: on erlang, it is
      erlang:set_cookie(node(), password).

      And it will push your code between so that things just work. As for the interpreted argument, look at Yaws, the Erlang web server. This convinced me.

      --
  80. Double Whammy by MrMunkey · · Score: 1

    Sometimes the work of the programmers end up making the system requirements increase. I work at a hospital, and we've been using the same DEC Alpha server for 14 years. Last year we upgraded our hospital registration and billing software, and ever since then we've been having huge performance issues.

    We got an initial quote (I'm not sure where from) of $400k to $500k to upgrade the hardware. I'm not sure what was in that quote, but I hope that included some really fancy stuff. We're far from ready to close the deal, but at those prices more programmers start looking better.

  81. First Java Post? by tomhudson · · Score: 5, Funny

    When developers ask for a new monitor or dual monitors, let them have 'em but mandate that the monitors be in a vertical orientation [about.com]as opposed to the typical horizontal orientation. That way, they'll have to use the monitors for efficient viewing of code rather than watching movies all day long. It's such a simple idea that I'm surprised that more businesses and coders haven't caught on to it.

    Who will be the first to post "ICodeInJavaWithClassesWithReallyReallyReallyLongNames.youIgnorantClod();" ?

    1. Re:First Java Post? by shutdown+-p+now · · Score: 4, Funny

      std::i_code_in_cpp_with_crptc_cls_names::you_insns_clod();

    2. Re:First Java Post? by apow · · Score: 1

      I've got 2 samsung syncmaster 2232bw, they don't rotate.

      But by the magic of :vsplit, my vim experience improved sensibly in widescreen.

      --

      Rio de Janeiro's dwellers are stupid. No, really.
    3. Re:First Java Post? by mR.bRiGhTsId3 · · Score: 2, Interesting

      It is also sometimes nice to be able to have some form of documentation open next to the code you are writing. I can't imagine needing 2 monitors stacked vertically to effectively edit something.

    4. Re:First Java Post? by tomhudson · · Score: 1

      I can't imagine needing 2 monitors stacked vertically to effectively edit something.

      You can have them logically arranged vertically, while maintaining them physically side-by-side. This way, when you page down, you get new stuff on both monitors. Of course, it's hell for image editing, but that's another story :-)

    5. Re:First Java Post? by sentientbrendan · · Score: 1

      Who will be the first to post "ICodeInJavaWithClassesWithReallyReallyReallyLongNames.youIgnorantClod();" ?

      80 column rule ftw.

      Seriously, if you have a wide screen monitor, you *really* want the 80 column rule. It lets you put two source files side by side.

    6. Re:First Java Post? by tomhudson · · Score: 1

      Who will be the first to post "ICodeInJavaWithClassesWithReallyReallyReallyLongNames.youIgnorantClod();" ?

      80 column rule ftw.

      Seriously, if you have a wide screen monitor, you *really* want the 80 column rule. It lets you put two source files side by side.

      I'd rather have the preprocessor let me use shortcut macros. Oops, java doesn't HAVE a preprocessor. Guess I'll just have to keep passoing my java source through g++ with the -E option.

    7. Re:First Java Post? by severoon · · Score: 1

      The premise of this article is perfectly reasonable. As an example, I once worked with a bad developer that wrote an infinite recursion. When management asked me to debug the issue, I gave them the same advice as in the OP: Why pay me when you can just throw cheap hardware at it?

      Yea, if they'd only listened to me, I'm sure that code would've eventually hit bottom and returned successfully. Instead they stupidly paid me for an hour or so worth of work to track it down and fix it. Idiots.

      --
      but have you considered the following argument: shut up.
    8. Re:First Java Post? by lordSaurontheGreat · · Score: 1

      Any C++ tag beyond 21* characters is truncated. At that point better documentation would serve you better than a more "descriptive" tag.

      * IIRC, YMMV based on compiler.

      --
      Consider yourself spoken to.
    9. Re:First Java Post? by dkf · · Score: 1

      Who will be the first to post "ICodeInJavaWithClassesWithReallyReallyReallyLongNames.youIgnorantClod();" ?

      80 column rule ftw.

      Seriously, if you have a wide screen monitor, you *really* want the 80 column rule. It lets you put two source files side by side.

      Then, if you get another monitor that lets you look at four source files at once. Or you can take one of those columns for documentation and another for your testing console; whatever suits.

      If you're lucky enough to have 3 monitors, I envy you! (Four source files, the doc page and the console for you!)

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    10. Re:First Java Post? by SimonInOz · · Score: 1

      Well ...
      I code in PL1 so I can have variable names with spaces in * 2;

      So there ...

      --
      "Cats like plain crisps"
    11. Re:First Java Post? by Fulcrum+of+Evil · · Score: 1

      serves you right for cluttering up std::

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  82. Re:Frist? by techprophet · · Score: 1

    Then there's the problem with "the browser as application platform" model. Eventually, we're going to have to realize that it's better to eliminate the browser and let our apps communicate directly with servers, if we want to have better security and performance.

    Exactly, the problem with that is that then everyone builds Windows only apps for their sites, locking out Linux and Mac users

  83. Fix bugs with new hardware by Brandybuck · · Score: 1

    Hardware is cheaper than programmers! Fire all programmers and when client bitches about bugs, just add more ram! :-)

    --
    Don't blame me, I didn't vote for either of them!
  84. This has been true for decades by n2rjt · · Score: 1

    In the 80's I worked on an large software project. We had a prototype that showed that the general design was solid, but a complete implementation would take too much memory and run too slow to meet the requirements. We the Software Engineers were nervous and wanted to redesign parts of the system. The manager, however, wasn't worried at all. He told us to go ahead with a full implementation of the original design, because the hardware would catch up. Of course, he was right. The final system worked beautifully, nestled in a corner of the RAM footprint, greatly exceeding the speed requirements. Never waste money optimizing software for hardware deficiencies that will go away. But DO optimize software for inefficiencies that aren't related to hardware! The fastest computer on the planet still takes forever to finish an infinite loop.

  85. Some can be had cheap by symbolset · · Score: 1

    There are a good number of brilliant young people coming up right now who would really love to do some indoor work with no heavy lifting. Not all of them are going to get the chance. It's a horrid waste that many of them are going to go intellectually numb bagging groceries or ruin their backs hanging drywall. They can be had for cheap, at first, and grow into productive and loyal members of your team. If you can find them.

    --
    Help stamp out iliturcy.
  86. This slashvertisement sponsored by... by Anonymous Coward · · Score: 0

    ...Sun Microsystems.

    --k

  87. Re:Frist? by Casandro · · Score: 1

    I agree. I recently brought in an electronic computer to my workplace. It _really_ improved my efficiency a great deal.

    Other points, especially in programming, is good education and the freedom to choose the right tools for the job.

  88. ever hear of big O notation by maraist · · Score: 1

    If you quick and dirty code has any N^2 operations you could throw $1,000,000,000 of 10 year from now hardware and still not have it go fast enough.

    Almost all N^2 and N^3 algorithms are fast as lightning in small test cases. But the junior programmer throws his hands in the air and gives up when it explodes one day for no obvious reason. 11 hits per second for 2 hours instead of the normal 10 hits per second that youlve gotten for the past year. It is very hard to stress test a system sufficiently to reveal all the critical masses needed for catostrophic collapse.

    But the real point is that hardware won't do squat in many inappropriately applied algorithms.

    Consider simple DB nightly maintanance. After a day of high volume you might reveal such a polynomic algorithm such that shutting down mysql with kill -9 is the only way out. If you had 10x faster hard drives or more memory, it would only take an extra 5% of extra volume to oversaturate you again.

    It isn't just O(N^2) you have to worry about. You have synchronization points in code which cause backup just like normal car traffic jams. DB operations. Mutex's. Rpc calls. All need to be carefully considered. You need these thoughts AS you code, not after a profiler or busy day reveals them.

    --
    -Michael
    1. Re:ever hear of big O notation by Shados · · Score: 1

      The thing is, that theory straight out of the school book might be cute and pretty, but in the real world, unless you're working for Oracle or Nvidia, it is -extremely-uncommon. Why? Because anything where you'd need to CARE about it is wrapped in a 3rd party library, or was designed by the ONE computer scientist or functional analyst in the team.

      The programmer need to know just enough to avoid the obvious cases. Anything else will show up in the load tests (which, if you're not working for Ebay, will push your server under significantly higher load than anything it will see in the real world). Then the profiler will find the ONE instance where the "lesser" dev screwed up, you add more CPU and RAM to be safe on the rest, and you're good to go.

      The thing is, modern software development is usually (Im talking quantity here) integration. Getting systems to talk to each other, getting the business rules so the data goes correctly in the database, implementing the interface so you can add some functionality to the 3rd party package... None of this can even BE O(N^2), its all I/O considerations, which isn't solved with better algorythms, its solve with better cashing strategies and better hardware, even if you throw PhDs at it.

      There are parts of many higher end systems that will require the fancy algorythm implementations... for that, you get a fraction of your team to have that as their primary responsability.

      If you're making the next Ebay or the next Nvidia drivers, this is obviously not true at all...but those cases are a tiny little fraction of the real world.

      Note that this doesn't mean you can hire a bunch of idiots. It just means that your SKILLED developers shouldn't spend -too much- time on optimisation. Optimize the OBVIOUS cases, avoid doing something completly stupid... But don't do things like "Oh, I should inline this function call manually because the compiler will not in this case, and making an instance of an object will add a 0.00000001% overhead". That, you throw hardware at it. Its also 99.9% of the cases.

    2. Re:ever hear of big O notation by maraist · · Score: 1

      umm.. hardly. This isn't fancy. No more so than sarchasm is to english.

      Ever write SQL statements? There is a constant trade-off between the number of indexes on a table and the most complex query you'd want to write. Note that the number of joins increases the effective order of your efficiency. If you have a mere 3 joins, you have n * m * o potential operations (which maxes out at n^3). indexes reduce a given join to n * log(n) ops. So the full indexed join would be n + n * log(m) + n * log(o) DB table comparisons to fully render a 3 table join. For n >> m and o, then it smells a lot like O(n). But as m and often o approach n, it's closer to O(n*log(n)) with high constant overhead. Disk access usually helps things by using something like log base 256 disk accesses per n. And of course DBs cache the hell out of recent seeks and often defer disk writes - though transactions completely undo this.

      So a naive programmer that THINKS they know SQL very well might not batch operations into transactions (forcing k * n * log(n) disk writes, where k is the number of indexes). On a query, they may unknowingly use a function/mutator which undoes an index.

      select t1.* from t1 join t2 on t1.day=date(t2.date_time) where t1.col1=? order by t1.col2

      If col1 is a boolean or an otherwise horribly distributed column (such as a varchar that is an effectively enumerated value), then your first index is practically useless (closer to n operations; O(n / k) == n). Your join is on a mutated value of t2.date_time and therefore it's index is completely thrown away. Then finally your col2 sorting represents an n*log(n) disk sort with a worst case of n^2 if quicksort is used by the DB. So for datasets approximately the size of the DB table, you're effectively replicating the table on disk before outputting. Now all this being fully mem-cached might go pretty quickly. But once you put it on a web site where you could get hundreds of simultaneous identical queries, your cache can't fit all the temp-buffers and you spill out to disk for all the writes.. Then you have k * n disk IO operations (for k threads). From all in-mem to all on-disk due to parallel load.

      The fastest you COULD make this is to create a date column on t2 separate from date_time and index it. Create a double-index col1,col2 such that a good DB will not only filter on col1 but be pre-sorted for col2. Note that's separate from a col2 index, which now increases your insert/update overhead.

      So you had n^2 + n * m => O(n^2) for something that SEEMED properly indexed, and in most test cases would be instantaneous (since tests leave the DB cache nice and hot). It isn't until t2 becomes too large to fully fit in cache/memory that the repeated sequence scans almost guarantee a full disk zipping for each matched value of t1.

      And this is a highly trivial query. Many specialized reports can have a dozen or so joins with complex relationships. People often say, well, we know it's 'probably' a slow query so run it at night. It's the queries that are still running in the morning that are killer.

      And my point is that if you have a good working knowledge of HOW these indexes apply to the big-O scheme of things, you can avoid these pitfalls as you write the code.

      Other things where big-O saves the day are when diagnosing WHY something is slow. Often the nested looping is hidden due to the abstracted code.

      Hibernate, for example does a linear processing of all records in the local transaction on every flush. O(n). But if you are batch processing a large file and forget about this fact. Lets say you think you're being clever and run 32 operations in a transaction, then close the transaction.. BUT you decide to reuse your hibernate DB connection/session because.. well.. why not? Turns out hibernate retains the transacted records in an L1 cache between unrelated transactions.. So instead of flushing 32 items once per outer loop, you're really doing O(n^2). Simple mistake, but knowing that the O(n^2) would

      --
      -Michael
    3. Re:ever hear of big O notation by Shados · · Score: 1

      Oooooooooooooooooooooor, you could replace all of the stuff you said by not using a shitty RDBMS, making sure your your hardware is acceptable, running whatever RDBMS you picked's index and statistic optimiser tool, and watch as even a query with 50 joins on a terrabyte of data runs within 0.1 second! WEEEE!

      All of the above could have been done within the time you TYPED YOUR POST. Thats -exactly- what the article was talking about. You need to know enough to avoid totally retarded mistakes, but you seriously don't need to start pulling out all of that to work with a database.

      The worse of all that? Modern RDBMS' query optimisers and statistic analysers will make sure that the SQL you're optimising is NOT running the way you're thinking it will. So looking at the query and analysing how it SHOULD run is pointless: it will be rewritten internally (thus why rdbms without good table statistic supports are slow as hell).

      Obviously this works for you, but I can't beleive this is really cost effective... I mean, just all the talk about the transactions... the RDBMS internally will optimise all of it, so that you batch things in transactions or not, usually will not even affect how internally it is being done, since a modern database will use in memory snapshots of the data, so even if you submit a transaction, it doesn't even mean the data is flushed to disk! So the I/O cost is completly depend on what the engine thinks it should do...it cannot really be predicted...thus, until you see how things behave in action, you may have a lot of surprises...

    4. Re:ever hear of big O notation by maraist · · Score: 1

      Thank you.. You've just proven my point.

      The 'black box' used in the phrase 'a good xxx will optimize it away for me' is exactly what's wrong with many new developers I come across.. They don't comprehend that what they're asking is impossible to do in less than (O^n). They instead need to ask different questions.

      Databases don't spontaneously create/destroy indexes on the fly. Each index effectively replicates the total disk space requirements and can take half an hour to create on existing datasets. That's always been an operator or designer's job. Many DBs will cache queries, but there's a big difference. Caching can only be affected by your recent history. Indexing is a contract between you and your data such that future requests have an upper-bound cost.

      As for transactions, your comment shows you don't understand the point of ACID. That each transaction requires disk synchronization (by definition). If you don't need ACID (e.g. you're not dealing with financial data or other unrecoverable data), then maybe you don't necessarily need transactions. I just feel 'undo' is more useful than the performance cost. If you think battery-backedup RAID controllers get around the ACID sync issue. You still have to wrap the individual operations in disk blocks and call an fsync. Typically you need to adjust a double-buffer while you're at it. I'm merely objecting your expression of a 'shitty RDBMS'.

      Ignoring RDBMS for a moment as you requested. There's still the issue of what data-structures people use. Manually sorted arrays v.s. hashmaps v.s. trees v.s. unorganized bags. Do you explicitly maintain caches v.s. keeping transient working memory sets v.s. recomputing on the fly. If you use caches, do you make them thread-safe? Do you store externally so you can support arbitrary sized data? This is the stuff of pre-optimization that we're talking about.. If you're simply the in the habit of using the data-structures that your native library supports, then it's more of a common best-practice than a overt pre-optimized code (which classically has the potential of introducing bugs). For example, in java, ehcache is a trivial (to use) tool which handles almost all these concerns (except for tree/ordered lists). It's pretty bug free, easy to use and is well behaved in most environments. The trick is newbies several years out of college would have no clue. 5 minutes of a seasoned programmer could make a data-set operate in O(n*log(n)) instead of O(n^2).. No amount of hardware can be thrown at the problem to scale the naive solution.

      In a sense I agree with you about black box tool kits (DB indexing, ehcache hash-maps, library data-structures). But I profoundly believe that every developer needs to apply big-O analysis to their work as they code. not as an afterthought or during the profiling stages.

      Simple rules:
      Never [directly] use global variables.
      Never use gotos
      Never use O(N^2) or otherwise unbounded O(n * m) algorithms.

      Doesn't seem like too much to ask.

      --
      -Michael
  89. What it usually means... by hjsolbrig · · Score: 1

    What it usually meaning to "throw hardware at a problem" is that an organization is going tolerate a bad design. The problem is an organization also requires highly paid people to manage a large hardware configuration. Throwing hardware at a problem often requires that your to tweak the basic program for the larger hardware configuration. This takes away from the time that a programming team could be spending on improving the basic design of the system.
    Programmers may be expensive. But if you have a poor algorithm, one that does not scale, then you will throw an exponential amount of hardware at the problem.

    This article seems like something of a step backwards to the attitudes of the 90's. One of the Really Good Things about modern lightweight methodologies like Scrum and XP is that they are getting away from seeing the programmer as a dollars-per-hour resource and realizing that lack of quality is always more expensive. Doing the job poorly always cost more in the long run. A management system that thinks otherwise will fail in any reasonably long run.

    1. Re:What it usually means... by bnenning · · Score: 1

      What it usually meaning to "throw hardware at a problem" is that an organization is going tolerate a bad design.

      Throwing hardware at a problem isn't an excuse for using a bubble sort, or linear search instead of a hash table. It *is* often an excuse for not rewriting a well-designed and working PHP or Python application in C.

      But if you have a poor algorithm, one that does not scale, then you will throw an exponential amount of hardware at the problem.

      Right. Better hardware is often the best solution for reducing the constant factor in your O(N) algorithms. It won't help if you're at O(N^3).

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
  90. Until the last 'expensive' human is eliminated by Anonymous Coward · · Score: 0

    What is being ignored is the fact that programmers are already doing this with Open Source. Zero expense programmers. But that is not enough.
     
    Fewer decently paid programmers means less innovation - No Google because the machine that replaced the programmer decided it would require pesky 'expensive' programmers to create it and therefore did not.
     
    An underpaid programmer has little incentive to innovate simply because the other aspects of life drain his or her energy away from innovation to survival. The main point of paying people well is so they have fewer distractions, no worry about heating the home because there is not enough money coming in. You do get what you pay for. Well paid programmers are more productive, happier, and that translates into a sustainable business.

    Algorithms designed to optimize profit will eventually decide it is cheaper to engage in genocide to eliminate most of those expensive and pesky humans in order to keep fewer and even more expensive humans happy (until they get eliminated in a recursive loop that keeps deciding they are now too 'expensive') - Microsoft Windows Genghis Khan can do this using it's scheduler to repeat the algorithm each month, say.

    We should replace those expensive workers with machines forthwith and take this country back from what it decided to engage in, the notion that all 'men' seek happiness and therefore need to be kept busy doing something useful instead of trying to eat the last pig in town because the machines have decided its too expensive to employ anyone to grow food and distribute it.

    Besides, it will costs a few *illion to figure out how to first create the proper 'failsafe' algorithm, debug it, and then have a firewall preventing any human with nefarious aims from taking it over for personal gain. It can't be done because humans are too imperfect to make something perfect (other than Open Source).
     
    Sounds like 'Metal Gear Solid 4, Guns of the Patriots'. A hero human will be required to rescue us from the bots?

  91. Sort of... by symbolset · · Score: 1

    I've got about 60 3GHz small form desktop PCs with 512MB of RAM and gigabit Ethernet sitting on a couple pallets. Since I already have a few DRBL servers set up for netbooting compute nodes, setting them up as a render or compute cluster would only take a couple days. I've done a few pilots of this in my basement with 4 nodes and the system is said to scale fairly linearly. If I had the watts I could probably get a pretty respectable cluster going with little trouble, and the experience would probably come in handy. But I can't afford the time and I don't have the watts.

    It's a shame, too, because I could probably come up with a few hundred of these machines a year at negative cost. Companies are actually paying to be rid of them. Writing apps for this type of cluster would be... educational.

    --
    Help stamp out iliturcy.
    1. Re:Sort of... by Fulcrum+of+Evil · · Score: 1

      It's winter - I'll take 12 :). Actually, I'd love to know where to grab them if they're anywhere near seattle.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    2. Re:Sort of... by symbolset · · Score: 1

      Sorry. They are near enough to Seattle that I could deliver them but I've now promised a school they could have them.

      If that falls through I'll let you know. This problem does come up for me regularly so I'll keep you in mind for when it happens again. I have some constraints on what I can do with them. Grey market is strictly out.

      I am told a heat pump is more efficient -- unless you're also doing something else with the watts.

      --
      Help stamp out iliturcy.
    3. Re:Sort of... by Fulcrum+of+Evil · · Score: 1

      I have forced air (spit!), so if I grab a bunch to play with clustering solutions, it's a wash. I'd do heat pump or gas, but it's an apartment/condo. If I had a proper house, I'd get some surplus rackmount boxes and stick them in the basement.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  92. My Response by dcollins · · Score: 1

    O(2^n)

    --
    We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
  93. Single system image by symbolset · · Score: 1

    There's an economy of scale in deployments. Every extra system image requires a ton of development and deployment time, troubleshooting and repair become more problematic and expensive, and these costs rise exponentially with the number of variant systems. This is why OEMs offer "long term support" product lines that are guaranteed to be image compatible with each other over a span of 7-8 years.

    In short, your salary isn't the only factor here. One way to leverage extra money for more expensive staff is to give them larger, higher resolution monitors and/or multiple monitors, memory upgrades, or other enhancements that don't alter the system image. This allows them to get more work done more than just having a faster PC would without incurring the extra expense that having a bunch of different types of computer would.

    --
    Help stamp out iliturcy.
  94. Re:Frist? by goatpunch · · Score: 4, Insightful

    If they're watching movies all day long, just fire them. No need to re-orient their monitors.

  95. holy shit by unity100 · · Score: 1

    'things are expensive' does NOT solely mean beer, food, tshirts, whores and whatnot.

    EVERYTHING counts. ranges from healthcare costs you pay to the gas station, to prices of houses and whatnot.

    moreover, it is also related to average purchasing power of the people and its distribution.

    a shoe may be sold from $10 in u.s. and $20 in finland. but what matters is, HOW expensive in regard to average person's purchasing power is that 10 or 20. if the corporation is selling it from 10 in u.s., despite avg purchasing power is ,say, $100 a month in u.s., but selling it from $20 in finland despite avg. purchasing power is $300, that means they are selling it more expensive in u.s.

    get a clueeeeeeeee

  96. Not necessarily by Anonymous Coward · · Score: 0

    As an IT Operations person, I've encountered this argument a few times.

    The answer is never simple. Sometimes more hardware is the answer, sometimes more / better programmers are the answer.

    If you disagree, please explain to me how higher end hardware will fix issues where the code gets stuck in an infinite loop. Or a dead lock. Or a . . . (You get the idea)

  97. This is wrong on so many levels. by Anonymous Coward · · Score: 0

    This is wrong on so many levels it's down right scary. It's the sort of thing that PHBs use all the time. There are a ton of hidden assumptions that make this so very wrong.

    Programming is a fungible commodity.
    There is always a trade off between development time and performance.
    Just code it, and if there are any problems we can always go back a do a quick fix.

    Don't get me wrong, I was doing agile development before it was called that, but most of the time the demos and prototypes were thrown out afterwards.

    This is all coming from a guy who actually has made a living performance tuning code.

    First off, USD 5K is a joke for big shops. So right off the bat this limits the scope of the problem, of course PHBs will never understand that.

    Good design means faster, better & cheaper then poor designs. Which is why you want a really good architect. The difference can be several orders of magnitude in performance and be much more accurate. Which is why engineering is not fungible.

    In my case I cost about 3X more then the average developer and can often be 10x more productive, for relatively simply things.

    A case in point. A job was taking 150 minutes on production and needed to take 30. The server was a big honking HPUX box. It would have cost USD 100K or more for the upgrade and then it was not clear how much of a speed up it would be, because it was an Oracle SQL app. The client had their people spend several weeks, say 120 Hrs on it with almost no benefit, just a few minutes.

    They gave me 20 Hrs to examine it and write a prop on how to fix it. 12 hrs later I handed it back, it was running full volume on their test box (smaller then prod) in 18 minutes. About a tenth of the time and with the results they needed.

    If the original developer had bother to spend a little time understanding the data model they would have realized they were doing a partial Cartesian. Creating a 140 million records to then filter out 120 million of them was not really very effective.

    In my career, and granted it has be only on large servers, it is always better to get a few really good people rather then a lot of average ones.

    Really good people even negate part of Brooks Law. They don't slow the project down because they can become productive almost immediately without much help from existing developers.

    The same client gave me an other query to speed up. While pulling it apart to better understand it a logic error was also uncovered. So, not only did they end up with a faster running query but they also got one which was correct.

    Clients usually call me in when things are in big trouble. Getting the cheapest possible resource is rarely a good project plan. You might be able to overpower a problem in Access with hardware, but it rarely works with Tera-bytes of data.

  98. Re:Frist? by zrq · · Score: 1, Interesting

    Dual monitors. They pay for themselves within weeks. This is a real no-brainer.

    Ok, I'll bite .. what do you actually use the 2nd monitor for ?

  99. It works! by Foodie · · Score: 1

    I find that throwing hardware at bad programmers helps to solve this problem. If you want to save some cost, throw bad hardware at bad programmers... you get to throw harder too. The more you practice, the better your throw becomes.

  100. Performance Vs. Scalability by mcrbids · · Score: 2, Interesting

    Although you mention scalability and flexibility, I don't think you really hit the nail on the head.

    Performance and scalability are NOT the same. They are fundamentally different. You can have a weakly performing software product that scales nicely, and you can easily have a high performance application that doesn't scale at all.

    Understanding this difference can be the make/break point in whether or not a mildly profitable company can become a world-changer! It's fairly easy to write high-performance software. But it's quite a bit more difficult to build software that scales!

    It all really comes down to understanding the Schlemiel the Painter algorithm which is RAMPANT in software designs.

    Quite literally, there is simply no way to avoid these types of algorithms, but by designing your software correctly, you can limit the effect of these algorithms on the overall scalability of your software stack as the problem set grows larger and larger.

    And that's software that scales. For example, PHP often scales very nicely, because although it's not a fantastic performer, it's "share nothing" approach means that adding more processes and/or servers doesn't particularly impact your original infrastructure. But if you don't design your application right, PHP can scale miserably, depending on how you manage your resources.

    If you write software, ask yourself: what if the whole world were using your product? Could you handle it? Whatever your answer, if you feel sure of your answer, it's probably because you don't yet understand exactly what it means to scale.

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
    1. Re:Performance Vs. Scalability by petermgreen · · Score: 1

      Exactly, continuing your php example up to a point things are fine, you add some more webservers, split the db onto it's own box and everything hums along nicely.

      Then at some point you find mysql is fully loading down the box it's on. You can put off the inevitable a little by buying a better box but soon enough you have to start thinking about how you are going to manage and/or split the db load or maybe even about wholesale migration to a better db.

      and then you find the nfs server with your uploaded files on is getting overloaded.

      I don't think any system will scale seamlessly, some just do a better job of it than others.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    2. Re:Performance Vs. Scalability by Kijori · · Score: 1

      If you write software, ask yourself: what if the whole world were using your product? Could you handle it? Whatever your answer, if you feel sure of your answer, it's probably because you don't yet understand exactly what it means to scale.

      This reminds me of some advice I took from "Getting Real" by 37 Signals: don't worry about scaling issues until you actually need to. I think this is great advice. Firstly because delaying a product to make sure it scales well just makes it less likely that it will get enough users to need to. Secondly because when you have scaling problems, they probably won't be where you thought - unless you're amazingly good at predicting usage patterns (or your software has one huge bottleneck). To quote from their book:

      "Create a great app and then worry about what to do once it's wildly successful. Otherwise you may waste energy, time, and money fixating on something that never even happens.

      Believe it or not, the bigger problem isn't scaling, it's getting to the point where you have to scale."

    3. Re:Performance Vs. Scalability by mcrbids · · Score: 1

      There's a balance caused by the law of diminishing returns.

      It's easy to get some software that sorta works in a "proof of concept". Getting it to work well requires significantly more effort. Getting it to scale requires another order of magnitude of effort.

      In my own case, we have a hosted software stack that was originally designed to work on a single server in a shared, PHP environment. We got a certain amount of growth room by simply throwing more hardware at it, but we're at the point of an 8-core server with 15k SCSI, performance from a single machine above this level becomes expensive very quickly.

      So we've spent a significant amount of effort over the past year splitting our software into smaller units. Rather than require a super-nasty NFS or SQL server, we've divided the problem by customer so that we can add capacity as needed, to a nearly infinite amount of customers.

      I guess I'd agree to a point - coming up with something compelling is more important that coming up with something that scales. But there were a few decisions that I made early on that make it so much easier now to divide the problem set and scale.

      So, keeping future scalability in mind as you lay out your software stack can make it amazingly easy to do so when the time comes. Simple things, such as having a consistent convention for naming variables, and writing your API so that it's always clear what customer you are dealing with make it soooo much easier to add scalability after you've passed the bar of desirability!

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    4. Re:Performance Vs. Scalability by badkarmadayaccount · · Score: 1

      Is it really that hard to create a Dynabolic/$OpenMOSIXenableddistro cluster, and leave scaling issues to programmers who know about them?

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    5. Re:Performance Vs. Scalability by gbjbaanb · · Score: 1

      So, keeping future scalability in mind as you lay out your software stack can make it amazingly easy to do so when the time comes.

      and that's when you realise that having those expensive experienced programmers wasn't such a cost after all!

    6. Re:Performance Vs. Scalability by petermgreen · · Score: 1

      Have you ever tried putting a db server on an openmosix cluster? If so did you gain anything from doing so? (personally I suspect that doing so would give little if any more performance than a single box)

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    7. Re:Performance Vs. Scalability by Fulcrum+of+Evil · · Score: 1

      Personally, when your DB server is pegged for all reasonable values of hardware, I would do the following: add caching (and refactor strategically to make it work better), split the DB into chunks, rearchitect into services (maybe), and rework the DB schema to eliminate hot spots/allow horizontal partitions. In order of increasing work. The service splitting part is handy with hot spots because you can then do horizontal partitions without telling your clients about it.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  101. Timing is everything by Anonymous Coward · · Score: 0

    I think there will be more developers looking for work in the future, but I don't think the price is going to drop THAT much. I just think you'll be able to find qualified developers more easily.

    Yep, with the increasing number of H1-Bs from India replacing laid-off North American IT personnel it is a race to the bottom. Them with their fake degrees and phony work experience are washing onto the shorelines as we speak.

    As for the article, it makes a lot of sense when you're running in a controlled environment. It's really a no brainier in consulting work. Upgrading hardware or optimizing software will both meet the customers needs only the hardware upgrade is $2,000 and the software optimization costs $20,000.

    Of course, if you're releasing software into the wild and it needs run on many different machines you better make sure it performs well especially if it's a retail product. So spend the extra money and make it really good.

  102. stupid article by Anonymous Coward · · Score: 0

    I must have completely missed what this article is about... hardware cannot replace a human. The largest supercomputers in the world could not do in a million years what a human could do at any moment: reason, think, feel.

    Want to reduce costs? Keep employees from reading and posting on stupid Slashdot articles.

  103. sure in general more hardware is cheaper by TobiasS · · Score: 1

    However, I have seen plenty of example where that is not true.

    Enterprise databases are a great example. While the DBA can often do alot to compensate for dev's bad db code ... sometimes that just is not enough.
    A fulltime employee can work on optimizing code for an entire year before it pays to add another node to the cluster. (server hardware, hba's, fiber switch ports and most importantly oracle licenses). Interestingly enough PHB's often times choose expanding the infrastructure eventhough the ROI is not there citing opportunity cost, etc.

    Another favorite are processes running on new hardware ... the dev just simply did not consider parallelizing the tasks and opted for a monolithic single process approach.

    From my experience most of these issues dont go away by horizontally scaling and eventually they come back to haunt you one way or another.

    Surprisingly, the added cost of administrating added infrastructure is never part of the calculation ... the only consideration is the cost of hardware.

  104. Re:Frist? by cnettel · · Score: 3, Insightful

    Pivoting means that ClearType or favorite subpixel rendering of your choice won't work. And I do really prefer ClearType, in the same way I prefer dualmon and high resolution.

  105. Reality Check by jkeelsnc · · Score: 1

    Our Labor Cost in the US is too high. We have long had the ability to feel we are entitled to new TV's, computers and other things and thus feel justified in a high salary and an insular economic attitude. We can no longer afford this. When programmers in India can be hired for $20,000/yr we need to reassess our expectations for our standard of living. I know this pisses off a lot of people. However, look at Detroit. The UAW demanded $79/Hr to build cars and they were still crap. If we insist on these kind of wages and the standard of living that comes with them then we are dead in the water, especially with the economy tanking now like it hasn't in 25 years.

    1. Re:Reality Check by Fulcrum+of+Evil · · Score: 1

      Hey, good luck on that, but as long as a house in seattle costs $500k and rent is $1200+, I'll be demanding a salary that can support that kind of thing. Or do you think only the few deserve to live in houses they own? Oh, and a good indian programmer is probably already working here.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  106. Title is wrong anyway by Anonymous Coward · · Score: 0

    Hardware is cheap,
    Programmer time is less cheap,
    Operational costs will kill you.

    Hardware is cheap because it's a sunk cost, and for most applications, much less than the sunk cost of the programmer time in writing the code installed.

    See? Two sunk costs.

    Operational costs are with you for the life of the project. If it was well designed, well written, you need maybe a trained monkey once every three months. Almost nobody does that, and besides, many operational costs scale with hardware inputs. Electricity, floorspace, cooling, repairs, networking, monitoring, logging, auditing, patching ... there's a lot that goes on which a lot of developers never even bother thinking about.

    The best code I have ever seen coming out for a serious size of bespoke installation was the direct result of a developer going to the admin corps and asking how to make his code awesome. It was awesome, and while every other facet caused a stream of headaches, his stuff was bulletproof.

    Lesson learned on my end.

  107. Re:Frist? by tomhudson · · Score: 1

    I ran into yet another IE7 css bug. Doesn't support table-row and table-cell attributes, so I had to switch to inline-block.

    However, css doesn't yet support specifying more than 1 column or row for any particular cell - it really is time to start moving client-server apps away from their dependence on browsers. It's one of the reasons I've been boning up on (*gasp*) java.

  108. you need by gravisan · · Score: 1

    over 9000 cpus!!!!!! in all seriousness, this get used so many times, especially by people who use scripting languages (e.g. python/perl/php/ruby/javapoo/next fad) ... who cares if the run time runs like sticky poo down the toilet, just throw more hardware at it.

  109. Re:Frist? by tomhudson · · Score: 1

    Dual monitors. They pay for themselves within weeks. This is a real no-brainer.

    Ok, I'll bite .. what do you actually use the 2nd monitor for ?

    Keep a few shells open for database, man pages, tail -f /var/log/apache2/error_log, dos2unix [filename] for code that someone else munged up, toolbars (layers, tools, etc), compilers (gcc, g++, javac), which, mc, tree, chmod [perms] [filespec], email, searching, testing, notes, etc.

    You can also stretch an IDE or code editor across 2 monitors.

  110. Article makes no sense... by multimediavt · · Score: 1

    Ok, I actually RTFA because the stub made no sense whatsoever and found out the article is no better. Seriously folks, how many "problems" in computing can be solved by legacy software running on faster hardware? Answer: Very few. Here's a for instance:

    I have a piece of code that was written in 1983. It still does everything I need it to do, but I am taking on larger problem sizes with that code and it's starting to run slower than I'd like.

    Without updating the code to take advantage of modern hardware, i.e., multi-core, throwing bigger and faster hardware at the code will not yield the same performance enhancements that throwing an intern, grad student, or other development resource with parallel programming experience at the code. A majority of code written before and even since 1993 is not parallelized and will not gain much from bigger, faster hardware.

    I've seen this argument a thousand times where I worked in academia. Researchers would buy bigger, faster desktop machines to make their code go faster and hit a plateau in performance because the code would not be able to take advantage of this hot new machine. They would then back away from taking on bigger projects with bigger funding because they were unwilling to update their applications. We would then suggest to those that came to us to sit down with a group we setup that would help them rewrite their code so it would work better on modern hardware. It's an arduous and relatively unsupported process, but it needs to be done. Old code and faster hardware will only take you so far, and the sooner you adapt the code the better off you are going to be. Just throwing hardware at a problem is far more wasteful (from a productivity and ROI stand point) than writing better code and being more productive with that hardware.

    My $0.02...

  111. Unbelievable by Francis · · Score: 1

    As far as I can tell, this hasn't been mentioned in the comments so far.

    This is completely moronic - the measure of a programmer is not how fast their code runs. More talented programmers make fewer errors, and better design decisions.

    There's a saying that cheaper programmers are more expensive. Finding and fixing bugs is an immensely expensive undertaking, and cheaper programmers make more of them. Bugs cannot be fixed regardless of how much hardware we throw at the problem, and software quality cannot be recovered no matter how many cheap programmers you use.

    Better programmers also make better design decisions - more elegant, maintainable and extensible code. Software version 2 is a much easier undertaking when most of the development time is not squandered understanding, rewriting and fixing version 1 code.

    That is not to say that throwing more hardware at the problem is a bad idea. We already do - all these managed languages with automatic garbage collection and so on - they free the programmer from worrying about memory management so they can spend more time developing the functionality. This comes at a cost of creating a more compute and memory intensive application.

    --

    --
    #include <malloc.h>
    free(your.mind);
    1. Re:Unbelievable by Shados · · Score: 1

      All what the article is saying is that premature optimisation is a bad idea. Often making your code maintainable, and optimising it to the maximum, are mutually exclusive concepts. If you can throw hardware at the performance issue, you can make sure your code is as maintainable as possible. If its heavily maintainable, when you end up with a bottleneck, THEN you optimise it...but only if it is cost effective.

      Thats all there is to it. They're not saying you should hire code monkeys. They're saying to still hire good programmers, but to shift their focus away from performance, and toward everything ELSE that matters, to throw hardware at it, and if that doesn't work, THEN you could back and you optimise.

      A running joke here is that the first thing you hear when you hire someone out of school, is them asking which type of sort algo they should use to order a 10 element dropdown list. Thats what you want to avoid :)

  112. Short-term thinking by RyoShin · · Score: 1

    Maybe in America and other developed countries. But, at some point these third world countries will move up and out of their current level. As they do so, they'll need both software and hardware to enable them, though they still won't have the funds to purchase en massé what we can.

    When that happens, that will be a huge market. Assuming your software is cost effective for them to begin with, the prospect of having to spend a lot more to update hardware will be a huge pitfall, rather than a convenience.

    Granted, we may be many decades away from such things, but if you get into that mindset now it will be hard to get out of it when you need to.

  113. Great we'll just add 1000 servers... by CRiMSON · · Score: 1

    Who's paying to store them? Provide the B/W? Power? Who's maintaining them?

    More hardware isn't always better.... And in my exp makes problems worse.

    --
    oogly boogly!
  114. In-house or packaged application? by TekPolitik · · Score: 1

    For in-house applications it will always make more sense to spend money on better hardware than a month extra coding, provided throwing the money at hardware will solve the problem. For packaged applications the trade-off is different. That extra month coding adds a negligible amount to the cost of the product when spread over all installations, but the cost of more powerful hardware will be felt in every one of them.

    1. Re:In-house or packaged application? by MarkLR · · Score: 1

      Unless your O(n^3) in house app was apparently tested against a dataset of about 10 items and is now being used for thousands. Having a good initial design is the best way but when that is missing sometimes it is better to redesign an app than try to throw more hardware at it.

  115. Re:Right tool for the job; factor in hidden costs by crowne · · Score: 3, Interesting

    This comes down to choosing the right tool for the job. Perhaps their application is written using frameworks which enable/enforce this kind of normal transactional processing of requests.

    Now if the existing application is the only way that they know how to get to the data, then it may easily become the golden-hammer / silver bullet that gets used for performing an upgrade, rather than writing an external sql script which they might not be familiar with. Add to this the common convention of "nothing touches my database except my application", which has proven to be useful by preventing rogue updates which cause application 'bugs', and the golden-hammer / silver bullet becomes even more appealing.

    SQL script wouldn't be the only non-application choice, there are quite a few good ETL solutions available, however these tend to cost quite a bit and perhaps the vendor does not want to impose another licence fee onto the client. This brings up a point more relevent to the main article thread, when deciding whether to throw people or hardware ata particular problem, you always have to be aware of the hidden costs i.e. licences for all software used including pre-requisites, network capacity, server-room capacity power & cooling etc. Naturally wide-spread use of open source software makes the initial calculation of software licencing cost a lot easier, although I'm sure that there are those who could argue that the savings on open-source software licences are eroded by necessary additional staff costs.

    --
    RTFM is not a radio station.
  116. Re:Frist? by HTRednek · · Score: 0, Offtopic

    Ok, now I realize this may be modded a troll or flamebait, but from a moral perspective it simply must be said.

    LOL! Whoops, right?

    For the confused... our brainiac friend here posted in the wrong article. How fucking dumb do you have to be to do that? And not only that, he replied to another post, instead of posting at the top level. So he was sitting there, writing out his message and feeling all yummy about himself, while the post he was REPLYING TO was right there above it, STARING HIM IN THE FACE:

    Hmmm... sounds like most of the Dr. Who companions.

    He actually responded to this. To THIS. With what he thought was an intelligent post. Ha ha. He was wrong about that.

    YOUR OPINION IS NOW WORTHLESS, AND YOU ARE A FOE, ALAIN94040. For fucking SHAME.

    I realize this is /. and just from our very nature, we tend to score lower in the social graces (just ask our girlfriends, wives, or anyone we made an attempt at becoming one to confirm this) however it just doesn't condone the attitudes and actions of some people. To go on a total rant over something as lame as posting in the wrong spot? You really need to up your Prozac prescription. And to top it off, you didn't have the decency to log in. This in and of itself (to quote another poster...) makes YOUR OPINION WORTHLESS.

    Oh... BTW... Merry Christmas you foul mouthed asshole

  117. Re:Frist? by Bodrius · · Score: 1

    Maybe because it is not a good way to fix the problem, and it would only demotivate good people by making management seem petty?

    If they're watching movies all day instead of working, they wouldn't stop wasting time just because the monitor is not horizontal... it's not like network-enabled computers are not great sources of time-wasting opportunities. The interweb is vast and infinite, after all. If that's the case you have a personnel problem that has little to do with monitors.

    On the other hand, if they are NOT wasting your company's time all day, I don't know how they wouldn't find such a micro-management "mandate" insulting, straight out of a Dilbert cartoon.

    You're saying management knows best exactly how they should read/write their own code? What's next? Enforcing syntax color schemes? IDE layout? Will their manager drop by their office to adjust their desk and chair to the 'mandated ergonomic position', and patrol around to keep an eye on their back posture?

    Companies need to be able to trust their engineers to have enough control of their working environment to optimize their own comfort and effectiveness. If you cannot trust them to set their own monitor for what they do day-to-day, how on earth can you trust their code?

    The vertical orientation is a helpful tip, but it may surprise you to know that sometimes developers need to do more than look at a single window with a single piece of code. In my experience, having more windows / files / tools open is almost always more valuable than the extra vertical space during debugging code... I do tend to find the vertical orientation extremely useful when working in sequential documents (specs, white papers, etc), so any developer should at least try it out.

    But such things depend too much on personal preferences, habits and even eyesight. Mandating them is a great way to get your developers looking for another team / job where they are not treated like 5-year-olds.

    --
    Freedom is the freedom to say 2+2=4, everything else follows...
  118. Re:Frist? by Anonymous Coward · · Score: 0

    If anyone moderates the ridiculous parent post as "insightful" or "informative", that moderator needs to be eviscerated.

    Know how to prevent people from "watching movies all day"? Don't hire employees who do that. And if you accidentally hire one who does? Fire them.

    I am not kidding here. It's such a simple idea that I'm surprised that more businesses and managers haven't caught on to it.

  119. Re:Trashing vs. Thrashing by crowne · · Score: 1

    Thrashing is a violent action such as causing a hard disk to spin fast and long. The effects are generally benign, i.e. there is no damage done when the thRashing stops.

    Trashing causes long term damage, such as installing windows or .net

    But apart from the semantic differences, I would say you're right on the money.

    --
    RTFM is not a radio station.
  120. Re:Frist? by sentientbrendan · · Score: 1

    When developers ask for a new monitor or dual monitors, let them have 'em but mandate that the monitors be in a vertical orientation as opposed to the typical horizontal orientation.

    The point of wide screen monitors is that you put two source files on the screen side by side. A cpp file and its header file. A java file and its unit test. You get the idea.

    What irritates me is that most IDE's won't let you do this properly. Emacs has this built in though, and I've made it work with other editors (slickedit).

    Anyway, if you don't trust your highly paid engineers enough to not spend all day watching movies, then you have other problems.

  121. Know your audience by Anonymous Coward · · Score: 0

    People writing custom code for an in-house system might not see a problem with throwing hardware at a problem. It may very well be a good idea.

    As someone who works on commercial applications that many thousands of people use to make their jobs easier how much is a few hundred hours of additional time worth to write something that actually saves customers time, works right and doesn't otherwise run like total shit? I would say compared to the potential for wasting the customers time the developers time is worth less than shit.

  122. Re:Frist? by sentientbrendan · · Score: 1

    Dual monitors. They pay for themselves within weeks. This is a real no-brainer.

    Ok, I'll bite .. what do you actually use the 2nd monitor for ?

    You have to ask?

    Running the gui application you develop in the other window.
    Run the web application you develop in the other window.
    Documentation.

    Uh... everything you already use virtual desktops for?

  123. Programming lasts longer by sjames · · Score: 1

    If your application is largely static and a one-off, hardware is cheaper than programmers.

    If your app will need to scale larger at some point, the balance could quickly tip the other way. Consider, $100,000 in programmer hours might allow the app to fit in your current farm or $50,000 in hardware will double the saize of the farm to make the app work OK as-is.

    Next year, you need to handle double the load. That'll be another $100,000 in hardware (plus the 50K you initially spent on avoiding paying for developer hours), or just 50K more in hardware (plus the 100K you spent on developers).

    There's your break-even (assuming electricity hasn't gone up in price). One more cycle and the programmer time was cheaper by any measure. That, of course, is for a single-instance app.

    If the app is to be licensed to others, the programmer time probably wins out right away.

    1. Re:Programming lasts longer by Fulcrum+of+Evil · · Score: 1

      Next year, you need to handle double the load.

      That's next year - we need to work right now, and spending the $50k gives us a year to fix the problem.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  124. It's not just hardware by Ashcrow · · Score: 1

    Short answer, make the code as clean and speedy as you can, then any extra hardware needed is an obvious request.

    Long answer ... a lot of people don't think about the other costs. I am a software engineer and, for a while, the group I was in was under an 'operations' org. What I learned was that it's more than hardware, it's also the costs of administration of the hardware (when it breaks, when it's acting up, etc...), the underlying OS (security updates, audits, monitoring, etc..), power/cooling consumption, and the cost of spreading the operational (generally system administration) team X more thin.

    There is a middle ground. If your worried about C++ being to slow then your probably worrying to much (or need better engineers) :-). If your thinking that writing your shiny new app in jruby on top of java inside of an application server, running on top of the CLR then, yeah, 'hardware' becomes expensive and pretty quickly. If you go with proven languages (C, C++, etc..), currently popular languages (Java, C#, PHP, etc..), or up and coming languages (Ruby, Python, Erlang, etc..) your trade off's should be sane (assuming the developers don't take all the short cuts then can to increase hardware).

  125. Team work kids.... by Juliemac · · Score: 1

    "Hardware is no ware with out software", the programmers used to tell me as an EE. Actually, it takes both to work correctly.....

  126. I'd certainly take a 20% cut to work from home by Trepidity · · Score: 1

    You're seriously arguing that it would be an intelligent move to accept a manual-labor, outdoor construction job for $10/hr, when you could get paid $8/hr to work from your bedroom?

  127. Hardware is cheap, Software lasts forever by wolf12886 · · Score: 2, Insightful

    The bottom line is, software improvement is a one time cost, once its done, it's done.

    Hardware solutions on the other hand, though cheaper outright, are reoccurring (you'll need keep upgrading that hardware as it becomes outdated) and scale up with demand (if you double your number of servers, you'll need to double this hardware as well)

    This is why, except in cases were demand won't increase, or the extra hardware is unlikely to become outdated, software solutions tend to be the more economical choice.

  128. Re:Frist? by Anonymous Coward · · Score: 0

    Pivoting means that ClearType or favorite subpixel rendering of your choice won't work. And I do really prefer ClearType, in the same way I prefer dualmon and high resolution.

    Speaking of which, turning on ClearType is another of those "get more productivity for free" scenarios. Jakob Nielsen thinks it might be worth $2000 per year, which is probably overstating it. But it will save a measurable amount of time (meaning a measurable productivity gain) by making text more readable.

  129. Design, algorithms wtf? by Evil+Pete · · Score: 1

    So you get something written in a hurry. You throw X amount of hardware dollars at it. But the thing wont scale well because of the way it is written. So to be viable it has to handle 1,000 times as many users/visitors/items/whatever. And you need to now use X * $1k dollars or something. Good luck.

    Throwing hardware at a problem is the same as throwing money at a problem. Expect to use a lot of money, don't expect to actually solve the problem.

    --
    Bitter and proud of it.
  130. the actual author is an ignoramus by tyme · · Score: 1

    Jeff Atwood is a living example of Sturgeon's Law.

    --
    just a ghost in the machine.
  131. Depends on the envronment by cdrguru · · Score: 1

    In a corporate IT department, it almost always makes sense. Hardware is usually a one-time expenditure and programming resources can consume a awful lot of money when compared to a bigger machine.

    In consumer electronics the problem is completely opposite. If it takes an engineer six months to develop a solution allowing a $1 savings on something with a market life of 5 years and projected total manufacturing run of 5 million units, you are talking about a $5,000,000 savings for what, $3,000 for the Chinese engineer? Even with modest numbers where you might only sell 50,000 units having a savings of $0.10 per unit means $5,000 savings. With software engineering as cheap as it is today, there is no point in making the programmer's life easier. Make the hardware as cheap as possible and the programmers will just have to figure it out. Whatever you save on the hardware will more than make up for increased engineering costs.

    This has been the way it is in consumer electronics since before there were consumers.

    1. Re:Depends on the envronment by Detritus · · Score: 1

      You're neglecting time to market. I'll write the whole thing in assembler if the customer is willing to pay for it. They also have to be willing to accept the schedule impact.

      --
      Mea navis aericumbens anguillis abundat
    2. Re:Depends on the envronment by Anonymous Coward · · Score: 0

      "In a corporate IT department, it almost always makes sense. Hardware is usually a one-time expenditure and programming resources can consume a awful lot of money when compared to a bigger machine."

      You forget an IT department has to deal with more than one corporate system and inter-system interactions tend to grow exponentially more than linearly.

      I'm a living example of the "throw it more hardware" mentality. We are an about 50 people consulting/development firm with some half a dozen products (derivatives of a two main codebases) and I'm the systems guy.

      Our codebase sucks (developers are expensive: pay for monkeys and throw more hardware); any antipattern or malpractice (both on the codebase and managerial) you can name, it's there: a maintenance brach per client? check. Not a single DBA in the whole workforce (we are developers, not system monkeys!)? check. No regression tests (our developers are monkeys, but somehow our code is brilliant!)? check. Quite a lot of bussines rules are on the high layers so while we have some "products" they need a deep rewrite and customization for each client? check. Today's today, tomorrow we'll deal with tomorrow's problem s(to the hurting extreme)? check...

      Since "adding more hardware" is cheaper (and it *is* for any single project), add a new environment per project; a new integration box per project; and a preproduction one; and no integration/QA team -they are expensive, if software is slow (it can't fail: our code is brilliant) we'll add more hardware (the project money is exhausted, boss) we'll add more hardware, I say! Since "our code is brilliant" no developer time is reserved for bugs at deployed code (well, to be true, that minimizes the impact of maintaining a brach per client); since our clients give us money in the from or projects, everything is project-oriented; you can forget about money for internal embetterments (like expending efforts on code modularization so each project doesn't mean so much rewrite): they don't bring money to the company... Now, for our 50 employees company I have to maintain 75 servers (and growing: once a project is deployed, it's deployed; not a single minute more expended on documenting or stablishing procedures for a "clean shut off and long term storage" so we can recover resources. Remember: resources are cheap; developers expensive), not counting developer's boxes, all loaded with their own database, Java app server and development frameworks (1 to 3GB each and quite CPU intensive, so while virtualizing certainly helps, it's only to a point), their rack space, electricity and A/C.

      It's no surprise we lose clients but I'm sure management will find a way to "throw more hardware" to solution this problem too (if we still survive it's because we are in a growing market, so while clients that know us "resign" after one-three years/two-three projects with us, we are still making new unkowingly ones).

  132. How expensive? by szundi · · Score: 1

    The formula is not so simple. Hardware for Google is REALLY expensive - big numbers, big money. Now think of it a bit, what if Google had a small number of dumb programmers. Hmm. How much hardware would Google need in such situation? :) Much more, 5*big number = 5*big money. So, programmers expensive? Not simply true.

  133. well, of course... by recharged95 · · Score: 1
    "Hardware Is Cheap, Programmers Are Expensive"

    .

    Hardware is a production line--the problems are narrow-focused, such that R&D can actually do something useful in the short and long terms (investigate a specific topic 100%, e.g. power usage). Software, on the other hand is not a production line yet. The problems are more generalized and can't be focused without wasting money. S/w problems get complex faster. And can never be focused because of the unpredictable user community (can't force them to use something of order of a standard 'plug'). And software problems change faster than hardware problems (where h/w problems are easier to focus on and fix).

  134. I think I missed the point by Anonymous Coward · · Score: 0

    I work at an ASIC company writing software to control our hardware. So yes in the applications I work on throwing hardware (specialized circuits to perform a specific task) at a problem makes a lot sense and can greatly speed up an application. However in this case you don't get rid of programmers or need less skilled programmers.

    Throwing servers at our customers won't help out at all.

    That being said our build environment sucks and they have been throwing servers and cluster solutions at it to no avail. We are basicly coming to a point where we need to throw out all our makefile cludge and re do it because 5 hour builds are just no fun.

  135. Re:Frist? by owlstead · · Score: 1

    If you do this with my monitors, the viewing angles and colors are all screwed up (with some others, they aren't). How many IT departments do you know that will recognize this? And how many will react on this after you've just gotten dual monitors while the other staff hasn't?

    Besides, I keep the project outline or project explorer on the left hand sides most of the time.

  136. Re:Frist? by swillden · · Score: 1

    When developers ask for a new monitor or dual monitors, let them have 'em but mandate that the monitors be in a vertical orientation as opposed to the typical horizontal orientation. That way, they'll have to use the monitors for efficient viewing of code rather than watching movies all day long. It's such a simple idea that I'm surprised that more businesses and coders haven't caught on to it.

    Never used eclipse, I see.

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  137. When? Right now... by religious+freak · · Score: 1

    It's called Java

    --
    If you can read this... 01110101 01110010 00100000 01100001 00100000 01100111 01100101 01100101 01101011
  138. Logic only goes so far in programming by Opportunist · · Score: 1

    Programming certainly is about logic. After all, when all is said, done and coded, you have a logic that produces a certain outcome with certain input (please, no snide comments about black magic and computer voodoo. Computers cannot produce anything but determined outcomes, you all know that one of the most nontrivial problems of IT is to produce genuine random numbers).

    Still, no machine can come up with new ideas, and they cannot create new code. They can slap together existing logic and they can assemble parts to create a whole program, but they cannot create new ways of solving a problem. If you insist in having a logic solve a programming problem, you will end up with the same solution whenever you pit it against the problem. If you want new, faster, better, more solid solution, you have to put a person at the helm.

    What this may result in is that you need fewer programmers, and that only the top level programmers will be able to survive in the field, because the work of lower skilled people can be taken over by machinery. Much like it was in the old days when machines and robots took over for unskilled labour.

    So what this means for us is that we have to become better programmers. Better than any machine.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  139. Re:Frist? by afidel · · Score: 1

    Sorry but HTML/CSS/XML is VERY powerful and offers flexibility in both the way that things get displayed and in the way we tie systems together. Two quick examples, the AJAX platform Google uses for Google Maps has allowed them to write native clients for a whole host of mobile platforms at a fraction of what a tradition client/server system would have, the second is a system we developed for adding accounts payable automation to our systems. We essentially use a local proxy server that intercepts the html from our ERP system and ties it into the AP system and our content management systems. All of this is done without touching the code in the ERP system which would have been massively expensive, required a HUGE testing effort, and would have made the ERP system much harder to upgrade. This is how you use open, flexible systems to avoid the hidden costs so common in legacy platforms.

    --
    There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
  140. Re:Frist? by afidel · · Score: 1

    That's why triple monitor is even better, documentation/debugger in the left window, IDE in the middle, and application in the right monitor. It's extremely useful for me and I'm not even primarily a coder (network admin). I use 3x17" monitors, some people might find a pair of 22+" monitors more useful depending on their workflow and work style, either way it's dirt cheap.

    --
    There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
  141. Thank you for mentioning cleartype by Anonymous Coward · · Score: 0

    http://blogs.zdnet.com/Ou/?p=583

  142. Programmers vs Engineers by Anonymous Coward · · Score: 0

    Another example of the difference between a programmer and a real 'Software Engineer'.

    Performance Analysis, when done early, and correctly can save thousands of dollars, and hundreds of hours of programming time.

    One of the most useful classes I ever took in university as part of a B.Eng a long while ago, was performance analysis of Software and Hardware.

    I can summarize the class as follows:

    Know what your hardware can do.

    Know what your software MUST do.

    Know what [delay/performance] your customers/users can tolerate.

    I have seen to many 'software professionals' use crap like bubble sorts, claiming that 'the user won't know'.

    It works for a dataset of 100, but when it goes to 1000, 10k, 100k, users begin to know.

    Performance analysis AHEAD of time, can save the 'optimization' effort in the back end.

  143. Opportunity cost by Anonymous Coward · · Score: 0

    This article proves _most_ programmers should stick to what they know: Coding and not economics.

    OK you throw more hardware to the performance problem. What will your programmers do meanwhile? Nothing? Will you lay them off and give them 2 months worth of severance?

    What are you going to do when you have to update the code? Hire them back? Well, they have new jobs now and no thank you they don't wanna work for you. So you have to hire and train new guys, and hope they update your code in time for you without losing business or money.

    In another note, I wonder how many other engineering disciplines would discuss something like "Should we solve the root of the problem or just cover up the symptoms?"

  144. Re:Frist? by tomhudson · · Score: 1

    Parsing out xml is slow. Anyone who says "we'll just use xml because it's fast" doesn't know what they're talking about. Also, AJAX isn't tied to xml, despite the name - it can use any data format - tab-delimited, binary, plain-text, csv, json, Heck, it isn't even tied to javascript if you have a browser that supports other scripting language interpreters.

    "We essentially use a local proxy server that intercepts the html from our ERP system and ties it into the AP system and our content management systems"

    Again, an html screen scraper has nothing to do with xml OR css. Additionally, it shows that xml is NOT needed for data transfer.

  145. Huh? by FreeBSD+Daemon · · Score: 1

    Moore's Law is dead. Where have you been?

    Got a 5-10GHz CPU on your desk? Read anything recent from AMD and Intel, and you'll find they're praying for developers to save them by making use of multiple independent CPUs. That's not more Moore's Law advancing anymore than a huge Beowolf cluster or render farm is.

    1. Re:Huh? by Detritus · · Score: 1

      You need to reread Moore's Law.

      --
      Mea navis aericumbens anguillis abundat
    2. Re:Huh? by FreeBSD+Daemon · · Score: 1

      http://techdirt.com/articles/20070918/184633.shtml

      "...even Moore himself hasn't been consistent about what it means -- and the parts most often attributed to Moore aren't accurate at all. ...the original statement from Moore was about doubling every 12 months, and he was the one who later revised it to two years....The specifics of Moore's Law have long since lost their significance."

      You're right. I thought it was tied to component density for a single CPU (core), but it's just number of components on a chip (not even a CPU chip). So I guess a more cores you're not using on a single chip at the same-old-density qualifies as Moore's Law improvement.

  146. Moores law doesn't help much by wonkavader · · Score: 1

    Buying newer, faster hardware usually only speeds things up by a factor of two or four.

    (There are exceptions to this, mostly occurring when you add more memory to eliminate disk access.)

    Conversely, a good programmer MAY (depending on the situation) be able to fix the work of bad programmers to speed the program up by 10x or 100x.

    It always depends on what you need and what you're slowdown is.

  147. Re:Frist? by cplusplus · · Score: 1

    Actually, I went from dual 22" monitors to a single 30" monitor at work, and can never go back. They really do help productivity, and the cost difference between the 30" and dual 22" isn't all that much.

    --
    "False hope is why we'll never run out of natural resources!" - Lewis Black
  148. Stupid Idea by musicmaker · · Score: 2, Interesting

    Ever come across the n+1 selects problem in hibernate. How many junior devs are good enough to figure out whats going on? Not many.

    It means if you are fetching 1,000 records from the database it takes as much as 1,000 times as long as it should. Is halving your dev team cost really worth a 1,000 fold increase in hardware costs because your programmers don't understand the technology properly.

    --
    Everyone is living in a personal delusion, just some are more delusional than others.
    1. Re:Stupid Idea by Shados · · Score: 4, Interesting

      Ever come across the n+1 selects problem in hibernate

      Common issue indeed, and actually a problem with Hibernate... in this day and age, there are algorythms that can be implemented in Object relational mappers to avoid what is at least the common scenario for this to happen in Hibernate or LINQ to SQL/Entity Framework...I'm not sure why it never gets fixed.

      That being said, if you read the article (I know, i know, slashdot), they're talking about premature optimisation. Basically, things like avoiding Hibernate completly because of its overhead, or optimising every single queries as much as possible (even if performance is acceptable) to save every last bit of juice, so that your app can run on 10 megs of RAM instead of 100. They're not, in any way, talking about using shitty programmers, but advocate using GOOD developer's time more efficiently (solving real problems, instead of spending too much time on performance).

      Almost everyone who replied saying it was stupid, almost ALL brought up either how programming mistakes can screw things up, or how its possible to make a system that doesn't scale at all. All those people missed the point.

      You can make a system that is slower, but still scales and is still correctly done a LOT (and I mean a LOT) faster, if you don't go nitpicky and try and optimise everything as you go. You simply avoid doing something totally dumb, code according to best practice, etc, but you're not going to rewrite your system in C to avoid Garbage Collection, you're not going to rewrite the data structures of the framework to squeeze a 1% performance, and you won't avoid Hibernate (completly) to avoid the mapping overhead. You can tap into these time saving paradigms just by upgrading your hardware. You still need competent developers!!! But those competent developers can do more in less time.

      Thats -all- what the author was advocating.

  149. Re:Frist? by lordSaurontheGreat · · Score: 1

    So, basically a rowboat with a competent Boy Scout in it will get farther than an oil tanker piloted by Barak Obama?

    Gee, who would'a thunk that management can make or break a project...

    --
    Consider yourself spoken to.
  150. good luck with that by Anonymous Coward · · Score: 0

    - crappy devices -- you really designing sucks
    - weird mispeled error messages on screen
    - frequent crashes
    - more frequent cracks and thank you thank you my mafia boss likes you data very much thank you thank you data harvest going well
    - mafia bosses paying well, we wok 4 them instead of you
    - ya, you good lunk with that
    - throw you cheap hardware see where it sticks

  151. Re:Frist? by Bigbutt · · Score: 1

    Yep, that's me. I have three monitors. Center for work, right for application viewing, left (vertically) for documentation such as Safari or a PDF.

    Works great. I have a harder time at work because I only have the laptop and an attached monitor (also vertically).

    Yea, the first setup is my home system :D

    [John]

    --
    Shit better not happen!
  152. Re:Frist? by ScrewMaster · · Score: 2, Insightful

    When developers ask for a new monitor or dual monitors, let them have 'em but mandate that the monitors be in a vertical orientation as opposed to the typical horizontal orientation. That way, they'll have to use the monitors for efficient viewing of code rather than watching movies all day long.

    Well, look here. There's a lot of personal preference involved in efficient text handling, and arbitrarily forcing programmers to work in landscape or portrait just so they don't watch movies is ridiculous. Matter of fact, if you have coders doing that on the job, either give them the requisite attitude adjustment, or just fire their happy little asses and hire some responsible citizens. Maybe in their next position they'll be a little more focused.

    Furthermore, I don't know about you but the apps I develop are generally not used with the monitor in a vertical configuration (matter of fact, given the nature of the software I work on that would be completely inappropriate) so it would nullify the advantages of a dual-monitor setup if I were forced to use them the way you describe.

    Continuing this theme, you can't just say, "programmers work better with monitors oriented THIS way." Sure, if you're hacking assembler code a vertical setup might (might!) be better for you because the lines tend to be relatively short, unless you're like me and like lots of comments. If you're coding in .Net or Java, you're probably happier with a horizontal layout given how wordy those languages are (.Net in particular, Christ on a crutch and I thought Cobol was verbose.) I've also found that when I'm editing source code, it's often nice to have the IDE running vertical, with the other, horizontal monitor for both my debug output and the application display itself.

    So, I'd say this: give your developers the tools, training and any good advice they need, and then let each of them figure out what works best. Otherwise you're just another overbearing manager more interested in exerting his authority, rather than running an efficient, productive development team. Beware of arbitrary constraints ... they're rarely helpful and usually counterproductive, because of considerable variation between individuals. We're not all alike, and we're not all maximally productive in the same identical environment.

    It's such a simple idea that I'm surprised that more businesses and coders haven't caught on to it.

    Well, now you know.

    --
    The higher the technology, the sharper that two-edged sword.
  153. Re:Frist? by Anonymous Coward · · Score: 0

    Om nom nom... thanks for feeding me =)

  154. Re:Frist? by Diag · · Score: 1

    I'm not a programmer. I'm an architect / sysadmin type person.

    First monitor - Putty, Word, Visio, or the admin GUI for whatever system I'm looking after at the moment.

    Second monitor - either Outlook, or tail -f /var/log/messages. It depends what I'm working on.

    --
    Serving Suggestion: Defrost
  155. Programmers are expensive?? by Anonymous Coward · · Score: 2, Insightful

    The reality is that programmers are scarce and increasingly so. The vast majority of those masquerading as programmers are merely coders - folks who know a language, a proprietary library and an IDE. Real programmers are engineers - problem solvers who also know languages and how to use them to solve the problems.

    As a result of this misdescription, productivity is low - largely because "solutions" usually prove inadequate at first round and require massive reworking (witness "service packs") - so costs are high. Those who measure "programmer productivity" in lines of code per time perpetuate the problem. The real measure has to be fully functional and robust solutions delivered per time. Against that measure there will always be a few real programmers who are vastly more affordable than the rank and file even though their apparent rates may be higher. The fundamental business problem is to identify them.

  156. does it matter what programmers make by Anonymous Coward · · Score: 1, Interesting

    The more you consider what a programmer makes the more you go towards outsourcing to another country all over again. I thought we dealt with this years ago and realized its not a good idea always or hardly ever to outsource many IT jobs to other countries and I'll let you ponder why.

  157. Can not disagree more by tacocat · · Score: 2, Interesting

    Where I am currently working, a pizza box server has an annual cost of 2.5 developers salaries for the same period of time. It's grossly out of balance from this article.

    Perhaps there is a reason some companies need Government Bailouts...

    1. Re:Can not disagree more by Fulcrum+of+Evil · · Score: 1

      You have to consider that the author is writing for his particular niche - server-hosted apps written by US devs. He's also saying that throwing hardware at a problem is often the most cost effective solution. I don't see why people take issue with that.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  158. Consumer products by WarJolt · · Score: 2, Insightful

    if(units() * savings() > programmercost())
        hireprogrammer();

    When you sell a million units a penny means $10,000 and $1 means a brand new Lamborghini. I guess this article only covers enterprise software where the number of machines thats running your code could be in the thousands. The opposite argument can be made when you talk about consumer products where the unit counts are in the millions.

    1. Re:Consumer products by Anonymous Coward · · Score: 0

      Is this why finding an entry level job as a C++ coder has been a futile endeavor for me during a global-scale economic downward spiral?

  159. Re:Frist? by SHaFT7 · · Score: 1

    This is definitely OT, but you DO realize that it was Sarah Palin that completely re-energized McCain's campaign and was partly responsible for him not losing to Obama in a complete landslide don't you? I don't care if you don't like her, that's your right to an opinion, but don't spread FUD about her, that's just lame.

  160. Re:Frist? by tomhudson · · Score: 1

    I was thinking about getting a 30" as a secondary for my laptop - it's "supposed" to be able to do up to 3k x 2k ... and it's not like I need humongous video refresh rates to write code, but I was wondering about neck strain.

  161. some anecdotal evidence to the contrary by roman_mir · · Score: 4, Interesting

    I am late here for this story, but I would like to add something to it for the sake of the late readers anyway :)

    In the second half of 2001 I was on a project for a long time defunct company called WorldInsure (hey, former Corelan guys, any of you still out there, working for Symcor by any chance?)

    So, I came in about half way into the one year project, in a few months the person who was the most senior developer on the project left but the team was still about 40 people in total. The application was something like 5MegaBucks by the end, but the client didn't want to pay the last million, because the performance was outrageously slow. 12 concurrent transactions per second as opposed to the 200 that the client wanted on 2 gigantic for the time 4 way Sun servers.

    The app was a very detailed page after page insurance questionnaire, that would branch into more and more pages and questions as previous questions were answered. At some point a PDF was generated with the answers and provided on one of the last pages. The problem was with moving from page to page, the waiting times were too long, approaching minute wait times for some pages.

    I was asked to speed it up. Long story short, after 1.5 months of tinkering with code produced by a bunch of novices, here is the list of improvements that I can remember at this point:

    1. Removed about 80% of unnecessary database reading by removing TopLink.
    2. Removed about 80% of unnecessary database writing by changing the way the data was persisted. Instead of persisting the entire data set on each new page, only the incremental changes now were persisted.
    3. Reduced the page pre-processing by getting rid of the XSLT transformers on XML structures and switching to JSPs instead.
    4. Removed cluster IO thrashing by reducing the session object size from unnecessary 1MB to a manageable 10Kb.
    5. Reduced CPU load by caching certain data sets instead of reprocessing them on each request within a user session.
    6. Decoupled PDF generation into a separate application and communicated the request to generate the PDF via a simple home grown message queue done with a database table. This was one of the more serious problems within the app. because it could bring down a server due to the buggy code in the Adobe PDF generator that was used at the time. In fact the original application ran the PDF generation as a separate Java application that would be restarted after about 5 generations and would be called via System.execute call so not to bring down the BEA Weblogic. Later on this entire portion was rewritten and the Adobe code thrown away. I am sure that today the Adobe code is fine and all, but at the time it was a real pig.
    7. Removed many many many many unnecessary System.out.println calls, and replaced with proper logging where needed.
    8. Fixed the home grown servlet manager (similar to Struts main servlet), this code was freaking ugly as hell and totally unstable.

    There were some other smaller fixes, but the main bulk is listed here. By the end of the month and a half the app was doing over 300 simultaneous transactions per second.

    300/12, that's 25 times code performance improvement. I am not at all convinced that this improvement could have been achived through hardware at all, but even if it could, it would have cost much more than what I cost at the time (was like 70CAD/hr for 1.5 months.)

    Oh, did I mention that the client coughed out the last million bucks after that? After all, the code met their performance expectations and exceeded them by half at least.

  162. Re:Frist? by tompaulco · · Score: 1

    I use only a single 20" monitor when developing on Solaris, but I need two when developing for windows. I can't put my finger on it, but somehow in Unix you can manage to get enough information at your fingertips just by opening three or four shell windows, but in Windows, that same amount of information takes much more screen space to display.

    --
    If you are not allowed to question your government then the government has answered your question.
  163. Bad generalization by david.emery · · Score: 1

    A lot depends on the number and cost of deployments. If all you build are 'singleton solutions', applications that run on one set of hardware, the cost perspectives are significantly different than if you're writing software that runs on costly and/or large numbers of deployments.

    As one example, I was working on an Air Traffic Control system in the mid-'90s. The controller workstations were high-end systems with expensive RAM and we had a requirement that the controller applications had to be RAM resident, no swap. I rewrote part of the system and reduced the size of the application by about 50mb. The cost savings in that RAM (a 64mb chip) over the number of workstations we deployed was roughly $1m back then. Was that worth 3 months of my time? Management certainly thought so!

    Imagine the cost savings associated with embedded computing, e.g. printer drivers, anti-lock brake systems, etc.

    There are times when it really bothers me how few people understand things above their 'IT in the office' environment...

    dave

  164. Maybe you want to refine that a bit? by iwein · · Score: 1
    As it is it is one of the stupidest things I read today. Do you seriously think that throwing hardware in whatever quantities can solve a problem other than the need for a pile of useless hardware?

    You'll get my vote if you say that programming for performance is about the last thing you need to worry about, and programming for scalability one of the first. Only when you're program is working and scalable will it make any sense to "throw hardware at it".

    --
    Show a man some news, distract him for an hour. Show a man some mod points, distract him for the rest of his life.
  165. Re:Dual Monitors? by Leynos · · Score: 1

    Any time you have to manipulate data in more than one document, source file, whatever.

    Any time you are editing source whose output can be viewed in real time in another window.

    Any time you are editing a document or sourcefile whilst consulting reference material.

    Every context switch leads to a drop in productivity, Having two monitors helps. A lot. To this I can attest.

    --
    "Did you exchange a walk on part in the war for a lead role in a cage?"
  166. What about muli/manycore? by benbergen · · Score: 1

    This may have been true in the past (I still wouldn't agree completely), but with the changes in hardware that we've been seeing lately, performance gains aren't going to come for free. The Alpha was a great chip, but it's almost a decade old. The free ride of increasing clocks is over. The performance gains of the future are going to require human interaction, i.e., developers.

  167. Re:Frist? by John+Meacham · · Score: 4, Informative

    A handy note for those that don't know, Under X11 in addition to the rgb and bgr subpixel orderings, you can chose vrgb and vgbr vertical orientations to allow subpixel rendering (ClearType) for odd or rotated lcd screens.

    --
    http://notanumber.net/
  168. Hardware often isn't enough by Thundersnatch · · Score: 1

    Hardware can get you a factor of 2x-10x, depending on the bottlnecks of the original applicaiton (it's usually the database tier, or some other "shared state" component).

    Well-concienved algorithmic or architecture changes can net performance gains of 100x or more.

    So if 2-4x is all you need, by all means throw some hardware at the problem. But when you need to shave weeks into hours, a hardware upgrade isn't usually the right answer, and expensive experts (who understand the algorithms, but also memory locality, networking, storage architectures, and other stuff that developers don't usually grok) are worth every penny.

  169. Re:Frist? by jurik · · Score: 1

    Ok, I'll bite .. what do you actually use the 2nd monitor for ?

    Okay I'll bite too ... Pictures of Natalie Portman?

  170. Exception: Government by Anonymous Coward · · Score: 0

    You would think this would be true; but, in fact, 1 piece of 'government quality' hardware is usually many orders as much as the architectural change to make it faster or scale better.

    I say this because I'm in government contracting.. and seeing the government approve a $60,000 database server; across 8 different staging environments.. just to avoid a 2 week piece of work to re-arch.. is commonplace.

  171. There are very few problems by kiick · · Score: 1

    in programming that can be solved by simply "throwing hardware" them. Also, cost is only one constraint on project resources. It is true that good programmers are expensive, but they are the one element that you can't really automate.

    Looked at another way: if you are using programmers to do work that COULD be automated, you are wasting your money. Put your programmers to work building the automation tools. When they are done you can put them to work on other revenue-generating projects.

  172. fin. by Anonymous Coward · · Score: 0

    Nazis. Hitler.
    Fin.

  173. programmers are not all the same by pr100 · · Score: 1

    Good programmers are cheap, bad ones are expensive.

    The difference in value between good and bad programmers is seldom fully reflected in what they get paid.

    Everybody thinks they're a good programmer...

  174. Re:Frist? by Anonymous Coward · · Score: 0

    Check out the Scrum et al video from Google Tech talks.

    http://video.google.com/videoplay?docid=-7230144396191025011

    Seems like a good way to run a team. Heck, you can even apply this to non programming jobs.

  175. Re:Frist? by tomhudson · · Score: 1

    The fact is that Sarah Palin, after the first couple of weeks, was a continual drag on the campaign, except for - wait for it - people who were going to vote republican anyway.

  176. Re:Frist? by tomhudson · · Score: 1

    Thanks - VERY handy.

  177. Re:Frist? by pacinpm · · Score: 1

    Most LCD monitors look horribly in vertical position. Color is not really stable in vertical axis so when you rotate monitor your left eye gets slightly different color than right one. Also you can't use ClearType in vertical mode.

  178. poor code cannot be fixed with hardware by DudeFromMars · · Score: 1

    As a database guy, I would say that:
    Database locking issues with a poor design won't be fixed no matter how much hardware you throw at it, it will just lock up faster.
    Database structures are one of the first products of development, and many (most) developers just try to model the data without any thought to performance.
    The other terrible mistake that many coders make is to process records and fields one at a time instead of using bulk operations.

    The old saw about "Premature Optimization is Evil" is false:
    Making performance a late afterthought guarantees doom that no amount of hardware can fix.

    1. Re:poor code cannot be fixed with hardware by Fulcrum+of+Evil · · Score: 1

      No, the old saw is perfectly apt - would anyone in their right mind optimize before measuring what's slow?

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    2. Re:poor code cannot be fixed with hardware by DudeFromMars · · Score: 1

      If the first time you ever address performance is by "measuring what's slow", then performance was indeed an afterthought - after design, after coding, after testing.

      If you only start thinking about performance that late in the game, your design will probably include more than one peformance degrading decision that is just too painful to rewrite.

    3. Re:poor code cannot be fixed with hardware by Fulcrum+of+Evil · · Score: 1

      You can't optimize something until it's been built. If you address performance requirements before building, that's called design. I think you're confused about what optimization actually is.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    4. Re:poor code cannot be fixed with hardware by DudeFromMars · · Score: 1

      OH,
      So sorry, I thought we were discussing the merits of throwing more hardware at bad code.
      I had not realized this was the discussion for the semantics of the word "optimization."
      Bitter experience has taught me that performance must start with design optimization, long before code optimization.

      Sorry for the snarl, I have been working 6 weeks on "optimizing" a rather critical piece of code where performance was a complete afterthought.
      We have managed to speed it up by an order of magnitude, but poor performance is "baked in" to the design at every level, so there is only so much we can do.

    5. Re:poor code cannot be fixed with hardware by Fulcrum+of+Evil · · Score: 1

      No, I was discussing that whole premature optimization aphorism, which you distorted in order to claim that it was faulty. I'm sorry your code has a crappy design - that's what prototypes, iteration, and capacity planning are for, to show you what your design needs to do before you spend too much time on in.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    6. Re:poor code cannot be fixed with hardware by DudeFromMars · · Score: 1

      >>that's what prototypes, iteration, and capacity planning are for
      So, we are in complete agreement that performance is not an end stage activity.
      Good!

  179. My 2 cents by Anonymous Coward · · Score: 0

    I have an uneasy feeling about compensating slacker/substandard work by throwing better engineered hardware at it. If the hardware/engineering group took this same approach, crappy developers would have no camouflage for their shoddy work.

    Upgrading hardware is always an easy solution and can be done with great results AFTER code optimization. Take some pride in your work.