126

What are the worst false economies (that is ways of saving money that ultimately cost more than they save) prevalent in the software industry and how do you combat them?

gnat
  • 21,442
  • 29
  • 112
  • 288
Jon Hopkins
  • 22,734
  • 11
  • 90
  • 137
  • 2
    :( I have seen to many of these too often. – Tony Nov 17 '10 at 17:03
  • 3
    related http://programmers.stackexchange.com/questions/18585/what-is-the-most-egregious-waste-of-money-you-have-seen-and-what-did-you-do-abou – cmcginty Nov 17 '10 at 20:38
  • @Casey: It's a little bit related, but not entirely. The link you gave deals with money directly, while answers in this question here deals with money and beliefs too. Example, see my answer: http://programmers.stackexchange.com/questions/19573/what-are-the-worst-false-economies-in-software-development/19613#19613 – Gan Nov 18 '10 at 15:46
  • Did you just visited my company.. never mind ;P – pramodc84 Nov 25 '10 at 04:51
  • I've kept this tab open for a long time because I was *really, really* considering asking for knowledgeable views on the current state of COBOL applications. That is, **"Would rewriting the existing COBOL (e.g.) codebase for applications save time and money in the long run? Equivalently, what existing applications would actually benefit from improved performance and maintainability?"** Would you all be interested in such a question? – Mark C Dec 23 '10 at 03:01
  • 1
    @Mark - sounds like a good question, go for it. A few more specifics might be good though. – Jon Hopkins Dec 23 '10 at 09:44
  • hmm like bitcoin, :P – Caffeinated Feb 16 '12 at 18:20

27 Answers27

182

Technical Debt

ie "Just do it quickly, we'll refactor later". Firstly because I have yet to see someone engaging in this behaviour actually refactor later. Secondly because doing things the quick way, instead of the good way makes it harder to add future features or resolve future bugs so you end up losing time in the long run.

Sadly, many still think it saves developer cycles to have them do something fast. I guess it's possible, but I have yet to see it in practice.

Inaimathi
  • 4,884
  • 1
  • 26
  • 34
  • 2
    I can't count the number of times I've seen the management stop developers (2 to 3) for a day then a deployment specialist to crash fix something (and do this numerous times over the product's life cycle) instead of spending 2-4 days to do it right. Great answer. – DevSolo Nov 17 '10 at 12:22
  • 4
    If the time taken to fix is measurable in dollars, e.g. bug fix a shares trading system, then the management decision will lean towards reduced cost. I have found that proposing to "patch it up now to keep it running while we determine the correct fix to make sure this never happens again" satisfies the cost-driven urgency and also gets the right result, but you have to fight for this sometimes. – JBRWilkinson Nov 17 '10 at 14:25
  • 9
    We've got code all over with comments like "This is a hack, replace after the demo" that's been in the base for going on 3 to 5 years now. No one even remembers that it was done at this point, so no one finds it until someone (me) is fixing bugs and runs across it. Needless to say, this object lesson has taught me very well to do it right the first time if I'm in any way able to do so. – CodexArcanum Nov 17 '10 at 20:34
  • 1
    Yeah. It's worth spending a lot of time and effort to build up your reputation to the point that you will be taken seriously when you say, "I can't quantify this for you in dollar terms, but my long experience tells me you will not only save long-run developer time by not making hacks, you will save time for others in the organization, and look better with your customer." – PeterAllenWebb Nov 17 '10 at 23:34
  • 22
    And honestly, I'm continuously shocked by the number of times it doesn't even save short-run time! – PeterAllenWebb Nov 17 '10 at 23:35
  • I wish I could give a +50. – Jed Daniels Nov 18 '10 at 01:04
  • -1. I actually agree with the answer, but the heading completely ruins it. This has nothing to do with Technical Debt. In fact, it is in some sense almost the *opposite* of Technical Debt, since Technical Debt is about *good design*, not bad. If the heading wasn't there, this would be a great answer, but *with* the heading it simply shows that the author and 82 of his peers have no clue what Technical Debt is. – Jörg W Mittag Nov 20 '10 at 15:07
  • 6
    @Jorg - Huh? "Technical debt and design debt are synonymous, neologistic metaphors referring to the eventual consequences of slapdash software architecture and hasty software development." http://en.wikipedia.org/wiki/Technical_debt This is precisely what I'm referring to. A more specific title would perhaps have been "Incurring Technical Debt Without Intent to Repay It", but, many people in this situation tell themselves they actually do intend to repay (but don't), and I wanted a **punchy** title to put in **bold text** at the top. "Technical Debt" seemed to be a good enough summary. – Inaimathi Nov 20 '10 at 16:13
  • 2
    personally I like Steve McConnell post on Tech. Debt http://forums.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx – dark fader Dec 07 '10 at 22:00
  • @TheEmpiricalPr Thanks, that looks like an article I should put in my list to read! – Mark C Dec 23 '10 at 03:10
  • 1
    Yeah, those situations where there's no time to do it properly the first time - but somehow there's always time to redo it. Mainly driven by salespeople, I find. – Alan B Jul 01 '11 at 08:41
  • Users are more accepting of the debt than programmers would like to think. We just have an aversion to doing the same thing twice. – JeffO Feb 16 '12 at 15:17
162

Hiring 2 cheap developers instead of 1 really great. (for the same price)

  • 9
    This one at least seems to have a basis in reality; keep in mind that non-technical people can't tell who the great developers are (so they're very likely to just pay twice as much to a random, consulting idiot than to an actual superstar). – Inaimathi Nov 17 '10 at 12:22
  • 112
    Or sadly, just hiring 1 cheap one... – DevSolo Nov 17 '10 at 12:24
  • @DevSolo: oh yeah, very common. @Inaimathi: of course it's impossible to know before hiring, unless you have serious references. –  Nov 17 '10 at 12:27
  • 4
    ... or hiring a guru where two dummies would do the 1.5 of what guru does for 1.0 of guru's salary :/ – bobah Nov 17 '10 at 12:31
  • 2
    @Piere - what's interesting is that I've seen people do (or try to do this) when they were sure. In one case the chairman (of a 2000 person company) going up to one of the existing programmers who was leaving (who was a 10x programmer) in a bar and asking what he wanted to stay. – Jon Hopkins Nov 17 '10 at 12:39
  • 2
    These 2 programmers would do a job (some type of low level tasks) that 1 guru would not do. – Zzz Nov 17 '10 at 12:48
  • @bobah&igor: nice counter example! –  Nov 17 '10 at 12:58
  • @igor - Absolutely - there is a question of understanding what needs to get done and what skills are really needed to carry out that work. – Jon Hopkins Nov 17 '10 at 13:33
  • 14
    [You dont get 75% of a guru from a dummy](http://www.joelonsoftware.com/articles/HighNotes.html), and any truly good programmer will do what's required without getting snobbish about it. – Peter Boughton Nov 17 '10 at 14:05
  • @Tom: too bad, I've reached my daily cap. But I appreciate your efforts ;) @Pierre: nice firstname –  Nov 17 '10 at 18:18
  • @inaimathi, you're missing the point of consultants, it is primarily to limit internal liability, not only for output. – Jé Queue Nov 17 '10 at 19:08
  • 8
    The 10x or 100x programmers are such insanely incredible value for money; they only get paid 1.5 maybe 2x. As Michael Lopp (Rands in Repose) says, if you only hire one of these in your whole career, it's a net win. – Tim Williscroft Nov 18 '10 at 00:27
  • @Xepoch - I wrote "consulting idiot" because I was thinking of a specific consulting idiot I'm currently working with. It applies equally to employees and consultants; non-technical managers can't tell who the good ones are, so paying any one of them double the going rate is a crap-shoot at best. – Inaimathi Nov 18 '10 at 11:51
  • @Inaimathi - didn't you know? If they're being *paid* twice as much money then they must *be* twice as good! And by that math, paying 10x as much for the insta-guru's from Deep Six Accounting & Consulting, Inc *obviously* means one is getting 10x the work! (At least, that seems to be how certain senior management types see it). :-( – Bob Jarvis - Слава Україні Nov 19 '10 at 02:41
  • @Pierre303, well, what are they to do if you are not available? –  Nov 27 '11 at 06:21
  • @Thorbjørn Ravn Andersen: please elaborate –  Nov 27 '11 at 13:53
  • @Pierre303 just kidding - if there is no great programmer _available_ then what do you do? –  Nov 27 '11 at 14:27
  • 1
    @ThorbjørnRavnAndersen, you pay enough to make him available? – CaffGeek Feb 16 '12 at 18:15
85

My example would be the complete opposite of NimChimpsky's example, namely:

Trying to develop in-house something that can be bought off-the-shelf.

Normally this comes about due to a failure to actually check the market-place to see if something already exists that will solve the problem. This can be compounded by developers who like to "dive in" coding before doing any research and by project managers who fail to factor in that time = money.

One of the most common examples I've seen in my field, web development, are companies trying to develop and in-house CMS system. These invariably start off small, but soon get bloated and out-of-control as features are bolted on, whilst all the time there are plenty of free products and frameworks out-there that would be much better suited.

Dan Diplo
  • 3,900
  • 1
  • 27
  • 30
  • 17
    Just because it can be, doesn't mean it should be. A basic CMS, well yeah why reinvent the wheel. But when you start talking about large scale systems and modelling complex business processes - why try and fit a round peg in a square hole ? Especially if you have existing developers and skills in house. – NimChimpsky Nov 17 '10 at 12:19
  • 9
    @NimChimpsky - I think there are valid examples of both. I've certainly seen people break their business processes and lose advantages they had by trying to fit them to off the shelf software, but I've also seen developers suffering from "not invented here" syndrome code things that they could have just downloaded because it was more interesting for them. – Jon Hopkins Nov 17 '10 at 12:23
  • 3
    @NimChimpsky If the spec requires a bespoke development, then that is fine - it keeps us in jobs :) The problem comes when people don't first check whether there is something already developed that fits the bill and dive straight into development. A little research can go a long way! – Dan Diplo Nov 17 '10 at 12:26
  • Obviously don't just dive in straight away and start developing. I try and use off the shelf (open source) solutions as much as possible. But in certain cases, like that which I highlight, it is a false economy. A little research can also go a long way in the opposite direction! – NimChimpsky Nov 17 '10 at 12:30
  • Normally when I get the requirement specifications or try to solve a problem, I would try to find existing / similar products on the market, preferably free and open source. If there is a good one, I'll just use it. Else, I'll just get some good ideas from the products and build my own product with the ideas fused in. :) – Gan Nov 17 '10 at 14:38
  • 1
    We used to say "a week in the lab can save an afternoon in the library". Same thing goes with software. –  Nov 17 '10 at 19:55
  • 6
    Why reinvent the wheel? Because you're a wheel engineer. Or because your wheel is better than the next guy's wheel. Or because the wheel doesn't fit. See: http://www.mostlymaths.net/2010/03/8-reasons-for-re-inventing-wheel-as.html – Derek Nov 18 '10 at 00:03
  • 2
    Where I work nearly *everything* could be bought OTS - and nearly everything is re-invented in-house because according to our Fearless Leaders (tm) "our environment is so complex that *nothing* on the market could *possibly* handle it". Pfeh! But what the hey - it pays the bills. We got told yesterday that a major component of our software is going to be re-written next year - WITH A GRAPHICAL INTERFACE! Ooooooh-aaaaaaah! I'm all a-twitter... () – Bob Jarvis - Слава Україні Nov 19 '10 at 02:55
