Imagine you are at a recital or concert and one of the instruments in the orchestra, or a singer, is out of tune –– it affects the overall performance.
Similarly, in my experience, there are a set of symbiotic tenets and disciplines when it comes to building and delivering software products that can help drive success for both vendors and clients alike. Here are what I consider to be some of the top tenets, based on my years of experience in software product delivery.
Innovation – “The value of an idea lies in the using of it.” – Thomas Edison.
Definition – To introduce as (or as if) new.
One of the ways to differentiate a product or service in the marketplace is to introduce new ideas, methods, processes, technologies. This also includes ‘disruptive technologies’ that can redefine the market by disrupting the status quo and establishing a new norm. Organizations that invest heavily in research and patents have the potential to lead or redefine the market on their terms. But innovation is more than just technology. It is also heavily influenced by the culture to cultivate innovative thinking and an entrepreneurial spirit. It also requires leaders to innovate. Innovation leadership can support achievement of the mission and vision of an organization or group. With new technologies and processes, it is necessary for organizations to think innovatively to ensure continued success and stay competitive to adapt to new changes. Innovation, like all the other tenets, is a journey.
“Learning and innovation go hand in hand. The arrogance of success is to think that what you did yesterday will be sufficient for tomorrow.” – William Pollard
Incubators and Startups – “A startup is the living embodiment of a founder’s dream” – Will Schroter.
Definition – An Incubator is a collaborative program designed to help new startups succeed.
Incubators first appeared in 1959 in Batavia Industrial Center, New York. They were created to help entrepreneurs solve some of the problems commonly associated with running a startup by providing workspace, seed funding, mentoring, training so that entrepreneurs could focus on growing their business without the worry of the usual business overheads. Large or well-established companies often try to promote innovation by setting up “internal startups” as a form of corporate entrepreneurship, allowing new business divisions to operate at arm’s length from the rest of the company. However, these can fail due for numerous reasons, including “corporate interference”. Below I list some of the key requirements I believe internal incubators need in order to succeed:
- identify “founders” with an obsessive entrepreneurial passion and self-belief to succeed
- keep it small – a group of 5-6 people focused on capitalizing on a perceived market demand to develop a viable product, service, or platform
- self-efficacy, viewing difficult tasks as something to be mastered rather than something to be avoided
- agility and flexibility – as there are often high degrees of uncertainty and risk.
- devolution from bureaucratic and hierarchical organizations, leaving workers to be more creative
- engage early adopters for market validation
- continually test with smaller, faster iterations
- maximize speed, learning and focus
- be fearless and learn from failure
While the vast majority of startups fail some become ‘Unicorns’–– privately held startup companies valued at over US$1 billion. Internal startups may also lack incentives or rewards (financial or otherwise) to succeed, whereas external startups often have high risk with the chance of very high return. That said, there are many lessons to be learnt by large corporations from the successes of external incubator startups.
“The most important task at first is to build something people want. If you don’t do that, it won’t matter how clever your business model is”. – Paul Graham.
Simplicity – “Simplicity is the ultimate sophistication” – Leonardo da Vinci.
Definition – The state of being simple, uncomplicated, or uncompounded.
Simplicity is somewhat of a dichotomy in that it can often be elusive and very difficult to attain. Innovation and sophistication do not necessarily imply complexity. Simplicity in itself can be the elegance of a product. Take for example the creation of the iPod – a high tech yet intuitive simple-to-use device – that enabled consumers to carry their entire music collection with them. It was a break-through disruptive technology that stole the market from other media vendors who were focused primarily on sound fidelity. As products evolve over their life cycle, complexity can increase resulting in burdens for test, offering management and support which can negatively impact customers. Convergence can facilitate simplicity through reuse (discussed later). Take for example the strategy of developing a set of common services that can be consumed across a portfolio of offerings. These (and all other services) need to conform to and inherit a series of specifications forming a “bedrock” for future product offerings to be based on. Convergence rather than divergence and uncontrolled variation should be the mantra of any organization involved in software product development.
“The ability to simplify means to remove the unnecessary so that the necessary may speak” ––Hans Hofmann
Quality – “Uncontrolled variation is the enemy of quality.” – Edward Deming
Definition – The set of inherent properties of an object or service that satisfies a set of stated or implied needs.
What makes us prefer one cola drink over another, or choose one vehicle manufacturer over another, a particular clothing brand, Lyft vs Uber? While there might be one major factor, there are usually multiple factors or dimensions that help us make our choices — all of which add up to an overall satisfaction or quality score. Over time, our satisfaction with a product or service may increase or decrease due to good or bad experiences. If delighted, we might review the product / service and leave 5 stars (a promoter) as a way of rating or measuring our satisfaction. If dissatisfied, we might leave a scathing review and 1 star (a detractor). So, the quality of a product or service can not only directly impact the reputation of that product or service, it can also impact the vendor’s reputation, their brand value and ultimately their bottom line. While there are costs associated with quality, poor quality often has even greater costs. From a product development perspective quality is a team sport. It is multi-dimensional in that some aspects of a product or service may be weighted differently depending on the environment within which it is used. Quality is everybody’s responsibility and should be embedded within every aspect of a product’s lifecycle. First interactions with a product, service or vendor can leave a lasting impression. Quality has always been important, but more recently I have observed that the accelerated pace and adoption of AI technologies has brought an increased visibility on quality for many of the organizations I have interacted with.
“Quality is more important than quantity. One home run is much better than two doubles.” – Steve Jobs
Reliability and Resiliency – ““Reliability is the precondition for trust.” ― Wolfgang Schauble.
Definition – the quality of being trustworthy or of performing consistently well.
Reliability is a key consideration when purchasing a product or service. When a critical computer system or application fails it can result in loss of revenue, lost business opportunities or risk exposure. It can also damage brand reputation. Headlines of data security breaches involving personal identifiable information (PII) have caused many consumers to no longer trust the institution that had a data loss. Reliability is also closely associated with Resilience – the ability or capacity to recover quickly from difficulties. This is also a key attribute for how well business critical systems can detect and avoid failure or its ability to recover from a system failure. Elimination of single points of failure, failure detection and prevention, reliable crossover are part of high availability computing. When I consider reliability in computing terms I immediately think of the IBM mainframe, its System Integrity Statement, Parallel Sysplex, Common Criteria Evaluation Assurance Level 5+ (EAL5+) certification, pervasive encryption and shear processing capacity – all part of its well-known business continuity characteristics. Customers use the mainframe because they trust it to protect their data and run some of their most business-critical applications. Imagine if every application, service, process and data store could leverage those same characteristics.
“Until we have established reliability there is no sense at all in wasting time trying to make the thing go faster.” Carroll Smith
Agility – Not speed, Agility – “Strength without agility is a mere mass” – Fernando Pessoa.
Definition – ability to move quickly and easily or think and understand quickly
When I hear the word ‘agility’ I think of sports like – football or basketball. These activities sum up fluidity, the ability to understand and move efficiently at a necessary pace. During a contest not much is known at the outset. A strategy might be formulated using a particular set of well-rehearsed skills that need to be applied adaptively, collaboratively and intuitively depending on the situation at particular moments. Players have focus, using and responding with a set of moves to continuously deliver outcomes until the game or performance is concluded. Agile development is similar in these respects. Compared to traditional software engineering, agile software development mainly targets complex systems and product development with dynamic, non-deterministic and non-linear characteristics. Accurate estimates, stable plans, and predictions are often hard to obtain in early stages of a project. So agile practitioners seek to reduce the leap-of-faith that is needed before any evidence of value can be obtained. Requirements and design tend to be emergent as large deterministic specifications might not be economically viable. Lessons from years of successes and failures have helped shape agile development’s favor of adaptive, iterative and evolutionary development. In this day and age with dynamic turbulent markets, organizations need to have business agility to adapt and respond to emerging opportunities with competitive differential. Adopting agile development practices can help.
“Agility is the ability to adapt and respond to change … agile organizations view change as an opportunity, not a threat.”- James A Highsmith.
Reuse – don’t rebuild– “We can’t achieve zero waste without reuse.” – MaryEllen Etienne
Definition – to use again especially in a different way or after reclaiming or reprocessing.
In my experience, products usually become more complex as they evolve over time –– particularly when we don’t share ideas, or common functions, methods and processes. We often resort to the “Not Invented Here” syndrome. Sometimes we perceive existing capabilities as not good enough and reinvent the wheel. This can cause divergence which can lead to unnecessary cost and complexity. Reuse can result in savings. For example, a microservices architecture embraces reuse. Monolithic code can be decomposed into a series of smaller services –– building blocks (like Lego® bricks) to recompose new trusted services reusing much or what already exists –– maintained and controlled through a services catalog. Open source also promotes reuse and for that reason some organizations adopt the open source model within their own enterprise –– ‘Inner source’ for want of a better phrase. Moving from siloed development to inner source and microservices can help organizations coalesce innovation and investment streams. The hope would be that organizations can potentially increase the quality of their software and achieve greater agility for their software developers.
“Good programmers know what to write. Great ones know what to rewrite (and reuse)” – Eric S. Raymond
Open – “The power of Open Source is the power of the people. The people rule.” – Philippe Kahn.
Definition – software for which the original source code is made freely available and may be redistributed and modified.
The word “Open” in the software world is much more than just open source. It also refers to software that has open, accessible or published APIs. It can also mean open as in transparency and explainability – a key focus area in artificial intelligence which warrants its own blog post. But let me focus on open source for the purpose of this article. In recent discussions with organizations, they underscored the importance of vendors’ participation in open source projects including Kubernetes, Egeria, Spark, Jupyter. Things are rapidly evolving, and it’s become clear to me that no single company can create, for example, AI solutions in a vacuum and hope to keep pace with the rate of change in such a fast-growing segment of the tech industry. Open source-based infrastructure services such as storage access services, managing of security services, managing containerized microservices can help create greater portability of offerings by isolating the specific dependencies of the underlying computing environment while avoiding the perception of ‘vendor lock in’. Red Hat OpenShift is a prime example of a Kubernetes-based cloud infrastructure. Finally, by appropriately engaging with the open source ecosystem, vendors can gain insight into the areas that developers are most interested in AND better understand where the marketplace is going.
“Empowerment of individuals is a key part of what makes open source work, since in the end, innovations tend to come from small groups, not from large, structured efforts.” – Tim O’Reilly
Cloud – Hybrid by Design “Cloud is about how you do computing, not where you do computing.” – Paul Maritz
Definition – on-demand availability of computer system resources, including data and computing power, without direct active management by the user.
Cloud computing relies on the sharing of resources (services) to achieve coherence and economies of scale with the potential for improved manageability and less maintenance. Cloud in general, is seen as attractive by organizations of all sizes because it can help minimize up-front IT infrastructure costs with different “pay-as-you-go” and subscription models. Hybrid cloud is a computing environment that connects an organization’s on-premises private cloud services and third-party public cloud into a single, flexible infrastructure for running the organization’s applications and workloads. It should give an organization the flexibility to choose the optimal cloud for each application, data source or workload (and to move workloads freely between the two clouds as circumstances change). This enables the organization to meet its technical and business objectives more effectively and cost-efficiently than it could by forcing an organization to choose between a public or a private cloud. This necessitates that the entire software stack by design need to be able to run transparently in hybrid cloud environments, with common DevOps, governance, security and management capabilities that span multitenant, dedicated / isolated configurations. Furthermore, applications need to be certified to run across multi-cloud environments (different cloud providers). Red Hat OpenShift is designed to help facilitate this by enabling organizations to build once only and then deploy/run anywhere without concern for the underlying cloud infrastructures that may change over time. Hybrid and multi-cloud support has become an essential design tenet. The future is truly hybrid.
“The cloud services companies of all sizes…The cloud is for everyone. The cloud is a democracy.” ~ Marc Benioff
‘X’ as a Service
Definition – a collective term that refers to the delivery of anything as a service..
I have dispensed with quotes for this last section as everything in cloud computing is defined as a service – whether it is infrastructure, platform, software, data, compute, security and others. These are collectively denoted as XaaS. While some organizations choose to manage their applications and data on-premise or on their own private cloud, other organizations may want to pay for services as and when needed. For example, Software as a service (SaaS) is a software licensing and delivery model in which software is licensed on a subscription basis and is centrally hosted. It is sometimes referred to as “on-demand” software. It behooves software vendors to offer their portfolio of software –– from individual services and applications to (for example) entire data and AI platforms –– as on-demand services. This approach enables vendors to engage organizations of any size and maturity to leverage their offerings within an organization’s cost and operating constraints. As organizations grow, they have the benefit of choosing to host and manage those same services on their own private cloud. Vendors that can offer that flexibility stand to serve a wider range of customers, potentially expand the user base.
Shaping the Future…..
How an organization builds and delivers products and services can strongly influence their success or failure –– and those that consume them. For me, this collective of tenets is a set of disciplines, interlinked with each other. They are in effect ‘links’ in the chain of product development – which is only as strong as its weakest link. They represent an ecosystem of best practices that can help support and deliver excellence with agility across the product life cycle.
If software development organizations embrace and execute these tenets, I believe that products and services have the potential to be designed and delivered to better meet and adapt to the changing business needs of dynamic marketplaces with the potential to reduce business costs and risks, while creating new opportunities for competitive advantage and growth.
While each of the tenets can be valuable on their own, the whole is greater than the sum of its parts. I have concluded that there is a common theme across all of the above tenets. Each is a continuous journey, not a destination. Each must be practiced until it becomes second nature, and each tenet has multi-dependencies with other tenets.
As a whole, these tenets may seem overwhelming to put into practice, but organizations can start by embracing the ones that best deliver the clearest value. This approach may assist in helping identify the order in which others are adopted – defined by any interdependencies that may emerge. How (and the speed at which) an organization embraces these tenets may often vary according to individual needs and maturity in each category.
Procrastination is not an option. The journey must begin. Those that hesitate may risk losing to their competition.
Let me leave you with a quote from Confucius. “A journey of a thousand miles begins with a single step.”