TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

One Way Smart Developers Make Bad Strategic Decisions

264 pointsby ScottWRobinsonabout 3 years ago

22 comments

jmullabout 3 years ago
Nice, interesting article.<p>But I would stress less that &quot;Seeing Like a State&quot; -- that is a top-down, global solution -- was not the problem.<p>The problem was that &quot;Tim&quot; didn&#x27;t really understand the problem he was trying to solve (well, none of us truly understand very much at all, but he didn&#x27;t understand it better than many of the teams associated with the individual services).<p>&quot;Tim&quot;&#x27;s proposal probably solved some problems but created various other problems.<p>The best solution, though, (IMO) isn&#x27;t that Tim should be smarted and better informed than everyone else combined, nor that every team should continue to create an independent solution. Instead &quot;Tim&quot; could propose a solution, and the 100 micro service teams would be tasked with responding constructively. Iterations would ensue. You still really, really need &quot;Tim&quot;, though, because multiple teams, even sincere and proficient ones, will not arrive at a coherent solution without leadership&#x2F;direction.<p>&gt; A global solution, by necessity, has to ignore local conditions.<p>That&#x27;s just flat wrong. A global solution can solve global concerns and also allow for local conditions.
评论 #30604046 未加载
评论 #30603740 未加载
评论 #30602478 未加载
评论 #30610810 未加载
评论 #30602865 未加载
评论 #30604432 未加载
评论 #30606599 未加载
评论 #30602636 未加载
评论 #30608337 未加载
NateEagabout 3 years ago
For anyone interested in social systems that help avoid this top-down, centralized failure mode, I cannot recommend RFC 7282 enough:<p><a href="https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;html&#x2F;rfc7282" rel="nofollow">https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;html&#x2F;rfc7282</a><p>A whole lot of wisdom is captured in that document, including a deep understanding of the differences between unanimity, majority rule, and consensus.<p>If you&#x27;re involved in standardization efforts in any way, whether it&#x27;s deciding where your team will put braces in source code or running software architecture for a Fortune 100, it will well repay your reading time.
评论 #30603314 未加载
sudhirjabout 3 years ago
This seems to be hallmark of a “Middle” developer. Not so junior that they couldn’t build a working solution that they assume everyone should use, but not senior enough to think twice about whether they should be building it.<p>The “we should make a common framework” for this line is the dominant thought at this level. Never even a library. A framework. Everyone must do it this way.<p>The more senior people share concepts and maybe libraries, and allow the team to use them if they see fit.
评论 #30605458 未加载
评论 #30601185 未加载
评论 #30603064 未加载
评论 #30602308 未加载
yellowstuffabout 3 years ago
This article does a good job describing one failure mode that&#x27;s not understood well, but the opposite failure mode is much more common in my experience- having lots of ways to do the same thing can be very inefficient and brittle, even at small companies. The right answer is not &quot;never unify systems&quot; or &quot;always unify systems&quot;, but develop judgement about when things should be unified.
评论 #30609508 未加载
travisgriggsabout 3 years ago
Lots of resonant points here. It’s worth making it to the end.<p>I work at a company where there’s a number of different little less-than-one-man projects, and there’s a lot of variety, and so a couple of non-tech types, frustrated with resource allocation (having the right kind of skills at the right place at the right time in the right amount) wants to standardize and simplify.<p>What I’ve observed though is that when you tell your house painters they can only work with black paint, they can only give your customers black walls, and when your customer wants wood panel, or textured fuschia, then you can’t earn revenue from that market demand.
kerblangabout 3 years ago
In general, &quot;unity&quot; is something software developers routinely pursue just for the sake of unity itself, failing to understand that unity comes with significant tradeoffs. It is much harder to build a unified solution than a localized, one-off solution. Divide-and-conquer is often a much better engineering strategy: DAC might create more work than unity, but the work is more likely to succeed instead of falling apart because we failed to anticipate all the use cases within the unified framework, especially when we lack experience in the domain.<p>Also refer to Jeff Atwood&#x27;s Rule of Threes (which he borrowed from someone else) here.
eternityforestabout 3 years ago
I&#x27;ve noticed that ALL beginners seem to have a reinvented global solution phase.<p>Everyone who does electronics might say &quot;Oh I&#x27;m going to use this one connector for everything&quot;. And it&#x27;s either ok, if it&#x27;s a standard connector, or a giant pile of crap that means they can&#x27;t use a lot of existing stuff because they insisted on this insane DIY grand scheme.<p>Usually such things have an element of &quot;I want to do Y, so I&#x27;ll build a modular kit X and use that to Y&quot;. And then X becomes the real project and Y is never finished.<p>The insidious part is how the new product is often a tiny bit better than what&#x27;s out there. But it doesn&#x27;t matter. The mediocre standard solution is still way less trouble than the beautiful perfect custom thing. I&#x27;d rather have Just Works tech than tech that&#x27;s Just Right. Anything that seems perfect and beautiful and simple, I don&#x27;t trust, because it was probably made for one specific task, not to be a general standard you don&#x27;t have to think about.<p>I think of the failures with global solutions are because someone did them on a small scale, or because they have to do with natural systems.<p>Fully top down planning of manmade things by a giant industry consortium is most of why tech is great. Otherwise we would have no USB C, and 12 different CPU architectures.<p>Sometimes design by comittee protocols suck, but usually because they didn&#x27;t have <i>enough</i> control, and instead of a protocol, they deliver a description language for companies to make their own protocol, with every feature optional so that compliance does not necessarily mean compatibility.<p>When you do it internally it can suck because it&#x27;s more effort than it&#x27;s worth to replace all your existing stuff.
kingdomcome50about 3 years ago
Counter example: Tom standardized a bunch of services... and it worked! Everything is easier and more efficient now.<p>I agree with the thrust of this post: Changing something that is not understood is a dubious undertaking. But the author fails to make a compelling connection between the above and software development. A poor solution <i>may</i> be a result of not understanding enough of the system as a whole, or it <i>may not</i>. We simply can&#x27;t tell.<p>Standardization (i.e. simplification) is generally a good thing in software development. How would Tim&#x27;s system look if they had opted for his approach from the start? How does the 3rd iteration of the system compare to the 1st iteration? Maybe Tim&#x27;s solution is stepping-stone to something better. Impossible to tell.
评论 #30601958 未加载
评论 #30610007 未加载
alephxyzabout 3 years ago
A well publicized example is EA mandating all its studios to use the Frostbite engine
评论 #30602816 未加载
评论 #30609601 未加载
评论 #30602316 未加载
orfabout 3 years ago
People are similar to water: they will often the path of least resistance.<p>The trick is to find a solution, document its “shape”, make it easy to integrate and market the hell out of it internally. Then you let the market decide.<p>Building a big shared common library can be a mistake, but that’s not because it’s intrinsically the wrong choice, it’s impact is partly a function of how many resources you can dedicate to effectively designing and maintaining it. At a certain scale the economics of this suddenly flips.<p>The problem in the post seems to scream infrastructure rather than code. Identify the different types of queues services need, pick some off the shelf and preferably managed solutions, then make it take 5 minutes to get started.
galaxyLogicabout 3 years ago
As a whole the strategy of &quot;Let&#x27;s see what&#x27;s common in all these systems&quot; is a good start to understanding the systems. There is a limit to the complexity any single person can understand. Unification is simplification. It helps understanding. But I agree it is no good trying to make the landscape fit a simple map when reality is much more complex. There&#x27;s no Silver Bullet in trying to combat complexity.<p>But rather than trying to unify everything think about micro-services. Each service can be its own isolated solution. Of course it needs to be optimized in terms of how well it works when all the other services are running as well. But I think isolation is the key to independently optimizing everything.<p>I like this sentence from the article: &quot;Lots of it doesn’t matter, but some of it matters a lot&quot;.
评论 #30609720 未加载
评论 #30633784 未加载
评论 #30607460 未加载
didibusabout 3 years ago
The article seems a bit defeatist to me. When I create an Interface and have a few implementations for it, I&#x27;ve created a standardization, most people would agree it&#x27;s a big improvement in code reuse and maintainability to leverage interfaces over just having a bunch of one time use concrete classes.<p>If you think of the United States, you might argue having a central government was better than each state being its own country and maybe that&#x27;s the edge the US has over Europe.<p>Deciding to build roads everywhere top down definitely helped with overall car transportation.<p>Having HDMI as a common format for streaming video and audio sources is a big improvement over each TV using its own format.<p>There&#x27;s plenty of counterexample to what the article talks about. So what gives? And on the example mentioned, how do you know if that&#x27;s a great use of standardization or not?<p>I&#x27;ve been in many companies and I think they often fail to invest enough in frameworks and standards across the tech side. AWS was born out of Amazon&#x27;s own effort to do top down standardization for example. And now it&#x27;s their biggest cash cow and the entire industry is standardizing over its services.<p>Way too often I see people stuck on contract like work. Each locally scoped small problem needs its own locally scoped big project to be handled. That just simply doesn&#x27;t scale.<p>The beauty of most engineering is exactly finding these top-down mechanism that do scale, even if it involves changing the business processes themselves. Think of a dishwasher for example, a top-down design that can wash most things but not all, eventually things that are not dishwasher safe became less and less popular and almost extinct, because people want to scale their efficiency.<p>Can top-down standards fail, ya sometimes, but when they succeed they take things to the next level of scale.<p>Don&#x27;t shoehorn every problem in the same solution, but also, don&#x27;t solve every solution independently of one another and reinvent the same wheel, or your engineering team of 10 will quickly become thousands while your business product will have barely grown.
twicabout 3 years ago
I haven&#x27;t read Seeing Like A State. I have to say, i am <i>extremely</i> skeptical about the author&#x27;s fable about forestry. Commercial foresters today still mostly use monocultures with evenly-spaced planting patterns, and i simply don&#x27;t believe that they would be doing that if there was a straightforwardly better way to grow trees, even it was less &quot;legible&quot;. This has a powerful scent of Gladwell-esque insight porn - the sort of story we love because it&#x27;s counter-intuitive and makes us feel cleverer than people who haven&#x27;t heard it.<p>I don&#x27;t suppose we have any foresters on this board who can comment?
ryukafalzabout 3 years ago
Some good points. At the same time, sometimes standardization is good and necessary. Imagine if everyone had to reimplement TCP&#x2F;IP analogues to communicate over a network; we&#x27;d never get anything done!
评论 #30601496 未加载
sailaabout 3 years ago
The first part of the article describes the common situation where we see similarities across projects and effort being duplicated, apparently unnecessarily.<p>To improve understanding and efficiency, we come up with proposals that involve some kind of standardization, such as a shared library abstracting a service.<p>My team has recently embarked on such an effort, and I was really hoping for a new take on how to avoid the various pitfalls involved in attempting this kind of standardization.<p>Obviously, central planning works quite well for certain things and, just as obviously, it hasn&#x27;t worked well for other things. In most situations, it seems that a combination of planning + flexibility works best.<p>Further, what works or doesn&#x27;t work for nation-states isn&#x27;t particularly applicable to software architecture. The analogy feels quite tortured to me.<p>As to the example given in the article regarding trees, one could just as easily choose an example from modern agriculture where &quot;central planning&quot; seems to work quite well.<p>In the end, I feel like the article just boils down to: &quot;Make sure you understand the problem domain and the cost of large scale change before you spend a lot of time and effort making said changes.&quot;
评论 #30602123 未加载
wvenableabout 3 years ago
I disagree with the conclusion although not necessarily with the situation described.<p>A programmer only has so many hours in the day; if you want to be a more efficient programmer you either have to learn to type&#x2F;think faster or you need to build frameworks, write libraries, and codify common practices.<p>There are situations where that doesn&#x27;t work but if your job is to pump out code for an organization there&#x27;s a good chance that most of your applications will have the same authentication, the same look and feel, etc. Putting effort into that core will pay dividends later. But you can&#x27;t be a slave to your own code; if it doesn&#x27;t fit in the box then don&#x27;t force it.
评论 #30602924 未加载
mathgladiatorabout 3 years ago
While there is much to worry about over centralization, there are benefits to at least trying if you can consolidate n-m efforts when n is the total number efforts using a queue and m are the snowflakes. It all depends on organization size and whether some costs can be amortized.<p>Everyone having specialized everything is exceptionally expensive at scale. Here, the key is tower of babel. What Tim should have done is kick start the effort with one or two teams, then organically grown it by reducing operational burden for new teams.<p>The mistake here is trying to globally optimize rather than seeking different vertical consolidation.<p>By the way, this is why Amazon has so many services.
hyperpallium2about 3 years ago
I expect &quot;Seeing Like a State&quot; goes into it, but top-down global abstraction and standardization often does work. e.g. mass production, mass media, and States themselves are unbelievably, fantastically successful.<p>The point is more than it doesn&#x27;t <i>always</i> work, as standardization is a poor substitute for actual understanding.
dre85about 3 years ago
Very interesting article! I was left wondering though in what ways the queue abstraction solution failed?
评论 #30602323 未加载
评论 #30601588 未加载
itsdrewmillerabout 3 years ago
This article is amazing and is perfectly timed for the news about Sri Lanka&#x27;s mass move to organic farming - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=28443798" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=28443798</a>
a1445c8babout 3 years ago
I thought it was interesting that an article that talks about the dangers of generalizing (aka standardizing) based on a few data points is, itself, generalizing based on a few data points.
wnolensabout 3 years ago
Great short read and book recc.<p>I find myself often trying to articulate this idea (sometimes to myself, often to a friend) - starting with the map and building a territory from it --&gt; generally bad.<p>While reading this article I wasn&#x27;t even thinking about software. I think of a lot of progressive and&#x2F;or socialist politics. To assert that the world should look as you one sees fit is flawed, both because one is not representative but mostly because the complexity of a system beyond toy example cannot be accurately modeled enough when the risk is catastrophe.