72

No dedicated resources for project management

I've experienced several times when a few programmers were contracted, and someone who already has a demanding day-job should have managed the project, but in fact was too busy with other tasks so the project never really gained momentum. The programmers made "prototypes" and stuff, but without a lead, much of it was running in circles to look busy.

Bad equipment for new programmers

I've once experienced a company where the policy was "new programmers have to work on an really old PC with a small screen until they prove they are worthy". No surprise that such a policy caused a negative selection that drove off good people who always have the choice to work in a more sane environment.

user281377
  • 28,352
  • 5
  • 75
  • 130
  • 19
    +1. Not providing good equipment for your employees has "bound to fail" written all over it. – Terence Ponce Nov 17 '10 at 15:07
  • 3
    +1. But note the following: in many companies, hardware budgets fall under infrastructure and kept separate from development budgets. The infrastructure manager isn't going to take a hit against his budget to help alleviate the development manager's budget. I've seen this nasty politic play out several times. – Fil Nov 17 '10 at 18:59
  • 3
    How about bad equipment for ALL programmers? My ex-employer paid us Silicon Valley wages to write code on desktops that had been mediocre five years before. Because of blown deadlines, they laid off half the staff a year ago, and most of the rest in July - but boy, did they save money on equipment! – Bob Murphy Nov 17 '10 at 20:08
  • On the other hand, should the new developer get a better machine than those developers who are already working up to speed? – Kaz Dragon Nov 18 '10 at 09:47
  • 1
    Kaz: Every developer should have an adequate machine. If buying new hardware means that the new developer's PC is a bit better than that of other developers, well, in the worst case you have swap machines if they are the dick-size-compering kind of people. Normal people simply won't care as long as they have the equiment that lets them work efficiently. At the place I'm currently working at, I've got a newer (probably faster) PC than the person who hired me. People who came after me have even newer, probably faster, PCs. Guess what? Nobody cares, because all our machines are fast enough. – user281377 Nov 18 '10 at 10:02
  • +1 for both. The computer thing is a giant wtf; a decent computer is less than $1500 these days. It's not as if a developer needs a workstation with 48 gigs of RAM or something: a great monitor, decent hard drives, a couple of gigs of RAM, their IDE of choice. What more do you need? – asthasr Nov 18 '10 at 16:21
  • I also experienced the bad equipment thing. When I was new, I started programming on a really old Pentium II. Compiling took forever, the IDE was not responding properly. This really took the fun out of programming. – Oliver Weiler Nov 18 '10 at 23:31
  • 3
    When the hardware is inadequate I make it a point to let management know, usually by doing useful work like clipping my toenails or reading the paper during long compiles. I get the old slow machine? Sure, no prob. Oh, you got a rush bug fix and *I've* got to do the build? Sure thing, Mr-Manager-bwana-sahib-dude - see ya in 90 minutes! (Once had a manager ask me what I did all day - I told him "Re-built the app. Four times". "IN EIGHT HOURS?!?" he cried. "No, 'course not", said I. "That took 10 hours". New machine showed up not long after... :-) – Bob Jarvis - Слава Україні Nov 19 '10 at 02:50
  • I experienced having bad equipment when I had my on-the-job training with a large software company. There is no doubt why most of their developers look for better jobs. – jean27 Nov 19 '10 at 03:13
  • The company where I experienced that first-hand justified it like that: "Well, we are not sure if he even stays long enough, why bother". Talk of a self-fulfulling prophecy (though they might have had a point, since there were several other reasons for early departure also) – user281377 Nov 19 '10 at 09:09
  • @syrion: Two gigs isn't nearly enough where I am, and next week I'm getting a new machine with an SSD. I hope it improves my link times.... – David Thornley Nov 19 '10 at 21:45
  • @Syrion Under $1500? How about under $800, including a monitor? I suppose it depends on your standards, but I think $600 is enough to purchase a solid, basic machine, considering that was my estimate a year ago for *gaming* machine (spend the GPU money on RAM or another disk and RAID up). – Mark C Nov 24 '10 at 04:52
