It turns out that other than so-called "business logic," there isn't much to business software. It's all the same stuff: a database connection, forms, fields, buttons, some daily/weekly/monthly batch operations, and the dreaded Reports.
Over and over again.
What's interesting - and interesting is the first step on our way to fun - is the process of converting fluffy human requirements into usable software. Many programmers doing business software aren't quite up to the level of programmers doing other kinds of software, but also interestingly, you don't get a lot of cross pollination between groups. Things just start getting done a particular way, and they keep getting done that way, and nobody really thinks twice until and you get these funny "programmer cliques" that believe totally different things and don't really talk to each other. You know, the Oracle types don't have much respect for the MySQL types, and vice versa, and they'll never resolve their differences because, well, they don't really care enough to bother.
One thing I learned is that there's a huge, tangible, visible difference between a company that understands business (and software is secondary) and a company that understands software (and business is secondary). Software companies do an awful lot of silly things that just don't make basic business sense. I don't mean any particular company here - they're almost all pretty clueless. Me too, for now. But it can be tough not to be clueless when you don't even know what clueless is, and worse, you've isolated yourself from the people who do know.
Now turn it around. People with business sense tend to be profitable, which is a good start. But they don't know that much about advanced software development, and silly things happen and time gets wasted, and they don't know that those things are totally avoidable. The smart ones, though, are willing to learn. Great software is an amplifier for a great business model, and the two put together is how you can get a really great company. This is straight out of Good to Great, of course. Go figure.
Bankers are literate!
All this is tangentially related to another amazing discovery I made recently, which is that banking-type people are actually much more compatible with programmers than I thought. You would normally not expect this, since banking-type people (kind of an extreme form of accounting-type people) are in many surface ways different from programmers: less energetic, less liberal, less creative, and often less smelly.
But one thing we have in common - and this is a critical thing when you're trying to work together - is that both bankers and programmers are literate.
"Literate" is the word I use to describe the sort of person who processes text efficiently. I hold literacy to a higher standard than, say, the people that tell me 97% of Canadians are literate. Maybe so, but I'm sorry, hardware engineers can't spell. That goes for assembly language programmers too, and I'm grossly overgeneralizing, but my generalization goes almost exactly opposite for good high-level language programmers.
Maybe you noticed the trend too, and thought it was just a coincidence. But it's not.
By my extended definition, many "illiterate" people can read and write... but they'd rather not. It's a last resort. Illiterate people would rather have meetings and "facetime" and phone calls. They also prefer diagrams over long-winded explanations. There's nothing really wrong with "illiterate" people, I suppose - let's call them "visually oriented" or "spacially oriented" people instead, and it suddenly sounds better.
Illiterate people are hard for literate people to get along with. They don't understand why programmers like to have long email flamewars to resolve their problems. They don't see the point of developing documents collaboratively in a wiki. They prefer shorter and more abstract, not longer and more detailed. They can't skim. They can't search. They don't understand irc. Being the vast majority of the population, they agree in these respects with almost everyone, and so they assume the literates are just doing things wrong and our methods are somehow horribly inefficient: "Geez, it must have taken you all morning to type that up! Why didn't you just have a meeting?"
...Illiterates are frequently slow typists.
But bankers are literate. Of course they are - they have to be. Their whole profession is about spending long hours avoiding people, working with long, complicated legal documents, writing things down so they don't get forgotten or misquoted, and checking long columns of numbers, making sure nothing gets lost, because one mistake messes up the whole thing. Hmm. Avoiding people, complicated documents, concentrating, columns of confusing numbers, one tiny mistake screws everything up. Does that sound like anyone you know?
Programmers are totally capable of dealing with this sort of people, but they let differences of external style - mostly the conservatism, I suppose - stand in their way. But little things like that are less important to collaboration than the fundamental communication channel. If you can talk to people effectively, you can deal with them. Or so I claim.
Hmm, have you ever seen an accountant using a wiki?