3 ms·
I think traditional engineering standards would enable over-engineering rather than discouraging it. In fact, I think engineering standards would be every arch
by dkarl 6y ago
I think traditional engineering standards would enable over-engineering rather than discouraging it. In fact, I think engineering standards would be every architecture astronaut's dream, because it would be an excuse to architect every small company's software to handle Netflix load. "This is an X type problem, and the standard says the data for X type problems has to be stored in a distributed event log." We would have to flip the standards on their head and write them to say, you are not allowed to use Kafka until you have a problem meeting certain requirements. Projections from our sales pipeline say we can only use technologies certified for less than ten requests per second.
Can you imagine a bureaucratic oversight committee rejecting a CQRS design with streaming everything and telling an engineer, "Seriously, WTF. This is a config console. It will have less than 300 users two years from now even if you live up to that insane hockey stick graph they showed the investors. Just build a basic CRUD app backed by RDS. Use the same front and back end frameworks you use for everything else. The engineering standard says you can't afford to waste time on this because there's a lot of other work you're going to need to do this year, and some of it might turn out to be hard, even if you don't know what it is yet." Can you imagine that?
Math and physics also have a strong cultural orientation towards simplicity, which seems to be universally embraced. If you solve a homework problem in half a page, and the professor calls on somebody else to put their proof on the board, and they walk up with two pages covered front and back, you don't think, "Wow, they're smart. Their solution is so much more complicated; it must be better." Conversely, if you and all your friends took three pages to solve a problem, and somebody else presents a solution that fits on one chalkboard, you're in awe. I really don't know what the difference is that makes the culture of software different.
I think if it's being enforced by standards or licensure, it's too late and too external. It needs to be internal and cultural, at a gut level, to aspire to do more with less. In software, the primary measure of cost, the definition of "less" in "do more with less," is the intellectual load on the software development team. (We have that in common with mathematics.) Do more with dumber. How do we learn to value that as a profession?