71

We can save money by having the programmers double as testers/technical writers

If you are paying programmer salaries for tester/technical writer work, then you are wasting money and likely getting lower quality work than someone who has dedicated their career to that task. Also, when a programmer is up against a tight deadline testing and documentation are very likely to get dropped or done half-ass to meet it.

BTW: Developers are ALWAYS up against a tight deadline.

JohnFx
  • 19,052
  • 8
  • 65
  • 112
  • 12
    The smart people can do anything well fallacy. – Jon Hopkins Nov 17 '10 at 15:33
  • 3
    I've done data entry, although I certainly wasn't going to lower my rates for it. They wanted somebody who'd be fast and accurate for some critical data entry, and they didn't mind paying at least triple data entry rates. Their choice. – David Thornley Nov 17 '10 at 17:39
  • 1
    I'd argue that it's the programmers job to test their code, but I'm not sure if that's what you were referring to. – dreadwail Jun 18 '12 at 23:42
  • 3
    Programmers should test their own code, not to the exclusion of having dedicated testers who are professionals at breaking software. – JohnFx Jun 18 '12 at 23:44
  • 1
    Agree about the technical writing, disagree about testing. Testing is a natural part of writing good software. Technical writing is just too much of a shift from coding. I find I need to change many gears to go from coding to technical writing and it feels like a poor use of my time. – Adam Bruss Oct 30 '12 at 16:40
