2.3 Working as a team: Tools and structure

  • The choice of tools and how the team is structured is crucial for a successful application.
    • Not entirely like KISS, but close too it. GitHub versus GitLab. Barebones hardware or Containerization.

2.3.1 From the tools point of view

  1. Version control and test all things
  • Use Constant Innovation (CI) principles to test all code before committing
  • Breaking things is a natural process of software engineering, notably when working on a piece of code during a long period
  • Be informed that the codebase is broken
  • Be able to identify changes between versions, and potentially, get back in time to a previous codebase
    • Github/GitLab diff-docs. Example: Branch -> Change -> Test -> Commit -> Pull Request -> Merge
  1. Small is beautiful
  • Smaller more managable pieces make it easier to develop
  • Teams may even work in parallel (with caution)
  • A large codebase implies that the safe way to work is to split the app into pieces
  • Extract your core “non-reactive” functions, which we will also call the “business logic”, and include them in external files
    • Non-vital linkages (data ingestion pipelines)
    • Page Layout and theming (CSS or branding characteristics)
    • Allows for expansion but won’t break the core

2.3.2 From the team point of view

  • Select a Manager, maybe a stakeholder or project manager. Someone who may or may not work on the codebase but is aware and knowledgeable
  • Select one or more core developers skilled but specific in their field of study
  • Follow git workflow with issue tracking and managing pull requests