There are two big trends in the modern IT industry that seem to be on a collision course, with inevitable disastrous consequences for somebody, I fear.
The first is the continuing penetration of computerised systems into ever more areas of the real world outside the data centre, as demonstrated by the Internet of Things (IoT), and the second is the increasing popularity of agile development methods that aim dramatically to shorten the delivery of software.
Software is a complex thing that is very difficult to do right. Just ask any programmer. In fact, it has been claimed that no non-trivial piece of software that has ever been created is entirely free of bugs.
Fortunately, software development tools have come on in leaps and bounds since the days when I learned to code as a university student, sometime in the dim and distant past.
Today's integrated development environments will spot typos and syntax errors and correct these as soon as you type them, and can autocomplete code for you.
What such advanced tools are not yet able to correct are logical flaws in the code, such as assumptions made by the developer that turn out not to hold true in real-world situations. In fact, there are numerous real-world situations where a piece of software may turn out not to behave as its creator expected.
This doesn't matter so much when your software is an iPhone app for adding computer-generated freaky hairstyles to photos taken by millennials and their friends, but flaws can have serious consequences when software is controlling physical hardware or a process.
Take the bug that caused Google's Nest smart thermostat devices to fail last winter, leaving customers with a cold house and no way to override the dead device until a software fix could be developed and pushed out.
For this reason, embedded software used to control machinery or for process control has traditionally been very painstakingly crafted and even more painstakingly tested and debugged before it is allowed out into the real world.
But this takes a great deal of time and effort, and stands in stark contrast to the current vogue for agile development methods that encourage coders to push out a solution quickly and then improve it through frequent updates.
This style of development has gained ground through the growing trend for DevOps, whereby developers and the IT operations department in an organisation are supposed to work together more closely to make the development process smoother and more efficient.
The idea is that by rapidly throwing up new solutions, organisations can stay one step ahead of the competition by turning up the pace of innovation. Indeed, 'fail fast, fail often' has become a mantra in some sectors of the IT industry.
But we are now entering an era where the IoT will see smart devices increasingly deployed in all areas of life, from environmental control to traffic monitoring to tracking goods in transit, and more and more equipment will be computerised and run by software algorithms.
What concerns me is that many of the devices hitting the market are being treated as consumer products, with the same 'push it out now and fix the bugs later' mentality that developers apply to apps for smartphones.
This is what appears to have happened in the Google Nest case. The finger of blame was pointed at a faulty software update that was pushed out to customer devices.
As far as I'm concerned, any piece of software that controls a physical process should not be treated like a smartphone app, with daily rolling updates to 'add new functionality'.
Instead, such software should be pieced together and tested as carefully and rigorously as possible. When there is a reasonable expectation that all critical bugs have been ironed out, the code should be frozen and updated only if a fix is called for. The 'if it ain't broke don't fix it' approach.
I fear that the pressure to get products to market as quickly as possible, before a rival gets there first, means that careful design and testing of software may not be the priority for device makers.
Let's hope that we aren't soon reading about people who have been killed or seriously injured because some 'smart' device failed to function as expected.
Some parts of Atacama have not received rainfall for 500 years - but a sudden deluge of water upset the Desert's delicate biological balance
Spitzer Space Telescope could not spot Oumuamua, suggesting that it is actually pretty small
Greenland crater one of the 25 largest impact craters on Earth
This long-sought progenitor star was identified in an image captured by Hubble in 2007