Live data from Hacker News

Forcing Functions in Software Development

coderefinery.wordpress.com

51–52 of 52 posts

Re: Forcing Functions in Software Development

#51

Earlier quoted context omitted.

Yeah I don’t get that obsession with “pluggable databases”. Abstractions have a real cost, and they typically complicate a lot: I would advice to just make sure you centralize the access to your database in a single module / class / whatever, but other than that, swapping out databases seems like a non-goal to me. How often do people really migrate to a different database? Even when doing so, migrating the existing d…

Yeah I don’t get that obsession with “pluggable databases”. Abstractions have a real cost, and they typically complicate a lot: I would advice to just make sure you centralize the access to your database in a single module / class / whatever, but other than that, swapping out databases seems like a non-goal to me. I tend to agree, as long as the database you’re using is of the free and open source type so it’s a low-…

It's an example of what economists call "The Hold-up Problem", as part of "Incomplete Contracts".

Basically, it's impossible to write a contract to cover all situations, so eventually any two parties will need to renegotiate. If one has leverage over the other, they can do stuff like raise prices or simply refuse service. One factor affecting that leverage is "asset specificity": given an asset that's covered by the contract, is it reusable in different contexts or is it too closely adapted to one purpose?

The literal textbook example is a steel foundry and a railroad. The steel company needs a spur line to its foundry to receive raw materials and send out finished steel. The railroad company can run a spur from its main line to the foundry.

In this case the asset (the spur line) is extremely specific. Without the spur line, the foundry is worthless. Without the foundry, the spur line is worthless. The balance of leverage then comes down to relative costs and gains. The railroad will hold the upper hand, because closing a spur line isn't existential, but it is for the steel foundry.

In the software context it shows up as a "contract" between your software and a database. You can use an ORM to try to insulate yourself, reducing asset specificity, but that decision has costs (eg, specific DB features you must forego). You can choose to increase asset specificity by adapting to only one DB and fully utilising its strengths, but you may face a future hold-up.

Note from the train example that hold-ups needn't be "pay me more". They can also be "I'm walking away". So a hold-up from Oracle will be "pay me more", whereas a hold-up from an obscure database with one developer could be that they simply quit, die or otherwise become incapable of working.

Re: Forcing Functions in Software Development

#52

Earlier quoted context omitted.

> This is just pushing testing to the customer. Correct. > Why would the customer report a bug instead of switching to a less buggy product? All products are buggy to varying degrees. As a user, you can't easily tell if another product is "less buggy". Would you risk investing time into figuring out another program that may turn out just as buggy? No. You most likely move on with your life. Once users are invested in…

The cynicism in this comment really bums me out. You think it's ok to give customers a buggy product, and expect them to report the bugs, because they don't really have a choice and every other product is buggy too. You say you don't like the situation, but you're doing nothing to challenge it either. Is your motto "When life gives you lemons, make a market for lemons?"

Fair enough, it's arguably cynical to tell the children that Santa Claus isn't real. However, we're all adults here.

The highest-quality software can not win in the software market. This is evident from the software that is out there owning the market.

Quality is a trade-off, if you spend too many resources on it, you can not compete. Catching those last few bugs takes exponentially more effort.

Moreover, there are snake oil salesmen at every corner, telling you that if only you adopted some methodology, your defect rate would plummet. It's easy to get lost in that, not actually delivering a product.

Post reply on HN