Thursday, June 10, 2021

A lament for individual developers

We in IT admire (or perhaps worship) the great individual developers of yore. We talk of John Backus and FORTRAN, and Grace Murray Hopper and COBOL, Dan Bricklin and VisiCalc, Anders Hejlsberg and Turbo Pascal (and C# and TypeScript), Linus Torvalds and Linux, Larry Wall and Perl, and others. But those stories we tell ourselves are just that -- stories. John Backus had a team at IBM. Grace Murray Hopper was part of the committee that designed COBOL. Dan Bricklin, Anders Hejlsberg, Linux Torvalds, and Larry Wall were probably the solo developers for the first versions of their products, but others joined for the later -- and more successful -- versions.

Yet we still hold the notion of the independent developer, someone working late at night on a "little side project" that can become successful.

The world has changed. I posit that individuals can no longer exist (profitably) in the computing world. The ecosystems of Apple, Google, and Microsoft, (and Amazon, and Facebook, etc.) are not made for individuals.

The problem, as I see it, has two parts.

The first part is complexity. Developing an app for one Apple device is not easy. One needs a significant amount of time and expertise to design the user interface that will work well. One needs quite a bit more to design an app (or multiple versions of the app, one for each device) that will work on multiple devices. The challenges are similar for Google (phone, tablet, and Chromebook) and somewhat less for Microsoft (desktop PC, laptop PC, and touchscreen tablet), but the challenges are there. The work of acquiring and learning the tools, and designing, building, testing, and deploying an app are daunting.

Add to those tasks the branding of the app, and support, and advertising (assuming one wants more than just the host app store). Don't forget legal text for terms of service and a disclaimer of warranty.

Also keep in mind that the platforms change. Apple releases new versions of its operating systems frequently. Those new versions require additional testing, and additional equipment (although Apple's new "Xcode in the cloud" may help reduce that expense). Google releases new versions of Android less frequently, but still often enough. Microsoft releases new versions of Windows annually, with multiple updates each year. On any platform, it is a lot to keep up with.

Those are the technical challenges.

The second part is bureaucratic. Dealing with the host company (Apple, Google, Microsoft) is not always easy, and the host companies can (and have) shut down accounts with little notice and even less explanation. Google seems the worst offender, with an appeals process that seems to consist of a query from the developer ("hey, my account is disabled, can you tell me why?") and the typical response ("for violation of one of our policies, and we have reviewed you case and our decision stands"). The stories about problems with Apple show an organization with some response, albeit slow. The stories about Microsoft... I haven't seen any stories about Microsoft disabling accounts. (Which isn't to say that it hasn't happened.)

Both problems (technical and bureaucratic) are, well, problems. And both problems show an impedance mismatch between a sole developer and the world of computing.

Large development shops have teams of people to handle different aspects of their apps, including design, coding, testing, and deployment. They can divide the work across teams, and different teams can keep up with the changes in platforms and technologies. (Not that such a task is easy in a large shop, but it is possible.)

I suspect that the large development shops have better relations with the hosts. If Apple or Google disabled the developer accounts for Netflix or Bank of America, those companies probably have a team of people who can reach out to counterparts at Apple or Google to resolve the problem, and quickly. They don't have to wait weeks (as at least one Apple user did) or face a wall of rejection (as multiple Google users have done).

Large shops stand a chance; individual developers do not.

There are two aspects of this situation that I find especially disturbing.

First, there are no medium-size alternatives. For phone apps, you deal with Google or Apple (or both) and that is the entire market. There are no small companies. There are no medium-sized companies. For desktop apps, you deal with Apple or Microsoft, and both of them are tightening the requirements for applications. (This process has been occurring since the mid 1990s with Microsoft's "Ready for Windows 95" requirements.)

Second, the messages from the host companies (Apple, Google, Microsoft) are enthusiastic about the capabilities of the platforms, and filled with phrases such as "with this new API, you can do [some task] easier than before". They rely on the vagaries of the English language; the word "you" can refer to an individual, an individual who is part of a team, or a large team of people as a collective. That vagueness lets the statements be true, but it is only true in the same sense as "yes, with our hiking shoes you can climb Mount Everest". Not exactly false, but not a complete description.

Large shops stand a chance; individual developers do not.

The notion of the determined individual developer probably has roots earlier than IT. One can certainly point to inventors of the past (Edison, Newton, Galileo) as examples of "the great individual". Or even further back, to the Roman and Greek philosophers. Perhaps even to some Egyptian or Babylonian individuals who are reputed to have done great things (by themselves).

I think that there was a time when individual developers could have made an impact in IT. Certainly in the years before the IBM PC, when the market was small and fractured among multiple manufacturers. After the IBM PC when DOS ruled. Even in the first age of Windows, when Visual Basic was popular.

But after the introduction of .NET (with its hundreds of packages and classes) and OSX (with its complexities) and especially after iOS and Android (in which Apple and Google, respectively, can close a person's account without notice) the individual developer is no longer able to compete.

This is not to say that we will have Google and Apple forever. The automotive world has been "corporate only" for decades, with complexity and regulation requiring the effort of dozens (thousands) of people to introduce a new model car, yet Elon Musk was able to form Tesla and make it viable. But just as Tesla is a corporate newcomer to the auto field, so will new entrants in the IT field be corporate.

Large shops stand a chance; individual developers do not.


No comments: