Skip to main content

Choosing Technology

Choosing technology is often the most significant area of investment you’ll make when developing or maintaining your service.

Your choice of technologies has a huge impact on the quality of your service and your team’s ability to operate and iterate it.

What to consider when choosing technology

When choosing technology, the most important thing is to make choices that allow you to:

  • Change your mind at a later stage: Technology choices should be flexible to accommodate evolving requirements, user feedback, and unexpected challenges.
  • Adapt your technology as your understanding of user needs changes: Your understanding of what users want will deepen over time. Choose tech that supports iterative development and easy pivoting.
  • Make effective security risk management decisions: Ensure the technology supports best practices for securing user data and systems, and complies with relevant regulations.

You and your team should also aim to:

  • Keep up to date with the latest technology developments so you can leverage innovations that improve productivity and service quality.
  • Minimise the total cost of ownership, including licensing, maintenance, training, and infrastructure costs. Avoid vendor lock-in by choosing open standards and flexible platforms.
  • Use standard government technology components where possible to enhance interoperability and security.
  • Reuse software that other departments have built, and ensure your own software is easy to reuse and integrate. - Follow best practices around Application Programming Interfaces (APIs) to facilitate this.
  • Ensure full control of any data you store to meet privacy and compliance requirements.
  • Be aware of and comply with relevant cybersecurity obligations, including data protection laws and security standards.

Pick a Language Suited to the Domain

Choosing the right programming language is one of the most critical decisions you'll make when starting a new software project. The language you select will shape your system’s architecture, development speed, hiring needs, long-term maintenance, and even its security posture.

This guide will walk you through key factors to consider, helping you make a well-informed, strategic choice that aligns with your project’s goals.

Consider Developer Skill Sets

  • What is your team familiar with?
  • Is it easy to hire developers with experience in this language?
  • Are there good learning resources and community support?

Choosing a niche language with few available developers may slow progress and increase onboarding costs.

Evaluate Ecosystem & Tooling

A language is only as good as its ecosystem.

  • Are there stable frameworks or SDKs?
  • Does it have good testing, debugging, and deployment tools?
  • Are there trusted packages for your needs (e.g., authentication, APIs, DB access)?

Factor in Security and Compliance

For projects in regulated sectors (government, healthcare, finance):

  • Choose languages with mature security libraries and compliance support.
  • Look for languages that make secure coding practices easier (e.g., strong typing, input validation, built-in auth).

Ensure Maintainability and Scalability

  • Will this codebase grow to 10K+ lines? Choose a language with modular design, strong typing, and code clarity.
  • Are you building a long-term product? Prefer widely adopted, well-maintained languages (e.g., Java, Python, TypeScript).
  • Avoid experimental or dying languages for critical systems unless you can commit to maintaining them internally.

Other Important Factors in Technology Choice

Infrastructure and Hosting

  • Will your technology run on cloud, on-premises, or hybrid environments?
  • Does it support your infrastructure preferences, such as containers (Docker, Kubernetes), serverless, or virtual machines?
  • Consider availability of managed services that can reduce operational overhead.

Integration and Interoperability

  • Can the technology easily integrate with existing systems and third-party services?
  • Does it support open standards and protocols (REST, GraphQL, OAuth)?
  • Are APIs well supported and documented?

Performance and Reliability

  • Does the technology meet your performance requirements (e.g., low latency, high throughput)?
  • Is it proven in production environments similar to your scale and use case?
  • How well does it handle failures and recovery?

Community and Vendor Support

  • Is there an active community or commercial vendor support available?
  • How quickly are bugs and security vulnerabilities fixed?
  • What is the release cycle and roadmap for the technology?
  • Is the technology open source or proprietary?
  • What are the licensing terms?
  • Are there any restrictions or obligations that might affect your project or organization?
  • Ensure compliance with any organizational or governmental procurement policies.

Final Thought

Choosing technology is a strategic decision that shapes your project’s success from day one and throughout its lifecycle. It requires balancing flexibility, security, cost, talent availability, and future-proofing.

By taking a holistic, informed approach — considering both technical and organizational factors — you empower your team to deliver a service that is robust, user-centered, and sustainable.