5 ms·
It's as I've always said, every function ("unit") should be responsible for a single thing, and it must be developed by an independent company with no knowledge
by Scarblac 4y ago
It's as I've always said, every function ("unit") should be responsible for a single thing, and it must be developed by an independent company with no knowledge of the other companies involved. Otherwise you just can't do software engineering right.
- still_grokking 4y agoThis sounds brilliant! What's the marketing name for that?
- goto11 4y ago"Lose coupling"
- withinboredom 4y agoI’ve called it Model-T development[1]. The Model-T brought standardization to building cars where companies only built to a very specific spec. It didn’t matter that some companies would be better than others, or cheaper/expensive. The point was choice, competition, and interchangeable parts. Granted, I don’t actually know about that, but that’s the end result. [1]: I apparently deleted the post so I’ll have to undelete it and come update this comment.
- layer8 4y agoIt’s called separating interface from implementation. When using an interface, only make assumptions on what the interface specifies, and not on how it may happen to be implemented. When implementing an interface, only make assumptions on what the interface specifies, and not on how it may happen to be used.
- gadflyinyoureye 4y agoEven this confuses people. Often the name of the interface is something like S3Client. No, the name should be something like PolicyWriter.
- cutemonster 4y agoIt's called Microcompanies. >> Otherwise [without microcompanies] you just can't do software engineering right. So true
- mannykannot 4y agoFor that to work, there has to be, somewhere, a clear understanding of how the units all work together to achieve the higher-level goals without violating the higher-level constraints which, in practice, increase in number and scope the higher up the pyramid of abstraction you go. Pace Robert Martin, divide-and-conquer cannot be used to reduce systems-level thinking to doing just one thing, even in an abstract sense.
- Scarblac 4y ago> For that to work, there has to be, somewhere, a clear understanding of how the units all work together to achieve the higher-level goals without violating the higher-level constraints which, in practice, increase in number and scope the higher up the pyramid of abstraction you go. Oh, that's an implementation detail. The market will sort it out.
- nightski 4y agoThis only works if you have a blockchain to keep track of it all. ;)
- Scarblac 4y agoI'm not decided on that. On the one hand, sure, blockchain should be involved! But the single thing per company requirement would mean that the company could do nothing else but a blockchain with nothing on it. But it does sound enticingly pure, a conglomerate of blockchain companies without further function.
- nuancebydefault 4y agoI believe that never works in practice. The thing that binds units together is also code. Only while designing / implementing that code, you encounter the flaws in the interfaces of those units, and conclude that half of the units need to be replaced or their specifications need change.
- cutemonster 4y agoSure, that's how things used to be. But this approach, Microcompanies as it is called (units developed by independent companies), is also partly no-code, in that the specifications and different functional units are glued together using lawyers.
- Scarblac 4y ago> in that the specifications and different functional units are glued together using lawyers. Exactly! And it all runs on the invisible hand of the free market.