17 ms·
Simplicity is an advantage but sadly complexity sells better (2022)
- austin-cheney 2y agoIncompetence also qualifies billing a client substantially more time for a given work effort completely without fraud.
- nelsondev 2y agoThis idea also applies to software sales. e.g. A bloated, overly complicated, CMS is easier to sell to a company as a solution than a sleeker, cleaner solution. “If you can’t dazzle them with brilliance, baffle them with bullshit”
- masklinn 2y agoClients will actively seek it out. My boss used to try and make clients understand they could do minor adaptations of their workflows, and adapt a few labels of the product and they’d be done and productive in a few days, and they’d requests weeks of system customisation instead.
- ervine 2y agoYep - seems clients have a knack for asking for the most complicated way of doing things. Frustrating as a developer that is already slammed, but good for the business overall. But how many times have we all built extremely complex features that never ever get used.
- ghaff 2y agoClients also don't want to be told they'll have to adapt their workflows/processes. A long time ago the COO of our very small company was adamantly opposed to replacing Exchange (which went down with some regularity) with a SaaS because they'd have to make changes to the filing system for their contracts (was before Google had nested labels). The CEO overrode them but the issue was clearly that they didn't want change.
- knallfrosch 2y agoA client that adapts their workflow to a readily available software and customizes the rest isn't a client at all. First: I think you guys misunderstand the very nature of business. All customers have problems they want YOU to solve in exchange for money. The rest of the people just don't contact you. It's kind of the "survivorship bias." Secondly: Within an organization, if a project manager has a budget and is tasked with solving a problem, "let's make IT adapt our systems" is not an acceptable solution. Most of the time all you have is money, not software developers or IT staff. They are hopefully working on their core product and not on billing or sending emails. Thirdly: Don't underestimate the ongoing support that stems from point two. If you ever make adaptions to someone else's software, you know what's going to happen when there's an incident and you call support: They are going to blame your customization, they are not going to understand your needs or customization and they'll kindly string you along until you fix it yourself using precious staff ressources. It is much easier to let someone else do everything from start to finish and pick up the phone when there's a problem.
- hgs3 2y ago> seems clients have a knack for asking for the most complicated way of doing things Sometimes clients don't know what they want. Sometimes you have to show them. “If I had asked people what they wanted, they would have said faster horses” ~ Henry Ford.
- mindwok 2y agoThe enterprise buying process is geared to achieve consensus and reduce the risk of purchasing the wrong thing. As a result, dozens of groups get invited to participate and all throw their requirements into the ring. Vendors then do contortions to try and sell to these customer, and you end up with software that tries to be everything to everyone.
- deleted 2y ago[deleted]
- galdor 2y agoIn technical organizations (all organizations really), simplicity is also a hard sell: you need people in charge with the ability to say "no" to a lot of ideas. And no one wants to be on the receiving end of a "no". Those who favour simplicity will always be outnumbered, and their position will be untenable unless the entire top management team agrees. Good luck with that. It is also one the reasons why the BDFL model works so much better: you need the ability to say "no" a lot.
- dave4420 2y agoI’ve not found this to be the case. I’ve argued at work before for us to deliver a simpler subset of a feature, that delivers most of the value sooner, then to assess later whether we actually need the rest of the feature. This is also why I’m confident about my continued employment in the age of AI: CEOs are always asking how we can deliver faster. They might not be able to afford more software engineers, but they can always use more.
- tolmasky 2y agoThere is also a secondary effect where more complex systems generate a bunch of surrounding materials: tutorials, videos, etc. It also creates job security for the people who learn it, as they have a necessary skill and responsibility in the company, as opposed to something that "just works" which doesn't require that.
- RetroTechie 2y agohttps://en.wikipedia.org/wiki/Full-employment_theorem https://en.wikipedia.org/wiki/Full-employment_theorem So many people in IT have a job because if software were constructed that would be both simple & Just Work, those jobs wouldn't exist.
- j45 2y agoIt would seem that way, but organizations that are truly about improving and growth would have the people available to help improve other things.
- namaria 2y agoBingo. Complexity is vendor lock-in catnip
- astrobe_ 2y agoOf course. If you were running an evil open-source company, you would favor "solutions" that generates demand for the services you sell (training, tech support contracts,...) while maintaining the belief that all this is necessary in "modern" IT. I think it's Rich Hickey who links in his one of his talks complexity with entanglement through etymology. This entanglement is sometimes also there to bind the customer. Although more often the "never attribute to malice..." rule is at work, as it's just easier, cheaper, etc... to let the complexity grow.
- antupis 2y agoYup sometimes it feels like AWS and Azure are like this.
- 2four2 2y agoIn physical UI our group calls this the Microwave Problem. No one uses the 20 extra buttons on the microwave, they mostly just use one or two buttons. But no one will buy a microwave with few buttons.
- jeffreygoesto 2y agoI must be no one. Love my Samsung ME82V since a decade now. Two dials. Period.
- closewith 2y agoIf you know the model of your microwave offhand, you're definitely an outlier!
- NortySpock 2y ago"Dial-A-Yield: Not just for nuclear warheads!"
- euroderf 2y agoI'm sure that having two dials costs more to produce than a crappy membrane keypad, and that the product manager was nearing retirement.
- diarrhea 2y agoHilarious coincidence. I had and loved that exact same model for the same reasons. Until one of the dials broke and I discovered how utterly irreparable the thing is. Had to get rid of it and indeed, it’s impossible to find similarly simple models. Oh well!
- robocat 2y agoI would love a microwave with a slider for power level and a dial for time. Best I have found so far is the now obsolete Breville BMO734 with jog dials for power and time, plus I use the quick-start and cancel buttons. Importantly you can change power and time even while it is running - very nice. Jog dials are not my favorite but the UI works. Extra feature buttons on inside door jam is a good design although honestly I never use the extra features. Ervery microwave with a keypad has been total shit UI in my experience. https://www.breville.com/content/dam/breville/us/assets/microwaves/finished-goods/bmo734-the-breville-quick-touch/bmo734xl-the-breville-quick-touch/images/BMO734XL-the-quick-touch-cooking-microwaves-dna2.jpg.transform/breville-lrg/image.jpg https://www.breville.com/content/dam/breville/us/assets/micr... I bought a spare second hand one the other day for parts!
- Ozzie_osman 2y agoComplexity sells also because it obscures and overwhelms. "Mark me down, too, as an adversary of complexity, complexity that obfuscates and confuses, complexity that comes hand in hand with costs that serve its creators and marketers even as those costs thwart the remote possibility that a rare sound idea will serve those investors who own." This is John Bogle talking about finance, but I think it's more generally true.
- quantum_state 2y agoThis is one of the reasons that IT is in a state of ruin …
- ngneer 2y agoYes. We feel this pain all the time in the realm of security. Main problem is the incentives are backwards. You would not pay your municipality to dump garbage on your lot, you pay them to take it away. And yet IT shops go for complex gadgets that end up being as vulnerable as the thing they are intended to protect (this has been the case forever, but if you need a recent example, Evil XDR was presented in Black Hat Asia'24).
- Ozzie_osman 2y agoI worked at a certain FAANG company at a time where the promo process rewarded "solving complex problems". The more complex of a problem you could solve the higher your level (and your pay, your status, etc). Naturally, people were incentivized to find complex problems so they could solve them. Not only that, I think a lot of tech stacks at other companies evolved by copying this company's ideas, so even smaller companies with even less need for complex solutions ended up having them as well.
- AJRF 2y agoSolving complex problems is worth promotion. Delivery complex solutions for the sake of them being complex is not.
- sratner 2y agoSometimes the promo committee can't tell the difference, i.e. was the problem complex to warrant the complex solution. They just see the effort put into solving it.
- bobsomers 2y agoNo, it’s not. Identifying which problems are worth solving (regardless of their complexity), and solving those is worth promotion. Lots of engineers have a fascination with solving complex problems purely for the sake of solving them. When you make that your criteria for promotion you end up have to do many rounds of layoffs in harder times because you’re staffed to the gills with people solving complex problems that deliver little to no actual value.
- ffsm8 2y agoReality disagrees with your worldview. There is only one thing that's "worth a promotion" and that's convincing the person able to greenlight it that you deserve it. This very rarely corresponds with the ability to deliver good software in medium to large enterprises and entirely with your ability to market yourself. Which is easier if you're able to show them a super complex problem you've solved, because it sounds impressive to a mba...
- 3pm 2y agoNot specifically about ML, but a good paper about unnecessary complexity introduced by a premature 'scalabilitization': The COST of a given platform for a given problem is the hardware configuration required before the platform outperforms a competent single-threaded implementation. Or “You can have a second computer once you’ve shown you know how to use the first one.” –Paul Barham https://www.usenix.org/system/files/conference/hotos15/hotos15-paper-mcsherry.pdf https://www.usenix.org/system/files/conference/hotos15/hotos...
- nickpeterson 2y agoI highly recommend the Rich Hickey talk “Simple made Easy”. Complexity doesn’t sell well at all, but easy does. If a company can hire a bunch of people that know how to use ‘foo’ and the industry keeps talking about ‘foo’, they’ll choose it even if foo is a complete boondoggle. See lambda architecture, most Apache projects, containers, etc
- contingencies 2y agohttps://www.youtube.com/watch?v=SxdOUGdseq4 https://www.youtube.com/watch?v=SxdOUGdseq4
- throwaway290232 2y ago[dead]
- zeroCalories 2y agoI think another aspect of complexity is that your customers, either internal or external, have a very specific idea of what they want, even if their idea is trash. So your product needs to be flexible(complex) enough to support all the use cases conceivable. Going to a customer and saying "trust us, do it this way" will make them lose interest fast.
- citizenkeen 2y agoI work on a small internal ERP, and our new UX guy said “nobody needs all this info”. And I said “agreed, nobody uses more than six columns. But the key stakeholders can only agree on 5.” I think that’s the key: nobody needs 20 buttons on a microwave, but some people love defrost or popcorn or whatever.
- scrlk 2y agoCompared to other engineering disciplines, it seems like software is one that is most susceptible to veer towards complexity. Is it the ease of iteration? The relative youth of software engineering?
- Xeamek 2y agoRelates to ease of iteration, but imo the biggest factor is no real responsibility when things breaks and how it is expected for software to break.
- dave4420 2y agoRelative lack of physical constraints?
- 01HNNWZ0MV43FF 2y agoBingo. Complex machines have more parts that wear out and need attention. Complex software, if it's well-written, can actually Just Work, and doesn't wear out.
- deleted 2y ago[deleted]
- analog31 2y agoInvestor optimism, peer pressure, and FOMO play roles.
- mro_name 2y agosimplicity is the habit of zen, toaists, sufis and franciscans or the school of wirth - the mystics. Minorities each. It's just not appealing to the masses and the proponents don't really care about mass-recognition, either. But they go on nevertheless, stubborn as they are. Edit: Oh, and the razor Occam was a franciscan, too.
- vbezhenar 2y agoIMO simplicity was what sold iPhones to the world. People love simplicity, but they need to be sure that they paid for quality simplicity. So simplicity must be accompanied by something that makes it look not cheap.
- kubanczyk 2y agoMasses love beauty and status. Simplicity is accidental in your example.
- deleted 2y ago[deleted]
- AJRF 2y agoI watch a YouTuber called Theo Browne sometimes. He is primarily a front end dev. When I watch him talk about his solutions to things I feel like i've been hit on the head with a baseball bat. The sheer number of things that go into his demos is eye watering. The number of arcane terms about React he will mention in a single video astounds me. I don't mean to specifically call him out, but I worry that the complexity is what keeps him popular. And then you have someone like Pieter Levels just slinging raw php into production and not talking about anything like Suspense or Server Side Rendering or Hydration. They both get to the same ends (well Pieter Levels makes magnitudes of order more money I think) but there is a gulf in complexity. I'd actually argue something like Nomad List is much more feature rich than anything I see from Theo.
- thjdidiend 2y agoI met Theo once. I didn't know who he was, but he made sure to tell me within the first few sentences that he was a very popular streamer/youtuber. I then watched him get recognized by someone else and they had a sort of friendly shouting match about something Theo has recently talked about in an opinionated way on his channel. His personality seemed perfectly suited for maximal media engagement through needless complexity. The more complicated things are the more arguments you can have and the smarter you can sound to those less familiar with all your esoteric choices.
- tonyhb 2y agoI know Theo. He’s a good person who wants to educate folks, and make things simpler. There are problems with education: you often have to make things contrived to show problems as fast as possible, and it’s hard to convey all of the nuance. Theo, and others, definitely try to strike that balance and I think it’s fair to say that this is because of how the front end world works rather than because of personalities.
- whstl 2y agoI'm finding more and more that Youtube influencer software development is completely disconnected from real world software development. The amount of libraries and code for toy stuff is humongous compared to anything I see in production, and I've seen some monstrosities. I wonder for how long, though.
- rsync 2y agoHmmm ... I have been thinking about this recently in relation to the complex and unwieldy nature of modern car UI (especially in electric cars). It's so bad that it is keeping me from buying a car that I need. The conclusion that I have come to is: Sophisticated consumers are very different than aspirational consumers - and there are always many, many more aspirational consumers. Therefore, catering to aspirational consumers at the expense of sophisticated ones is a rational economic choice. An aspirational consumer will put up with all manner of deficiencies and gimmickry because they perceive them as being emblematic of their consumer achievement. In cruder terms: They are so happy to be driving a "luxury" car that they don't notice the garbage that came with it. Meanwhile, after decades of luxury car purchases, I just want the shifter to be intelligible ...
- iknowstuff 2y agoIt’s kinda funny reading this as an owner of a Tesla. People who don’t have them like yourself keep lamenting touchscreens online, whereas Tesla owners explicitly stay with the brand because of how excellent it is compared to other vehicles, touchscreen or not. Technology Connections just posted a video where he explains how he had to hold his car’s ugly 90s era stalk for 4 seconds to change his wipers. Had to read a manual to discover that. This kind of crap is very standard in cars with disjoint components cobbled together. Meanwhile I get my live video sentry alerts on my phone, my car drives me to work, my gear selection is typically putting on a seatbelt and pressing the brake pedal as the car knows the right direction, everything important is contextually accessible via the wheels on the steering wheel instead of having 50 buttons for everything, and so on. It is simple and powerful. The problem with those luxury vehicles you mention is just awful execution.
- JackSlateur 2y agoI'm working on a r&d team dedicated to finding ways to repair modern cars at scale As such, we get lots of car, mostly EV (but not only), up to 100k€/u The Telsas are indeed not the worst They are still boring af and not in the top of the basket
- wasteduniverse 2y ago
- bbminner 2y agoIf we are talking about paper reviews, what I am looking for in a paper as a reviewer is neither simplicity nor complexity. I am not even looking for "novelty". What I am looking for is a thorough and thought-provoking empirical analysis of a problem. I see plenty of submissions where 1) authors propose a system that is clearly a monstrosity Frankenstein patched together from a dozen of existing ideas - clearly a successful attempt at getting "bold numbers" using as many new shiny toys they could get their hands on without analyzing failure modes of either part in depth; 2) a simple modification of an existing method that accedentally improves the performance of the system but still lacks proper empirical or therotical justification of why this modification helps. While the second type of papers has at least some marginal value to the community or the reader, I still find such papers mostly useless. What brings value to the reader is a phd student who stared at the problem long enough to find quantitative and verifiable confirmations to his intuitions about the problem that lead to reproducible observations with predictive power. Ie "we experimentally verififed that indeed X affects Y exactly though the mechanism Z described in this paper in all cases, this helped us to improve metric A by B%, agreeing with Z". Not "we did X, and we saw A increase by B%", regardless of the complexity of A. Not all reviewers agree with me, sadly.
- IshKebab 2y agoThis is a very good analysis and doesn't fall into the trap most commentaries on stuff like this do: moaning about how something is bad without acknowledging any reasons for it, as if people are just arseholes. C.f. Electron, heavy websites, advertising, non-replaceable batteries, etc.
- Nevermark 2y agoIf only simplicity always meant easy to use. There would be no paradox if it did. One big problem is that for any product/feature not used in isolation in a very controlled context, simplicity is often suboptimal, inflexible and limiting. Complexity is often the result of building one thing that works well in a variety of situations, a lot of interoperable things or features to work (relatively) well together, or one thing with a lot of ways to interface with it. The worst case is all three - which is true for a lot of software. The result is a simpler purchasing choice, buy the most flexible product, but at the cost of far more product complexity than any particular user needs.
- euroderf 2y agoAnd thus the emergence and rise of "opinionated software".
- astrobe_ 2y ago> One big problem is that for any product/feature not used in isolation in a very controlled context, simplicity is often suboptimal, inflexible and limiting. "suboptimal" from the global perspective, because to me a simple solution should be a local optimum for a specific problem. For instance, one could argue that the Unix motto "do one thing well" generate lots of specialized programs that, even though they are an order of magnitude smaller than generic programs individually, together they take globally more space for same service level - a symptom of that is e.g. Busybox. For physical devices, the problem is probably more acute, or at least more visible. "inflexible and limiting" are terms I can agree on, that's generally how simplification works unless you have a genius idea. I don't see those words as absolute negatives, though, but rather as terms in a trade-off. If the software is open those issues can be mitigated sometimes by hacking; one advantage of starting from a simple (simplistic even), inflexible and limiting solution is that it's easier to evolve - that is to add the necessary complexity.
- Nevermark 2y ago> “ suboptimal" from the global perspective, because to me a simple solution should be a local optimum for a specific problem. Except if that requires a company to create and support dozens of “optimal” versions of the same functionality for similar, but different performance impacting, circumstances. That is not globally simple for the producer, or for customers trying to figure out what version they need. Or having to manage multiple versions for different uses. > For instance, one could argue that the Unix motto "do one thing well" generate lots of specialized programs The clear design philosophy of Unix file and stream tools, and there interoperability, does enable much simpler command construction. But as a maker of tools, you can only leverage interoperability standards if they exist. For many software objects, and ways of combining them, standardized conventions are less well defined, less reliable, or non-existent. Thus ubiquitous glue code - navigating complex mismatches in information and conventions between components. Also note, that Unix scripting didn’t eliminate C apps! The cost of Unix tool simplicity, is a massive loss of performance for many use cases. So similar functionality gets recreated over and over again, in virtually every C (or other language) app, to optimize for slightly different contexts. With work and standards, simplicity “islands” are achieved. But they form an archipelago - not a continent. Need to go in an unsupported direction and you have to swim a mile, instead of walk one.
- cs702 2y agoI've seen this firsthand: > A common point raised by ML reviewers is that a method is too simple or is made of existing parts. And this is self-evidently true: > ...simplicity is a strength, not a weakness. People are much more likely to adopt simple methods, and simple ones are also typically more interpretable and intuitive. It happens on a lot of different fields. For instance, a lot of investment management firms offer complicated investment strategies with high fees, even if a simpler strategy would do just as well. Quoting Warren Buffett: > Investors should remember that their scorecard is not computed using Olympic-diving methods: Degree-of-difficulty doesn't count. If you are right about a business whole value is largely dependent on a single key factor that is both easy to understand and enduring, the payoff is the same as if you had correctly analyzed an investment alternative characterized by many constantly shifting and complex variables.[a] --- [a] http://www.berkshirehathaway.com/letters/1994.html http://www.berkshirehathaway.com/letters/1994.html
- rglover 2y agoI built a full-stack JS framework [1] that I thought would be a hit. As best as I can tell, because it lacks the complexity/word salad of existing solutions, it's mostly been ignored despite being (imo) an elegant solution to a long-standing problem. [1] https://cheatcode.co/joystick https://cheatcode.co/joystick
- j45 2y agoThis is an inviting read, and I think would resonate with many. I avoid javascript for the brittle timesuck it can become maintianing the past while shaking one's fist at other legacy systems. I've never known this to be a problem because I avoid systems that do this to my time, unless it's absolutely unavoidable. It makes me much more productive to use tools that work, and continue to work, so I spend more time with problems than rolling a temple to my own veneration. It might work for others, and it doesn't make it right, it might not work for me, and that doesn't make it wrong. It's OK not to be for everyone, but your people will find whoever you are being. Maybe try it as the content for your landing page. Lots of one liners that resonate.
- rglover 2y agoThanks for the feedback/tips, I'll give it a shot.
- j45 2y agoMy comment was in relation to the philosophy page of your framework. I thought I had included it. https://docs.cheatcode.co/joystick/philosophy https://docs.cheatcode.co/joystick/philosophy I hope you do, I'm sure there would be at least an audience of 1000 true fans for this. Its one of the only javascript frameworks that stood out to me because of that page having a real enough human story. Feels similar to the individual developer starting a project wondering if any framework is looking out for them to stay productive :) I generally avoid the javascript brittle maintenance time-sinks but using it is a reality and knowing that there's simple frameworks that can absorb and handle complexity are valid.
- 2y ago
- kouru225 2y agoIn professional settings, people care only about complexity. In the informal media world, people care only about simplicity. The most simple narrative wins out every time. We’re in a world of extremes.
- 1vuio0pswjnm7 2y agoSoftware developers may embrace complexity for the purpose of commercial benefit and suffer all its disadvantages, not to mention passing on those disadvantages to users. However non-commercial users, hobbyist programmers, who derive no commercial benefit from complexity are free to reject it and its disadvantages. For example, I choose on a daily basis to use simpler, noncommercial software that I compile myself. The use of such software is routinely dismissed, discouraged and even attacked by many software developers commenting on HN. Certainly, its use in place of more complex alternatives does not benefit their interests. It does benefit mine. I like (relative) simplicity. Each is free to do as they please. If one prefers complexity, as many do, then there is no shortage of alternatives to choose from. Complexity is booming.
- pornel 2y agoI find such laments annoying, because they're full of obvious platitudes. It's easy to sound smart quoting Einstein and Dijkstra. It's cheap to make generalizations, and point fingers at complex solutions when having both the benefit of hindsight, and ignorance about their true requirements. "as simple as possible, but not simpler" is always right. Messy solution? You should have made it simpler. Primitive solution causing problems? You weren't supposed to make it too simple. Why didn't you think about making it just perfect? In reality, it's very hard to even get people to agree what is simple, when solutions have various trade-offs. Maybe it is easier to focus on maintaining one complex database, than to have 3 "simple" ones, and triple admin work, and eventually end up having to sync them or implement distributed transactions. Something simple to implement now may cause complex problems later. A simple off-the-shelf solution that doesn't fully solve the problem will breed complex workarounds for the unsupported cases, and eventually add complexity of migrating to something adequate. If you didn't correctly predict how a solution will fit all your requirements, you should have simply listened to Einstein. All the advice to "just" do something "simple" is blissfully unaware that these solutions are not panacea, and it's rarely a plain choice between complex vs simple. Projects have constraints - they may need to work with existing messy systems, inconsistent legal requirements, or changing business requirements. They may prioritize time to market, or skills they can hire for. And there's brutal economics: maybe annual report export is a Rube-Goldberg machine, but it's done once a year, and a rewrite wouldn't pay for itself in 50 years. The discussion about complexity rarely acknowledges that projects and their requirements grow, so something perfectly simple now may become complex later, in a perfectly rational way, not due to incompetence or malice. Storing data in a plain text file may be beautifully simple in the beginning, and become a bad NIH database later. But starting with a database for 3 rows of data would be overcomplicating things too. And there's cost to refactoring, so always using the ideal solution is not that simple either.
- carl_sandland 2y agoSome complexity is inherent to the problem, but most seems to be incidentally introduced by the realities of deployment (non-functional), configuration (functional) and chaos monkeys (users). There is a particular 'breed' of incidental complexity I see with space cadets and front end developers for sure. Complexity is complex lol.
- dang 2y agoDiscussed (a bit) at the time: Simplicity Is an Advantage but Sadly Complexity Sells Better - https://news.ycombinator.com/item?id=32491079 https://news.ycombinator.com/item?id=32491079 - Aug 2022 (6 comments)
- hyperthesis 2y agoThe solution to a problem can be simple. But now we want other things. e.g. car=transport, then: speed, efficiency, style, non-polluting, safety, price, a/c, touchscreens, self-driving etc. The boundless complexity of human desire.
- hyperthesis 2y ago"There's no bragging rights to your software, because it's too simple to use", a developer criticized my product. This reduced its viral spread, though managers liked it.
- hyperthesis 2y agoComplexity signals innovation: an invention that is merely a "workshop improvement" won't get patented. Complexity signals non-obviousness. Too easy -> easily copied -> and no long-term competitive advantgage. Complexity signals hard.
- marcus_holmes 2y agoAgree with everything said in TFA. Except maybe toning down the exhortation to use other people's code so much. I totally agree that using existing solutions is very often the simplest solution; I would not want to rewrite PostgreSQL or any crypto libs. But too many dependencies can get messy; there is definitely a line at which writing your own code specifically for this situation is simpler and better than importing a more generic dependency that is much larger and more complex than it needs to be for your use case (because it covers more than just your use case). Or, (e.g. Left Pad), where the dependency is not actually easier than just writing the code yourself. Importing any dependency carries with it some complexity because it means integrating someone else's code into your own, with the ensuing security implications and version problems. It is not always more complex to write your own code. My general rule of thumb is that if it'll be quicker for me to code a solution to this specific problem than it would be to learn the API for an import and integrate it, then I'll write the code myself.
- hooby 2y agoOver some decades of doing development work on legacy systems - sometimes by my companies own design, sometimes contract work for a customer - I've seen lots of things that make me believe that certain customers do prefer complex, buggy software for a very specific reason: They can hide behind it. "I couldn't finish the task on time because the software had a bug" - sort of stuff. "I couldn't do X because the software doesn't support Y", "The dog ate my homework", etc. In many cases, it would have been quite possible to design simple, easy and far less bug-prone solutions - but then people working with the software would no longer be able to hide that certain failures might be due to their own incompetence, rather than being a software issue. Therefore - especially in companies with high top-down pressure - people actually prefer working with software that their managers don't fully understand, and that's known for having some bugs and problems.
- pdimitar 2y ago> They can hide behind it. "I couldn't finish the task on time because the software had a bug" - sort of stuff. "I couldn't do X because the software doesn't support Y", "The dog ate my homework", etc. I was quite naive most of my career (and life, come to think of it). Back when I changed my first job where I spent 5 years, and was 27 at the time, I replaced one super-complex GUI program with a small GUI wrapper around 2 CLI programs. The thing worked EVERY TIME even with faulty input and on the rare occasion it did not work it gave informative error messages. The 3 women working with it HATED my guts for it. Took me probably a year after I left to finally understand why. Yeah, I was not very bright back then. And with time I started to think that people want e.g. Microsoft Teams because they can wipe their arse with it when the need calls for it.
- smetj 2y agoThis x 10
- throwaway290232 2y ago[dead]
- tipiirai 2y ago> Simplicity is an advantage but complexity sells better Exactly my feeling with TypeScript
- spixy 2y agoexcept JavaScript is not an advantage at all
- boxed 2y agoMy dad sold software for electron crystallography. You could buy the software and 4 electron microscopes and fund a team of doctoral students for the same price as one big fancy electron microscope that did the same thing in hardware. He could not compete.
- deleted 2y ago[deleted]
- Puts 2y agoI had this history teacher in high school giving the class an assignment to write an essay on the events leading up to the Second World War. The first question that came up was how long does this essay need to be – to which the teacher replied that if you can cover this complex topic on one single A4 that would give you full score on the assignment – but that he sincerely doubted that anyone could cover such a complex topic in such a short amount of text. Everyone was mind blown by this argumentation. Nobody had ever heard a teacher say anything like that and that kind of shows how we already as kids are thought that more is always better.
- javajosh 2y agoIt's a good anecdote but needs a bit more boundary condition. One can always pick a level of abstraction to make an explanation long or short; humans usually pick this level based on context and social convention. For example, if the question was "describe how a keypress results in a screen glyph" can be described in one sentence, or in a long series of books (assuming you get into the firmware, software stack, electronics and materials science, manufacturing processes, etc). For WW2 you could say it started when Hitler invaded Poland, and then France. Or you could get into the Versailles treaty. Or you could talk about the evolution of life on Earth. You might say the latter is pedantic, and it is, but it's also technically an event that led to WW2.
- BLKNSLVR 2y agoAt my current place of work complexity signals minimum viable product stacked upon minimal viable product stacked upon minimum viable product. Function additions as patches upon a platform that started life as an MVP but was never properly even planned out nevermind built out, and then suddenly demand for new features arrive with dollars attached and the baselines are tossed out with the bath water.
- kroolik 2y agoAs I started to think for some time now: you can have a challenge or a solution. As engineers, we are often tempted to challenge ourselves, straying away from the latter. There is less perceived pride from following simple solutions.
- atomicbeanie 2y agoComplex solutions are easy. Simple is hard. Often simplicity takes time, iteration and understanding that comes from actually operating a system. I think the missing link here is the Kaizen-oriented refinement that turns complex into simple over time. I find that modern OO-languages frustrate this process by needing cross-cutting changes to refactor for incremental improvements. Expression-oriented languages (like Clojure) are much more fluid, enabling the incremental refactoring required to transform the initially complex and awkward system into the simple and refined scalable system. Unfortunately, just like other languages, it is possible to write difficult-to-change systems in Clojure. And that seems to be often the way it is done.
- harperlee 2y agoSpecifically for clojure, do you have any recommendations about how to make systems easy to refactor? I've often read discussions about how dynamic languages are quicker to write and more difficult to refactor than static ones, and I've had my fair share of dealing with issues during refactoring of clojure code, but I don't remember having read anything particular around clojure best practices. Googling for a bit does not produce particularly insightful results, so if you have any insights that'd be awesome. EDIT: Part of the things I'm finding are my own comments in HN from some years back, in fact :(
- atomicbeanie 2y agoYes, I like to call the style Procedural Composition. The key characteristics are no logic with IO, and all system functions are assembled from higher-order middleware functions. This is the way ring, the web framework, and various client libraries like clj-http work. One of the best ways to get familiar with it is to look at the ring libraries. What this allows one to do is assemble handlers from lots of small higher order functions. It has the downside of one needing to have initialization well organized and thought out. But the fractal-cul-sac as one co-worker has nicknamed it of ever dividing and increasingly specialized functions with IO and logic twisted together is effectively prevented. One can always modify one handler without affecting others or changing how existing functionality works. And it is always testable in small unit tests because the logic is pure. Systems built in this style can radically reform themselves in a controllable, reliable and consistent way indefinitely. They are immune to the "apogee" phenomena whereby a system gets to the size and fragility where it can no longer be modified without causing unforeseen regressions, triggering the need to rewrite it to move it forward. This style is for handler-oriented procedural software common in web services etc. It does not apply to embedded state-machine oriented software that operates real-time control etc. That is a different problem space.
- sesm 2y agoI'm always surprised at how much people can talk about simplicity and complexity without giving any definition of those terms. Basically, the actual content of this article is giving the author's own indirect definition of the word 'complex'. The way I understood the definition is 'complex = overgeneralised and purposefully made harder to understand'. This is different from other definitions. For example, according to Rich Hickey's definition, multimethods are 'simple' because they provide 'polymorphism a-la carte'. According to author's definition they would be complex because they are an overgeneralised implementation of polymorphism.
- smgit 2y agoIt doesn't really matter. There might be a "simple" or a "complex" solution to a problem, but there is no guarantee whoever is given the problem, has the time, or cash, or tools, or skill, or info, or team, etc etc to do the job right. And thanks to history we know quite well, very few like to admit shortcomings and limitations, so endless misunderstandings are the result. Quoting Herbert Simon - "You can satisfice either by finding optimum solutions for a simplified world, or by finding satisfactory solutions for a more realistic world. Neither approach, in general, dominates the other, and both have continued to co-exist in the world"
- briantakita 2y agoComplexity is like a Ponzi Scheme. Ponzi Schemes are effective with sales. Midwits love Complexity & love Ponzi Schemes. Midwits drive the markets due to their population being large.
- wccrawford 2y agoThe simple solution is superior if it does everything you need. If it doesn't, the complex solution suddenly becomes a lot more desirable.
- sebastianconcpt 2y agoComplexity isn't evil, but hiding in it some secondary interest of who sold that complexity likely is (because of Murphy's Law applied to human psychology?). Also it has a protective corollary: the interested parts in preserving complexity because injecting lets say a much needed and correct new simpler alternative would either reveal the aforementioned dubious interests or reduce the incumbent's authority (power), hence, all the incentives are set to boycott a system improvement from the top.
- sebastianconcpt 2y agoWhich techniques have you developed to deal with this problem?
- renonce 2y agoThis has been my single major frustration with academia. Papers are getting long and complex (and very often unnecessarily so) and reviewers like rejecting with "not innovative" or "too little work". I mean there is a great amount of actual work where the complexity is inevitable, say homomorphic encryption or zero-knowledge proofs, but they are based on solid foundations, starting with the definition of group theory with just four axioms and building up and so on, where every definition is either simple or has lots of uses elsewhere. In contrast, in machine learning and operating systems research, people just seem to like to build algorithms from scratch and make it look incredibly complex (whether it actually is complex) and that just makes my life harder just to read the paper. It's getting close to the point where reading the paper takes more cognitive load than conducting the research myself (having to understand 100s of papers to find the one that's useful for my case). When it does, what would be the point of publishing it? I recognize there is a lot of useful work in academia but it's really hard to enjoy doing it when the results you would be most proud of is not likely to be well recognized.
- _gabe_ 2y agoIt’s funny that you mention this. The most helpful research papers I’ve read have been written by private companies. Here’s a couple off the top of my head[0][1]. Short and straight to the point. [0]: https://steamcdn-a.akamaihd.net/apps/valve/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf https://steamcdn-a.akamaihd.net/apps/valve/2007/SIGGRAPH2007... [1]: https://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/opengl/gpupathrender.pdf https://developer.download.nvidia.com/devzone/devcenter/game...
- imtringued 2y agoThey won't believe you if the solution is too simple. In fact, they accuse you of ulterior motives.
- daitangio 2y agoSimple solutions are complex to design. Fullstop. For instance the ‘do not me think’ GUIs are more complex to design than a CRUD GUI pushing all form fields in a form.