Live data from Hacker News

Why Is Payroll Hard - Ron Jeffries

c2.com

31–40 of 54 posts

Re: Why Is Payroll Hard - Ron Jeffries

#31
post #12

I love stuff like this! Instead of complaining about the structure or motivation of business rules, excellent developers ask different questions: - How can I design my architecture to accommodate just about anything my customer throws at me? - How can I use all the tools in my tool box (including CS and math concepts) to clarify the apparently nebulous? - How can I use things like Boolean algebra, parameter driven pr…

My first job out of college was with a consultancy that specialized in payroll integration projects. We were a partner with ADP (largest payroll provider in the country), and typically they sent us the clients with the trickier payroll processes, so know I'm speaking from experience. Long story short, I agree with what you're saying, but you make it sound like it's really simple. It's not. Creating a single payroll s…

I seems like the general system is something like:

A) A set of tools to talk with external systems B) A set of tools for manipulating the internal representation of payroll data C) A GUI for interacting with / managing the system.

When their internal process is simple managing the payroll system should be simple. When their internal process is complex you get fat consulting checks. Which brings up a great point, it seems like large companies that simplify their internal systems could avoid writing a lot of consulting checks, so I suspect they must be out there and you just don't hear about.

Re: Why Is Payroll Hard - Ron Jeffries

#32

Earlier quoted context omitted.

My first job out of college was with a consultancy that specialized in payroll integration projects. We were a partner with ADP (largest payroll provider in the country), and typically they sent us the clients with the trickier payroll processes, so know I'm speaking from experience. Long story short, I agree with what you're saying, but you make it sound like it's really simple. It's not. Creating a single payroll s…

I seems like the general system is something like: A) A set of tools to talk with external systems B) A set of tools for manipulating the internal representation of payroll data C) A GUI for interacting with / managing the system. When their internal process is simple managing the payroll system should be simple. When their internal process is complex you get fat consulting checks. Which brings up a great point, it s…

You make two assumptions:

1) There is "one" way of representing payroll data. There's not. When you get a none trivial amount of clients, all their edge cases put together destroy any ability to fit the data into one conceptual model elegantly.

2) Companies have control over payroll rules. Large companies often can't simplify their systems due to contracts or the subsequent employee mutiny. Unless you want to get sued, lose the lawsuit, and pay out the nose (which I've seen happen), you can't just change how you do payroll on a dime.

Not to mention, there's a ton of disfunction too. Payroll managers aren't always the brightest tools in the shed. One project I worked on lead to the payroll manager getting fired over "bad stuff" I uncovered. And then as I uncovered more stuff his replacement was let go too.

...payroll can be a total clusterfuck. Avoid at all cost.

Re: Why Is Payroll Hard - Ron Jeffries

#33
post #12

I love stuff like this! Instead of complaining about the structure or motivation of business rules, excellent developers ask different questions: - How can I design my architecture to accommodate just about anything my customer throws at me? - How can I use all the tools in my tool box (including CS and math concepts) to clarify the apparently nebulous? - How can I use things like Boolean algebra, parameter driven pr…

Having spent the last 9 1/2 years working on systems for property and casualty insurers, I have to say that I don't really agree with everything.

I generally agree with the point about designing your architecture to accommodate whatever gets thrown at you, but doing that is hard. Immensely hard. Nothing is concrete, everything is some extensible meta-problem, where instead of writing code to do X, you have to think "how can I make it so my customers can do X, but can also change it to do Y instead." And of course, they want it to be easy to make it do Y instead. Do you just make them write custom code? Do you enumerate all possible options in a declarative fashion and let them choose between them? It's never easy.

