Why Are Enterprises So Slow?
zwischenzugs.com
zwischenzugs.com
Let's say I want to change some part of the UI of some app. If I'm by myself I just change it. If I'm on a team first I have to convince whoever has the power to decide to change it to allow it to be changed, that might even be a whole committee. Then several people will be involved, likely a UX designer, possible a separate UI designer, all of which will have to discuss the feature and all of which also have other responsibilities.
The larger the company the worse this usually gets. Maybe the change has to be run by the security team to make sure the new UI is not a security issue. Maybe it has to run by the privacy team to make sure it's not going to leak data. Maybe it has to be run by an inclusivity team to make sure it's not offensive in some culture I'm not familiar with. Maybe it has to be run by a localization team to make sure it will work in every language.
All of those things add time. Maybe they are all required and good, especially at a large company with a global marketplace but they certainly add to the time taken to do something that a tiny team wouldn't do.
The flip side of the coin is that no start-up is moving a billion tons of rice, or can park an army off a foreign shore in a week, or lay 10,000 tons of steel rail across a continent every day, or delivery a million packages a day, or make 10,000 processors a day, each with the complexity of the entire European system of roads.
So speed is relative to the size of the task at hand. Large enterprise can move big things so fast it literally takes the air out of the room.
I think of organisational decision making like organic decision making - that the speed of the organisation's reactions are dependent upon its frame of reference. The frame of reference here is the time between sensing and reacting.
The eyes and ears of small businesses are very close to the brains, and so decisions can be made rapidly by the small number of people who have capability to marshal resources into a response. Enterprises have layers of processing between the eyes and brains, along with many more sensors than a small business, meaning that questions take longer to be settled and decisions made. However no small business can wield the same power as a large organisation when the army of deciders all focus on a single outcome.
It comes naturally over time, every single time. Organization can fight it, but it needs to be a dedicated effort and priority. If let on its own, complexity arises.
I've seen medium-sized young companies trying hard to have flat hierarchy and least amount of processes, committees etc. It worked. It really did. But everybody understood this is the goal, it was clearly communicated. It attracted amazing talent of brilliant people fed up with the (common) opposite.
I can see now in oldish bank how a simple change might involve 20 people having their say, often managers with their own political agenda not always aligned with what's best for the employer. Stuff that gets actually developed in 2-3 MDs takes overall easily 10-20x more because of this.
I'm working at a Fortune 500 currently that does a lot of chemical manufacturing. Outside of delivering boatloads of chems, everything in the company is a constant clusterfuck. Stock price stays alright so nothing changes.
So much this. It gets so bad that at some of these places, there are folks whose real value seems to be in "knowing the right people" in the org to who get certain things done rather than any real technical/managerial skills.
I strongly believe the agility of an organisation can be addressed with:
- number of projects/initiatives worked on - accountability of said projects/initiatives - technology to facilitate the automation of admin to track these projects/initiatives - collaboration tools for knowledge sharing - mindset shift
And this is not something for just the management team or the employees but a collective agreement on this is how we work. It goes back to building and commuting to maintaining a high performing culture. It needs buy-in from everyone on what the expectations are and what the rules of engagement should be. Any sign of politics, bureaucracy? Management needs to snuff it out. The more we accept certain behaviours, the more we allow it to fester within the organisation.
Too many projects being worked on just causes backlog and confusion. We did have an agile coach to come in but the organisation remains the same.
If anything, developers seem to get angsty when the organisation doesn't bend to do whatever they feel is most necessary immediately, failing to realise that there are also other priorities coming from other parts of the business.
And the fallacy of popularity bringing good solutions.
Saying no is safer than saying “Yes.”
When only a single “No” will halt a project, the chance of getting stuck is higher.
At a non coding job in the past, I've had to explain the same change to five different people or teams in dramatically different ways to get a job done sometimes. If you saw me talk to these different groups you might not know I was even talking about the same thing each time....but I was.
Ever seen the login system for a multimillion dollar app broken because someone was able to end-run around the slow boring stupid release process and just shove a little UI change in production? I have. And when the entire system of lead engineers is out trying to figure out what got broken and how it got broken, and managers are trying to get the information they need to explain to their managers why the company just got publicly embarrassed and lost thousands of dollars, their response is not going to be sympathy at your struggles with being slowed down by all this stupid consensus bureaucracy.
This is close to heart as I've grown a few teams from "small green-field experimental 3 people groups" to full on 8-10 person launched feature teams, and watched the process slow to a crawl despite the additional manpower. There's definitely a _reason_ for some of the bigco paranoia, but being flexible and accomadative in this sense is certainly not one of our strong points, so you usually get a decent amount of institutional boilerplate/plumbing work too, _especially_ when some of these side groups (e.g. UI) have a vested interest in having their fingers in as many pies as possible.
A somewhat tongue and cheek but accurate picture to draw: I've seen a dropdown menu go from being "code it up before lunch" to "3 weeks of meetings, multiple reviews, and demos in front of stakeholders" task. Were some parts of that useful? Sure. All of it? Probably not.
(To be clear; I don't actually take issue with much of the conceptual process, and like that there's some amount of oversight, but the nature in which it gets placed on teams is often 1. often not fully aligned with their actual "threat model" and prioritization in whatever space this is and 2. often given with inopportune timings and without a good support system. I call out the negatives above pretty exclusively because I think a bigCo _could_ do the processi-fication with a lighter touch and serve the same ends.)
Someone, can't remember who (and I wish I did!) said "Process is the scar tissue of organizations". These processes don't come from nowhere. They come from specific negative experiences the organization had.
The problem is that it's easier to add process than remove it or clean it up so it isn't so stressful. So once process is really slowing things to a crawl, it's time to clean up, but it's a real chore.
This is my career, basically. I come in to big organizations with big legacy messes to try to make things easier. Reducing the headaches of awkward and often unnecessary process is close to my heart. But a big part of that is recognizing the necessity of process. There's a huge difference between "this is frustrating" and "this is worthless".
Is your current business - http://congruence.io ?
It redirects to https://congruence.io with invalid SSL certificate...
My current work is as an ordinary devops engineer at a very, very large company.
I do want to go after the problem space again (mostly, helping find the problems caused by interdependencies of complex, slow-changing systems - "System A changed, so System B broke"). But it's a seriously nontrivial problem, which is why there aren't any good products out there for it.
Nah. Enterprise people are just as smart and hardworking as startups. But they have much bigger problems. Just as it's harder to turn a battleship than a speedboat, the scale matters. One thing I pointed out to people at the meetup... if you heard of a startup doing $50m annually, you'd think they were big and successful, right? I've worked on several different projects that size in the enterprise, and they tend to be just a sideline in some behemoth doing tens of billions of dollars (or more) of business a year.
One thing I often say about the enterprise, and what makes it different from startups - in the enterprise, it's more important to not be wrong than to be right. This encourages cautious behavior. Missed opportunities are better than disasters. Anyone with real experience in the enterprise has been on a proper death march. They've seen just how wrong things can get. Put a couple of years of labor in, handcuffed to a shambling corpse of a zombie project, and your attitude toward failure changes.
The flip side, though, and this is awesome, is that you can work on really BIG things. Much bigger than any startup is tackling. That's fun.
The real danger for the big corporation business model is technological/social shifts wiping their business model out, not competition. I saw this when I worked at the Fed, years ago. I worked in a division that had two major financial products. One was 80% of their revenue and very powerful, a nearly billion dollar business. The other (what I worked on) was 20% of the division revenue. In the span of seven or eight years, those numbers flipped. The big line of business basically collapsed due to changes in the financial industry, and the smaller product basically ate all of its revenue and then some. This meant hundreds of layoffs and some very painful realignment at the executive level, including months wasted on a power grab.
Prototypical example: health care insurance claim management systems. You cannot begin to imagine how hard it is to rip one of those out and replace it.
But the broader lesson, in keeping with the article's balance, is that enterprise tends to calcify and optimize existing processes.
This is excellent, if say, you need to scale a process to 10x the volume without wrecking your margin. Or survive a government regulatory audit.
This is terrible if your market upends and you need to make sweeping changes to stay relevant. (viz Kmart and Sear's slow immolation)
Sucky, slow software is serving a purpose. It just usually isn't the most important purpose in a rapidly mutating world.
> The flip side, though, and this is awesome, is that you can work on really BIG things. Much bigger than any startup is tackling. That's fun.
But big in what sense ?Could you give some examples of these projects or comment on their nature if you can't talk exactly about the projects ?
This is definitely one factor, but I think it's something that enterprises manage on a regular basis. They have many suppliers and different arrangements to cover the risks. The problem is often on the startup side where there is a reticence to do anything that would change the product to suit a particular customer and "compromise the mission" of the startup. End users are important, but aren't the real customers of an enterprise startup.
If you are relying on enterprise customers this will naturally bring a level of tech debt in order to service them. It's better to embrace this than avoid it in many cases. I've seen startups in denial that certain features would be useful to many customers, only to provide them to a subset of customers where they are legally obligated, simply to maintain a facade that they aren't really a traditional enterprise startup (to support recruitment, product management egos, etc.)
Doesn't that push up integration costs ? For every new product there is data migration from the old one, installation costs, API changes (maybe not this) and just cost due to downtime.
A ridiculous number of integrations fail.
If you can convince someone with authority (either technically or via relationship) that an integration will be successful, you're in.
This is IBM and SAP's greatest asset: knowing that, if shit hits the fan, management can write a check for $x,000,000 and a team of engineers will be on-site tomorrow to fix the effort.
Not having that is exactly what scares management about open source and/or startups.
The power and financial disparity is too great. When one customer is >25% of your revenue (and they know it), bad things ensue.
You don't get to do stuff like that with your new lead gen app.
Could you put those numbers in perspective. Don't know enough to make sense of those. Why did IBM say it couldn't be done and in which year ?
I can sum up 90% of enterprise fails in one word and it's "silos". Every system and every discipline is a fiefdom that must be protected. I have actually witnessed fast enterprises where you wouldn't expect because they successfully broke their silos and put everyone working on the same product on the same floor answering to the same bosses regardless of what layer was theirs.
Precisely this. Which is why strong enterprise leadership needs to map out the value streams of their teams, understand where their bottlenecks are, and work at improving the bottlenecks. When the bottleneck is no longer affecting work throughput, find the next bottleneck, and improve it. Rinse and repeat. Doing so requires senior leadership's direct intervention, not just because only senior leadership has the full picture, but also because the main way of motivating enterprise employees is by directing the attention of senior leadership at them.
> it helps if people get fired for not constructively working with the changes
It doesn't just help, it's a non-negotiable necessity. Enterprise bottlenecks are not literal/physical/PVC-pipe bottlenecks, they're people. Organizations which cannot fire (literally or effectively, by moving them to non-bottlenecked projects) their non-compliant bottlenecks are organizations which cannot fix their bottlenecks.
At my last job (~40 employees total) the dev team was absolutely crippled by other teams blocking us simply because they could, and the “leadership” would still take it out on the dev team because our work was ultimately the deliverable to the customer. I got out, they sufferred a major data breach, and from all accounts it is the same old story to this day.
The hard part is firing the right people. If you are going to fire someone, you better be absolutely right it's the cause of the bottleneck, and it really wasn't something else (If I had a dollar for every time some new or existing senior leader thought they could just come in and fire a few people to shake up a place and turn the ship around, boy I would be rich) My experience, everyone is always pointing the finger to something else -- sometimes they are right, sometimes it is a case of simple finger pointing. It becomes difficult to distinguish the finger pointers from the ones that are genuinely trying to overcome the bottleneck. And once senior leadership gets involved, the finger pointing gets exacerbated because now people feel like they might be threatened.
You are right that the problem is people, but it is also cultural -- what is the culture like in your organization? Do you have a culture of problem solvers and people willing to set aside their own selfish goals to achieve the goal of removing the bottleneck? Hire people that will instill this culture into your organization -- grassroots style, and watch it spread like wildfire. To that -- I look to my HR department. How are we hiring people? Are we assessing not just on talent but also the type of personality traits we want to see exemplified in our organization? This becomes difficult but it must be done, because top down intervention can only last so long, but if you want lasting change, it has to start at the local level and spread up. That also means senior leadership empowering those at the bottom.
To me its not a fire / senior leadership issue, it's culture, nurturing that culture. If you are a director or senior leader in a tech team, you need to really take a hard look at the culture you want, and P.S. this means that you yourself must exhibit these qualities as well because people always look up for role models.
Which is precisely why senior leadership needs to map out the value streams in their org first, identify bottlenecks second, get a sense of vision about what the area should look like without a bottleneck, and lead people in that direction. The question about who to fire has nothing to do with who's at "fault" for the bottleneck, because generally, nobody's at fault, it's just the way things organically got to that point. Firing is not a response to fault for the current situation, it's a response to a failure to respond to leadership's direction, so finger-pointing has little to do with it.
> Are we assessing not just on talent but also the type of personality traits we want to see exemplified in our organization?
This is nigh impossible to do without incurring prejudicial bias, not to mention that the devils of our nature (sloth, toxicity, etc.) are never revealed during interviews. Furthermore, this kind of perspective assumes that people cannot adapt to their environment, i.e. companies that hire players instead of problem solvers cannot turn them into problem solvers.
Whatever the situation is at an enterprise, if it sucks, it's not because people are "evil". The situation is the sum of the current incentives - how people's roles are defined, how people are rewarded, etc. If the situation sucks, it's because the current incentives at the enterprise have led the enterprise to that situation. A big part of changing the culture is changing the incentives. Do you want people to focus on problem solving? Then reward problem solving. Do you want people to focus on helping each other? Then reward people who look beyond the narrow confines of their job description. The "players" will take note. But rethinking incentives very much requires senior leadership - not just to approve but to drive - and still, requires a willingness to fire those who allow the devils of their nature to get the better of them.
Lots of smart, talented and energetic people are expending most of their power just figuring out who to talk to about what or what the hell that out-of-the-blue email from corporate finance means for them.
Just figuring out how to get a thing done can be exhausting.
Half-jokingly, as soon as an "individual contributor" knows enough to be productive, they're promoted to management.
I was heavily invested in our public facing technical side, working a lot with our on-boarding, teaching newbies to be really self-sufficient, working through the technical issues with our clients directly, and then I was asked to take on a Management position.
I liked the pay raise, but I made it clear exactly what I wanted from the position, and though we butt heads on it still, my boss respects the fact that I still am heavily invested with our technical team while doing the Managerial work. We had to revisit the job definition a few times to find a description that matched what I was (am) doing and also made HR happy, but we did it.
The point is that in some cases at least, a promotion to management doesn't have to be a death knell for "individual contributors". It depends on the company's willingness to accommodate the wants of the individual, and the individual's own desire to continue contributing. I know too many people who did get the Management golden ticket and relished it for just being an excuse to boss people around and make more dashboards in our CRM.
I wonder how much of it has to do with team sizes. I feel like a 4 person team (inclusive) would be ideal for a manager who also wanted to act as a technical lead and contribute a moderate amount. Any bigger, and the scope of what your team does, as well as the amount of time needed to devote enough time to all your employees, starts to get too big for you to contribute at a technical (e.g. source code) level. Yet we continue to take great technical workers and put them in this weird PM-hiring-HR-architect mixture of a position where they barely continue to leverage their skills anyway
In the context of a startup, if you try something and fail, you'll generally be recognized for taking initiative even if the result does not pan out. At that level, learning what doesn't work is often as valuable as learning what does work. Startups often bias towards hiring people with just this mentality because that is what they actually need.
In the context of an established company, sticking your neck out is like career suicide unless it's a sure thing. Unlike a startup, you're risking an _established_ reputation on a new idea. So you end up working in an organization that has an inherently different view of risk and trying new things.
I'm not sure whether "nobody knows how to do anything" results from an institutional aversion to risk or from the natural result of hiring people that fit within that system, but the end effect is exactly as you describe. It's way too hard to do anything off of the beaten path, and trying to do anything along those lines _immediately_ results in negative feedback which makes employees a lot less likely to attempt such actions in the future.
For example, I can build a chatbot in a day that will take some load of a bunch of people in my department. Will it be deployed? No way. Will it be seen as a possible threat to people's patronage networks by cutting their teams and budgets? You bet. Will I possibly be chastised for doing something that is not in my JD? Possibly. Will I bother making it in this case? Nope.
To customers it really does seem as simple as passing Dunbar's number means support will probably suck or border on non-existant, pre-sales questions will go unanswered or get a process driven irrelevant answer, invoice payment gets ever more lax, and so on.
Or maybe it's that companies smaller than this still have enough people around that care.
But what is perverse is that the whole organisation is designed to prevent that. Distributing responsabilities among many people, none of who understand the whole process, all of who are just trying to apply some policies with no understanding of what these policies are meant for, and be ready to kill the company if the policy says so.
I work in one of these kafkaesque places on the business side, I remember a project manager from IT once telling me that they need to make a change mandated by the compliance department that makes absolutely no sense and would have prevented us from serving our clients. I challenge IT, no we don’t want to go to jail, it has to be done. I go to the compliance department, explain why it is a moronic decision (with a bit more tact), they agree, and reverse the policy.
And I have seen that done many many times. So many people in these orgs are paid to say no, to resist any change, or simply do not care or understand. One needs to plow through, which requires a huge amount of energy, and results in most project being half baked, over expensive or simply never getting anywhere.
That’s why large organisations, populated by otherwise smart, well educated people generate so much mediocrity.
When a nonsensical requirement reaches implementation, it indicates that all the gatekeeping in place before this stage has failed.
It's important not to so thoroughly explain the problems that big companies have that you argue them right out of existence, because they clearly exist and as others point out, actually routinely pull off feats that no startup could dream of.
Early on it was proto-language enabling better cooperation within our traditional troops. Later it was abstract symbolism. Tribal identity allowed us to have tribal identity relationships with people we don't know. Concepts like "king" or "priest" allowed all sorts of things to exist which couldn't earlier. Religions, empires, armies, bureaocracies, joint stock companies...
Anyway, flexible cooperation in large groups is still a limiting factor. That's why a 4 person startup can solve problems in a week that an enterprise can't solve with 40 in a month.
In a nutshell, the specific mechanisms of enterprise slowness are interesting, but inevitable. There will always be something. There's flexibility, cooperation & size function. If you want to increase one, the others needs to decrease. Bureocracies limit flexibility, but allow copperation to happen over a larger group. Markets are flexible and scalable, but uncooperative. Startups are cooperative and flexible, but small. This last one is where we came from.
https://zwischenzugs.com/2017/10/15/my-20-year-experience-of...
we were small enough not to need a collective fiction we had to name.
I think we're of a mind on a lot of these things. Another broad concept that I think ties into this topic is "legibility."^ The "collective fictions" you guys had when you thought you had none were illegible, informal ones.
Dealing with unaknowledged vagueness is something people do really well, in small groups. "Everyone should be polite and respectful" is a statement we understand, even if it's vague. If a disciplinary committee to decide if someone has been polite, then that statement is no longer enough. You'll need legibility, something like a law code.
Going from hacking to RAD to agile is an attempt at legibility, a theoretically understandable and justifiable process for making decisions and writing code.
^Stolen from Venkatesh @ ribbonfarm.
It might be interesting to reflect on the secondary and unanticipated effects of surfacing those rules by making them legible.
"A friend of mine got a job at a big company and was
shocked to see his colleagues worked just a few productive
hours a day.
They didn’t seem to care about their work or have relevant expertise.
My friend said: “Wow, this company is going under.” Then the company
released its quarterly reports and profits rose to an all-time high.
The momentum of the company’s brand and relationships was sufficient to
propel it forward."
http://cdixon.org/2012/05/19/the-default-state-of-a-startup-...Work at big companies is kind of like that. Once a company gets big enough, any given person doesn't really know anything. Seemingly no one is doing anything productive -- it's meetings all the way down. But the software still gets shipped. It doesn't happen the same way it happens at a startup where someone sits down and codes a feature. It happens in a totally different way, where one hundred engineers go to meetings all day and talk to QA and analytics and bizdev, and maybe commit one line of broken code a week. It takes way more people, and the production process is totally different, and it takes way longer, but stuff still happens (often quite successfully).
From xkcd:
> On that scale, the polymers in the bowling ball would behave more like a liquid
So polymers, not metal.
--
[0] - https://en.wikipedia.org/wiki/Planet#2006_IAU_definition_of_...
lol please tell me you invented this
When you're small, it's easy to avoid regulatory attention and whatever slap-on-the-wrist fine you may get isn't a lot of money.
The change and risk aversion really just comes from keeping the business running. When things work, try not to break them. Old large enterprises tend to have a lot of business critical things that "just work" and have been for a long time. Younger/smaller companies tend to have fewer battle scarred systems.
But once they get scarred, they typically add a process or policy to prevent it from happening again. After enough of them, congrats, you're enterprise speed.
It's like microservices, but with systems of people and businesses.
partners that allow for some agile, iterative back and forth becomes rarer as they increase in size, especially since often their own system lack the flexibility for continuous integration or safely rolling back changes/data.
that's why you get requirements, specifications, architects and solution managers in the enterprises. people love to mock them for being dysfunctional and some truly are, but once contracts get into the millions and lawyer get involved mistakes are no longer "learning opportunities".
The end result two years later is OS upgrades rarely break much, and regular updates never do. Enterprises can be unstuck but it can be painful.
I think enterprises are still shifting from the old approach where you make it work and then it's fine, to realizing that in an internet-connected world, you have to keep up at all times. A few big liability cases would do wonders to push this shift along.
Almost everytime we change versions of software things break when we went moved to office 365 there was breakage (Stuff I would have thought for sure would have been well tested - PST files in outlook for example broke).
Same thing when we went from Internet Explorer 8 to 11 our internal intranet didn't work.
I work in an environment that includes custom-written apps from the Windows XP era, and usually the absolute worst we hit was "hey, this device doesn't work on Windows 10, we have to buy a newer one". Not a big deal when it's a $6 USB-to-serial adapter, but people will look at you like you're crazy when you say the network is incompatible with an HVAC system. (Solution in that case, just take it off the network, you're better off.)
But believe it or not, you can still sync Windows Mobile 2003 devices with Windows 10 PCs, Microsoft's backwards compatibility is still insanely solid in most cases.
Many new features to fulfill customer needs is a common reason. Many customers, with new requests, issues reported. It's slow because if I'm not methodical I cause problems for people who don't want this next enhancements. It's slow, because the current emergency takes precedence, and taking to long on fixes means a meeting on why something is behind.
Business priority is not "deliver fast" it's "keep running, don't attract attention".
And in any other planet, we call that a 'Pull Request.' My first real tech job was a community college that really bought into the whole ITIL framework. Important changes typically had to go through a Change Management Board, which met weekly. Meanwhile, key authentication systems involved passing passwords from PHP to perl to bash to vbscript in cleartext, in such a way that dollar signs and other string interpolation sigils would be processed, and therefore were banned. The person who wrote this kludge is now in charge of IT security for the college. And there was no version control to speak of anywhere, definitely no puppet or chef or ansible. It worked, but there were pretty much monthly fuckups along the lines of 'and then the utility truck backed into our power distribution cabinet' or 'the SAN vendor's technician mentioned this is the third time this week he's been on site with a client to deploy this emergency stability patch,' or 'the new guy upgraded the antivirus running on our databases, and we can't roll back because nobody has the old installer anymore' or my personal favorite: 'this position requires oncall duties 24/7/365.'
A starup has nothing to lose. The site is janky for two hours? The only users are friends, and the outage might actually bring more visibilty if you make a good write-up.
Incidentally, this ties together with “why do young people found more startups than senior executives”
First, changing anything large and complex with a lot of moving parts is difficult.
You can see the exact same effect in a code base as an organisation.
If your code base is small, making a change has limited consequences and you can usually predict them all up front.
If your code base is large, you lose the ability to predict what the consequences of a change are. So you need to do it to find out. If you don't have good test suites, with excellent regression tests, then the chances of missing a breaking change are good, and "doing it to find out" will result in a broken system.
Organisations don't have test suites, or regression tests. So there's a lot of effort done up front to try to minimise the impact of changes. A lot more work involved in even the smallest changes.
Secondly, small organisations are optimised for flexibility, large organisations are optimised for efficiency.
A two-person company needs to be flexible and adaptable. In startup terms, they probable haven't hit product-market fit, and are still developing their product, changing it to meet the market as they discover what the market needs. Change is constant, and so the organisation needs to be able to change fast. Doing things efficiently is premature, because the efficient process may change tomorrow and become unefficient.
Large organisations have found a business model and grown to fill it. They know exactly what they're making, for whom, for how much, and have a well-defined product and market. All the bottom-line growth will come from reducing costs rather than increasing sales. So they focus on reducing costs. But there's a trade-off between flexibility and efficiency. As the organisation becomes more efficient and more cost-effective, it also becomes less flexible. At the apex of this process, the organisation is so streamlined that any change (by definition) becomes less efficient and therefore less profitable, and therefore any change is difficult and unwanted.
There's a reason we call subroutines "procedures".
For example, Dev and Ops don't have to be separate, even in a regulated world. You just have to make the effort to show your auditors that there are sufficient controls in place to make changes safe. You also have to work to make sure as much change is out of scope as possible. Ok, maybe the payments system requires that one person writes code and one person deploys it, but if you make sure that almost all of the payment system is out of scope except for the actual money processing, it will be rare that you need to change that one piece of code, so effectively you've avoided the problem.
Same with change control -- you don't have to have a big onerous form. You can build a system that automatically logs all the relevant information as to who made a change, so that you have a log that you can show your auditors or whomever needs to check. Again though, your organization has to be willing to spend time on the tooling, but the tooling scales better than a new process.
And then for security, again, you don't necessarily need sign off on every change. If you build automated auditing systems that audit every change for security implications, and have sufficient logging, you can be reasonably sure that the changes are secure, and then only dig deeper on the ones that are suspect, or get people to agree to seek approval for things that are big changes or might cause a security problem.
If your organization is willing to spend the time building the software and working with the auditors to explain how everything works, you can avoid most of these problems, and then your enterprise will scale much better.
Successful enterprise cos move fast where it matters.
Rolling out some desktop OS thingy when your core business is retail? No need to be excellent there. Excellence has to be in the areas where you compete, rest is a distraction.
It's guaranteed to slow you down and may even turn your work environment toxic. It's sometimes set up to promote ego and protectionism (of your position) instead of aiming to achieve for the company.
If your company's environment changes, it's so static that moving quickly becomes impossible.
The only option you have then is buying up start-ups and decoupling them from the corporate structure. It's utterly absurd if you think about it thoroughly.
But there's a serious problem that the author is writing about his very small sample of experience and claiming it applies broadly.
First, he sets up a false dichotomy between the (good) lean startup and the (bad) regulated enterprise. Because his enterprise experience was in a regulated industry, BTW regulated for Very Good Reasons.
But actually most enterprises are not regulated, and don't just take a cautionary approach because the government bogeyman told them to and it's out of their control -- with very strong implication they would not choose that life if they could make up their own mind. The real truth is that when you, as cowboy devops, make a mistake that causes downtime or data loss, you bring huge losses to the company in downtime, loss of productivity, actual cash out, maybe even public perception if the fault is externally visible.
The priorities are different, plain and simple, and rightly so. Enterprises have to protect themselves. Startups have to take risks.
One way is not good and the other bad. They are just different. The idea that one needs to fight the valiant fight from within is absurd. Switch jobs to a smaller company! The author claims that it "feels like failure" which just means he is in the wrong job at the wrong company. That's all.
It's pretty bad conclusion to hold up Bezos' mandate as some shining example. In reality it has caused lots of internal strife and Bezos is known to have pet projects and the rest of you losers can suck it.
I do love, and will steal, the decagon of despair.
2) I fundamentally disagree with the premise and content of this article. It is ALL window dressing.
Organizational Design is a field that deals with this issue in depth. The OODA loop is one of the key ideas for understanding decision latency. Basically, it takes time to take in data, figure out what to do with it, decide on a solution, and then enact it. Basically the quicker you run through this loop, the quicker your organization's clock speed is.
But why would that speed change depending on the size of the organization? Well, because the first three steps in the loop take more time with more stakeholders even if the final one wouldn't change.
Humans do not think infinitely fast. As more stakeholders become involved, more thinking is required. But we systematically ignore this cost, despite it being very present and observable, because it involves thinking about thinking. See that article on the front page about how K8s are cost efficient for personal projects? It fully discounts the cost of the thinking required to learn and understand the system.
The head of your multi-billion dollar corporation wouldn't need board slide deck summaries of financials broken out by division, or updates regarding process change initiatives at the [X] level if they had infinite clock speed. They'd just parse the inhuman levels of data and come to a sensible conclusion. But they can't. This means there is a ton of work repackaging and communicating information across levels of an organization to fit the available thinking time available at each level.
From the perspective of someone dealing with the organization, however, things appear monolithic: when a customer service agent gives us an absurd reply to a query, we assume the entire organization is stupid.
This is how life goes, and as some here pointed out already, even if large inefficiencies are unaddressed a company can be profitable for significant time because of an established market position, brand, extensive regulations in place to protect their interests, some little known high profit products, etc. However give it time, and we see them fade away when upstarts take the risks, have the vision, shake up their market one piece at a time. And the cycle repeats.
So far I have learned that management, aka navigating politics, is harder than navigating technology.
Really well written piece that clearly explains the reality of "Enterprise DevOps".
If a corporate lawyer ever ambushes you with this, the best thing to do is ask instead how you can make your current process auditable, rather than tearing the org apart. If that doesn't work, start looking for a more innovative place to work!
It is true that there are multiple inefficiencies: kingdom building, incompetence and laziness, risk aversion, broken communication lines etc... but in a very fundamental way an "enterprise" doesn't "want" to be fixed
A good book is The Innovators Dilemma: https://en.m.wikipedia.org/wiki/The_Innovator%27s_Dilemma
I believe enterprises are slow because they optimize for efficiency in the sense to use the least amount of energy to reach a goal. They do this by learning institutionally which means by tuning their processes, standards, norms, guidelines, etc. This works great if you need to mass-produce physical things.
Agile is very inefficient. All this continuous integration machinery, all those team meetings, all these frequent reprioritizations. Agile can be very effective though because you notice earlier when you are wrong. The hard thing to do is that you have to stop when you went wrong. Otherwise you are just doing a more wasteful waterfall. For enterprises this is a cultural change which is hard to do.
The problem is that these enterprises have to change because software is eating the world. Fortunately for them, regulation provides a good moat against disruption. For now.
I already blogged something like this before: http://beza1e1.tuxen.de/cost_of_agile.html
Big companies are slow for the same reason.
Yeah, I don't think that happens much.
Your point may be that people should go to prison for presiding over bad things that weren’t actually against the law. That path sounds tricky.
democracy
employees are interested in self preservation, not the enterprise itself
solutions are not the best available, instead they are those that cause the least friction
there is nothing different about a software enterprise from any other enterprise
There aren’t really regulators the way it’s described, and you wouldn’t worry about them the way it’s described either. Unless you made changes without planning. What you would consider when upgrading your OS, for instance, is how you teach the new OS to the 5000 employees who can’t tell the difference between and iPhone and an android tablet.
Ownership is easy in enterprise, we have organized everything into departments and IT operations is owned by IT. It’s audited that way, and things are changed according to the guidelines.
You’d literally never have an audit come in and point any of the things suggested out, unless your enterprise isn’t run like an enterprise. The first step in the manual for upgrading, is to make sure you stay within the law and within company policy, and you’d never run a project all the way through without involving people who know regulations.
I don’t think enterprise is risk averse either, but I do think you need to be able to prove the benefits of a change, to be allowed the cost of it. You don’t in a startup, because startups aren’t managed very well because they can adopt, but I don’t think that’s necessarily an advantage. A lot of changes in IT are unnecessary, costly and done without any benefit realization.
I don’t think enterprise is slow either. We’re on the forefront on how to use stuff like ADFS and identity management, to the point where we’ve had to sent the countries leading consultants home because they where total newbies compared to our guys. I just think we’re only fast where it matters.
We still use stuff like LinqToSql in production for instance, which is a hopelessly old tech to a lot of people, and it’s also slow and inefficient. Except, when you look at it from an organizational point of view, it allows our developers to do their SQL integrations around 90% faster, and we rarely have more than 60.000 continuous users, so the efficiency never matters. The cost benefits of using LinqToSql is crazy high because developer time is expensive.
I don’t think a startup would use it, but I also don’t know of a single startup that doesn’t need to be explained how our entire public service does identity management because they are completely incompetent on matters they can’t look up on stackexchange.
Maybe it’s different in America, but I kind of doubt it, because the focus of enterprise will always be on value generation and benefit realization, where as the focus in startups can be almost anything in the world.
So from my perspective enterprises are slow because of a few reasons but I'll list what I think are the most relevant and valid reasons first.
1) Slow and steady is easier to manage when you have a lot of people. Simply summarized.
For example when we merged with other companies to become a giant company we were little silos who all did things our own way. Not only that but some of these silos were habitual doers.
Devops people who went from idea to implementation within days. They were used to walking into the CEOs office and asking for 5 rack servers, and getting it. :)
I loved that climate but what happens when those passionate people disappear and they haven't documented any of what they have done? You end up wasting a lot of time figuring it out with new staff.
So a natural progression was to use project and service managers and then we're already slowing things down a lot.
2) Service packaging. When given a situation like the one described above, what exactly are we selling? No mountain is high enough for us, no request impossible to implement. So clients get whatever they want within moments during this stage.
And then we're merged and become a giant company. There might be a merger of 2 or more smaller companies that worked in this way. You now have a giant mess of custom made services and offers to clients. I don't envy the people who need to sort that mess out.
So this causes you to be a lot more careful and have a lot more meetings before anything can be implemented.
3) More classic reason for slowness in big enterprise is that it is in fact very big and it takes special skill to be able to work with people you never met.
The talent you need might be across the country or in Bangalore. That's a situation you must adapt to. But some people send one e-mail and expect things to get done. No, use the phone! Be proactive but without being annoying.
Setup a case where you track your progress, even if it's just trying to contact a storage specialist in Bangalore. The case will remind you every week to call them until you get them on the phone. Or it will remind you that you've done this 3 times now and you can escalate.
Case management also slows down processes.
4) And of course regulations, also classic. We have government contracts that don't even allow us to get help from people outside the country. And sometimes have such strict rules that it takes weeks to approve a new employee access to their systems.
But a combination of 1 and 2 force you to implement processes and frameworks that tend to slow all things down. And to easier follow frameworks like ITIL for example you get big heavy tools that also slow things down and cause frustration among employees.
These are all my personal observations, I have no training in ITIL or in business management.
Simple. People in Enterprises with any decision making authority at all have comfortable lifestyles and earn a lot of money. Job #1 for these people is keep the cash and perks flowing. What's the benefit to them in changing anything, compared to the risk ? So do nothing !
Add to that in many cases, the only people with authority to take decisions are close to retirement. Something they don't want to jeopardize !