11 ms·
IKEA-Oriented Development
- surprisetalk 3y agoAuthor here! Thanks for sharing :)
- mikercampbell 3y agoHey, I like this. More than I thought I would, as there are a lot of cheeky patterns, but this really summed up a lot of the things I value nicely. Most definitely bookmarking for later. This is good. “Flimsiness is a feature” or something - I love this
- mikercampbell 3y ago> Flat-pack furniture is not meant to last. It has taken me too long to understand that flimsiness is part of its appeal. Haha
- hef19898 3y agoAlso seems to apply to US houses, doesn't it?
- deleted 3y ago[deleted]
- jonwest 3y agoThe other aspect of IKEA that is criminally underrepresented in software that I really feel like should be a part of this article is having an incredibly succinct and universal DSL for documentation. Say what you will about the memes about people not being able to build IKEA furniture because they can’t follow the documentation. Once you understand the DSL, you’ll truly understand how incredible their documentation really is. It is incredibly succinct. They can guide you in less than 10 pages on assembling virtually any kind of furniture they sell. Think of how powerful something similar like that could be for software. How often have you dove into terribly written or overly long and dry documentation? It is universal and approachable. Worldwide, IKEA has one set of documentation for assembly. It spans education, language, and cultural boundaries. There is a huge value add in building software in a similar way in order to speak a certain way about that software. In some cases this may be untenable but in the vast majority of business cases I would venture that software and documentation inefficiency is born out of ignorance than necessity. I don’t mean that as a sleight, more that from a business perspective there’s generally a push for “new” and “more” instead of investments in refactoring and optimization. The more that I am working with organizations looking for areas to improve in order to help them scale, the more the points in this article ring true for me. Thank you for writing it. It was a great read.
- switch007 3y agoI've had mixed success with their manuals. While I admit there is a certain genius to it, I don't fully share your enthusiasm. Maybe I'm stupid but I feel like some words could really help to speed up the deciphering of the instructions.
- aidenn0 3y agoOne piece of Ikea furniture I assembled had two different depths of the same diameter nut. A single sentence warning about using the correct depth nut at one point would have saved me approximately 90 minutes of frustration.
- wartijn_ 3y agoTheir manuals start with a list of parts, including the part number. You can see that number in the build steps too. If there are two parts that look alike, you can put them in two separate piles next to each other, so you know you should check if you've got the right one when you need a part of one of these piles. I usually sort all the different small parts at the beginning of building something. It's nice to know that all the parts are there and you don't need to search for them.
- MSFT_Edging 3y agoAt the start of the manual, the fasteners are shown to-scale and with a part number. Compare to the scale and you don't have issues.
- TeMPOraL 3y agoI mentioned it elsewhere - though not that I've learned it the hard way - that IKEA instructions have extremely good attention to details. Yes, some warnings would've been useful, but after being burned by it once, I realized that if you look carefully, all elements are drawn both to scale, and accurate with respect to shape and attachment points - meaning, the steps are actually unambiguous, but you have to pay attention to those tiny details, sometimes 1mm or less in size.
- 3y ago
- pimlottc 3y agoMinor bit of feedback: it's kind of confusing, for the first bullet, that the image shown is an example of what NOT to do. Most people would assume that's a pic of IKEA packaging, when it's actually Amazon. You should add a caption to make it clearer.
- pmontra 3y agoWhich language is this? let points = 0; const usrs = await sql`select * from usr where country = 'JP'`; for (const usr of usrs) { points += usr.points; } I like the approach of not having an ORM to learn.
- surprisetalk 3y agoIt's JS with the wonderful Postgres.js package! [1] https://github.com/porsager/postgres https://github.com/porsager/postgres Here's an example where it really shines: const users = [ { name: 'Murray', age: 68 }, { name: 'Walter', age: 80 }, ]; await sql`insert into users ${ sql(users) }`;
- pmontra 3y agoThanks. This is best ORM I ever saw. Just write SQL. I'd like to have this in Rails and Django and unlearn almost 20 years of their ORMs.
- amemisoglu 3y agoFrom "quality" perspective, don't imitiate Ikea :)
- blowski 3y agoWhy not? The quality is good enough that millions of people around the world are using it in their house right now, profitably for Ikea. I'd say that's a very good definition of quality to imitated.
- kevincox 3y agoExactly. I wouldn't dance on most of it but it serves its purpose quite adequately. I find that IKEA has consistently good quality. Very little of there stuff is great quality, but almost nothing is of a low quality. It is all adequate at a very reasonable price. I agree that if you are expecting top quality you will be disappointed. But for the price it is hard to find much of better quality. Especially not so consistently.
- TeMPOraL 3y ago> I wouldn't dance on most of it Which reminds me - and it's not IKEA-specific: I wonder how many people got severely injured or lost their lives due to a desk or wardrobe collapsing under them when they stood on it, unaware that these days, desks and other waist-level flat furniture often aren't designed to hold the weight of an adult human? When I grew up, standing on furniture was a normal thing - these days, I'm very careful about even leaning on it.
- conductr 3y agoMany pieces include an anchor bracket because kids go squish The furniture I climbed on in the 1980s, which was probably circa 1960-80, was stout and never budged when I and friends/cousins jumped on it.
- alex3305 3y agoI get where you are coming from, but why not? What IKEA produces for the price is seriously impressive. Also why would you need particle board or MDF when filling furniture with cardboard is way cheaper and mostly fits the bill. However, I think that we as software developers are more like hand crafted furniture makers. And that there is WYSIWYG (like Squarespace) for the masses. And IMHO there is nothing wrong with that.
- euroderf 3y agoAnother 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. To extend this via analogy to the software realm, a deep refactoring is problematic whereas OTOH a complete rewrite is a better idea. Which has not borne borne out by industry experience.
- atoav 3y agoI moved a ikea shelve through 3 flats and two nations. Ultimately I gifted it away because the new space wouldn't fit it and my requirements had changed, but I know people who are in the 5th flat. As long as you are treating the stuff right it should survive a few assembly-disassembly-cycles. Key is of couese to sort the screws, mark the parts with tape, etc.
- belval 3y agoAnecdotally I have had trouble reconciling this seemingly prevalent "you can't disassemble Ikea furniture" with my own experience. It's not made for it sure but bookshelves, bed frames and tables can all be reassembled reasonably well. Anything smaller you can just put in the truck when moving.
- hef19898 3y agoAgain one of those impossible to kill memes, along with bad mounting instructions (they are on par with Lego, and way better than a lot of industry ones). Usually tells you more about the person making that point than about the point they try to make.
- throwawaaarrgh 3y agoIt's a nicer way of saying efficiency. Which can be good or bad, depending on your perspective. 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.
- hartator 3y ago> If you have a hammer and screwdriver, you can build Ikea furniture. I never had to use a hammer with Ikea furniture.
- acwan93 3y agoYou need one when building a Hemnes or Billy. The back of the nightstand/bookcase is a sheet that you slide in and hammer in with nails.
- samwillis 3y agoWardrobes, many cupboards, chests of drawers, their kitchen cabinets, the infamous "Billy Bookcase" all have a back panel that is pined in place and need a hammer. Sometimes the little wooden dowels that hold many sides in place need a small tap from a hammer to get them home.
- wccrawford 3y agoIt's rare, but it is sometimes needed. The 2 things I'm thinking of are some of the mounts for the screw-in adjustable feet, and the tiny nails on the back of cabinets and closets that hold the back on.
- ml_giant 3y agoSometimes you may need one when putting in those wooden rod things? Not sure what they are called. I typically just use the butt end of the screwdriver when I have to put them in Edit: didn’t see the other reply mentioning the same thing :(
- 3y ago
- swader999 3y agoIs this a way to describe code bases that are hard to navigate, just like the store?
- porsager 3y agoNo - the store is more like the npm registry!
- dclowd9901 3y ago> 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”. 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.
- nologic01 3y agoAnalogies between domains are important and occasionally can be triggers for really useful thinking. 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 nearby.
- adql 3y agoThere 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) JS IKEA would ship you 6 trucks of dependencies before you could hang a shelf
- porsager 3y agoJust because you're not able to separate the good from the bad, doesn't mean it's all bad in JS land.
- SCdF 3y agoI don't think it's fair to say they "mentioned" JS, because that implies they held it in high regard re: the point the article is making. They just used it in a code example. Since that is likely the most common language among their audience, it makes sense.
- samus 3y agoIsn't this actually a reformulation of the principles of Unix philosophy? "Packaging is the product": classic Unix utilities are lightweight, nimble programs "Pre-packaged dependencies": most Unix utilities have one common data format: lines of text. Tools like `jq` expand on that "Company & disposable": programs can be charged together by be using the Unix shell
- perfmode 3y agoconst [{ points = 0 }] = await sql` select sum(points) as points from usr where country = 'JP' `; what language is this? beautiful black magic
- suralind 3y agojavascript
- henvic 3y agoI don't know what to think of this post, but... IKEA is struggling to build decent quality software, from what I've heard: Too much bureaucracy and top-down structure making everything slow/awkward. 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...