Pro-{duct, duction}
Osman /“The limits of my language mean the limits of my world.” - Ludwig Wittgenstein
In the context of software development, the terms “product” and “production” are often associated with the culmination of work. These terms have been widely adopted in the software development life cycle, drawing on parallels with traditional manufacturing practices.
product noun /ˈprodəkt/
a direct result; a consequence
something manufactured
the result of multiplying one number by another
production noun /prəˈdʌk.ʃən/
the process of making or growing goods to be sold
the total output, as of a commodity
Throughout history, industries have borrowed experiences and methods from one another to innovate. An illustrative example can be drawn from automotive history. Before the advent of the car in the 1900s, there were horse-drawn carriages. With the invention of the engine, horse was replaced with engine, resulting in the development of engine-powered cars (ironically keeping horses as unit of power). This making it easy for people to adapt their understanding of “a car is coming” just as they would have with “a carriage is coming” during the 1900s. The fundamental concept remained the same.
A similar transformation has occurred in software development. Long before the digital revolution, the world had established production lines, produced tangible products, and appointed product managers to oversee these processes. These frameworks and terminologies have seamlessly transitioned into the software development arena, being adapted to describe the intangible—despite initially being designed for manufacturing physical goods. Software was even packaged into “boxes” (such as disks or CD-ROMs) to resemble a classical product lifecycle, complete with tangible handovers.
However, equating software with traditional products can be misleading. The nature of software defies the classical concept of a ‘finished’ product. Software is, in essence, a continuously evolving ‘snapshot’ of an ongoing process. Attempting to contain software within a ‘box’ and distribute it via conventional logistics fails to appreciate its dynamic nature.
Although this approach might hold for the creation of art, such as films or paintings—where the final work is a complete expression of the artist’s vision—it neglects the underlying values that define software. Focusing only on the end product, captured at a particular moment in time (timespan ‘x’), disregards the sustained effort and development that shapes software’s essence.
Consider how we interact with Amazon.com: is the software ever truly the ‘same’ from one second to the next? Changes are constantly implemented, contrasting with the identical experience of using an “iPhone 15” across the globe, where each unit is the same.
This ongoing dynamic profoundly influences how we conceive the process of software creation. It impacts project management, tempting us to fixate on timelines and to attempt ‘packaging’ features—as if one could box up a flowing river.
It is clear that the software ecosystem requires a shift in its linguistic framework. New terminologies need to be explored and adopted to better reflect the fluid and evolving nature of software—a quest for a language that acknowledges continuous innovation over static completion.