19
January
2021

Why we built Amido Stacks

by
Simon Evans
,
11
minute read.
Share this article

Amido turned ten years old last year. Ten years in technology is a very long time and while innovations have come and gone over this period, the founding principles of the company have remained as important today as they were when Amido was conceived.

Like all businesses, successful technology companies are built on the foundations of a compelling value proposition. For some, this is simply to say, “our product solves these problems” and for others it’s, “we have the best software craftsmanship”.

Amido has always looked at things a little differently. Products, frameworks and craftsmanship are all important ingredients for successful technology solutions, but these items alone cannot deliver digital transformations.

We believe in the power of collaboration to create the best outcomes for our clients, using whichever technologies are most appropriate. It is teams of people with a blend of the right expertise who build a better future, using the right products and frameworks combined with the best possible engineering practices.

Talent shortage is impacting digital transformation outcomes

The problem our industry faces is a shortage of appropriate talent. Everyone in our sector will tell you that hiring the right people is one of their biggest challenges today, and it’s having a direct impact on the outcomes of many digital transformations.

What do I mean by the term “appropriate talent”? Our industry needs people with aptitude in an increasingly diverse set of skills, coupled with experience of delivering with those skills. Both aptitude and experience are equally important; you need people to be capable of innovating in their field, and at the same time rely on previous successful work so that an initiative is not derailed by common complexity experienced in most digital transformations.

Unnecessary software complexity is a key cause of failure

Around seventy percent of digital transformations fail, and one of the causes of failure is complexity. Complexity kills because it is time consuming to deliver. Being slow to deliver value is the enemy of success.

We use lean software development practices  to eliminate it. However, some problems are inherently complicated, meaning some solutions cannot avoid complexity. Moreover, much of the technical complexity we see is non-functional, which compounds the risk of failure, because much of this complexity is not visible to key stakeholders. It is all too common for a project to be delayed, because towards the latter stages of project delivery, a security issue was uncovered, or it was realised the solution could not scale. Worse still, these issues were not spotted at all and would get discovered after the solution was “tested” by the general public.

So, when a solution is necessarily complex, what strategies do we adopt to avoid failure? At Amido, we have always employed three common strategies that perform distinct roles in reducing risk:

  • Reduce the amount of engineering complexity by leveraging cloud-native services; this reduces the surface area of the problem for an engineer, because much of the underlying complexity is already delivered as a proven solution, such as infrastructure that is capable of scaling out.

  • Reuse patterns and practices for predictable results; by reusing known patterns and practices, we are following known solutions to similar problems that are likely to succeed.

  • Fail fast through adopting a continuous delivery approach; by adopting continuous delivery, we will find out more quickly if we are not going to succeed.

Leveraging cloud-native services reduces the risks associated with complexity

Despite this, we still face a crisis in our sector around a shortage of appropriate talent. While we are “coding less” than we used to, we are faced with a different, yet equally challenging, problem of technology diversity.

Adopting a mentality of applying “the right tool for the right job” has contributed to the rise of polyglot programming . The benefits of coding less are traded off against requiring developers who have experience in coding in multiple and varied languages across different paradigms, such as object oriented and functional programming .

Developers have to be experts in polyglot persistence too, where the most appropriate form of storage (relational, semi-relational and non-relational) dictates its own frameworks and languages from classic SQL through to querying in JavaScript or working with data frames in Python. Now, more than ever, the concept of a “full stack” developer is a unicorn ninja rock star person. In reality, these individuals rarely exist. This is a key issue for scaling out delivery to meet demand. Full stack development with scaled delivery does not exist in today’s technology landscape.

Like many other companies, we address issues of technology diversity by assembling teams of people with a diverse set of skills; delivering in a cloud-native world with a full stack of skills is a team pursuit. This approach enables us to position people with the appropriate talent to contribute productively for our clients at scale. But like so many solutions, more problems are created. As we scale our delivery capability, how do we maintain quality in our engineering practices? How do we harvest the learning from one project to ensure that its successes are replicated and its failures are not repeated?

Amido Stacks industrialises software delivery, increasing project predictability and overcoming technology diversity

Amido Stacks  was conceived to ensure that learnings by people on project teams were not lost; we wanted to ensure that the company as a whole benefitted from “muscle memory”. Repeatability of good practices, while avoiding previous failed experiments, breeds success for our clients. We aimed to move from software development being purely a craft to an industrialised process based on the best crafting our collective brains could manage.

The aim of industrialising software delivery is not a new concept. The first thing we looked at when considering how to address this challenge was to look back at previous ideas and thinking in this area. In 2004, Jack Greenfield et al published a book called “Software Factories”, which is based on theory that can be traced back to the mid 1970s . In the early 2000s, software factories were seen as an answer to a “capacity crisis” in developers, by industrialising software development.  Software factories focus on “assembling” new software from previously created assets, similar to a manufacturing process. It goes beyond the concept of design patterns because we are building software to create software proven to work.

Amido Stacks is a cloud-native software factory. It uses software factory theory against modern tooling to deliver more predictable outcomes in cloud-native solutions. It addresses the challenges of technology diversity by supporting the clouds, services, frameworks and languages Amido work with most frequently. We often refer to Stacks as being a menu of “options with opinions”, where the options are limited set of proven solutions, and the opinionated code is the output of the software factory.

The software factory approach delivers two key benefits for our clients. Firstly, we are able to incrementally deliver value to our clients more quickly (through automation). Secondly, we are able to reduce the risks of delivering software that is unnecessarily complex. These two benefits will reduce the seventy percent failure rate of digital transformations. And for Amido, Stacks enables us to scale our own engineering capability without compromising quality.

Building a software factory is not a small undertaking and Amido is committed to continually investing in Amido Stacks. Yet Amido Stacks is not a product; a factory is an assembly line of relevant automation for the specific (client) problem you are solving. Amido is not a product vendor; we are a consultancy. We focus on delivering better business outcomes for our clients through the use of cloud-native technology. We were founded on the principle that to provide good advice to our clients, we must remain vendor agnostic.

Therefore, we did not want to create a software factory that locked our clients into a product. So we decided that Amido Stacks needed to be an open source initiative. We have created a contribution model  that enables everyone to contribute to the factory, while we continue to invest in it.

Ten years on from starting Amido, we see Amido Stacks as the manifestation of many of the principles we hold dear. It tackles the complexity of delivering at scale using cloud-native technology without vendor lock-in, giving our clients more confidence to take on their most challenging digital transformation challenges.

See Stacks in action at our github page or dive in and read more about Amido Stacks.

Amido needs the contact information you provide to us to contact you about our products and services. You may unsubscribe from these communications at any time. For information on how to unsubscribe, as well as our privacy practices and commitment to protecting your privacy, please review our privacy policy.
Oops! Something went wrong while submitting the form.

Things you will learn

No items found.

Related content

No items found.

Need help plotting a route to the cloud?

We can help you define your digital strategy and turn it into a technical roadmap, achieving momentum to quickly deliver business value, whilst minimising risk.

Ask a question

If you consent to receiving communications from Amido, please subscribe using the checkbox below. If at any point you'd like to unsubscribe, you can do so using the links provided in our newsletters. You can review how your data is handled in our privacy policy.
Thank you, your submission has been received!
Oops! Something went wrong while submitting the form.