devz-docz

Aggregation of onboarding and general devz standards that I have gatherd over my career.

View on GitHub

Tools and Practice / Technical Design

Overview

This section provides some guidance for designing new features or architectural changes. While process may change based on project needs (such as existing client process or team size), these resources can provide a foundation when necessary.

Some purposes of providing a process for technical design are to:

Design Documents

Design documents help share and collaborate on technical decisions. They become necessary when a feature or architectural change is unclear based on individual pieces or work, has significant unknowns, or has long term and widespread impact. Some examples where they are appropriate include:

Designs may vary significantly based on the problem domain, but the provided template will address many commonalities. Using a consistent template also helps to establish a common language among the team and company.

Try to keep these broad guidelines in mind while you work:

Note that design documents are not a substitute for early design discussions. Ideas should be discussed before a more extensive design is applied. Find subject experts and stakeholders early to vet proposals.

Workflow Incorporation

Once a design document is accepted, it becomes a resource for the Development Cycle. The Development Cycle Guide provides a more in depth view of how I iterates on work and should be consulted for implementation. However, a design doc can be helpful with starting that process. It can help to:

Note that design documents are not a go-ahead for implementation, nor are they a substitute for agile workflow. Priorities may change based on resources, roadmaps, or unknown constraints. The initial design may be used as a measure for completion, but maintain an agile approach, readdress tradeoffs, and be adaptable to changes during the implementation phase.

Resources