63

Researching / Reading / Writing code not related to the product development is a waste of resource.

Some programmers and even managers believe in that. Normally, they just do programming based on the knowledge in their heads, and do research and look for answers when they face problems. They don't continuously improve their knowledge proactively. My opinion, we should always keep ourselves up to date, and the knowledge we gathered would be useful to us in solving existing and future problems. Of course, you must allocate your time wisely to do so.

This is also similar to Dan's answer. Some managers just want the developers to quickly dive in and develop the product according to requirements without researching on existing products in the market.

Gan
  • 602
  • 7
  • 10
  • 3
    I wish I could've upvoted this more than once. – MAK Nov 17 '10 at 20:08
  • 1
    Lets write a GUI library. Lets build a messaging toolkit. If you don't SELL the piece of software, it's only a part of a larger thing, for heavens sake just use someone else's implementation. Safety points for using an open source solution, you can always fix and support it if you have to. If you've got the money to buy solutions with source included do so, but beware the poor quality of commercial software components. Vendors rarely sell you the component twice so you may be disappointed once you own it ( I know I've worked places that have been bitten by this before) – Tim Williscroft Nov 18 '10 at 00:33
58

In many cases offshoring costs more money. In my company it's very hard to get new employee slots, we are pushed heavily to outsource. Its also hard to get on-site contractors; there is ratio of 3:1 offshore to onshore they are supposed to maintain. Consequently, many teams just hire a dozen offshore and barely use them at all, just so they can get 4 onsite contractors.

gablin
  • 17,377
  • 22
  • 89
  • 138
Jeremy
  • 4,609
  • 22
  • 22
  • 18
    +1. My experience with off-shoring is that it inevitably costs a good deal more money than it saves. – Adam Crossland Nov 17 '10 at 14:14
  • 2
    +1, but offshore can work if used correctly –  Nov 17 '10 at 21:38
  • But software companies can avoid death marches when "suits" do not run the show. – Job Nov 17 '10 at 23:05
  • 3
    +1. We seem to get different off-shore developers on each new project, meaning the on-shore developers spend most of their time teaching the new off-shore devs the business and technical domain model in addition to providing technical support. End of project and they're gone somewhere else and we start all over again with the next set of 'cheap' developers. – Chris Knight Nov 17 '10 at 23:57
  • 8
    *many teams just hire a dozen offshore and barely use them at all, just so they can get 4 onsite contractors.* Wow. – poolie Nov 18 '10 at 00:10
  • 1
    And forgetting that offshoring will by it's very nature extend the deadline. We have offshore QA and it can take 3-4 days to reslove something that twp people in the same office could resoilve in under an hour due to time differnces. – HLGEM Feb 16 '12 at 18:38
50

Long feedback loops!

It happens to everybody: you build something that you think is awesome, and it turns out you were wrong. That isn't the problem. The problem is how long you spend building before finding out that you should stop.

At the high level, you see this problem with long release cycles. If you build for a year without feedback, you're gambling the whole year. The more often you release, the smaller your gambles, and the better you get at gambling.

But it also happens at the lowest levels. As a developer, I really like frequent code reviews (or, better, pair programming) because it limits the amount of time I can continue doing something dumb before somebody says, "Hey, there's a simpler way!" For the same reason, I like my unit tests to run quickly and frequently, so I can catch and kill bugs before they grow.

Once you start noticing the importance of short feedback loops, you'll see it everywhere. E.g., the military notion of the OODA loop.

William Pietri
  • 3,060
  • 1
  • 17
  • 20
  • 6
    +1. Also: the longer the feedback loop, the less you remember about the task. At the extreme, you need to re-acquaint yourself with the entire codebase all over again. – Joseph Tanenbaum Nov 17 '10 at 22:36
  • How is ths a false economy? What is the intended savings? – Chris Pitman Feb 16 '12 at 19:15
  • The intent is to save time "wasted" on things you do every loop. E.g., Building, testing, releasing, paying attention to users. That's the excuse, anyhow. I think it's really rooted in avoidance of discomfort. – William Pietri Feb 28 '12 at 01:15
  • This is why it's imperative that reviewers and pair buddies have humility and respect for the coder as much as possible. One troublesome reviewer who treats the coder poorly and you can guarantee the feedback loop will grow by a lot. – Coder Guy Mar 13 '15 at 00:07
47

Not my own anecdote, but I did once hear of a shop which stopped providing free coffee to its developers, telling them instead that any time they wanted to get coffee, they were free to walk to the nearest coffee shop (something like a ten minute trip each way) and purchase some.

Pretty much the definition of false economy.

EricBoersma
  • 2,004
  • 14
  • 16
  • 4
    That's pretty special. Compare and contrast with some of the merchant banks in London who had a subsidised Starbucks built in the building to eliminate the time it took to go out and get coffee. – Jon Hopkins Nov 17 '10 at 13:43
  • 48
    I disagree that this is automatically a false economy - the 10 minutes of fresh air while walking outside to purchase the coffee will oxygenate the employee and improve their concentration and the (albeit limited) social interaction will reduce depression, especially in winter. Those employees who won't get coffee because it's not free, will likely go home on time, get more sleep and have better health due to reduced caffeine intake. – JBRWilkinson Nov 17 '10 at 14:18
  • 6
    -1, a 20 minute walk is perfect to free up your mind, and get a fresh perspective on the problem. – Malfist Nov 17 '10 at 14:21
  • 23
    @Malfist: As I understood it, it wasn't just the 20 minute walk, but also the 15 minute wait to actually get the coffee that interrupted work. A 45 minute break at any point in the day is pretty much going to destroy productivity for well over an hour and a half. All to save 100 bucks a month on coffee. – EricBoersma Nov 17 '10 at 14:42
  • 8
    20+15=35 [six more characters] – Malfist Nov 17 '10 at 14:48
  • Go out for some air :-) – JBRWilkinson Nov 17 '10 at 15:48
  • 2
    I think all programmers enjoy walks, but they should really comp you for the coffee. – sova Nov 17 '10 at 18:32
  • You can spend 20-40 min. a day fetching coffee, but still be required to meet existing time/productivity demands. – JeffO Nov 17 '10 at 19:48
  • Hey coffee should always be free! That's legal performance-enhancing drug! ;) –  Nov 17 '10 at 21:40
  • 2
    All programmers do *not* enjoy walks - I've worked with plenty that will happily admit there's better food just a few minutes down the road, but they're too lazy and will go to an inferior nearby place. – Peter Boughton Nov 17 '10 at 23:50
  • I'd take away their coffee and give them green tea instead. I'd get better work out of them on tea than coffee. – Tim Williscroft Nov 18 '10 at 00:29
  • Until I joined my present company, I had never worked at a place that, if they had a coffee maker in the office, did not supply an unlimited supply of free coffee. The current place has a coffee maker but you need to bring your own little cups for it. – Wayne Molina May 27 '11 at 17:25
  • Taking a few moments to smile and chat up the barrista will probably do more for morale and productivity than any cup of coffee. – Barry Brown Jul 01 '11 at 07:09
47

Providing single-screen workstations because a second monitor is too expensive. Even if it only saves you an hour of work each year, an second screen is still a good investment. I know for sure that mine has saved me many, many hours of work.

A Multi-monitor setup can make almost any task more efficient, not only development tasks. Three monitors is even better than two, but the effect becomes less pronounced with every extra screen.

Multi-monitor setups:

  • decrease window switching overhead
  • allow you to keep an eye on stuff running in the background (mail, compilation, etc.).
  • give you a feeling of freedom. It's like being in an atrium vs. being in a broom closet.
  • etc...
Joseph Tanenbaum
  • 842
  • 5
  • 11
  • 2
    Was facing exactly that issue once. Wrote a mail to one of our CEOs explicitely calculating that given a 5% increase in efficiency I would have saved an amount of money worth the monitor in about half a month relative to my net income. This calculation was pretty much ironclad ... but ... I guess you already know the end of the story :) – Raffael Sep 07 '11 at 08:26
39

Cheapest hardware given to a consultant when the consultant cost more than 150$/hour.

Putting it in perspective a better hardware may at least make the job 30min more effective per day. That would give 30min * 20 days of work per month=600min/month =10hours/month > more that 1 day job = 10 hours*150$/hour = 1500$

Now wouldn't a consultant work more efficient if he/she had a 1500$ computer? Would it make the consultant less irritated?

Now the problem seems to be that there two budgets, one for the consultant and one for the PC hardware.

Amir Rezaei
  • 10,938
  • 6
  • 61
  • 86
  • 8
    As a consultant, I've been there, done that, and got the t-shirt. (Only got $80/hour, though.) But hey, that's one reason I like hourly contracting. Unlike a salaried position, if a consulting client chooses to waste my time and I have to work extra to make up for it, that's more money in my pocket. – Bob Murphy Nov 17 '10 at 22:45
  • +1 I would extend this to say "cheapest hardware given to development staff" as some places I've been it didn't matter if you were a consultant or not...everyone got old equipment. – Bernard Dy Nov 18 '10 at 04:30
  • 2
    No offense, but if I'm paying $150/hr for a consultant, he'd better have his own computer. – Steven Evers Nov 18 '10 at 16:41
  • 8
    @SnOrfus: That doesn't usually work in the corporate environment, where there is strict control of the PCs which are allowed on the domain. You have to provide them with hardware. – HardCode Nov 18 '10 at 22:04
  • 1
    @HardCode - Yea, I suppose. I can see the point now. – Steven Evers Nov 19 '10 at 05:42
  • 1
    I agree with @SnOrfus, in my experience corporate provide you with a PC because of security issues. – Amir Rezaei Nov 19 '10 at 07:53
  • 3
    @HardCode On a recent project, instead of adding us (contractors) to their internal corporate network, they quarantined us to our own DSL line. A dedicated DSL line for 3 developers @ $40 a month is chump change and it made it easy for us to push updates remotely without sending the IT staff into a panic. Plus, if the production PC running our code gets infected and crashes, it's automatically our fault since we're responsible for the security of our communications and personal laptops. Can you say win-win-win. – Evan Plaice Nov 19 '10 at 17:53
38

Months of work save days of planning

(Not investing enough time into planning)

serg
  • 2,097
  • 3
  • 17
  • 22
  • 21
    In grad school there was a saying that a few weeks in the lab can save you an hour of library time. – David Thornley Nov 17 '10 at 17:42
  • 7
    Yup. When I was taking an undergraduate lab class where we identified unknown chemicals, the prof told us "an hour in the library will save you four in the lab". I took him seriously, and it was hilarious to waltz into the lab for an hour a week and get nasty looks from the pre-meds who were spending twelve hours a week doing amine tests on compounds that clearly weren't amines. And when I taught the same lab several years later, I gave the students the same advice, and just as few actually took it. – Bob Murphy Nov 17 '10 at 22:51
  • 3
    **If you fail to plan, you plan to fail** –  Jun 19 '11 at 16:41
