Three Ideas for Enterprises from Joel Spolsky
As some of you might be aware, I spent last week with this guy who goes by the name of Joel Spolsky. He often times tries to convince me he is a big deal in certain circles and that was certainly the case at the RISE Conference in Hong Kong.
At the show, I had the chance to speak with many startup entrepreneurs and developers. They told me how Stack Overflow was so instrumental in helping them become programmers and in launching their startup ideas. Praise for Joel and Stack Overflow was universal.
While RISE is the domain of tech startups, we also met with larger companies and the adoration for Joel and Stack Overflow was just as evident. What was also clear were the very different challenges enterprises face in being more nimble and tech savvy like tech startups.
Key levers for startup success is speed and simplicity. Startups do not have the excessive baggage of legacy code or technology complexity. However, massive companies struggle with both, meaning shifting course can be like turning around one of those super-sized oil tankers.
It was with this context in mind, that Joel shared three key ideas during his time speaking with enterprises in Hong Kong that can help these companies to operate more like the startups they attempt to emulate.
Core Vs. Context
One of the struggles established companies have is the balance between maintaining existing systems while supporting innovation. However that is not quite accurate. The real struggle is understanding what is core to the business as opposed to context.
Things that are core for a business are technologies that provide unique differentiation in the marketplace. For example, this could be enabling new customer experiences or adding seamless ways to integrate partners. The technologies that support these efforts contribute to customer acquisition, higher revenues, and a stronger market position.
Things that are context however do not provide much of a material advantage for a company in the market. These things may still be vitally important to run the business, but every other competitor needs to do the same. The market does not value these things because it is table stakes, the stuff that is expected companies have to do.
In other words, core technology as the profit center while the contextual technology is a cost center. However it can be hard to differentiate the two sometimes, for example core banking systems. Core banking is a pretty ho-hum, standard product. But modernizing core banking from legacy in order to enable a superior mobile banking experience is core to long term success.
Money for Nothing
How you organize your teams in supporting core versus context can help you to better deploy your developer resources and processes. However many companies, especially banks, have made it a mantra to hire the best and brightest developers.
This strategy can be enormously wasteful. There are organizations spending tens of millions of dollars to hire PhD’s from top engineering schools, only to have them work on VBA scripts in Excel. Before Joel started Fog Creek Software, that was his own experience with one employer, even the executive admin had a PhD.
You may think this is obvious, but that is not the type of common sense observed in the hiring market. There are companies spending enormous sums on external recruiters and job boards in the hopes of hiring the best and brightest, but if everyone is doing that, are you really going to get such talent?
In light of the core versus context, this type of hiring approach makes even less sense. Do you need top developers to work on Mainframe applications or back-office systems? Of course not, you merely need competent programmers that can get the job done.
A better approach is to hire less experienced or even novice programmers for these context type roles. Then you can train those developers to maintain and support those systems, while you deploy your scarce 10X developers to the more complex core technologies.
Less Engineering, More Re-engineering
The way we write software these days is dramatically different from how we wrote software even ten years ago. Back then if you wanted to write a simple database app, you needed to write all the routines and SQL statements from scratch.
Nowadays it is common to see systems written entirely in scripting languages like Javascript or Python or using low code solutions. With more API’s, you often do not even need to write more than a line of code. Take payments for example. Sending money over the Internet is incredibly complex, but providers like Stripe encapsulate that complexity in a few API calls.
This is often what Joel refers to as the abstraction layer. Developers no longer need to engineer new stuff. Rather they are re-engineering someone else’s code to craft solutions, whether using a code fragment on GitHub, an open source library, or an API call.
The advantage of course is speed. But in order to benefit from that speed, you need to have a culture and underlying systems to help share information and foster reuse. That is exactly the type of environment where a collaborative community platform can be invaluable. When used as the foundation of a knowledge architecture strategy, it becomes of the hub for content and code that accelerates reuse and speeds projects along.
Reflecting on the week, what Joel said was not new territory, he has discussed many of these topics on his Joel on Software blog. What is new is the current operating environment. Developers are even harder to come by, businesses are spending more on “core” activities, and all of this is being driven by customer expectations.
How are you adopting these ideas to shift your organization to operate with startup speed? What is your percentage of core vs context development?
Teleportation Without Dying
Looking forward to the day I do not have to get on a plane…
We help IT leaders in enterprises solve the cultural challenges involved in digital transformation and move towards a community based culture that delivers innovation and customer value faster. Learn more about our work here.