Much like an evolutionary tree our goal in technology adoption is to continue to move forward and evolve, rather than getting caught in a dead end. In the natural world, becoming bigger can be good but can lead to extinction events should the environment or food source change. Right now we are in a technology Jurassic period; oxygen and plants are plentiful and everyone can have wildly different ways to succeed. That said, let's examine the barriers to success as well as competitive advantages and the criteria we should use as predictors.
- Complexity
- Documentation
- Cost
- Scarcity
- Success Rate
- Community
1. Complexity
If a platform or language are complex (Drupal & Ruby are possible examples here) adoption will be slow. The smarter you are, the less likely you are to see this issue, as complexity is relative. However on the whole this hurts because it reduces the pool of available workers and generally pushes up rates and cost.
2. Documentation
The more documentation that is publicly available, the more chance of overcoming any issues with Complexity, helping to facilitate growth in the worker pool. This is generally a sign of a highly active Community, because it involves not just engineers but people who generally play support roles. This is an interesting lever, as it's relatively easy to influence (write more documentation) and yet it's value ages rapidly as the technology evolves.
3. Cost
As a technology becomes more successful, the available pool of workers is reduced and wages increase. This is inevitable, as learning of new technology takes months or years, while the demand can grow as fast as word of mouth can recommend it. Initially in this phase, the market can and will absorb the increased costs - employers and clients will pay more - but eventually cost increase will cause the demand itself to wane, but this occurs gradually, first as a reduction of the number of businesses willing (and able) to pay the prevailing rate, and then eventually starvation. This is a relative measure based on the environments that can be accessed. Looking at Drupal as an example, there is plenty more being paid by Oracle customers for less value, but if Drupal vendors can't reach Oracle markets and continue to need to compete with the less expensive options (like WordPress) they face stiff competition and will eventually be outcompeted. I believe targeted education, such as vocational programming, is a way to artificially keep costs down, though this needs to be fixed on a market-level rather then just for an individual employer.
4. Scarcity
Scarcity in the workforce, and the corresponding increase in costs is the precursor of scarcity for the technology as a solution that is available to solve problems. If there aren't enough people to build websites in Drupal, they will be built on other platforms, resulting is larger utilization for the most available platforms. This availability/scarcity of workers for a platform is amplified over time, because any project is a group effort. Every time a platform is used to solve a business problem more people are exposed to the technology and build it into their consciousness as a possible solution for their next project.
5. Success Rate
Every time a technology succeeds on a project regardless of the reason, that technology falls into the "win" category for everyone to work on the project. Every time a project fails, the technology is invariably linked to failure and is less likely to be accepted as a viable solution for the next project. This means success rate on a market-level (not just individual companies) combined with scarcity/abundance is a key factor in determining future total usage and community.
6. Community
There are a number of measures of community including:
- total usage (how many sites/developers) - votes for your software
- code contributions - the engine of forward progress
- organizational infrastructure - likelihood the evolution path will be a smart one
- community events - engagement
Looking at this from an evolutionary stand point, total usage is the most important stat, as "winning" should be defined as the being the most prolific platform. Being the "best" is subjective, and evolutionarily speaking is less important than being "more". Code contributions should be equated to how much evolutionary potential there is, which is an important factor, but only represents future potential. Organizational structure is less important, though I would liken it to intelligence - how well can we use the tools we have at our disposal? Community events are an indicator of engagement and show potential for increasing usage and code contributions.
Takeaways
Ultimately technologies that want to survive should pay close attention to these levers and predictors. Programmers, technologists and companies that want to be on a winning branch of the evolutionary tree should as well. History and nature have not been kind to those who fail to adapt.