27

Most prevalent I suspect is managers simply not providing developers with the tools they need to do their job efficiently.

Basically, point 9 on the Joel Test.

richeym
  • 3,007
  • 3
  • 22
  • 23
  • 2
    I've been on projects where they'd make us waste a week or two instead of buying, for example, a library for $300 with the work already done - and better (we're not "control developers" where I work.) Or pick some software tool "because it's made by "this or that" company" instead of looking if there are better alternatives, then make our life hell for years. – MetalMikester Nov 17 '10 at 12:59
  • I've run into that one myself. The PM/client reasoning was we didn't have a budget item to purchase things for the client (contact changes were a bitch) so we would have to reinvent the wheel (again). – Ken Henderson Nov 18 '10 at 00:05
24

"Throw (enough) bodies at the problem" may still be used in some places, unfortunately. Brook's Law does counter this from The Mythical Man-Month, though some require experience to learn this lesson. Generally this isn't something within my power to stop as management may believe the false statement about adding people and not having to pay a price for it.

JB King
  • 16,795
  • 1
  • 40
  • 76
21

Everyday meetings:

(meeting duration in hours) x (Y team members) x (average salary per hour) = ...  
Zzz
  • 631
  • 7
  • 18
  • 9
    Having meeting just for the sake of having meeting... – Gan Nov 18 '10 at 15:34
  • 5
    Agenda for today: What will be on the agenda for tomorrow's meeting? – Mark C Dec 23 '10 at 04:24
  • 9
    Daily meeting are fine if these are _short;_ Scrum-style 3-minute stand-up meetings don't waste much time but keep everyone aware of everyone else's developments. Long meetings with numerous disinterested participants are toxic, though. – 9000 Sep 07 '11 at 01:38
  • 3
    @Mark C - It may sound like a joke, but I have actually been invited to meetings to plan what would be the agenda of the next days meeting... – Gavin Coates Sep 07 '11 at 08:36
  • @Gavin Coates it's a real and situation...:) – Zzz Sep 07 '11 at 08:40
  • also known as "meetingitis" (pun on Meningitis) – Ingo Sep 07 '11 at 11:03
  • @Gavin Sometimes you need that, but it might be best if it's shorter and only involves a few key persons. – Mark C Sep 18 '11 at 03:37
20

Buying off the shelf software instead of developing it internally.

I have experience of entreprise scale management systems, focussed on both HR and Biological Laboratories.

An off the shelf solution cost £50-100k and needed further development and customisation to meet the business requirements.

The internally developed solution took (<6) months to develop, with other projects being worked on in parallel, and utilized an already employed developer.

I went from the public sector where we had an internally developed LIMS (lab information management system) up and running, to a large international pharmaceutical where the implemention of an off the shelf solution had taken over a year and was nowhere complete.

(6 months of an already hired developer working on other projects in parallel. So ~10k. And that doesn't include the support costs associated with the off shelf solution). The major point is that the internally developed system was actually being used! So you then have the added cost benefit associated with that, which I cannot calculate.

I'd agree for basic websites etc, why bother developing your own. But for any large complex systems and if you already have in house skills, I'd build it myself.

NimChimpsky
  • 4,627
  • 4
  • 26
  • 39
  • 26
    I bet there are a bunch of examples of the opposite too. – Jon Hopkins Nov 17 '10 at 11:52
  • Yeah, me too.... could you give an exemple of software you did not choose to buy and develop yourself instead and explain how much money you saved by doing so? –  Nov 17 '10 at 11:53
  • @Pierre 303, edited, any example of the opposite then ? – NimChimpsky Nov 17 '10 at 12:14
  • @NimChimpsky: thanks for putting the cost of the software, but you did not put the cost of the internaly built solution. Oh, examples? Of course, I've seen teams building their own ORM from scratch, their own logging library, their own charting library, their own everything... –  Nov 17 '10 at 12:18
  • @Pierre 303 A logging lib and a charting lib are the exact things that I would not do myself, I would go so far as to say that seems ridiculous. they have common functionality, the area I have highlighted does not. – NimChimpsky Nov 17 '10 at 12:23
  • 13
    To buy or develop comes down to the right people doing due diligence. Simple as that. Think before you act. (+1) – DevSolo Nov 17 '10 at 12:24
  • 4
    @DevSolo : spot on. The build-or-buy decision should be backed by a cost-benefits analysis, rather than an emotive 'not invented here' or 'I love XXX's software' attitude. – JBRWilkinson Nov 17 '10 at 14:22
  • 9
    If you're going to make a blanket statement about build vs. buy, it should be: prefer to buy solutions to problems that aren't part of your company's core competency. It's not always the right answer, but it's a sensible default position, and about as reliable as a cliché can be. To say that buying off-the-shelf software is a false economy, though, isn't even a useful cliché.I feel your pain w.r.t. to 'E' solutions (which is supposed to mean 'Enterprise', but really means 'Expensive'). But the presence of bad options doesn't mean there aren't good ones out there. – evadeflow Nov 17 '10 at 21:50
  • http://www.mostlymaths.net/2010/03/8-reasons-for-re-inventing-wheel-as.html – Derek Nov 18 '10 at 00:06
  • 1
    Counter examples: developing your own GUI toolkit. ( In the 200x's!) Writing your own messaging/RPC system. Hmm, these seem to be library components.. maybe this is a discriminating factor – Tim Williscroft Nov 18 '10 at 00:36
  • 1
    Pro example: I wrote a Shipping/Goods system to use when the real (Finanical) system was doing month-end processing. (Month end took 3-4 days) It cached data till the real system was back up. One of my superiors commented they should have just locked me in a room for a year and they could have saved $1M by not buying the ERP system that replaced the old, slow one. I took a week to make the extremely sketchy interim system. Still, I could have ported the old system to an open system; but nobody beleived I could just decompile the libraries they needed. – Tim Williscroft Nov 18 '10 at 00:41
  • 2
    I think the issue is buying and **then still needing further development and customisation**, the cost of a little customisation on a large brought in system can often be more then writing your own small system that just does what you want. So buy if you can work the way the system you are buying expects you to work, but **buy & customisation can give the worse of both sides!** – Ian Feb 16 '12 at 14:54
15

Buying expensive off-the-shelve products when the open source alternatives are better and free.

How many companies use git? How many companies use some crappy enterprisey version control?

hasen
  • 1,389
  • 1
  • 13
  • 15
  • 1
    Erm, can this be considered "worst false economy"? Or probably you need to elaborate more...? – Gan Nov 18 '10 at 01:16
  • This happens a lot where managers are older and can remember when open-source stuff was behind commercial stuff in more areas. – MGOwen Nov 18 '10 at 01:21
  • 3
    I'm not sure I completely agree with the example of source control, at the very least. Git was specifically engineered to solve open-source problems: Many developers, little central control, many branches, etc. The "enterprisey" software works under a different set of assumptions: The need to manage a variety of products across a business, security, workflow, etc. – PeterAllenWebb Nov 18 '10 at 02:24
  • 1
    @Gan: They think using open source is the false economy, but they have it all backwards. – hasen Nov 18 '10 at 02:53
  • 3
    I'm a contributor to X11 and GNOME, and quite competent at using git and administering gitosis servers. Nonetheless, this summer I switched my consulting work from git to a personally-paid-for Perforce server because it does a lot of things automatically that you have to do manually with git. Since I get paid for delivering code and not screwing around with version control, using and paying for "crappy enterprisey version control" is far more cost-effective for than using git. – Bob Murphy Nov 18 '10 at 05:36
  • 7
    Open source vs. commercial products is really a "case by case" basis in my experience. – MetalMikester Nov 18 '10 at 12:27
  • 1
    @MetalMikester, that's why I put a "when" clause; I'm talking about cases when free alternatives are better, and there are a lot of such cases. – hasen Nov 18 '10 at 19:01
  • 1
    Yeah. You might rephrase this as making the wrong choice. I'm not going to do anything to the 3-D PDF software on my own initiative as long as we're using the OS U3D package. – David Thornley Nov 19 '10 at 21:52
14

Using "simple" languages without much expressiveness

Yeah, it makes it easier to find programmers to maintain the code, but it makes it harder to find good programmers who don't just learn the latest buzzword that will get them hired. Yeah, it makes individual bits code easier to understand, but it also makes it about as rigid as a 2x4 and increases the volume of code that needs to be understood. Yeah, it's backed by a huge corporation, but said huge corporation innovates slowly and bureaucratically.

dsimcha
  • 17,224
  • 9
  • 64
  • 81
  • Not sure that I get what you mean here... – Dan Nov 17 '10 at 17:05
  • 4
    @burnt_hand: I'm basically referring to management's excessive risk aversion in terms of language choice. – dsimcha Nov 17 '10 at 20:10
  • 1
    +1: Just keep using C because "we have those skills and learning some new-fancy language like Python/Perl/PHP adds to much risk". Heard it more than once. Does that mean the team is too stupid to learn a new language? – S.Lott Nov 17 '10 at 21:15
  • 1
    @S.Lott Recruitment agents think you are!, but that's another story – Dan Nov 17 '10 at 21:58
  • 2
    i.e. companies that stick with Java and C# and are too afraid to touch python or ruby because they're not "industry standard", which reminds me of: http://www.paulgraham.com/avg.html – hasen Nov 18 '10 at 02:54
  • 1
    @hansen: The Paul Graham essay is partially what inspired me to write this post. My other inspiration was my work developing libraries (including the standard library) for the D programming language. – dsimcha Nov 18 '10 at 03:16
13

Bad project managers/team lead.

Since one incompetent person’s have the power to ruin the work of a group of people. In the end, the project would do much better without upper management(project/team lead) decisions.

Dose the "Just do it quickly, we'll refactor later" decides.

Amir Rezaei
  • 10,938
  • 6
  • 61
  • 86
  • 4
    I agree that there are bad managers, but "the project would do much better without the upper management decisions"? Generally these are the people who are sponsoring the project. This sounds to me like a little bit like the developers I've met who think understanding the technology is more important than understanding the business and forget who the actual customer is. – Jon Hopkins Nov 17 '10 at 14:11
  • 2
    @Jon Hopkins With upper management I don’t refer the customer. The point is "bad project managers" are those who does mistakes after mistakes, and goes against a group of people. Who do you think decide "Just do it quickly, we'll refactor later". Read the answer with highest rate! – Amir Rezaei Nov 17 '10 at 14:19
  • ah, clearer. I remove my -1. – Jon Hopkins Nov 17 '10 at 14:23
  • I have noticed a disturbing trend of project managers revering time and cost over quality. I'm sure I'm not the only one. PMs like to use the triangle diagram with Cost/Quality/Time on it but Quality always gets the boot first. It's very sad, and institutionalizing and forcing the metrics of project management (PMI) on something as complicated as software only seems to be making things worse. – Bernard Dy Nov 18 '10 at 04:35
  • 1
    @Bernard - time and cost are measureable. Quality? Not so much. Sad but IMO true... – Bob Jarvis - Слава Україні Nov 19 '10 at 03:03
12

Missing user requirements

An important and difficult step of designing a software product is determining what the customer actually wants it to do.

Believe it or not sometimes this part is missing or is outdated. What it comes to cost is that one creates functionalities that the end user never asked for.

Amir Rezaei
  • 10,938
  • 6
  • 61
  • 86
8

Productivity is worth more than creativity

Creativity is difficult to measure in general, and most often impossible to even observe, never mind measure, when it comes to software development. Productivity, on the other hand, can be measure (often poorly), and can be observed.

As a result, developers which can (write more lines of code|write code faster|recite technobabble faster in response to questions|are more visibly productive) tend to be valued more than those which (use fewer lines of code to solve same problem|take longer to write code, but produce a more reliable product|understand the subject matter well enough to answer questions in plain, easy to understand, English|creatively solve problems).

blueberryfields
  • 13,200
  • 8
  • 51
  • 87
6

All below can be bad when used or not used inappropriately

  • external vs inhouse software

  • ISO 9001 compliance (economy - a mitigation of a MSS loss risk if product quality drops)

  • development/QA outsourcing

  • development/build/release/support procedures

bobah
  • 728
  • 4
  • 9
  • How is ISO 9001 a (false) "economy"? – Andrew Grimm Nov 17 '10 at 12:08
  • @Andrew Grimm - the compliance ensures certain quality level which mitigates risks resulting from poor quality (MSS loss for instance) so potential economy is clear. For small departments this may be inappropriate because the losses on overhead are higher then those from potential risk – bobah Nov 17 '10 at 12:12
  • 1
    @Andrew - in my experience it depends what you want it for. If you want it to increase quality, it's probably a false economy as it tends to be expensive and can be ill suited to software. If you want it as a marketing thing or because it's just expecteded in your industry, then it's potentially a good idea. – Jon Hopkins Nov 17 '10 at 12:13
  • @bobah - tend to talk more about development/build/release/support processes? – Jon Hopkins Nov 17 '10 at 12:14
  • @Jon Hopkins - _bad_ example: using continuous integration system in the team of one developer, manual rsync/scp for production releases, three lines IT support for a software for internal use in a company of 25 employees, code reviews for a component with life expectation of 3 months, etc. – bobah Nov 17 '10 at 12:22
  • 5
    @Andrew Grimm - The "only" thing that ISO 9001 guarantees is consistent, repeatable quality. It does not guarantee "high" quality. However, if an ISO 9001 qualification is what's required in the market space the company wants to be in, then it's required. – Vatine Nov 17 '10 at 12:56
  • 1
    @Vatine: What ISO 9001 guarantees is consistent, repeatable process. In some fields, where consistent processes yield consistent quality, that's important. It doesn't guarantee high quality, but if a customer sees something you've done well and knows that you're ISO 9001-certified, they'll be confident of similar quality. – David Thornley Nov 17 '10 at 17:42
  • Wouldn't this make ISO 9001 a bad *investment*, rather than a false *economy*? – Andrew Grimm Nov 17 '10 at 22:34
  • @Andrew Grimm - it is economy indeed, but not for everyone and only when understood accordingly (see Vatine's and David Thornley's comments). You receive a predictable quality control for predictable overhead. Less risk - more profit. – bobah Nov 18 '10 at 07:28
4

Having too many non-billable delivery managers.

Couple of years ago, in our company we had several big budget projects going on and recruitment was at peak. At that time our company hired too many delivery managers (Many of them were non IT!) and very few coders/testers. Manager to Programmer ratio was literally 1:2. Later, after completion of those projects, we had a situation where we had many of these managers (some of them were real slackers) sitting on bench doing nothing. We had one appraisal cycle where everyone got little/no raise (Even us hardworking programmers, sigh) so that company don't have to lay anyone off! Fortunately, company realized this situation and did the RIGHTSIZING in the first quarter this year!

mananjani
  • 1
  • 5
3

Optimization before profiling (aka premature optimization).

Too many times I've seen someone reach for a clever solution which needlessly complicates maintenance and readability on the grounds that it's faster. Naturally, the code hasn't been bench marked (not even with micro-benchmarks), so it quickly becomes "faster based on the more persuasive argument" over a section of code which most likely didn't impact the overall performance of the entire application by much.

As such, it is a very false economy, and the kind of false economy that occasionally entangles even the seasoned pros.

Edwin Buck
  • 489
  • 3
  • 7
3

Limited or no internet access

Because obviously your employees will use use the internet to play facebook games not too research answers to technical questions on Stackoverflow.

In reality of course the internet is a huge productivity boost, and while it may be appropriate to use some sort of site filter for genuinely dodgy sites there is something wrong if it is blocking the visual studio readme file or blocking telford local goverment pages for reason "sex tourism"

jk.
  • 10,216
  • 1
  • 33
  • 43
2

Making your developers use a 15 inch monitor and low spec PC as it is the corporate standard.

Reasonable sized monitors are cheap, quick to install and make the programmers more productive as well as making your programmers think you care about them.

Ian
  • 4,594
  • 18
  • 28
2

Too many Bachelors of Business Administration (or the like), hierarchically organized, that try to apply what they think modern management is about: Bothering people with "KPI"s, "SLA"s and what not, requiring "reports" (without, of course, caring about the infrastructure to generate them), so that programmers waste their days filling in fancy EXCEL sheets, Q4 reports and what not and copy from one great new management tool and paste into another one (it seems to be the rule that these tools are never inegrated nor integratable with each other), and attend meetings where the reports and figures are presented (and everybody is made feeling guilty about having failed to fullfil this or that KPI).

Ingo
  • 3,903
  • 18
  • 23