6 ms·
For the academia reward system, maybe Dijkstra was right. But if you work in tech, you quickly discover that most complexity you find around is not introduced b
by antirez 2y ago
For the academia reward system, maybe Dijkstra was right. But if you work in tech, you quickly discover that most complexity you find around is not introduced because it sells well, but because most people are incapable of good design. Then, sure: since it sells better there is little pressure in the management to replace them with people that can design...
- BadHumans 2y agoPeople are very capable of good design but are not given time to do good design. Temporary band-aids become permanent fixtures and eventually the company is drowning in tech debt. It is a tale as old as time.
- antirez 2y agoTime is one of the dimensions, but I often see (bad) designers to stick with the first idea they have (and if they are not very good, the first idea is likely very bad), then as the idea shows the weaknesses, instead of understanding what is going on, they invent more broken "fixes" complicating even more the original idea. So there is a multiplicative effect of this going on and on. This is why the 10x programmer is not a myth: it would be if we were talking about "I can do 10 times what you do" and that would be impossible if you compare a top programmer with an average one. What happens is instead that a 10x programmer just avoids design mistakes one after the other, so they find themselves doing less and less useless work that in turn complicates things more and so forth. Being a 10x coder is about design, not coding.
- gmm1990 2y agoIt’s strange I started to observe some of this, but seems like the “bad designers” have no concept of design. They’re happy to have their code reviewed but won’t go over the design before starting to write code. I still think you could have multiple levels of skill across design and code implementation though
- mattgreenrocks 2y agoPeople deride design in this forum sometimes even. Our profession doesn’t really know what it is, and that makes us easily manipulated.
- bbkane 2y agoI used to think I was a bad designer, because I often have to redesign things. Then I found folks who don't even do that...
- dijksterhuis 2y agoi love opening up diagrams.net and working on designs. i think its possible one of my favourite things to do as a programmer. possibly more than actually coding.
- tbrownaw 2y ago> People are very capable of good design but are not given time to do good design. So they're only good in theory given infinite time, but not in the real world where someone's waiting to be able to use what they're working on?
- MichaelZuo 2y agoYeah saying someone is only competent when given literally unbounded time is equivalent to saying they are not competent in the real world… where people have a finite amount of time.
- taway1874 2y agoWho said anything about infinite time? What the poster (you're responding to) meant was due to the nature of our profession's leniency about tech debt and "go go go" push from non-tech (PM, SM etc.) it's always lesser time than needed.
- throwaway984393 2y ago[dead]
- CraigJPerry 2y ago>> but are not given time to do good design Most professionals have to wrestle with time constraints. Push hard enough and at some point the carpenter/doctor/civil engineer/whatever firmly says “no”. What’s the difference in software that unbounded tech debt is permissible? Clients regularly tell carpenters to “just do X” against the professional’s better judgement. The carpenter isn’t going to call the collapsing Jerry rigged staircase tech debt, instead they tell the client “no, I won’t do it”. Our profession generally lacks sufficient apprenticeship. We could learn a thing or two from student doctors doing their rounds.
- sokoloff 2y agoAt least the doctors’ difficult, lengthy, and expensive credentials are fairly relevant to their apprenticeship experience. I don’t give CS degrees the same benefit of relevance.
- deleted 2y ago[deleted]
- cratermoon 2y agoHarsh, but largely true. But is it academia that isn't working on things relevant to practitioners, or is it practitioners ignoring academia while chasing hype and frameworkism?
- mulmen 2y agoVery little of corporate software development requires any computer science knowledge. Most of us aren’t on the bleeding edge of anything. We need programmers who understand mature (aka boring) technology. Corporate software development is a trade. It’s like plumbing or running a CNC mill.
- saghm 2y ago> Clients regularly tell carpenters to “just do X” against the professional’s better judgement. The carpenter isn’t going to call the collapsing Jerry rigged staircase tech debt, instead they tell the client “no, I won’t do it”. > Our profession generally lacks sufficient apprenticeship. We could learn a thing or two from student doctors doing their rounds. I'm not sure how apprenticeship would solve this problem in software. To me, the difference seems to be that unlike carpenters, most people in software don't work on a contract basis for specific clients, but as an employee of a specific company. We don't have the authority to just refuse to do what we're told, and even in fairly good workplaces where you can voice technical disagreement without fear of repercussions, at the end of the day you'll often get overruled and have to go along with what you're told.
- neilv 2y ago> People are very capable of good design When did people learn good design?
- agumonkey 2y agoMy little observations is that if the business allows crap, then nothing will change that and you quickly end up in the oh so classic swamp job where mud is added slowly until a crisis hits, people grind enough to keep a customer and you get back to mud pushing. Even technically skilled managers end up playing this game and allow all kinds of mediocrity to take roots and then it becomes the group culture for a while.
- elktown 2y agoI don't think one should underestimate the incentives at play here though. Complexity sells not just in literal money, but in career prospects too and so on. It's really bad incentives all around in favor of complexity.
- AnimalMuppet 2y agoComplexity sells in terms of dopamine. "Look at this incredibly complicated thing I made, that I understand and you don't! Aren't I brilliant!" "You must be - I can't understand it at all." People get emotional rewards from themselves from making something work that is at the limit of the complexity that they can handle. They often also get emotional rewards from others for making things that others can't understand. (They shouldn't, but they often do.)
- immibis 2y agoThey should, because succeeding at something near the limit of your ability is how you expand your ability. But that isn't the best for production systems.
- elktown 2y agoBut that's the problem right, in any other industry self-serving pursuits without proper motivation is rightly seen as wholly unprofessional. But somehow our field has come to not only accept it, but encourage it. Imagine a carpenter going: - "Yeah, so I wanted to test the limits of my abilities so I made the shed nuclear bomb proof, and yeah, that'll be $100k, now I gotta go to the reinforced concrete conference, and do you mind if I use this shed as a reference when applying to the nuclear shelter company that I actually want to work for?" This carpenter would of course never be hired again. But our industry is overflowing with nuclear bomb proof sheds without much push back. It's incredibly unprofessional.
- immibis 2y agoYou would hire a carpenter who knows how to make nuclear-bomb-proof sheds to make your normal shed if you wanted a quality shed.
- esafak 2y agoBut it does sell well if you frame it right, in performance reviews.
- gavmor 2y agoThe Draeger's jam study, conducted by Sheena Iyengar and Mark Lepper in 2000, suggests that consumers are more likely to purchase when faced with fewer choices. When a selection of jams was reduced from 24 to 6, purchases increased significantly, illustrating—allegedly—the "choice overload." This ostensible paradox suggests that while complexity attracts attention, simplicity sells. Is reducing 24 to 6 "good design?" The study controlled for the actual quality of jams.
- zelphirkalt 2y agoEspecially for frontend development and "enterprise" software. Simplicity often seems to not be part of the vocabulary.
- cratermoon 2y agoThe mindset is that simple is easy and easy isn't worth much, if any, money.
- hinkley 2y agoI know plenty of people who can’t design for shit, but I don’t think that’s the start or the end of it. It’s a lot of discounting the future and an uncomfortable amount of Fuck You, I Got Mine. People either hurting their future selves and not seeing the cycle, or hurting other people because they deserve it for not being smart (they’re smart, they just don’t find your ideas as fascinating as you do)
- firesteelrain 2y agoAny tips on getting better at design?
- FLT8 2y agoStart paying attention to the things that bog you down when working on code, and the things that your users (ought to) expect to be easy but that are inscrutably difficult to achieve with your existing codebase. Find high quality open source projects and study them. Read books (eg. Domain driven design [distilled]). Stay somewhere long enough to feel the impact of your own bad design decisions. Take some time occasionally to pause and reflect on what isn't working and could have been done better in hindsight. Consider whether you could have done anything differently earlier in the process to avoid needing hindsight at all.
- hinkley 2y agoSometimes it helps to look at commit history as well and ask how we got here.
- MonkeyClub 2y ago> Read books (eg. Domain driven design [distilled]). OTOH, Vernon's DDDD book comes with caveats: https://dev.to/yakovlev_alexey/do-not-read-ddd-distilled-by-vaughn-vernon-1i80 https://dev.to/yakovlev_alexey/do-not-read-ddd-distilled-by-...
- krawczstef 2y agoyep, agreed. I think that's another way to view the current state of "GenAI" tooling (e.g. all those complicated frameworks that received $M in funding) and why things like https://www.anthropic.com/research/building-effective-agents https://www.anthropic.com/research/building-effective-agents fall on deaf ears...
- perrygeo 2y agoThere are multiple factors, all pointing in the direction of complexity. Avoiding the hard challenges of design at any cost is certainly a factor. I've seen design demonized as waterfall, and replaced by seat-of-the-pants planning almost universally. "Design" is the opposite of "Agile" in some minds. Time crunches and the "move fast and break things" mentality results in broken things (shocked!). Keeping a sub-optimal system running smoothly requires an investment in complex workarounds. Customers will always bias towards new features, new buzzwords, and flashy aesthetics. They don't innately understand the benefits of simplicity - they assume more/new is better. Software developers want to keep up with the rapid pace of technical change; they are intrinsically motivated to adopt newer technologies to avoid getting stuck on a dying career path. New technologies almost always layer on new abstractions and new dependencies - increased complexity is almost guaranteed. Finally, we're advancing the state of the art of what computation can achieve. Pushing the boundaries of inherent complexity is effectively the stated goal. All factors steer us towards ever-increasing technical complexity. It takes a force of nature (or really abnormally disciplined, principled engineers) to swim upstream against this current.
- immibis 2y agoNow you have people like Casey Muratori who are selling simplicity, because with higher simplicity you can use a higher percentage of your machine's theoretical performance. Only in contexts where that's something people want - specifically gamedev.
- joe_the_user 2y agoOf course, complexity isn't intentionally introduced for sales. What happens is that features new features are added willi-nilli and these take priority over the quality of the overall product - see the triumph of MS Office in the 90s and many other situations of software companies competing. And the companies have their priorities and their hiring and management reflects these priority even if it's just implicit in what's done. Especially, if you let older software engineers go and push the youger workforce constantly with constant fire-drills etc, and , no one will be "capable of good design" but why should they be?
- deleted 2y ago[deleted]
- roncesvalles 2y agoIt's also that the people best equipped to simplify complexity (due to familiarity or just high intelligence) are perfectly comfortable operating within it, and so the intrinsic motivation just isn't there.
- deleted 2y ago[deleted]