The reality of executing Cloud Computing, Agile Development & Product Engineering.
In the last twelve years there has been a renaissance in the business of making software. The term renaissance here isn’t chosen lightly. In a similar fashion as the artistic movement started in Florence in the 14th century, the introduction of Cloud computing triggered a revolution in how we make [software] and as important: a self-awareness about how we think about making [software]. All of this, in a concerted connection with the developments of computer science, served to prove — once again — the unique ability of the human mind.
For the impatient reader that isn’t familiar with Cloud Computing I will venture that:
Cloud Computing is a collection of internet accessible products that commoditize compute resources.
If you are a business owner whose business requires electricity, you can think that using Cloud Computing is similar to pay for an electricity bill versus building and maintaining your own generators.
This thrust in the industry has it’s two philosophical parents in early Computer Science notions:
Computer Science isn’t about computers. This misnomer has to do with the physical connotation of the term “computer”. With the commoditization of compute resources, every programmer should reflect on the notion that Cloud Computing is a computer for the world.
Notation and paradigm always grows more declarative. The programming language always evolve higher up in abstraction and this paradigm shifts brings the programmer closer and closer to the domain where there is a problem to solve.
Economic Value of Cloud Computing (1) – Running Cost
The economics of scale of serving thousands of clients plus market competition help drive the total cost of Cloud Operations below that of running them in house.
Economic Value of Cloud Computing (2) – Regional Compliance
The declarative nature of Cloud Computing allows well designed Apps to support compliance related to Regional boundaries with ease.
Example: To comply with the requirements in GDPR the owner of a cloud product could enforce that all traffic from EU users be hosted in the EU.
Economic Value of Cloud Computing (2) – Measurement
Thanks to Cloud Computing and the new architectures it enables, software professionals can for the first time answer the important question of:
How much it costs to serve each of the users using a software product?
Example: The cost of a single call to an AI algorithm to compute the recommended movies is precise to the cent. This information data alongside the tracking of how often a given user relies on that feature gives away the cost of that user to the system.
The term agile development isn’t a prescription on project management tactics but in the priorities that govern its strategy. From the original agile manifesto, in black we find agile priorities with their explicit opposites.
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Is very important to understand that software delivery methodologies are resources to ensure consistency of execution and diagnostics of how a project is going.
Good and determined programmers will deliver results no matter the methodology. And no methodology can save a bad and/or unmotivated team from a difficult release. That said, good and determined programmers following agile methods will present results earlier to the client (not complete of course, but functional) and thus will learn sooner from those clients.
We call Product Engineering to the software engineering efforts to create a software application that serve consumers as much as it helps them solve a set of problems. This differs from a software application where empathy to the users is constrained to a functional list that isn’t often challenged over time. With Product Engineering, the whole team always have the user in mind: what other tools they are already using, what type of connectivity they have during field work, etc.
Product Engineering must deal as well with the reality of business and the economics of sustaining one. It expects the team to think and make decisions factoring in time to market, the client lifetime, and the cost of adding new features plus supporting existing ones. With Product Engineering, technical decisions are constantly aligned with the business proposition.
Last but not least the practice of Product Engineering acknowledges that while there might be an answer to a user problem, this answer might not be definitive. Why should we commit a whole product or feature launch to a single experience without measuring how it does with a selection of our users?
With Product Engineering the team constantly creates questions in the form of features and variations to learn from actual client usage (the bigger the user base the better). As with many things knowledge, the best answer is often a very good question.
Building Consumer Products effectively is the reality of executing Cloud Computing, Agile Development & Product Engineering. In the words of T.S Elliot:
We shall not cease from exploration, and the end of all our exploring will be to arrive where we started and know the place for the first time
Creation of successful consumer products is about knowing our users and the value we can deliver to them.
It is certainly not impossible to storm the gates with a product that is a perfect match for the intended user base with little or no constant exploration. But here the team won’t be taking a risk, it will be gambling.
Product Engineering is about the disciplined exploration in creating value within a digital product. Agile Development and Cloud Computing are a pair of proved means to power the required feedback loops that allow the exploration to be feasible and sustainable.
PS: If you are looking to practice more Product Engineering and customer centricity. Check us out at Merthin Technologies 😉