The bits about finding structure in what's unstructured, though, I find to often be exactly the wrong mentality, though it's usually the mindset all engineers start with. The best approach in my experience is usually to just embrace the fact that everything is arbitrary, and recognize that you're just going to be writing a lot of if statements (or giving your customers ways to write if statements); otherwise, you'll inevitably A) run into some situation your nicely-structured algorithms can't handle and B) be endlessly frustrated by the exceptions. The processes being modeled by enterprise software are fundamentally irrational, illogical, inconsistent, and arbitrary. Accepting that, and building systems that can handle that, are hard things for engineers to do, since the tendency is to always try to find patterns and order and simpler, more general algorithms.

Not all problems in enterprise software fall into that category, so it's critical to be able to identify which sort of problem you have: is it one that's structured and makes sense? Then write code accordingly. Is it modeling some pre-existing human process? Then expect that the crazy exceptions you've heard about so far only comprise 1% of all the crazy exceptions out there, that you don't even know how to categorize what those exceptions could be, that there's no real underlying order, and that your job is to write the system in such a way that it can handle the fact that the process is arbitrary.

Re: Why Is Payroll Hard - Ron Jeffries

#34
post #25
post #13

Pretty much all "enterprise software" is fundamentally the art of taking totally irrational, human-defined, fuzzy, incompletely-specified pre-existing processes that have been built up over decades or centuries, and turning them into an automated system that functions more or less identically. It's fundamentally different than doing something like writing a word processor or e-mail client which, while it has its own…

I often wish there was some way to inject some order back into the real world systems. So many of the techniques and processes that developers take for granted seem entirely absent from our regulatory and administrative law systems: refactoring version control DRY applied to laws and contracts diff tools for laws and contracts standard interfaces

There are many ways to bring some order back into the world, as you say, but it can be a struggle. In my experience, business leaders will support simpler systems and processes if (and only if!) the benefits clearly outweigh the costs.

As an IT professional, framing the right perspective is essential to getting acceptance for better systems. Presenting a more powerful, but simpler, system as "losing some rarely used and inefficient features" is a sure way to get that project rejected. Management will only hear the "losing" part as a loss in total value and therefore worse than the current solution.

Personally, I like to present formalized system upgrades as the price of growth and future growth potential. Most business leaders can wrap their heads around the concept of "we need to focus and streamline in order to reach the next level", regardless of technical experience.

Re: Why Is Payroll Hard - Ron Jeffries

#35
post #34
post #25

Earlier quoted context omitted.

I often wish there was some way to inject some order back into the real world systems. So many of the techniques and processes that developers take for granted seem entirely absent from our regulatory and administrative law systems: refactoring version control DRY applied to laws and contracts diff tools for laws and contracts standard interfaces

There are many ways to bring some order back into the world, as you say, but it can be a struggle. In my experience, business leaders will support simpler systems and processes if (and only if!) the benefits clearly outweigh the costs. As an IT professional, framing the right perspective is essential to getting acceptance for better systems. Presenting a more powerful, but simpler, system as "losing some rarely used…

I guess I wasn't clear. I realize that businesses need to survive in the eco-system created by crazy laws and ill-thought out regulations and contracts.

I was trying to suggest that the legal and regulatory framework is what needs to be fixed, not the businesses.

Re: Why Is Payroll Hard - Ron Jeffries

#36
post #12

I love stuff like this! Instead of complaining about the structure or motivation of business rules, excellent developers ask different questions: - How can I design my architecture to accommodate just about anything my customer throws at me? - How can I use all the tools in my tool box (including CS and math concepts) to clarify the apparently nebulous? - How can I use things like Boolean algebra, parameter driven pr…

My first job out of college was with a consultancy that specialized in payroll integration projects. We were a partner with ADP (largest payroll provider in the country), and typically they sent us the clients with the trickier payroll processes, so know I'm speaking from experience. Long story short, I agree with what you're saying, but you make it sound like it's really simple. It's not. Creating a single payroll s…

I totally agree. but, It is not impossible. The problem with Payroll is that it is like Security. When everything is working, no one notices its presence. Any issues are incredibly important to fix.

