Last week I mentioned Mark Bernstein's essay on the surprisingly complex sequence of decisions, trade-offs, and design choices that went into creating even the most routine-seeming aspects of the electronic environment that surrounds us.
I'm a software engineer by education (CSC) and have been in the software world for 30 years now, 98% of the time working for companies that develop and sell software products (as opposed to consulting or IT)...I've been a CTO for the last 12 years.On the specifics of the author's example of "writing software today", the example he uses is really no different than software design 30 years ago, meaning that the simplest of capabilities has many details that must be addressed in order to make it function correctly in all situations as well as to provide the "quality" expected by its users. His specific example of UI design is stuff commonly dealt with since the advent of GUIs [Graphical User Interfaces, like Windows or MacOS]....The portion of the article (and part of Mark's bigger point) that is interesting to me and is definitely a change in the larger software market is that of the "App" (small, specialized applications generally targeted at the mobile computing market; typically either free or at extreme low cost (i.e. $0.99)). One of Mark's points is that there is so much cost to deliver even the smallest of features (even those which are minor/secondary) that it can make it extremely difficult to build a profitable business.So is this a good or bad thing? Someone could argue that this is "bad" and that Apple and gang have ruined things for the software market, even perhaps arguing that there will now be a whole set of software that will never be built and delivered because it can't be done profitably.However, the flipside can also be argued in several ways. There is of course the obvious advantage of now having a centralized delivery system connected with a huge potential set of buyers, enabling a company of any size (1 and above) to sell in large volume immediately with virtually no capital outlay. The accompanying downside of this is the challenge of having your offerings be discovered among the endless set of apps available. But beyond this basic level of the marketplace dynamics is the pressure it puts onto software organizations to build the right products.Ultimately, software products survive and thrive based on the real value that they provide their users. That "value" is wrapped up in many things, both obvious and subtle. Products with no real value come and go very quickly, or never really make it ever. Products which start well, but then go off track (either through bad vision or bad execution/engineering) fail as well, and the marketplace is very quick to choose, very unforgiving, and long on memory.I think that this is actually a good thing for the software business for these reasons: (1) product managers and software designers must be much more thoughtful in what they build and how they build it, being keenly focused on end user value, and (2) software engineers must be much more careful on the design and implementation of the system. In a sense, it drives software back to being "crafted" rather than just built. Ultimately it's a win/win: (1) the software community (individuals as well as teams) is forced to be much better at what it does; and (2) the value of software is pushed higher and higher, providing great impact on peoples lives.
I can think of examples that both support and work against this "overall things are better" thesis. What's striking about the goods and bads of these new pressures on the software world is how they resemble what is happening to publishing, academia, journalism, and discourse in general. For now, offered as one more data point for the record.