This morning, I listened to a recent episode of Hanselminutes, "Developing Designers with Catt Small". During their discussion, Scott mentions that "Internet Explorer will die" and "Safari is holding the web back," which immediately prompted a discussion of how evergreen browsers are presenting new and exciting challenges to todays web designers and front-end developers.
When Scott mentioned that many enterprises have web applications that were written several years ago and never updated since, it got me thinking: why are enterprises less likely to be up with the times and new startups seem to be the most cutting edge?
What I mean by this is that startups are strapped for cash. Wouldn't it make more sense for the startup to spend money once on a web site that looks and works tolerably well in then-modern browsers, and then focus on other aspects of the business (e.g. achieving profitability)? Similarly, enterprises are probably spending more money than they really need to on their IT budgets, so couldn't they very easily redirect some of that money to ensuring applications are up to date?
In a similar vein, startups are (or at least start out) small. They have specific people who specialize in the disciplines necessary to create a product and successfully bring it to market. This doesn't necessarily mean that they have, for example, a security expert among their ranks. Enterprises, however, have been around the block a few times. They may have a security expert, but if they don't, they likely have a legal or risk management team telling them they should. And they probably even have the money to hire one. Shouldn't this mean that startups are less up-to-date and secure, while enterprise applications are secure fortresses that continue to be secure in the face of the rapidly-changing web? Yet it is normally the other way around.
Of course, I work for an Enterprise, so I see application stagnation first-hand. We have applications that are at least 10 years old, some of which have gone to die over five years ago...and are still in production. Here are some of the reasons I see that startups are in a better position to be with the times:
- Lower maintenance overhead. When you've been around for 75 years and you have over 50,000 users of your internal systems, that means a whole bunch of technical debt and no shortage of people to tell you about it. It's very easy to find a developer spending an entire week doing nothing but resolving bug reports, possibly without time to fix the root cause. A startup, on the other hand, starts out with 0 technical debt. Takeaway: find a sustainable way to maintain 0 (or close to zero) technical debt.
- Agility. I mean this both in the "Agile Project Management" sense and in the "reacting to change" sense. Any Agile management technique attempts to keep the backlogs short, maintain focus on only what's most important, and keep code quakity high. It also expects (assumes, implies) that no code base lies stagnant, and provides a strategy for incorporating the perioding paying-down of technical debt that might accrue. Takeaway: adopt a process that prioritizes all possible work relative to all other possible work, so nothing stagnates.
- Developer Freedom. This is both a process issue and a productivity issue. Some developers enjoy coding more than exploring. Some enjoy researching more than coding. And some really enjoy talking to customers. Startups' processes tend to support this, because usually there is a shortage of people. No one will get upset if you do something you're good at and enjoy if it helps the organization, even if it might be "outside your job description". Developers tend to be smart people, so when they do something they think is the "Right Thing", theres a good chance other people will think so, too. Enterprises tend to put people in boxes, which means that if it's not in someone's job description, it simply doesn't get done...or your developers get demotivated. Takeaway: Encourage developers to do what they love.
In short, the reason so many enterprise applications are old, stagnant, and may be specifically black-listed by Microsoft Edge is a cultural one. Change the company culture and watch high-quality, up-to-date software emerge without any additional effort.