As a developer we daily look for oportunities to sell ourselfs and our products. We seek new frontiers by advancing our skills and constantly looking at new technologies. We work on new innovative products, that we hope will conquer the world. The question always remains, are we actually producing and advancing for our clients? Do clients really need all the functionality and options they purchase. On the desktop market it has been known for a long time, that products present more functionality than the common customer will ever need.
The problem with products is, that we want to target a broad range of customers. We are producing one single product that satisfies as many potential customers as possible. So even if a customer does not need a set of features, another might just be looking for those. Another reason is the constant competition feature set, we are being compared against. If one provides an innovative feature, we have to provide that and another feature to set us apart. Feature sets are just like the “GHz run”, we had on the pc hardware market for years. The customer
So where is the customer in all this? Well he sits on the outside, facing the fact, that it is getting more more difficult to make any conclusive decisions in a short period of time. When evaluating options for a project, it gets difficult to find a perfect fit. Customers take the options that fit their target goals as close as possible, living with the fact that many of the features they paid for are not required at this stage of their project. At this stage :), well some of those features might actually become handy in the following phases, evolution of the project.
So where does that leave us as developers ? Well the classic product is not dead, as many customers just accept the fact that they pay and get more than they currently need.
If you are a customer with a set budget, its a complete different ball of wax. You would want to get the most out of that money. In that case the classic product is of no use.
The goal is to provide the customer with a custom package that provides only the required set of functionality. For us developers this means building custom reusable blocks, that represent one or a combined set of functionality. These blocks would be combined to a package, that represents the project requirements. This means faster development, easier scheduling and to the point budgeting. You build once, reuse again and again. Especially with so many new and converging technologies, its easier to streamline each functionality into a solid block. As soon as your toolbox is filled, you can build anything with ease.
Still having the technology out of a toolbox, does not make it a solution. As a developer you are forced to think more and more like a consultant, wisely providing your customer with the right set of functionality.
This makes development alot more interresting for me, than providing the classic product ;)
Classic product development is not dead, but under the surface those products are often repackaged blocks, streamlining the invested development time for more than one product.
Such toolboxes are often advertised as frameworks or application development platforms, which abstract common functionality.