Making Abstract Products Makes Things Hard

Learning

Business can be divided to providing product or service

Product is something can be transfered to customer, but service cannot. A business can provide both. Software is a service.

Software is an abstract product

We cannot ‘see’ a software, so it is abstract.

We are shipping code to user and user can ‘get’ a UI. Why we cannot see a software? UI is just a tip of the iceberg of software, the functional unit is the code behind. Code is the reflection of coder’s mental working, show how the programmer organize the logic, how to divide and solve the problems. As the software can be change quickly, a software is a living product, not a static one. A tech company is also providing service to maintain the software.

Softwares are complex

Software is instructions to computer. A computer is actually doing simple calculation, changing bits from 0 to 1 or from 1 to 0. To make a software from simple instruction is extremely complex. So programmer pack the small sets instructions together to form some commands and pack the commands in to module. Therefore, we can create a software with higher level commands. We are calling the ways we pack the commands as “creating layers of software abstractions”.

Each layer of abstraction simple a large amount of instruction. If anyone get lost in one or two layer, they will have no idea what the software is going on.

Software is too complex to manage, especially it have not physical constraints and cost to limit the complexity of a software.

Reference: Making Abstract Products Makes Things Hard