Another lesson of Ikea is that often you cannot move them from one home/apartment to another, because if you try to take it apart and then reassemble it, it's never the same.<p>To extend this via analogy to the software realm, a deep refactoring is problematic whereas OTOH a complete rewrite is a better idea.<p>Which has not borne borne out by industry experience.
Analogies between domains are important and occasionally can be triggers for really useful thinking.<p>Modern life and work is so siloed. Deep expertise and wisdom, whether that is about efficiency, risk management, community building, user interface, simply aesthetics or any other challenge can be just <i>nearby</i>.
It's a nicer way of saying efficiency. Which can be good or bad, depending on your perspective.<p>Regarding the principles mentioned here, containers are the best overall method of delivering them. Containers package dependencies, the container definitely is the product, and they are composeable and disposable. Of course they do this by leveraging operating system primitives, so you don't have to use containers, but containers solve all these problems in one standard rather than having to use many other solutions.
I don't know what to think of this post, but...<p>IKEA is struggling to build decent quality software, from what I've heard: Too much bureaucracy and top-down structure making everything slow/awkward.<p>I've applied for a position there twice after hearing from recruiters, and my impression is that they're a bit lost on how to build stuff, and not helping themselves...
Isn't this actually a reformulation of the principles of Unix philosophy?<p>"Packaging is the product": classic Unix utilities are lightweight, nimble programs<p>"Pre-packaged dependencies": most Unix utilities have one common data format: lines of text. Tools like `jq` expand on that<p>"Company & disposable": programs can be charged together by be using the Unix shell
There is some irony in talking about simple components and ease of assembly with standard tools then mentioning JS and it's utter abomination of an ecosystem where you need a bunch of tools to put together the simplest of sites (if you insist doing it in modern JS way)<p>JS IKEA would ship you 6 trucks of dependencies before you could hang a shelf
> Write code that can be replaced. Writing code is easy, but editing code is hard. Make inputs and outputs extremely clear; everything between is disposable detail. We intuitively call irreplacable code “complicated” or “spaghetti”.<p>I like this rule especially for test code. There’s already a level of abstraction going on with test code which makes it more difficult to reason about. Don’t make it clever.
const [{ points = 0 }] = await sql`
select sum(points) as points
from usr
where country = 'JP'
`;<p>what language is this? beautiful black magic