"Features are always and everywhere aspects of integration, not implementation."
---Righting Software, Juval Löwy
When I was a graduate student, I once ventured to acquire a toy helicopter for two reasons: 1) I could finally afford such seemingly useless distractions and 2) I had always been curious about toys that could really fly. At the time, the technology that powered such toys was generally out of reach so the starting prices of such fantancies were suprisingly high. What now costs roughly €10 cost four times as much at a fraction of the technological capability. I recall flying the contraption along the corridors of my hostel, which simultaneously stunned and fascinated my hostel mates. Later that year, for Christmas, I got another such helicopter, which was just as much fun.
Over the years, I noticed a gradual evolution of flying toys: from increasing the number of rotors away from the standard heli design, to having four to even eight rotors; integration of numerous sensors which increased the flying stability so that these toys could now avoid obstactles, track objects and even perform acrobatic maneuvers at the touch of a button; best of all, was incorporation of cameras to provide a direct flight perspective for the operator making it more exciting to navigate.
These features, and many more have grown in such complexity that the drone (not toys any more) industry spans across such critical applications from agriculture to defence, humanitarian to energy and healthcare and there are now substantial companies such as DJI, which have taken this technology to the next level.
Perhaps the epiteome of this development has been spectacles in which hundreds of drones perform aerial acrobatics at night, forming dazzling light shows in 3D such as the one shown below.
What does this all have to do with software?
My observation is that applications such as the one highlighted above were never a 'feature' of drones. Instead, the evolution of the basic design has raised the capabilities of the resulting technology to the point that sychronised drone swarms are possible. In other words, drone swarms are an emergent phenomenon resulting from the technological capability - not the other way round.
This is how I believe great software comes about: not by ostensibly aiming for features but rather by combining individual components that have, over time, developed the capabitliy to deliver particular features of interest. The beautiful thing about this approach is what results is substantially far more feature-rich than any direct-to-feature design can produce. It also suggests that producing working modular systems that may not overall be productive at the right level may be more valuable than hacking together something linear that does the job.