Forgot your password?
typodupeerror
Programming

How Intuit Manages 10 Million Lines of Code 304

Posted by Unknown Lamer
from the lots-of-pasta dept.
CowboyRobot writes "Intuit launched QuickBooks in 1992, and it has grown into the best-selling retail software for small-business accounting worldwide. QuickBooks is available on multiple platforms with different feature sets (Pro, Premier, Enterprise), in specialized editions (accounting, contracting, etc.), is available on CD or via subscription, and is offered in localized versions for the U.S., Canada, and the U.K. How they manage so many builds is a case-study for large scale programming. 'The Windows version is about 80,000 source files, 10+ million lines of C++ code plus a little C# for the .NET parts. Plus help files, tax tables, files defining local accounting rules, tax and other government reporting forms, upgrade offers — a lot of files. Every customer gets the full version. Specific feature sets are turned on and off with the license key.' And the lessons are not just technical. 'One surprising lesson is that small teams work, even for very large codebases — especially, Burt says, in sustaining an entrepreneurial, creative culture.'"
This discussion has been archived. No new comments can be posted.

How Intuit Manages 10 Million Lines of Code

Comments Filter:
  • by Osgeld (1900440) on Monday July 30, 2012 @11:10PM (#40825029)

    n early 1982, the Lisa software team was trying to buckle down for the big push to ship the software within the next six months. Some of the managers decided that it would be a good idea to track the progress of each individual engineer in terms of the amount of code that they wrote from week to week. They devised a form that each engineer was required to submit every Friday, which included a field for the number of lines of code that were written that week.

    Bill Atkinson, the author of Quickdraw and the main user interface designer, who was by far the most important Lisa implementor, thought that lines of code was a silly measure of software productivity. He thought his goal was to write as small and fast a program as possible, and that the lines of code metric only encouraged writing sloppy, bloated, broken code.

    He recently was working on optimizing Quickdraw's region calculation machinery, and had completely rewritten the region engine using a simpler, more general algorithm which, after some tweaking, made region operations almost six times faster. As a by-product, the rewrite also saved around 2,000 lines of code.

    He was just putting the finishing touches on the optimization when it was time to fill out the management form for the first time. When he got to the lines of code part, he thought about it for a second, and then wrote in the number: -2000.

    I'm not sure how the managers reacted to that, but I do know that after a couple more weeks, they stopped asking Bill to fill out the form, and he gladly complied.

    http://folklore.org/StoryView.py?story=Negative_2000_Lines_Of_Code.txt [folklore.org]

    point is, just cause you can manage it, doesnt mean 10,000,000 lines of code is really something to brag about, especially for something that feels as cheap as quickbooks (though it does a ok job if your accountant cant use excel and must have things that visually represent checks)

  • by Lev13than (581686) on Monday July 30, 2012 @11:23PM (#40825103) Homepage

    point is, just cause you can manage it, doesnt mean 10,000,000 lines of code is really something to brag about, especially for something that feels as cheap as quickbooks (though it does a ok job if your accountant cant use excel and must have things that visually represent checks)

    If your accountant is using Excel to run your books that means it's time to get a new accountant.

  • by WiiVault (1039946) on Monday July 30, 2012 @11:24PM (#40825105)
    Oh and as most anybody who uses QB often knows- it does suck quite mighty and gets slower even as PCs get faster. Piles of code isn't always a good thing, sometimes it just means you have a bloated heifer with lazy programming and no real improvements in half a decade or more.
  • by Osgeld (1900440) on Monday July 30, 2012 @11:29PM (#40825145)

    excel is a tool not a solution

    quickbooks is more of a solution, but like the the 150 piece toolkit for 19.95 at harbor freight, it may do the job just fine, it may snap under the load

  • You mean... (Score:5, Insightful)

    by stanlyb (1839382) on Monday July 30, 2012 @11:40PM (#40825195)
    That paying well to a small team, and treating them like a people, not commodity, is actually worth the money!!!!
    Oh, noooo, no, what about all the HR screams that this is not a sound business???
  • by c0lo (1497653) on Monday July 30, 2012 @11:43PM (#40825205)

    Piles of code is never a good thing

    FTFY.

    for anyone that may need an explanation - does anyone? - either the code is necessary (and, thus, won't be thrown into a pile, but carefully and continuously polished and made as small as possible) or it's not - in this case, it's truly a liability.

  • by codepunk (167897) on Monday July 30, 2012 @11:46PM (#40825211)

    If it takes 20 million lines of code to do ones taxes there is simply something very wrong with the process.

  • by Skynyrd (25155) on Monday July 30, 2012 @11:51PM (#40825239) Homepage

    My last job involved many, many frustrating hours with QuickBooks - every week. It's a steaming pile of crap. There were so many basic things missing, like decent reporting, that it was a total joke. I could go on for many long rants about how much I hate the software. We wanted to integrate Fishbowl, so we could do some trick inventory manipulation, but it wasn't implemented before I quit. They are still working on it.

    In my new job, I get the daily reports from our 5 stores. QB failures are mentioned daily. I am so happy to be in an entirely different department.

    I really wish there was competition for QB. I think it's a fine platform if you are a very small business with a limited product line. Get complicated, and it fails.

  • Re:Bah. (Score:5, Insightful)

    by WiiVault (1039946) on Tuesday July 31, 2012 @12:01AM (#40825295)
    Mac user or not Quicken like Intuit is a joke of a "pro" software company. When Symantec looks to hire people who can pack more useless lines of CPU hogging code they must hire from these guys. How this company has kept it's niche is beyond me.
  • by lilfields (961485) on Tuesday July 31, 2012 @12:13AM (#40825349) Homepage
    Quickbooks maybe the industry standard, but it's also a giant jumbled up mess. Our company's quickbooks were down all day due to corrupted files leading to unsequenced invoices. I've never meet someone really happy with Quickbooks...it's just accounting software is really hard to develop, so it doesn't have many strong competitors.
  • by Sir_Sri (199544) on Tuesday July 31, 2012 @12:16AM (#40825369)

    doesnt mean 10,000,000 lines of code is really something to brag about

    No, but managing 10 million lines of code successfully is something to brag about.

    However it got there, it's there now, and trying to figure out what to do with it, in a way that gets customers their product, teams their appropriate access, doesn't break every time a new intern looks at it, and can track changes back to individual employees so you can evaluate them somehow.

    I'm not saying this isn't a problem other people haven't solved - certainly they have, but different solutions may offer some pieces of unique insights.

  • by DogDude (805747) on Tuesday July 31, 2012 @12:21AM (#40825385) Homepage
    Intuit makes the most widely used accounting software on the planet. They have significance, but you're just clueless.
  • by Capt. Skinny (969540) on Tuesday July 31, 2012 @12:44AM (#40825477)

    I'd be willing to bet... that a competent group of people could implement QB in under a quarter of the lines of code

    Agreed. But then the business aspect comes into play: can they market it well enough to displace the market leader? There's plenty of crap out there that makes money despite the fact that better options exist. If it was as easy as just competent programming, someone would have done it already.

  • by kalpaha (667921) on Tuesday July 31, 2012 @12:49AM (#40825507)
    That may be true of most any software, but in almost no case is it wise to do so. Read: http://www.joelonsoftware.com/articles/fog0000000069.html [joelonsoftware.com]
  • by cecom (698048) on Tuesday July 31, 2012 @01:13AM (#40825569) Homepage Journal

    Yeah, right, you wrote, debugged and tested 500 lines per hour for 800 hours... We believe you. Now take your pills, your straitjacket, go back to your room and let the adults talk.

  • by oatworm (969674) on Tuesday July 31, 2012 @01:48AM (#40825675) Homepage
    It's not terribly difficult from a technical perspective, but there are a few caveats to keep in mind:
    - Everybody and their mother (at least in accounting-related clerical work) knows Quickbooks. Whatever you come up with would have to be similar enough to justify the training expense.
    - Intuit really does spend a lot of effort keeping track of various local, state, and federal regulations, at least in the US, and applying them to their software. That's not cheap or easy.
    - Since Quickbooks is something of an "industry standard", it's possible to share Quickbooks files among necessary individuals (outsourced accountants and the like) and know that the books are getting from point A to point B. Not everyone has a copy of, say, Peachtree lying around, to say nothing about GnuCash or anything else.
    - Accounting is generally not something that businesses start "experimenting" with. Predictable and supported are what they're looking for. Given a choice between a technically superior product from a company that just received angel capital last week and a predictably wrong product supported by a company that's been selling and supporting accounting software for 30 years, most businesses will go the safe route and buy the technically weaker package. It's actually pretty rational if you think about it; switching accounting packages is not trivial by any stretch of the imagination, so picking the product from the company with proven staying power makes a lot of sense.

    Personally, I think Quickbooks is kind of the Microsoft Access of the accounting world - oh yes, there are better, far more stable tools out there, but too many people know Access and its quirks for all but one or two of them to catch on in any meaningful sense. That's inertia for you.
  • by gmhowell (26755) <gmhowell@gmail.com> on Tuesday July 31, 2012 @02:27AM (#40825817) Homepage Journal

    I'd be willing to bet a few billion dollars that a competent group of people could implement QB in under a quarter of the lines of code while both improving the quality and making it significantly faster in every regard.

    So then why has nobody come up with a better product, then, Mr. Billionaire?

    He said 'willing', not 'able'.

  • Re:Bah. (Score:4, Insightful)

    by JDG1980 (2438906) on Tuesday July 31, 2012 @03:28AM (#40826029)

    Yeah right. Like they can't afford to hire some Objective-C programmers. As I said before, pretty disgusting for a company who owes its very EXISTENCE to Apple.

    It's absurd to say that they owe their very existence to Apple. Does everyone who develops software for Windows "owe their very existence" to Microsoft?

    If they thought they could make a profit by porting their software to OSX, they probably would have done it. But large companies generally don't act for purely sentimental reasons.

  • Re:Bah. (Score:2, Insightful)

    by Anonymous Coward on Tuesday July 31, 2012 @07:44AM (#40826965)

    So this Quicken Essentials [intuit.com] for Mac isn't the Quicken you wanted?

    It doesn't even understand that a loan is made up of both interest and principle -- so, no, a product that can't track your finances if you've taken out a loan is NOT providing the "essentials" of financial management.

    Even Intuit knows that which is why they started selling a kit to people who bought the 2007 version of Quicken continue to run it on current OS X versions.

  • Re:Bah. (Score:3, Insightful)

    by Lumpy (12016) on Tuesday July 31, 2012 @08:02AM (#40827061) Homepage

    Exactly, there area lot of better choices for real accounting software, QuickBooks is money for dummies. And my wife cringes when the new company she goes in to fix has quickbooks, She knows that it will be all screwed up. Quickbooks will let you fudge the books easily, and most "entrepreneurs" not only know nothing about book keeping and accounting, they are too cheap to hire one right off the bat to make sure everything is kosher. So my wife gets big $$$ to come in and fix their books and accounting system. Typically the "CEO" of the company hates it when told, "you are not in charge of any money decisions anymore, your accountant is. the4y can over rule you at any time. Get used to it."

    They always choose Quickbooks because the crap can be bought off the shelf at Staples or other office supply place. It can be used as a decent accounting package, but it encourages the business owner to engage in bad or even illegal business practices.

  • Re:Bah. (Score:4, Insightful)

    by datavirtue (1104259) on Tuesday July 31, 2012 @09:21AM (#40827683)

    No one has made a move into the niche. It is like Windows, Quickbooks is the dominate software and no other company thinks it is worth trying to penetrate. On CNET you can see reviews of their free bait offerings and they are not good--many, many rants. They are ripe for the picking; their software is bloated to hell, expensive, and the users hate it. It is very costly for a small business or start-up to purchase QB and there are no breaks or decent entry points. You pay the QB tax or you don't play, period. On top of this, there is nothing quick and easy about it, and out of the box it makes your company look amateurish.

  • by clintp (5169) on Tuesday July 31, 2012 @01:29PM (#40830937)

    disclaimer: I work in the financial software field in a business very similar to Intuit.

    Every time this comes up Slashdot is inundated with lots of comments about how easy this should be. It's not. Get over it.

    The problem with financial software is that because of regulatory constraints and tax laws it's nearly impossible to start from scratch. Tax laws are vast. You just won't believe how vastly, hugely, mind- bogglingly vast they are. I mean, you may think it's complicated to write an operating system, but that's just peanuts to tax law.

    The secondary problems for payroll compliance and tax law is that they change (with alarming frequency). You probably don't know this because you're a single case, but on the federal and state level hundreds of changes happen each quarter for something like payroll taxes. Almost none of them apply to you. But every one of them applies to someone, and it's something you've got to get right. Oh yes, and let's not forget the thousands of cities, counties, and school districts that all have their own compliance.

    In software development, you're left with a few choices in this matter. Pare down the problem, scale up the development, or adopt a progressive model and hope you don't go bankrupt waiting to ship while keeping up with the changes along the way.

    If you pare down the problem you've limited your market share. Deciding that you'll only handle, say, Federal filings means that your customers are left on their own for state compliance. It's a niche, sure, but a really small one. That's how every one of the companies you've heard of doing tax filing or payroll software started. And then you work really hard to make your company more and more relevant and scaling up quickly.

    For option two, development can't scale this large from scratch. Brooks's Law (in this case) means the entire thing will collapse into a black hole of non-shipping code long before you've made it out of Year 1. And it's got to be nearly perfect -- people will tolerate a certain number of bugs in their games, but getting penalties from the IRS will keep your customers from coming back.

    So you want to tackle federal and state taxes (no local) with your launch product? Expect to take at least a couple of years for this, and line up the appropriate capital to keep you in business meanwhile. Plan on using the last 25% of your development and test cycle bringing the code up to compliance with the regulations that have shifted while you were mucking around building the product. (i.e. if you can write and test it in 18 months, expect to ship in 2 years because you'll need the last 6 months just to catch up). That number is from experience, folks. Just try to find a venture capitalist that'll fund this kind of effort into a market that already has a few large players (Microsoft Dynamics, Intuit, Solomon) and dozens of small ones for a product that's just marginally better. Just try.

    "I'm a web developer! I deal with shifting standards all the time!" No, not like this. There are thousands of standards and they move as often as quarterly and they're all published separately by different entities that don't interact at all. Screwing up browser standards in a web application usually means something doesn't display right and you find out right away; doing the same in payroll taxes means large penalties vastly disproportionate to the size of your mistake which you don't hear about until the letter arrives months later.

    "I'll build clever databases!" "Properly designed rule sets will be my silver bullet!". Nope, think again. You're working against an adversarial opponent: politicians. Politicians need to raise taxes without looking like their raising taxes. Their rule sets can have unlimited complexity in their efforts to tax you while not looking like they're taxing you. They do just make shit up. If Congress wants to have an employer payroll tax for companies over 20 employees that have more than

Some people carve careers, others chisel them.

Working...