Keep Pace with Technological Change

Use the latest, most appropriate tools and technologies that solve the business problem.

Rationale

Technology advances at an ever-increasing rate. Pragmatically adopting the latest tools and technologies will allow us to provide innovative new products and services to our customers and business and compete more effectively with our competitors. Being up-to-date (but not necessarily cutting-edge) in our technology stack will help us attract and retain talented engineers.

This approach needs to be balanced against an overly diverse and complex ecosystem. A level of consistency in the technologies we use helps us develop deeper expertise, supports new engineers joining or moving between teams, and avoids us unnecessarily reinventing the wheel. Finding the “sweet spot” is a challenge.

Implications

  • The principle of Evolutionary Systems is essential in order for us to update and upgrade systems without impacting the broader ecosystem.
  • The best people to choose tools and technologies are those that are closest to the problem being solved. Guidelines help us adopt new technologies consistently.
  • The Architecture Profession and Engineering Profession, supported by our engineering communities, help align technologies and identify synergies where appropriate.
  • Regular patching, if possible, will help future software upgrades and maintainability and keep systems more secure.
  • Conflicts in technology selection that cannot be resolved within teams should be brought to their appropriate communities or forum for discussion, with the aim to continue advancing our technical excellence.
  • We will maintain a set of favoured technology choices to help guide teams in our preferred and up-to-date choices. We encourage feedback on these choices and proposals for additions or changes to it.
  • We encourage the formation and maintenance of communities of interest around the various areas of software engineering, to share good practice and technology news.
  • We should look for signs that any of our existing technology choices are falling out of favour, and seek to remove our dependency on them by proactively adopting alternatives where possible, or helping direct investment in those areas where the cost and complexity of switching is prohibitive. Building Small & Simple systems makes this easier to achieve.