That said, there are ways to develop payroll software that keeps extension possibilities and accommodate the variations without disrupting the engine.

Re: Why Is Payroll Hard - Ron Jeffries

#37
post #35
post #34

Earlier quoted context omitted.

There are many ways to bring some order back into the world, as you say, but it can be a struggle. In my experience, business leaders will support simpler systems and processes if (and only if!) the benefits clearly outweigh the costs. As an IT professional, framing the right perspective is essential to getting acceptance for better systems. Presenting a more powerful, but simpler, system as "losing some rarely used…

I guess I wasn't clear. I realize that businesses need to survive in the eco-system created by crazy laws and ill-thought out regulations and contracts. I was trying to suggest that the legal and regulatory framework is what needs to be fixed, not the businesses.

Ah, look at that, I totally misread where you were going! ;-) In my experience, regulations and crazy laws aren't really a competitive advantage or disadvantage because all of the market players are playing by similar rules. I'm not saying that there's no negative effect to bad regs and laws, but the costs are shared fairly equally.

I've never worked at a business that was cut off at the knees by new laws or regs. I'm sure it's happened, but I'm not convinced it's common. What I have witnessed though, many times at many employers, is pure self-inflicted complexity. The did-they-even-consider-the-cost kind of complexity that is nightmarish to implement and hampers future changes.

As an IT pro I can't do much about the laws and regulations, but I can advise and design business systems in ways to avoid complexity traps and help accommodate more sane business processes.

Re: Why Is Payroll Hard - Ron Jeffries

#38

Sounds like the kind of business logic where Prolog would really shine.

Totally. I used to write event handling rules for the Tivoli Enterprise Console, which used a Prolog dialect and a godawful DSL based on prolog.

I had a ton of fun doing it... basically you had to write rules to normalize SMTP traps from various vendors, and take action based on them. Network vendors did all sorts of bizarre things -- one ATM would periodically send a "Interface Down" event, with an attribute set that meant that the "Down" event actually meant up!

The hard part was actually doing anything with the events. The regime in charge of my division had a deep seated fear of automatic actions, even actions as simple as opening a trouble ticket.

Re: Why Is Payroll Hard - Ron Jeffries

#39
post #14

Actually, Payroll systems can be structured. In the end, there are only 3 things that you need to provide: - compensation (money employee makes) - deduction (money employee gives for some service) - taxes (employee owes the government) Everything that you do is toward satisfying those requirements. It is hard because each of these pieces are influenced by human interaction. But, that does not mean there are no rules…

They get nasty. You cannot underestimate the complexity that collective bargaining agreements bring.

New York City, as an example, has something like 15,000 variations for payroll categories. Plus garnishments, domestic relations orders, etc.

How do you compute the extra boot benefit for a fireman who has worked more than 526 hours in a 13 month period?

Or how to you compute the salary of a garbageman who is paid by the ton of garbage hauled, instead of the hour. Except for when they haul ashes, in which case the tonnage is adjusted, or on Sundays, where they get overtime as well. What are the business rules for an ash hauling garbage guy earning overtime on Sunday, which is also a holiday?

The NYC consolidated payroll system, "CityTime"... has cost over $700M since 1996 to build. (That included some serious fraud.) Fraud aside, Accenture was raping & pillaging too -- charging $400/hr for college grad coders.

Re: Why Is Payroll Hard - Ron Jeffries

#40
post #22

Because of this payroll systems are fraught with implementation problems, particularly in government, where this type of rules exist. In the past I kept a log of IT project failures as I come across them. There are a few bad payroll system rollouts. http://it-project-failures.blogspot.com/ The Queensland Health Payroll system blew up a political storm because of implementation issues. The cost of the blowout? $219M.…

Another example of a payroll system implementation gone awry: SAIC's CityTime in NYC [1]. $700mm+ now ...

[1] http://www.nytimes.com/2011/11/01/nyregion/bloomberg-adminis...

Post reply on HN