Development Principles

Hero image for Development Principles

Development is a complex process that requires a set of principles to ensure the team can deliver high-quality software efficiently and consistently.

While practices and conventions can change over time, the principles are the guiding light that the team must always follow. They permeate every aspect of the development process, from code conventions, code reviews, to testing and even documentation. As a result, they are at the core of how the engineering team operates.

Fast-to-market Iterative Process

Software is never finished. True to the Agile tenets, it is always evolving to meet the needs of its users. At the same time, software is only useful when it is in the hands of its users. Therefore, the team must always strive to deliver working software as early as possible and iterate on it to improve it.

The concept of Minimum Viable Product (MVP), or its close alternatives Minimum Usable Product or Minimum Lovable Product, is a great way to think about the efficient fast-to-market iterative process.

Diagram comparing good vs. bad MVP strategy

Source: Making sense of MVP

Regardless of the development type, the teammates must always ask themselves the following questions:

  • How can the team deliver this feature faster while ensuring it is fully functional?
  • Is it possible to simplify or change this feature to deliver value faster and get feedback sooner?
  • Is the feature ready to be delivered to the users?
  • How can the team deliver features faster in the future?

High-Quality Codebase

Quality is neither a feature nor a constraint. It is a mindset. The team always strives to deliver codebases of the highest quality.

Quality is also an enabler for businesses. High-quality codebases are easier to maintain, extend, and scale. They also enable the team to deliver new features faster and with fewer bugs.

Regardless of their squad’s roles and regardless of the project’s stage, team members must ask themselves the following questions:

  • How can the team make this code more maintainable? more performant? more testable?
  • Is there a better way to implement this feature?
  • Is the team following the most up-to-date best practices?

Human-centric

Software does not exist in a vacuum. It is built by humans for humans. Code is meant to be read and maintained by developers. Therefore, the team must always factor in the human aspect of software development.

When working on any implementation, team members are expected to ask themselves the following questions:

  • How can the team make this feature easier to use?
  • How can the team enable the user to achieve their goal?
  • How can the team make this code easier to read, understand, and maintain?
  • How can the team make this development process more efficient?

Security-first

In construction areas, the slogan “Safety First” is a constant reminder to taking precautions to avoid accidents. The same applies to software development. The team must always factor in security in every aspect of the development process. Secure software is the foundation of trust between the users and the business.

Zero-trust and shift-left security are two concepts that the team must always keep in mind. Zero-trust means that the team must never assume that the code is secure. Shift-left security means that the team must always factor in security from the beginning of the development process.

This principle resonates with the company’s core values of Ownership Mentality, Obsession for Excellence, and Dependability.