TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Software Dark Ages

83 点作者 roblaszczak将近 4 年前

19 条评论

jkingsbery将近 4 年前
Overall, I liked this article, but a bit of a tangent: most historians today reject the term &quot;Dark Ages&quot; when referring to the entirety of the time between the fall of the Roman Empire in the west and the Renaissance (<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dark_Ages_(historiography)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dark_Ages_(historiography)</a>).<p>Also, the claim &quot;In the historical Dark Ages, religion put down science&quot; is simplistic. If by &quot;Dark Ages,&quot; the author means the time between the fall of Rome in the west and the Carolingian Renaissance in 800, there was no institution maintaining science, but there happened to be institutions maintaining religion. During this time, what scientific knowledge that was preserved in the west was preserved by monks copying manuscripts. If the author means to refer to the whole Medieval period, then many of the most famous scientists were clergy, and many scientific institutions grew out of religious institutions, so again the claim is confusing.<p>It&#x27;s unfortunate that the author chose to distract from a good point by using a problematic metaphor.
评论 #27984028 未加载
评论 #27983742 未加载
评论 #27983533 未加载
评论 #27984219 未加载
评论 #27984400 未加载
hsn915将近 4 年前
As far as I can tell, the analysis of the problem is completely off base.<p>The author is just trading one set of hyped buzzwords (microservices&#x2F;k8s&#x2F;devops) for another (oop&#x2F;solid&#x2F;ddd).<p>It doesn&#x27;t help when he claims that <i>his</i> approach is proved by science!!<p>There&#x27;s no approach to software development that has been proven by science.<p>As far as I can tell, the search for the right methodology is part of the problem.<p>Instead of just writing the most sensible and simple code that would work, you have to adhere to some methodology.<p>Object Oriented Programming is not going to solve your maintenance problems and development speed. In my experience, it only makes it <i>worse</i>.<p>As far as I can tell, the author acknowledges that his methodology is not working for a lot of people, but he attributes that to &quot;you&#x27;re not doing it correctly&quot; which is typical of advocates of OOP&#x2F;SOLID&#x2F;etc.<p>But this same excuse can be said about microservices. So what is the point?<p>The author spends a lot of time talking about how to talk to stake holders to understand the requirements.<p>OK. I&#x27;m totally behind the developers having complete understanding of what they are working on and what the expected results roughly should be like.<p>But as far as I can tell, this has nothing to do with domain driven design _per se_.<p>You can have complete understanding of the project, and implement the project successfully, without ever bothering with DDD.
评论 #27985891 未加载
评论 #27984575 未加载
flohofwoe将近 4 年前
It&#x27;s just &quot;Enterprise Software Development&quot; which is stuck in the Dark Ages, always has been, always will be. All the progress, and generally &quot;cool stuff&quot; happens elsewhere (in research labs in the 70s, on home computers in the 80&#x27;s, in PC games and hardware in the 90&#x27;s, on game consoles in the 00&#x27;s and so on...). It&#x27;s just not obvious today that many startups are also trapped in &quot;Enterprise Hell&quot;, because they want to be the next Amazon or Google. All IMHO of course and probably slightly exaggerated.
评论 #27983867 未加载
评论 #27985383 未加载
评论 #27988650 未加载
nonameiguess将近 4 年前
I experienced this badly at the final team I was on at my last employer before leaving, which was very unfortunate because the team I was on before that was the highest-performing, most consistently delivering team I&#x27;ve ever had the pleasure of being a part of at any company in any industry.<p>The microservices there were anything but. Not only tightly coupled, but coupled at build time, such that we had a mountain of custom Ruby libraries written by one person to parse and publish Apache Ivy files no matter the underlying build and packaging system, to construct dependency trees and build orders for this massive Jenkins infrastructure that rebuilt the world several times a day. It got even worse, because the development teams were building fat jars, then the pipeline team was putting those in fat containers, then we were shipping the containers, except across an air gap. So we&#x27;re generating gigs of data every hour that some poor souls have to physically burn to DVDs and sit around waiting for hours while virus scanners approve it to go into the runtime system.<p>But I don&#x27;t think the issue was so much a dark ages problem that nobody understood what we were doing. It was just myopia. Nobody understood the impact their decisions had on downstream and upstream teams. Architects were pitching great ideas to customers, managers were making tremendous promises, and neither had any idea that the as-built system came nowhere near matching the glorious vision they drew up on a whiteboard. And the developers didn&#x27;t know the whiteboard vision even existed. They just saw tiny chunks of single-sentence Jira tickets with no context and no idea how they fit into the larger system.<p>It&#x27;s the Buddhist koan thing about 10 people looking at an elephant but nobody seeing an elephant.
评论 #27988985 未加载
评论 #27984220 未加载
lostcolony将近 4 年前
Oooh, so close.<p>I&#x27;ve experienced all of these strategic patterns mentioned, and it&#x27;s still been a massive clusterf*ck of failure.<p>DDD attempts to solve the right problems, but so does everything else, and adding process when there&#x27;s an incentive and cultural misalignment doesn&#x27;t actually help.<p>Every success (including major ones, going from so risky the VP doesn&#x27;t even want to attempt it to best thing ever delivered by the department style of things) I&#x27;ve seen has been due to two things. First, dev believing that their responsibility was to understand and solve a particular problem, and that they were empowered to actually do that. Second, product believing that what they&#x27;ll be evaluated on at the end of the day is if a valuable solution is provided. Both of these are predicated on upper management creating incentives for doing them, rather than all the other BS that upper management can end up prioritizing instead (i.e., status reports, documentation, checklists, roadmaps, etc).<p>With those two things in place, you&#x27;ll figure out a process that works. You want to use DDD? Fine. You don&#x27;t want to? You don&#x27;t need it. You can have all the same information you&#x27;ll get via Event Storming and etc collected and shared verbally via tribal knowledge (ideally not just this, but I&#x27;ve done it successfully, if with some obvious risk), or written in wikis, or whatever, and be successful.<p>Without those two things? The devs will be bored as product talks at them rather than to them as they move stickies around, the stories will still reflect nothing of value, the actual work will be extremely low quality and will be constantly in need of rework (both due to quality and due to actual value), there will be constant asks for documentation that no one will read, and constant meetings to prepare for and explain status.
mwcampbell将近 4 年前
This is tangential, but:<p>&gt; Some engineers tell me they are “just engineers”. They don’t care too much about who uses their software or why. They are just implementing, say, JIRA tasks – building services with some bytes on the input and some bytes on the output.<p>I think this might be one reason why I didn&#x27;t stay in my previous job as an engineer at a big tech company. I do care about who&#x27;s using my software and why, especially since I work in an area (accessibility) that&#x27;s all about the human factors.<p>But now that I&#x27;m a cofounder and one of only two developers at a tiny company, where I have the power that I wanted to shape the whole user experience, I find that I too often get side-tracked trying to make the technically best decision on some tactical thing, e.g. choosing the best distro for a container, as if I were specializing in that area, when I should just quickly choose something popular and good enough so I can stay focused on the big picture. As is so often the case, I guess I&#x27;m trying to have it both ways.
评论 #27983673 未加载
评论 #27983686 未加载
评论 #27987893 未加载
api将近 4 年前
The microservices fad is hilarious. Let’s replace direct function calls and direct channels of communication with calls and channels over a network, and that will magically make our software more maintainable.<p>There is nothing a microservice does for maintainability that an interface and modularity won’t do.<p>It only makes sense if there are specific resource intensive things that need to scale separately, or if you have more than one language or runtime.<p>It’s probably something pushed by cloud providers to increase lock in and use more resources, since adding self hosting capability to a microservice based system that is dependent on Kubernetes is going to be that much harder.
评论 #27983558 未加载
评论 #27985384 未加载
评论 #27983175 未加载
评论 #27985345 未加载
roenxi将近 4 年前
If there is a software dark age, it will continue until hardware stops changing so much. Experience is worth a lot in software, but if hardware was stable it would be worth much more. We have solved problems that keep having to be re-solved because the hardware allows a new approach.<p>A good example - I bet modern graphics cards and simple what that does to neural nets are going to basically erase a lot of former truths about text search, image interpretation and when it is appropriate to use either. And another - rapid upticks in internet&#x2F;mobile availability reshaped what was true about the web 10 years ago.<p>It is hard to build well &amp; to last in such shifting environment. Low quality, fast solutions have an edge. In time the wheel will turn. There will be a sudden turning point where spending 5 years on really ironing out bugs and performance tuning starts to make a big difference.<p>In short, any problems have nothing to do with modelling techniques or the approach taken by software practitioners.
评论 #27983117 未加载
评论 #27983083 未加载
ladyattis将近 4 年前
I think a big part of needless complexity in programs comes from management. Most things I&#x27;ve done in enterprise software for various companies whether financial or food related are fairly simple underneath all the industrial specific uses. What gums up the works is many things management demands or misunderstands as feasible. First thing that comes to mind here is how often management wants a feature or a product and they want it sooner than what&#x27;s feasible for the team or the amount of existing code available to achieve the demand. Then there&#x27;s management&#x27;s misunderstanding of what programs can do as I&#x27;ve had non-technical people tell me to write a program that would magically anticipate user responses to their inputs and I asked them how we would determine that? And there answer wasn&#x27;t exactly clarifying. To me it was like they wanted Johnny Carson in a blue turban predicting the future. And finally, I&#x27;ve had management complain that our software doesn&#x27;t look like a specific product which I told them we could mimic the style but not outright copy it due to potential copyright and trademark infringement. It really turns into a mess when devs and other people with relevant skills (even lawyers, artists, and designers) aren&#x27;t allowed to do their job.
atsjie将近 4 年前
I like how this blog focuses on the organizational patterns of DDD in combination with Microservices.<p>My one experience with DDD and microservices was more the reverse; DDD was applied through code patterns but had no organizational&#x2F;proces adoption. This caused bloated over-engineered microservices where simple things took way too much code and time to figure out.
zwieback将近 4 年前
Keeping SW modular and loosely coupled is the #1 problem, in my experience. Whether you use OO, FP or old fashioned structured programming the problem of managing dependency will eventually outweigh all other considerations.<p>Sounds like DDD is just another set of buzzwords to learn but I like the warning that you should use common language when communicating across the developer-user membrane.
throwaway209329将近 4 年前
Bad management 101: Tell the engineer(s) how the problem should be solved, as well as avoid defining and understanding the problem. And every time the engineer(s) go off the set path, like when something doesn&#x27;t work out, make sure they stay on the path until the budget runs out, then blame the engineers.
ssivark将近 4 年前
&gt; <i>Maybe you know someone who tried DDD, and it didn’t work for them? Maybe you worked with a person who didn’t understand it well, tried to force these techniques, and made everything too complex Maybe you’ve seen on Twitter that some famous software engineer said that DDD doesn’t work? Maybe for you, it’s a legendary Holy Grail that someone claims work for them – but nobody has seen it yet.</i><p>Ina nutshell, that’s the problem with almost all software development methodology — we don’t&#x2F;can’t frame any of them in a falsifiable manner, so it’s difficult for the field to progress, even over decades. Bad ideas keep hanging around, and can’t be filtered from good ones. One can always keep playing “No true Scotsman” games on anybody’s experience, so most discussions end up devolving into froth.
discreteevent将近 4 年前
&quot;Instead, the technical talent goes to work on elaborate frameworks, trying to solve domain problems with technology. Learning about and modeling the domain is left to others. Complexity in the heart of software has to be tackled head-on. To do otherwise is to risk irrelevance.&quot;<p>Evans - Domain Driven Design
sgt101将近 4 年前
I&#x27;m curious about the trope &quot;microservices are more closely coupled than a monolith&quot; - in my experience this is because the microservice architecture is very badly thought out. There are many ways to refactor it and produce a decoupled and robust system. So - is this me deluding myself or is it the case of an architectural style being traduced because of poor implementation?
评论 #27984037 未加载
评论 #27983106 未加载
评论 #27983527 未加载
评论 #27983059 未加载
评论 #27983283 未加载
评论 #27983087 未加载
评论 #27983787 未加载
评论 #27983070 未加载
GuB-42将近 4 年前
I don&#x27;t like the &quot;dark ages&quot; metaphor in the article.<p>The defining characteristic of the dark ages is a lack of historical records, and a general idea of stagnation. A period we could nearly seamlessly cut out of history.<p>It is certainly not the case today, a lot is being recorded, we do a lot of things, so if we have to define a software dark age, when would it be?<p>I&#x27;d go with 2000 (dot com bubble burst) to 2007 (first iPhone). For the end date, the iPhone is not that important, but it marks the rise of &quot;big data&quot;, smartphones, and mobile internet.
runawaybottle将近 4 年前
It might be worth adding that Blind app (and to a lesser degree Ask HN) is littered with constant posts about depression, anxiety, burnout, and nihilism (centered around wealth accumulation with a lack of purpose).
评论 #27983316 未加载
mmackh将近 4 年前
Applies to the user side as well, i.e. gigabytes and hours of updates for phones or laptops with minor changes and security fixes.
mikewarot将近 4 年前
If the programmer doesn&#x27;t understand the problem, they can&#x27;t build an effective solution.<p>All else is noise.