Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming

How Intuit Manages 10 Million Lines of Code 304

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 @10: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 @10: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 Osgeld ( 1900440 ) on Monday July 30, 2012 @10: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

      • Excel is a perfectly good spreadsheet program. I don't know what you think they're using it for, exactly, but for storing grids of numbers and applying simple calculations to them repeatedly, it can't be beat. I know it's the 'cool' thing to hate on Microsoft, but they actually have some good accomplishments if you look beyond their modern ventures and current vomiting-up of Windows.

        The sad thing is Excel can probably do every last thing QuickBooks can, likely in about 5% of the code.

    • by AuMatar ( 183847 )

      I joke that in my last job I fixed two bugs on my first day without writing a single line of code. One bug required me to add a line, one required me to remove a line. Net LOC of 0. And a completely useless measure for my day.

    • by Sir_Sri ( 199544 ) on Monday July 30, 2012 @11:16PM (#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 sapgau ( 413511 )

      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)

      I don't think this is your typical criticism for bloat. Just managing an annual mountain of tax laws and applying them correctly would easily go over thousands of lines. Fine lets use Excel to do that, what is the limit for tabs in a workbook? I bet VB will be a tiny bit slower calculating your tax refund and lets hope it doesn't blow the stack.

  • by WiiVault ( 1039946 ) on Monday July 30, 2012 @10: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 PhunkySchtuff ( 208108 ) <kai@@@automatica...com...au> on Monday July 30, 2012 @10:37PM (#40825181) Homepage

      As a QuickBooks user, who prefers it to MYOB at least, I ask this question in all honesty:

      What else is out there for small businesses that's better than QuickBooks and isn't a cloud-based service?

      • by Amouth ( 879122 )

        a quick google - shows

        http://www.gnucash.org/ [gnucash.org]

        and it seems to be quite active

        • by rueger ( 210566 ) * on Monday July 30, 2012 @10:51PM (#40825237) Homepage
          Gnucash is most assuredly not a replacement for Quickbooks, if for no other reason that ta some point you need to interface with a real accountant, and Handing over your files from Quickbooks or Simply Accounting makes that MUCH easier.
        • by DogDude ( 805747 )
          Gnucash is to Quickbooks like Notepad is to MS Office. Gnucash has no functionality for any kind of business accounting.
          • Re: (Score:3, Informative)

            by ekimd ( 968058 )
            Bologna. I've been using Gnucash for years on a sizable business with no problem. I'm also very familiar with QuickBooks (I worked as a staff accountant for several years). Sure, there's a lot that quickbooks can do that Gnucash can't, but there's nothing fundamentally missing from Gnucash to prevent someone from using it for business purposes. If FOSS means anything to you, Gnucash is the only way to go.
      • There are a number of solutions, and I'm not one to call somebody an idiot for using one over the other if it works best for them. But as a fellow Mac user (oftentimes) I guess it depends on size and complexity. That said, even the big bad slow Excel can at times to the job better than QuickBooks. I think for the very small Excel can be enough, but for larger, even entry level "enterprise solutions" are often a better fit. It just sounds like you are comfortable with QB, and that's fine. I'm not so high and
        • by DogDude ( 805747 )
          Excel and Quickbooks are as similar to each other as Quicktime and Oracle: they're not in any way similar.
      • by afidel ( 530433 ) on Tuesday July 31, 2012 @12:33AM (#40825627)

        Sage Peachtree is the main competitor in the self hosted small business accounting realm. To be honest if my dad wasn't so opposed to a hosted solution I would have had him go that way as even with 5 users the cost difference once you add up the server and licenses wasn't that great over five years.

        As far as QB goes, it seems to finally be ok. Up until 2007 it still couldn't run as a limited rights user and required short printer names both of which caused me serious pain as I was the IT department for a midsized accounting firm and getting QB running in Citrix was NOT fun. We had premier enterprise support and their answer to the LRU issue was to grant Everyone full rights to HK_Classes_Root (NOT a good idea). I eventually figured out what keys the user needed access to and published the solution online to help others but their spaghetti code was so bad even then that nobody could actually tell what it was doing to give me the right answer.

    • by c0lo ( 1497653 ) on Monday July 30, 2012 @10: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.

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

    by stanlyb ( 1839382 ) on Monday July 30, 2012 @10: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???
    • It’s not only about the money; I recently had an interesting discussion on this topic with a few “management by the numbers” suits of a large company. They do see the downside of increased specialization, compartmentalization and commoditization in IT jobs, combined with an overload of process and management. They understand this has a profound impact on speed, quality, job satisfaction and especially agility and the capability to innovate, but besides a cost reduction it brings somethin
  • by codepunk ( 167897 ) on Monday July 30, 2012 @10:46PM (#40825211)

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

    • Agreed. The problem is most people are too stupid to demand a simple solution.

  • by Skynyrd ( 25155 ) on Monday July 30, 2012 @10: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.

    • by DogDude ( 805747 )
      Quickbooks is an accounting package, not inventory/point of sale. It sounds like your last job involved pounding nails in with a screwdriver.
    • 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.

      So rather than wishing for a competitor for QB, which would be designed for the same market and thus almost certainly have the same flaws... get off your butt and search out the proper program designed for your business/sector. QB is a good tool, but if you're pushing past it's boundaries, that's not QB's fault.

  • Quickbooks is the one thing that keeps Windows on my machine, and is the only reason I ever boot into it.

    I tried hard to beat WINE into running it, but alas no luck - at least the version I run.

    I looked at what's out there in Linux accounting software, and either it was really obscure, apparently abandoned, or aimed at mega-corps, not small and home businesses. Plus none of it offered an easy way to handle Canadian tax frameworks.

    And of course we wanted an accounting package that our accountant wou
  • You can survive (Score:5, Informative)

    by symbolset ( 646467 ) * on Monday July 30, 2012 @11:10PM (#40825341) Journal
    Quicken and Quickbooks is the only application I know of to have survived a full-on Microsoft assault on their business. Microsoft Money has folded. It's something to be proud of, I guess - for now.
    • I thought Money was a better product.

      • There are lots of folks who thought their Microsoft product was better for a while. But when it doesn't suit Microsoft's strategic goals to maintain it it's dropped like a hot rock. When that day comes it doesn't matter how much you liked it, nor how much you had invested. They have no care for the preservation of your data either - they made it incompatible on purpose, and you should have known better is their view.

        Whether or not you can be made to know better before putting your data into their produc

    • Quicken and Quickbooks is the only application I know of to have survived a full-on Microsoft assault on their business. Microsoft Money has folded. It's something to be proud of, I guess - for now.

      Detailed here: Inside Intuit: How the Makers of Quicken Beat Microsoft and Revolutionized an Entire Industry [amazon.com]

  • by lilfields ( 961485 ) on Monday July 30, 2012 @11:13PM (#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.
    • it's just accounting software is really hard to develop, so it doesn't have many strong competitors.

      Not only that but accountants (aka bean counters) are notorious for being cheap as hell. Almost none of them would be willing to pay the likely unit price of a really good small business accounting system. Indeed, I wonder what the piracy rate on QuickBooks is? I'll bet that it's probably pretty high.

    • Comment removed (Score:4, Interesting)

      by account_deleted ( 4530225 ) on Tuesday July 31, 2012 @12:23AM (#40825601)
      Comment removed based on user account deletion
  • I've had some simply horrendous user experience problems with Quickbooks that have persisted release after release.. I imagine the real question is how do they manage feature requests from 100M customers.. Do they simply make it difficult for developers to fix obviously wonky UI?
  • by dotancohen ( 1015143 ) on Monday July 30, 2012 @11:30PM (#40825433) Homepage

    The last time that I tried to contact Intuit about Quicken on Linux was a mess:
    http://dotancohen.com/eng/quicken_on_linux.html [dotancohen.com]

    I certainly hope that they handle their code better than they handle their customers.

  • As a solo developer, working 800 hours, I was able to write ~400,000 lines of debugged and play tested code. So 10 million lines doesn't sound like a lot at all to me. The only thing I experienced in writing so many lines of code is that I found a problem with the Eclipse editor. Once a single file starts going over 30k lines of code, there is type lag. The more code, the more type lag until you can no longer use Eclipse to edit that file, you gotta use Notepad.exe or Scite.exe.

    Link here in case you want to play the game I wrote [shockwave.com]

    Just out of idle curiosity: I wonder how many lines some of the bigger projects out there have. For example, how many lines of code do some of the Linux OS Kernels have? I'm curious because is 10 million lines actually a really large code base, because it doesn't sound it.
    • by godrik ( 1287354 )

      Just as a curiosity, why do you have a single file of more than 30K lines? Isn't that way over the top?

    • by cecom ( 698048 ) on Tuesday July 31, 2012 @12:13AM (#40825569) 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.

      • Most languages allow you to use multiple lines to define literals(some even allow multi-line statements), so maybe he just used a line per character? Something like:

        #include

        int main(int argc, char** args) {

        char *msg= "T"
        "h"
        "i"
        "s"
        " "
        "i"
        "s"
        " "
        "a"
        "n"
        "n"
        "o"
        "y"
        "i"
        "n"
        "g"
        ;

        printf("%s\n",msg);

        return 0;

        }
        Theres 29 lines right there, and it didnt take a lot of time to code or debug :P
      • I wasn't trying to brag or anything. I just rough estimated from memory at first. I'm guilty of doing the order of magnitude physics estimation for a lot of my math. I did a more accurate count up my map editor and Shell, looks to be around 80k-100k lines of code. I thought it was more because for some reason I thought by memory, my one file had 120k lines to it. So at low estimates, I guess I wrote, debugged, and tested 100 lines per hour for 800 hours. Is that a good rate? I know my manager says I
        • you're guessing at the number of lines? too lazy to run sloccount [dwheeler.com]? It's in the packages repository on a lot of distros.

        • If your one file has 120k lines to it it screams bad design and discipline. Either you don't know how to design objects, use design patterns and/or refactor code.
        • my one file had 120k lines to it. So at low estimates, I guess I wrote, debugged, and tested 100 lines per hour for 800 hours. Is that a good rate? I know my manager says I code more efficiently in 14 hours a week than the four of his old coders did in 40 hours. I don't have much experience working with others to compare myself, no one ever wants to hire me.

          That's not why no one wants to hire you. The reason no one wants to hire you is because you write 120k line files. You suck at programming, no one wants to read that crap. Industry standard tends to be around 1,000 lines per file in C code, and 500 lines per file in Java. I am 99% certain your poor habits show up in your interviews. Learn to write readable code.

          I will tell you though, I would LOVE to give you a job interview, because I you would surely do something entertaining that I would tell stories a

    • Managing your own code vs managing 10m of code someone else wrote are very different. Even the most stupidly trivial functionality can take forever to figure out in someone else's code.

      There's also code densitity... I once single handedly `wrote' 250k lines of code in an evening... by writing a generator against Rational Rose files... Draw a box with a name and some attributes, and bam... you got a dozen files of about 10k total lines (ddl, store procs, database helpers, value objects, corba stubs/skeletons

      • You're right that reading other people's code is a vastly different thing. I guess 10 million lines starts to be a challenge in that regard as different people are writing different parts.

        The code I write is in such a hyper agile methodology that I use shorter variable names for disposable variables just in order that I don't have to type a long name out. If I would just slow things down a bit, I could make my code more readable to other people, but I never planned on anyone else besides myself using
  • Particularly considering it's just a "simple" tax programme.
    It sounds like, instead of implementing the logic in data (i.e. arrays, external text files, etc) and having a fairly small compiler targeted at the problem, they implemented everything in C. This is something even C advocates advise against.

  • by bradley13 ( 1118935 ) on Tuesday July 31, 2012 @01:32AM (#40825835) Homepage

    Maybe Intuit does feed their programmers well. Now if they would just hire some decent support people. We used to use a multi-currency version of QuickBooks, and the errors were simply astounding in their stupidity. As one, minor example: it was completely clear that some conversions were handled using floating point numbers, with the inevitable decimal rounding errors. At the end of the year, we had huge currency conversion errors - far beyond what even floating-point errors could explain - and essentially impossible to justify to the tax authorities.

    There were lots of other problems as well. Trying to report errors was like talking to a black hole. The one time we really needed some real-time support, we spent ages on hold, or going around in circles with different people, and wound up getting no useful help at all. In the end, the only solution was to go back to a single-currency system, and deal with currency outside of QuickBooks.

    Still, as bad as our experiences with QuickBooks have been, there's nothing better in the same price category.

  • by pinkushun ( 1467193 ) * on Tuesday July 31, 2012 @05:08AM (#40826561) Journal

    A monkey hitting keys at random on a keyboard for a finite amount of time will almost surely code a 10 Million LOC program, such as the complete works of Intuit.

    * adaptation of the Infinite monkey theorem

Nothing succeeds like excess. -- Oscar Wilde

Working...