|
| alephxyz wrote:
| A well publicized example is EA mandating all its studios to use
| the Frostbite engine
| __turbobrew__ wrote:
| I used to work on the Frostbite team at EA and it was quite the
| train-wreck. Many game teams spent considerable time moving to
| Frostbite only to fail and go back to the old game engine, the
| game teams which managed to move to the frostbite engine were
| unable to keep up with engine updates and got stuck on old
| arcane engine versions, the frostbite engine team was split
| between multiple geolocations and the teams in different
| locations didn't get along well and ended up developing silos,
| and finally there were about a million layers of management in
| the frostbite team -- I heard from old timers that the team
| used to be much more engineering focused.
| fnbr wrote:
| I have a bunch of friends who work for an EA studio (or who
| used to work for an EA studio) and they all _hate_ Frostbite.
| With a passion.
| wnolens wrote:
| Great short read and book recc.
|
| 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 --> generally bad.
|
| While reading this article I wasn't even thinking about software.
| I think of a lot of progressive and/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.
| twic wrote:
| I haven't read Seeing Like A State. I have to say, i am
| _extremely_ skeptical about the author 's fable about forestry.
| Commercial foresters today still mostly uses monocultures with
| evenly-spaced planting patterns, and i simply don't believe that
| they would be doing that if there was a straightforwardly better
| way to grow trees, even it was less "legible". This has a
| powerful scent of Gladwell-esque insight porn - the sort of story
| we love because it's counter-intuitive and makes us feel cleverer
| than people who haven't heard it.
|
| I don't suppose we have any foresters on this board who can
| comment?
| mathgladiator wrote:
| 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.
|
| 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.
|
| The mistake here is trying to globally optimize rather than
| seeking different vertical consolidation.
|
| By the way, this is why Amazon has so many services.
| steve76 wrote:
| kerblang wrote:
| In general, "unity" 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.
|
| Also refer to Jeff Atwood's Rule of Threes (which he borrowed
| from someone else) here.
| kingdomcome50 wrote:
| Counter example: Tom standardized a bunch of services... and it
| worked! Everything is easier and more efficient now.
|
| 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 _may_ be a result of not
| understanding enough of the system as a whole, or it _may not_.
| We simply can 't tell.
|
| Standardization (i.e. simplification) is generally a good thing
| in software development. How would Tim'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's solution
| is stepping-stone to something better. Impossible to tell.
| EnKopVand wrote:
| > Counter example: Tom standardized a bunch of services... and
| it worked! Everything is easier and more efficient now.
|
| I'm sorry, but that isn't really a counter point unless you
| have some cases to back it up.
|
| In my completely anecdotal experience standardisation never
| really works. I say this as someone who's worked on enterprise
| architecture at the national level in Denmark and has co-
| written standardisations and principles on how to define things
| from common building blocks.
|
| The idea was that something like a journal of your health can
| be defined as a model that can be used by everyone who ever
| needs to define a journal for health data. And for some cases
| it works well, it lets thousands of companies define what a
| "person" is as an example and which parts are the person and
| which parts are the employee and so on, and it lets them
| exchange data between systems.
|
| Until it doesn't. Because all of the sudden an employee is two
| different things depending on what time of the day it is,
| because a Nurse has different responsibilities while patients
| are awake, in some hospitals, and not in others. But because
| the "standardisation" doesn't account for this, 50 years of
| enterprise architecture in the Danish public sector is yet to
| really pay off.
|
| Some of our best and most successful public sector projects are
| the ones that didn't do fanatical standardisation but build
| things with single responsibilities so that they could easily
| be chained together to fit a myriad of unique needs.
|
| Now, I'm not against standardisation in any way, but sometimes
| it just doesn't make sense and sometimes it does. The issue is
| that the standardisation approach tends to begin before anyone
| knows which situation you are actually in.
| stonemetal12 wrote:
| As far as I can tell how well standardization works depends
| on "how close to the humans" it is.
|
| HTTP; TCP; json; xml: all standardize pretty well. Want to
| standardize your micro services on nginx with data in json?
| It will work swimmingly and save time because it is one less
| decision to be made, and overtime everyone will become
| familiar with how nginx is setup. Standardizing on what json
| libs to use so that everyone can dig into the json
| marshalling code without a lot of head scratching would be
| another big win.
|
| Trying to standardize people never works because they want to
| do things their own way and view whatever standard you try to
| impose as wrong.
| Splizard wrote:
| So the answer is, standardize communication/protocols but
| leave procedure to the free market?
| kingdomcome50 wrote:
| > I'm sorry, but that isn't really a counter point unless you
| have some cases to back it up.
|
| My counter example is about exactly as detailed as the
| author's example. Of course I was being tongue-and-cheek, but
| _clearly_ standardization has worked in software.
|
| You can toss your example right on top of all of the other
| failed attempts at standardization. It in no-way supports the
| conclusion that "standardization" is a problem. Like I said,
| I agree with the author's argument, but their conclusion is
| not supported by that argument. There are _many_ failure
| modes to large projects.
| jmull wrote:
| Nice, interesting article.
|
| But I would stress less that "Seeing Like a State" -- that is a
| top-down, global solution -- was not the problem.
|
| The problem was that "Tim" didn't really understand the problem
| he was trying to solve (well, none of us truly understand very
| much at all, but he didn't understand it better than many of the
| teams associated with the individual services).
|
| "Tim"'s proposal probably solved some problems but created
| various other problems.
|
| The best solution, though, (IMO) isn'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
| "Tim" could propose a solution, and the 100 micro service teams
| would be tasked with responding constructively. Iterations would
| ensue. You still really, really need "Tim", though, because
| multiple teams, even sincere and proficient ones, will not arrive
| at a coherent solution without leadership/direction.
|
| > A global solution, by necessity, has to ignore local
| conditions.
|
| That's just flat wrong. A global solution can solve global
| concerns and also allow for local conditions.
| chasil wrote:
| The scenario reminds me of this story:
|
| https://mwl.io/archives/605
| hosh wrote:
| > That's just flat wrong. A global solution can solve global
| concerns and also allow for local conditions.
|
| Past a certain level of complexity, that's no longer true.
|
| _Seeing Like a State_ is a great introduction to this, but I
| think Carol Sanford's work goes much more into detail. The main
| thing with the high-modernist view that James Scott was
| critiquing is that it comes from what Sanford would call the
| Machine World View. This is where the entire system can be
| understood by how all of its parts interact. This view breaks
| down at a certain level of complexity, of which James Scott's
| book is rife with examples.
|
| Sanford then proposes a worldview she calls the Living Systems
| World View. Such a system is capable of self-healing and
| regenerating (such as ecologies, watersheds, communities,
| polities), and changing on its own. In such a system, you don't
| affect changes by using direct actions like you do with
| machines. You use indirect actions.
|
| Kubernetes is a great example. If you're trying to map how
| everything work together, it can become very complex. I've met
| smart people who have trouble grasping just how Horizontal Pod
| Autoscaling works, let alone understand its operational
| characteristics in live environments. Furthermore, it can be
| disconcerting to be troubleshooting something and then have the
| HPA reverse changes you are trying to make ... if you are
| viewing this through the Machine World View. But viewed through
| Living Systems World View, it bears many similarities to
| cultivating a garden. Every living thing is going to grow on
| its own, and you cannot control for every single variable or
| conditions.
|
| For similar ideas (which I won't go into detail), there is
| Christopher Alexander's ideas on Living Architecture. He is a
| building architect that greatly influenced how people think
| about Object Oriented Programming
| (http://www.patternlanguage.com/archive/ieee.html) and Human-
| Computer Interface design (what the startup world uses to great
| affect in product design).
|
| Another is the Cynefin framework
| (https://en.wikipedia.org/wiki/Cynefin_framework). Cynefin
| identifies different domains -- Simple, Complicated, Complex,
| and Chaos. Engineers are used to working in the Complicated
| domain, but when the level of complexity phase-shifts into the
| Complex domain, the strategies and ways of problem-solving that
| engineers are used to, will no longer work. This includes
| clinging to the idea that for any given problem, there is a
| global solution which will satisfy all local conditions.
| salixrosa wrote:
| Thanks for the reading recommendation! Learning about the
| Cynefin framework and thinking about those kinds of problems
| led me to James Scott and to Hayek, but I haven't come across
| Sanford's work before.
| hosh wrote:
| Oh yeah, and I just remembered -- Go. It's a great way of
| training strategic analysis and making decisions. After
| moving past the basis, what one explores are global vs.
| local, influence vs. territory, discerning urgent vs. big
| moves, direction of play, and so forth. It is theoretically a
| perfect-information game, but it is sufficiently complex
| enough for humans that it simulates the fog of war and having
| to make decisions in face of uncertainty.
| jmull wrote:
| "It is theoretically a perfect-information game"
|
| Ha, ha! A concept for suckers.
| samatman wrote:
| Perfect information must not be confused with perfect
| information processing.
|
| GIGO does not imply its opposite.
| tcgv wrote:
| > This includes clinging to the idea that for any given
| problem, there is a global solution which will satisfy all
| local conditions.
|
| The parent comment wasn't stating this. It was stating that
| there could be a partial global solution that would benefit
| all microservices, a solution which teams would have to adapt
| for covering local conditions as well. A middle ground per
| se.
|
| Thanks for sharing the "Living Systems World View" btw, very
| interesting!
| jmull wrote:
| Truly, a fascinating perspective, thank you.
|
| Just for the context: I would say I'm a natural intuitive
| bottom-upper, except that I can't help but reconsider
| everything my intuitive self learns from a strongly
| analytical top-down way.
|
| From that perspective and 30+ years of experience (where I
| like to think I'm at least open to being completely wrong
| about anything and everything), I think top-down,
| prescriptive solutions can be useful and effective, but need
| to _understand_ and carve out the holes (and conservatively
| large ones at that) for "local" concerns - BTW, "local"
| often typically just means lower, where there the lower level
| itself can have "global" and "local" concerns.
|
| Now, I know this often doesn't happen, so let's lay out how
| it can work:
|
| - there's a top-down person -- "Tim" in the article -- who
| has responsibility for for developing a solution
|
| - there are the separate teams, who are responsible for
| communicating feedback on potential solutions.
|
| Also, I wish I didn't need to point this out, but
| "responsibility for" === "authority/control over".
|
| (If that's not the case, then never mind: you essentially
| have a "free-for-all" organization, and just better hope
| someone who's not too crazy wins the cage-match and can hang
| on long enough to be a net positive.)
| aidenn0 wrote:
| A point made that I think you are missing is that unless
| all of the separate teams fully understand the potential
| solution, then they can't provide useful feedback.
|
| If team X doesn't know Kafka, then they can't tell you the
| ways in which it's not as good as their existing
| (potentially ad-hoc, but definitely working!) message
| system. There may be things that their system does that the
| team just automatically assumes all message-brokers will do
| because it's "obvious" that it's needed.
|
| If, on the other hand, someone on team X organically
| considers Kafka as a local solution, learns it, tries it
| out, all of this stuff becomes obvious immediately.
|
| So the pure top-down approach has two possible solutions:
|
| 1. It gets useless feedback "meh, seems fine"
|
| 2. All N organizations actually take the time to try out
| the solution before giving feedback, which means you spend
| a lot of resources evaluating each top-down hypotheses
|
| The suggested solution from TFA is to have a top-down
| person embed in one team, find some improvements that work
| locally, then embed in a second team and do the same. Only
| then should one try to generalize from the shared
| experiences of the team. It recognizes that good feedback
| is expensive and bad feedback is likely, so just cut out
| the whole "give feedback" stage and have the top-down
| person learn from actually being embedded in a couple of
| teams.
| sokoloff wrote:
| That depends a lot on the cardinality of the set of Tims.
|
| If there's one Tim per team, you'll have 100 Tims proposing
| different global improvements and 100 teams needing to respond
| intelligently to those suggestions.
| vlovich123 wrote:
| That's when the business needs to assign one Tim, or a team
| of Tims as dictator(s). Everyone else can provide feedback
| but isn't the decision maker.
| canalmighty wrote:
| A Timtactorship
| GiorgioG wrote:
| > A global solution can solve global concerns and also allow
| for local conditions.
|
| Not if standardization is the priority.
| CogitoCogito wrote:
| > Not if standardization is the priority.
|
| Is standardization always a priority?
| [deleted]
| ryukoposting wrote:
| Through enough iteration, all problems can be solved. But, how
| many iterations will be required to reach a solution that works
| for everyone? At that point, is there a solid business case for
| the project?
| darkerside wrote:
| I think the key difference is whether the local teams have the
| choice to opt out or not, and my belief is that they should. If
| they can, they can solve their own problem if the global
| solution doesn't work. If the global solution wants to keep
| them as consumers, they must adapt. If they can't leave, the
| global team will almost certainly stop responding to their
| needs over time. Like communism, a global solution is terrific
| in theory, but human behavior causes it to break down in
| practice.
|
| Caveat, for small enough problems, good enough solutions, and
| charismatic enough leaders, global solutions can work. But they
| all break eventually.
| phkahler wrote:
| >> > A global solution, by necessity, has to ignore local
| conditions.
|
| >> That's just flat wrong. A global solution can solve global
| concerns and also allow for local conditions.
|
| So lets rephrase that. A global solution that ignores local
| conditions will have problems and will likely fail.
| bentcorner wrote:
| Makes sense. In my work I've seen this when trying to get
| developers on my team using certain patterns, styles, types,
| conventions, or tools (or the inverse - deprecating them).
|
| Suggestions are usually well grounded (e.g., "let's migrate to
| this `std` class instead of this old home-rolled wrapper), but
| sometimes there's some nuance to how something is currently
| done and deep discussion of the proposal can work through these
| bits.
| NateEag wrote:
| For anyone interested in social systems that help avoid this top-
| down, centralized failure mode, I cannot recommend RFC 7282
| enough:
|
| https://datatracker.ietf.org/doc/html/rfc7282
|
| A whole lot of wisdom is captured in that document, including a
| deep understanding of the differences between unanimity, majority
| rule, and consensus.
|
| If you're involved in standardization efforts in any way, whether
| it'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.
| svilen_dobrev wrote:
| interesting. For long time i've found that negative logic is
| more powerful/overarching than positive one - #ifndef NOT_THIS
| is more powerful than #if THIS .. and this article applies that
| even to agreeing vs not-disagreeing.
| yellowstuff wrote:
| This article does a good job describing one failure mode that'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 "never unify systems" or "always unify
| systems", but develop judgement about when things should be
| unified.
| [deleted]
| wvenable wrote:
| I disagree with the conclusion although not necessarily with the
| situation described.
|
| 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/think faster or you need to build frameworks, write
| libraries, and codify common practices.
|
| There are situations where that doesn't work but if your job is
| to pump out code for an organization there'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't be a slave to your own code; if it
| doesn't fit in the box then don't force it.
| sokoloff wrote:
| > to be a more efficient programmer you either have to learn to
| type/think faster or you need to build frameworks, write
| libraries, and codify common practices.
|
| That's focused on the writing/creating side of the equation. In
| my side projects, I became a lot more efficient when I decided
| to put effort into _using_ frameworks, _adopting_ libraries,
| and _copying_ common practices.
| wvenable wrote:
| You should absolutely be using existing frameworks,
| libraries, and common practices. But a popular framework will
| allow you make any application imaginable. If you're not
| making radically different applications every day, you can
| extend and constrain existing frameworks with your own code
| to make them specific to your needs.
|
| For example, all my applications have the same look and feel,
| corporate branding, and authentication features. We use a
| popular framework but extended it to handle all of this stuff
| so it's never repeated between projects.
| travisgriggs wrote:
| Lots of resonant points here. It's worth making it to the end.
|
| 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.
|
| 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.
| galaxyLogic wrote:
| As a whole the strategy of "Let's see what's common in all these
| systems" 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's no Silver Bullet in
| trying to combat complexity.
|
| 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.
|
| I like this sentence from the article: "Lots of it doesn't
| matter, but some of it matters a lot".
| Splizard wrote:
| Except when Tim decides to standardize how each micro-service
| is built, using a custom framework...
| itsdrewmiller wrote:
| This article is amazing and is perfectly timed for the news about
| Sri Lanka's mass move to organic farming -
| https://news.ycombinator.com/item?id=28443798
| eternityforest wrote:
| I've noticed that ALL beginners seem to have a reinvented global
| solution phase.
|
| Everyone who does electronics might say "Oh I'm going to use this
| one connector for everything". And it's either ok, if it's a
| standard connector, or a giant pile of crap that means they can't
| use a lot of existing stuff because they insisted on this insane
| DIY grand scheme.
|
| Usually such things have an element of "I want to do Y, so I'll
| build a modular kit X and use that to Y". And then X becomes the
| real project and Y is never finished.
|
| The insidious part is how the new product is often a tiny bit
| better than what's out there. But it doesn't matter. The mediocre
| standard solution is still way less trouble than the beautiful
| perfect custom thing. I'd rather have Just Works tech than tech
| that's Just Right. Anything that seems perfect and beautiful and
| simple, I don't trust, because it was probably made for one
| specific task, not to be a general standard you don't have to
| think about.
|
| 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.
|
| 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.
|
| Sometimes design by comittee protocols suck, but usually because
| they didn't have _enough_ 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.
|
| When you do it internally it can suck because it's more effort
| than it's worth to replace all your existing stuff.
| ryukafalz wrote:
| Some good points. At the same time, sometimes standardization is
| good and necessary. Imagine if everyone had to reimplement TCP/IP
| analogues to communicate over a network; we'd never get anything
| done!
| NateEag wrote:
| And those types of universal standards arrive by a process not
| unlike evolution - everyone who wants to has a crack at the
| problem and the solutions compete for a painful decade or two.
| Eventually a winner emerges from the top few frontrunners, and
| by 2040 only networking historians remember ALOHAnet or token
| ring networks.
|
| However, you can't top-down design a universal standard.
|
| With sufficient skill, patience, and wisdom, you may be able to
| design a standard that's good enough to be widely applicable.
|
| Humans have free will, though (in practice, at least, no matter
| what you think about the philosophical question).
|
| A standard only becomes universal when everyone chooses to
| adopt it.
| saila wrote:
| The first part of the article describes the common situation
| where we see similarities across projects and effort being
| duplicated, apparently unnecessarily.
|
| To improve understanding and efficiency, we come up with
| proposals that involve some kind of standardization, such as a
| shared library abstracting a service.
|
| 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.
|
| Obviously, central planning works quite well for certain things
| and, just as obviously, it hasn't worked well for other things.
| In most situations, it seems that a combination of planning +
| flexibility works best.
|
| Further, what works or doesn't work for nation-states isn't
| particularly applicable to software architecture. The analogy
| feels quite tortured to me.
|
| As to the example given in the article regarding trees, one could
| just as easily choose an example from modern agriculture where
| "central planning" seems to work quite well.
|
| In the end, I feel like the article just boils down to: "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."
| memorythought wrote:
| My reading of Seeing Like A State was not "central planning
| bad". The author explicitly acknowledges that there are many
| benefits to what they refer to as "high modernist" projects
| which we all enjoy on a daily basis. My reading was more that
| large scale projects designed to entirely change the way
| something is done in order to make it legible to a central
| authority necessarily throws away an enormous amount of local
| information and this leads to a tradeoff. You end up being able
| to build much bigger systems, but those systems are not as
| flexible.
|
| In the context of microservices that seems like a pertinent
| point because the purpose of a microservice architecture in the
| first place is often to allow an organisation to be more
| flexible and accommodate local knowledge.
| dre85 wrote:
| Very interesting article! I was left wondering though in what
| ways the queue abstraction solution failed?
| dilatedmind wrote:
| for this specific example, I think the shared library is not
| the correct approach. Queues work for simple fifo behavior, but
| in this case they also need fairness (and perhaps other logic,
| like rate limiting per client, different priority for certain
| clients etc)
|
| For example, "Customer-A is clogging up the work queue and
| starving other customers out". The solution to this could look
| something like linux's completely fair scheduler, where every
| client is allocated some amount of messages per interval of
| time. This means messages need to be processed in a different
| order then they are enqueued, and queues are not good at
| reordering messages.
|
| I would suggest implementing the queue abstraction as a rest or
| grpc service, backed by a database like postgres, which holds
| message payloads and everything related to message state (in
| progress, retry after times, etc). Now we can implement all the
| necessary scheduling logic within our queue service.
| kerblang wrote:
| They hinted at the fact that kafka is not actually a queue, and
| it especially has problems with fairness if you try to use it
| as a queue for unequally sized "jobs" and/or unequally sized
| consumers. Kafka is for the exceptional case; actual message
| queues are for the default/general case.
| dre85 wrote:
| That makes sense, but it also doesn't really support the
| article's overall argument about the perils of
| "standardization without understanding". If what you're
| saying is true then it could very well be that the approach
| to standardize the queuing would have worked perfectly well
| had the senior dev chosen a different technology to underlay
| his library (ie not Kafka), right?
| kerblang wrote:
| Yes technically the Kafka matter is a secondary to the
| author's main point, which is _understanding each problem
| first_. So yeah I would not waltz in and say, "Oh, no need
| for details, obviously you need to standardize on RabbitMQ
| not Kafka," without a second thought, even though it's
| likely that's _roughly_ where we 're gonna end up.
|
| But even then, I am not going to write a custom library
| when the drivers for either product are perfectly adequate.
| Standardization works best when standards are flexible, and
| trying to force my homemade library on every team is
| inflexible (usually it's just arrogance).
| sudhirj wrote:
| 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.
|
| 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.
|
| The more senior people share concepts and maybe libraries, and
| allow the team to use them if they see fit.
| 1123581321 wrote:
| This kind of consequential decision can happen at high levels.
| Obviously less often when a truly brilliant developer ends up
| in a small organization (but that has its own risks.)
|
| In the example, it was determined that they could not afford to
| let each service solve its individual bottlenecks ad hoc. So a
| corresponding strategic error was also made/forced at the
| senior business level.
|
| It's easy to speculate in hindsight, but in this case I could
| imagine a globally enforced throughput mandate supported by a
| widely visible and frequently reviewed dashboard, new
| tools/libraries as needed, and an optional central queue
| service required to 'compete for business' of the individual
| service teams.
|
| I can see potential problems with that too, though. In a sense,
| failure has already happened when growth management is deemed
| to be too important to be left to capable individuals on
| decentralized teams.
|
| Enjoyed the article.
| Fiahil wrote:
| I agree.
|
| People use the most practical things at their disposal. If Tim
| had opted to publish a repository of easy and _simple_ recipes
| for managing kafka and postgres integrations, while retaining
| the ability to use original libraries, then I see no reason why
| it would not have gained traction.
| shuntress wrote:
| It's the large-scale version of taking "DRY" too literally.
|
| Junior devs just repeat themselves because they don't know
| better.
|
| Middle devs rush into an incomplete abstraction by
| overzealously not-repeating-themselves.
|
| Senior devs just repeat themselves because they know they don't
| understand what it would take to abstract out the solution.
|
| Like everything... "It Depends". Don't Repeat Yourself _Too
| Much_.
| [deleted]
| GiorgioG wrote:
| I've worked at bigger companies and there are plenty of folks
| much higher than 'middle dev' forcing these types of things
| down the organization's throat.
| lawn wrote:
| Maybe even the CEO or CTO.
| pc86 wrote:
| You can certainly be a mid-level in skill but be a
| senior/staff/principal at the company, or a
| senior/staff/principal in _technical_ skill but middle or
| junior in strategic or design skill.
| [deleted]
___________________________________________________________________
(page generated 2022-03-08 23:01 UTC) |