How Intuit Manages 10 Million Lines of Code
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.'"
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
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)
Given that they haven't managed to come out with a native version of Quicken for Mac in over 6 years, I suspect that they kept that code on a napkin... then lost the napkin.
Real programmers kept their code on punch cards.
Or toggle patterns written on a napkin.
FTFY
My college took out the card punching stations the semester before I took Fortran, though they still had the vacuum drum reader and used it occasionally. And, of course, the CRT terminals were inputting card format - first six characters for line number, 78 characters per line max.
The fossilized prof told stories of entering assembly op codes, in octal, with rotary dial interfaces.
Now, get off my... um, I forget, but get off it, NOW!
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.
Real programmers keep their code on punch cards.
No, real programmers do it by hand.
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???
If it takes 20 million lines of code to do ones taxes there is simply something very wrong with the process.
Got Code?
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.
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.
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.
Help stamp out iliturcy.
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.
Intuit makes the most widely used accounting software on the planet. They have significance, but you're just clueless.
I don't respond to AC's.
The last time that I tried to contact Intuit about Quicken on Linux was a mess:
http://dotancohen.com/eng/quicken_on_linux.html
I certainly hope that they handle their code better than they handle their customers.
It is dangerous to be right when the government is wrong.
Quickbooks and Quicken are similar only in that they are owned by the same company. They are not related in any other way. It sounds like you're giving too much weight to the "Quick" part of the names.
I don't respond to AC's.
And, even they had some signficance sometime or somewhere, why should I care about how they manage lines of ancient code?
Because they roll up the money they make on re-selling the same code base year after year, insert the money in their nostrils, then finally, they separate out single lines of code and snort them.
That's why.
Boot Windows, Linux, and ESX over the network for free.
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
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.
God spoke to me
People who own Macs don't understand technical geeky things like numbers and are way too cool for accounting.
If you aren't part of the solution, then there is good money to be made prolonging the problem
People who own Macs don't understand technical geeky things like numbers and are way too cool for accounting.
Considering we overpay for everything and buy new iShinies every 3-6 months, I'd say keeping track of our finances is even more important for us than for you bottom feeding 99%ers and your 'PCs'.
Jesus was all right but his disciples were thick and ordinary. -John Lennon
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.
Enjoy life! This is not a dress rehearsal.
they wrote "about 8 million" lines of code to run a theme park on a little island back in the early 90's, so 10 million lines for Quickbooks 2012 seems reasonable.
Given that they haven't managed to come out with a native version of Quicken for Mac in over 6 years, I suspect that they kept that code on a napkin... then lost the napkin.
Pretty disgusting for (yet) a(nother) company who owes its success to the Apple ][.
For those of you too young to remember, Quicken started out as an Apple ][ ONLY checkbook program written in (of all things) Pascal.
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.
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
Meds not working like they used to any longer? I know how you feel, try the little blue ones.
Does everyone who develops software for Windows "owe their very existence" to Microsoft?
Pretty much yes, MS can cut off their market whenever they want.
Apple makes software for Windows. Does that mean Apple owes its existence to Microsoft?
No colour or religion ever stopped the bullet from a gun
They probably do owe their continued existence to Microsoft since their 1997 deal ($150 million investment).
You're a temporary arrangement of matter sliding towards oblivion in a cold, uncaring universe
So this Quicken Essentials 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.
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.
Do not look at laser with remaining good eye.
No kidding! If it takes 10 million lines for QuickBooks, then it is probably stored in a .txt file using the decimal number ASCII representation of the letters in the code instead of the letter itself.
I have seen programs that do a hell of a lot more than that does (3D graphics, advanced audio processing, database software) written in fractions of that amount of code. Two million lines should pretty well top out any overcomplicated calculator program, unless it's written for the government. It sounds like they would be well suited by starting from scratch and re-writing it.
So in summary, their case study should be titled "How NOT to manage program code"
If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
Does that mean Apple owes its existence to Microsoft?
I just felt a great disturbance in the Apple fandom, as if millions of fanboys suddenly cried out in terror and were suddenly silenced.
Not really, given Jobs did all he could to undermine & destroy the Apple IIgs (Woz's creation) because it was outselling the unprofitable Macintosh (Jobs' baby), and decided that no more Apple II family systems would be released.
You mean the IIgs that came out in September 1986, a year after Jobs left Apple? Man, you guys really don't even know the basic facts about Apple.
It doesn't mean much now, it's built for the future.
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.
I object to power without constructive purpose. --Spock
Agreed. As my Grandma says, "Quickbooks makes me money." She has owned a bookkeeping/tax business for 40 years. I grew up hating QB. Quicken was awesome in the DOS days.
I object to power without constructive purpose. --Spock
If only it were a matter of hiring some obj-c programmers. I'd like to see your mental state after have 10 million lines of shit dumped on you with with non-trivial task of porting it to a completely disparate operating system and then maintaining both systems annually. I've ported a large amount of ERP code from OS/2 to Win32 during a 30 day crunch and I was ready to kill somebody by the end of it. I expect porting Quickbooks or Quicken would be close to an 18 month job and would involve 20-30 engineers plus 20 QA staff plus project managers etc at least.
Well they did finally re-compile Mac Quicken 2007 for x86 (only $15! to upgrade) so I guess they found the napkin. After a year of searching for it.
It's not an upgrade for $15, it is a stand-alone product that's Mac OS X Lion compatible, no previous version required. You can get the direct download for only $15. I opted for this instead of dumping $50 on Quicken Essentials which from all accounts is inferior in every way. After I upgraded to Mountain Lion this weekend, it was the first app I launched, and I was promptly greeted with an update notification to improve Quicken 2007 performance for Mountain Lion.
Taking guns away from the 99% gives the 1% 100% of the power.
What's the alternative? And don't give me some unix freeware crap, I've tried several, they are crap. Microsoft Money was the only viable alternative, but the conversion process sucked ass. I have 18 years of quicken data that I'm not about to lose, and until there's a real alternative for consumers (i.e., $100 price point), I'm not leaving, regardless of the weird interface, and periodic interface bugs. At least the database is rock solid. (runs to knock on some wood)
https://www.accountkiller.com/removal-requested
No kidding! If it takes 10 million lines for QuickBooks, then it is probably stored in a .txt file using the decimal number ASCII representation of the letters in the code instead of the letter itself.
...
So in summary, their case study should be titled "How NOT to manage program code"
The article is actually very interesting. It is not trying to justify the size of the code base, it is discussing the mechanisms they use to make a code base of that size manageable. I've never tried to manage anything bigger than 750KLOC, but even at that size build times and broken builds were a constant problem. So talking about the techniques that let people productively work on a code base 13x that size is interesting.
Supposedly they didn't even do that; they licensed a version of Rosetta from Apple sufficient to run their old version.