8 ms·
"Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better." -- E
by agentultra 3y ago
"Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better."
-- E.W. Djikstra
If you want simplicity you have to do hard work. It doesn't come by simply removing libraries. Some of that may be incidental complexity and you will get better performance from it. However the core problems themselves, the essential complexity of the problem: to make a solution that solves it in a simple way requires thinking. And if there's one thing I've learned in my career: people hate thinking.
Businesses tend to prefer quick solutions and will pay whatever cost to have it now rather than later. Elegant, simple solutions require time and thought. That is expensive and slow. Since businesses pay our salaries we do what we can and we slap on a library or use a framework and move on.
- mihaic 3y agoThanks for finding the perfect quote for what my thoughts were as well. I'll also add that simplicity also comes from a lot of experience, since the most dangerous developers now seem to be the ones with minimal skill, that don't have the track record to understand that they can't predict what the future will hold, and should better just solve what's required while keeping their options open.
- begueradj 3y agoYour comment is also a quote by itself
- jjoonathan 3y agoThe road to hell is paved with products that pursued simplicity but ultimately couldn't afford it. * Just Doesn't Work * Your simplicity becomes my complexity (fussy compatibility, batching creates latency, etc) * "One-button" interfaces where you have to learn a morse-code dialect and timing to access the necessary features * Bonus points: the software is laggy and the one button is mechanically unreliable, compounding the difficulty of getting the timing correct * Useless error messages that make simple problems complex * Similar: Necessary complexity (e.g. radio reception, authentication, updates) hidden behind a featureless spinning wheel for maximum time wasting when you can't tell what the holdup is
- BeFlatXIII 3y ago> "One-button" interfaces where you have to learn a morse-code dialect and timing to access the necessary features Flashlight enthusiasts, I'm looking at you. Doubly so when there isn't a way to know the current state without already knowing the current state.
- edanm 3y agoI feel attacked! :) I mean, it's a hard problem - for many reasons you only have one button, with no way to display information. And you have to cram possibly many functions into that one button. It's a really interesting exercise in UI, and there are benefits to different approaches. I actually like comparing the different ways manufacturers have chosen to solve this.
- eternityforest 3y agoI really want more Bluetooth support in flashlights. Not only would you always know where they were, and their state of charge, but if you leave your bag in a corner somewhere at a location, it could ping you if it gets moved or opened but isn't within a few feet. BLE mesh means you could link them in groups for lighting large areas that don't have power yet. You'd never have a mode you didn't like, just turn of the dang flash mode or map it to a long press. The dim mode could be as dim as you wanted it, down to sub milliamp for when you're working in a dark theater and need to read your notes. You could set it to turn on when unplugged for an emergency light, glow all the time faintly to find it.... I wonder if there's a market for boutique handmade one off lights... Making a few a year might be fun but I sure wouldn't want to start my own production scale anything. Although these would really be at their best if they were mass produced and cheap enough to have several.
- edanm 3y agoThat's an interesting idea. I'm not very versed in the flashlight world, so I don't know if it exists, but I at least haven't heard of a "pocket" flashlight that has bluetooth support. Olight does make these "bulbs" that have Bluetooth support, you can configure color settings there through an app. As far a market, there probably is if you're good. There are a bunch of people who collect all manner of flashlights, and boutique one-off things are usually a great thing.
- bambax 3y ago> And to make matters worse: complexity sells better Yes! The article claims people think they want simplicity, but aren't willing to sacrifice anything to get it. But the reality is much worse. People, at least business people (people making decisions, not end users), hate and loathe simplicity, and love complexity. Or, if not complexity per se, all the benefits it brings. Esp. bragging rights. You have to be able to boast the number of engineers working on the project, the millions spent... and even the bad performance! Bad performance is proof of the difficulty of the problem. If something actually works, it means it wasn't that hard to begin with.
- FollowingTheDao 3y ago> The article claims people think they want simplicity, but aren't willing to sacrifice anything to get it. I live CNN lite: https://lite.cnn.com https://lite.cnn.com I guess I am weird but the way websites are designed confuses the crap out of my brain.
- cmdrk 3y agoThere's also https://text.npr.org/ https://text.npr.org/
- conkeisterdoor 3y agoWow what the hell! How am I just now seeing these for the first time? They're so fast, simple, clean, and to the point. Every news outlet and blog should have something like this. Seems relatively quick and easy to put together compared to their main sites, and I'm sure tons of people will use & appreciate it.
- sincarne 3y agoThere was some discussion of text-based news sites on HN a while back. You may enjoy the coverage. https://news.ycombinator.com/item?id=35313232 https://news.ycombinator.com/item?id=35313232
- 3y ago
- toss1 3y agoExactly this! My first principle in building software is: Avoid Writing Code. Code takes time to run. Code is habitat for bugs. Avoid it. Do everything possible before writing it to minimize it — think, plan, select better algorithms, data structures, process models, etc. Write and test toy versions to select the most streamlined. Of course some code must eventually be written, but doing the work to avoid it pays off. Car analogy lesson; my coach in sportscar racing once asked me what things I do as a driver that slow me down on the track. I started to say something about "when I initiate the turn too harshly it generates more scrub and....". "No, No, I mean the big simple things...". "Well, that would be braking, turning, lifting off the throttle?". "Yes, so always avoid braking, turning, and lifting.". Obviously, doing all three becomes necessary at the end of the first straight going into Turn 1, but the point is that there hundreds of times where we'll do those things without thinking, and eliminating the unnecessary things that slow us down is one of the primary keys to fast lap times. The fastest drivers make FEWER moves and are much calmer in the cockpit. That simplicity takes a LOT of dedicated work. Similarly, eliminating unnecessary code takes a lot of dedicated work, but it is critical to software that performs. Spend the effort; it's worth it. Avoid Writing (and including) Code.
- begueradj 3y agoBut no company would give you time to think that much. In opposite, we have to hurry to code and show something by the end of the day
- vsareto 3y agoTBH if we could boil software metrics down to a immediately gratifying metrics like lap time or race position, it would make things a lot easier to figure out what simple means.
- toss1 3y agoFirst thought: 'Ya, that would be nice'. Second thought: 'Wait, we have metrics on execution time, time-to-load/display, time to download, file size, etc, and can even count clock cycles required.'.... And, it's kind of like auto road racing, where the times only matter in comparison to other times of that particular car class, at that specific track, in the configuration for that race, on that day's weather conditions, etc. Software is similarly comparable only to software of the same type/class, and how well the earlier versions of that software performed. It's almost like we can gather more performance data about software than we can about sportscars...?
- kaba0 3y agoBut all too often people fail to appreciate a tasks’ inherent, essential complexity that draws a simplicity line. Sure, in the general case people are way above that line, but we also see the reverse (e.g. claiming that systemd is “bloated”, when much of that complexity is required for that problem space).
- agentultra 3y agoToo true. I think the quote hits on this part where Edsgar is saying that it takes education to appreciate simplicity. Some problems have an inherent complexity to them and to appreciate an elegant solution that is sufficient to the task requires some training and understanding of the problem. It's a bit subtle perhaps but I think it's important to understand!
- salawat 3y agoIt's also a fantastic recipe for getting out of touch unjustifiably with the rest of the world, and shooting down completely valid input. "You just aren't intelligent/smart enough yo understand/appreciate the elegance of my design" is the cope of many a fragile engineer in the face of a real world bashing their head against something rendered unnecesarily complicated for reasons completely tangential/unrelated to intended use.
- agentultra 3y agoThe proof of the pudding is in the tasting in such cases. If you can't explain it to someone else then you definitely don't understand it. Ask a few questions and fragile egos tend to reveal themselves.
- salawat 3y agoOh, it can be the case you absolutely do understand it, you can explain it, you can point out line by line, and class by class what you wrote, and why it makes the people whom you wrote it for's life easier. You can also document it, and provide references to external docs you relating to frameworks you depend on. That still will not convince some that cannot be bothered to track where their bits are. I bring up the point because I've whipped up a system specifically intended for shipping a declaratively defined DB state, to a particular user specifiable environment, whilst limiting thr actual implementation of said data as close as humanly possible to forms that were already being written. There are just some times when the needed solution will not be accepted until people have rammed up against the problem they don't even know they have. Thus is the curse of the implementer that prevents rather than remedies. Make a problem impossible to occur and people think you over engineered it. Sit on the answer til everything is on fire, and the migration cost is maximized, and you're looked on as a visitation from on High. It...really...sucks.
- crabbone 3y agoIt's not always like that. Take for instance washing machines. They aren't conceptually complicated from user perspective. More or less, they have well-defined configuration parameters. You don't need a complex model of a washing machine in order to successfully operate it by any stretch of imagination. That is, unless you buy a modern washing machine... where instead of having separate controls for water temperature and time you get a single knob. In most cases it doesn't even have a line on it to show which direction it points. It's just a round knob you can rotate endlessly. When you rotate it, in seemingly random order the lights near cryptic icons go on and off. Even if you can sort-of guess what a particular icon might mean, you will have very hard time finding a combination of the desired temperature and time. And this is not unique to washing machines. Try toaster-oven, or water boiler, vacuum cleaner, air conditioner... modern day household electronics have the most idiotic design in their entire history. And they aren't conceptually hard to use. People who came up with the interface made it unnecessary complex and convoluted. And it's not a one-of event. This keeps happening all across the board, different brands, different kinds of equipment... My explanation to this is not that it sells better: I'd absolutely buy a washing machine with text labels instead of icons. It's some kind of bizarre trend where manufacturers think it's more "stylish" this way. Hell, take modern furniture or bathroom equipment for example. There's a bizarre trend to avoid showing the screw caps. It makes installing stuff much harder and the final installation more fragile and suspect to accidental damage... and yet it's nigh impossible to find simple(r) alternatives which would be durable and easy to assemble.
- masfuerte 3y agoThe icon thing is so they can sell the same appliance everywhere without localizing it. (Of course, they still have to localize the manual but their inventory management is simplified.) That doesn't help you though.
- shadowgovt 3y agoPrecisely. If you want text labels and you're trying to sell the same washing machine in Japan and Germany, you've just given the user interface designer the challenge of writing labels where there's a 10x difference in the average length of the symbol. Making up novel hieroglyphics and letting the user memorize them is just cheaper.