Skip to content

Software engineering best practices πŸ“š

License

Notifications You must be signed in to change notification settings

ParanoidUser/awesome-practices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Awesome Practices Awesome

banner

A curated list of best practices, guidelines, standards, and conventions accepted for software engineering.

Contents

Design

Creating user-friendly and visually appealing software interfaces.

Development

Writing code to build software applications.

Methodology

Methods for software development, delivery, and maintenance.

  • C4 Model - An easy to learn, developer friendly approach to software architecture diagramming.
  • Conventional Commits - Specification for adding human and machine-readable meaning to commit messages.
  • Functional Documentation - Some collected thoughts and ideas around applying a functional approach to writing and maintaining documentation, especially for design systems.
  • GitLab Documentation Style Guide - Standards for GitLab documentation, including grammar, formatting, word use, and more.
  • Java Design Patterns - Software design patterns, principles, and snippets.
  • Keep Changelog - Guidelines for maintaining a curated, chronologically ordered list of notable changes for each version of a project.
  • Manifesto for Agile Software Development - Outlines the central values and principles of Agile software development.
  • Manifesto for Fluid Software Development - Defines a new approach to software development focused on fluidity and adaptability.
  • Minimum Viable CD - Set of practices that give the expected improvements to organizational structure that come with continuous delivery.
  • Open GitOps - Set of open-source standards, best practices, and community-focused education to help organizations adopt a structured, standardized approach to implementing GitOps.
  • Patterns for Managing Source Code Branches - Patterns that can allow teams to use branching effectively, concentrating around integrating the work of multiple developers and organizing the path to production releases.
  • Semantic Versioning - Formal convention for determining the version number of new software releases.
  • The Twelve-Factor App - Methodology for building software-as-a-service applications.
  • Trunk Based Development - Version management practice where developers merge small, frequent updates into a "trunk" or main branch.
  • Write the Docs - Collective wisdom of the Write the Docs community around best practices for creating software documentation.
  • Writing Better Release Notes - Some thoughts on how to write better release notes.

Tools

Software and hardware for software development and testing.

  • Choose a License - Non-judgmental guidance on choosing a license for your open source project.
  • Command Line Interface Guidelines - Guide to help you write better command-line programs.
  • Command-not-found - Helpful tool for installing any command on any operating system.
  • End-of-life - Documents EOL dates and support lifecycles for various products.
  • Gitignore - Web service designed to help you create .gitignore files for your Git repositories.
  • IP Guide - Easy to use API for looking up IP, Network, and ASN data.
  • Maven Code Style and Code Conventions - Rules for how the sources should be formatted in order to improve consistency, readability, and maintainability.
  • Terraform Best Practices - Best practices for using Terraform and recommendations for the most common issues.
  • Think Like (a) Git - Guide to help understand how Git works under the hood.
  • Typograms - Lightweight image format useful for defining simple diagrams in technical documentation.

Data

Information storage, processing, and analysis in software.

  • MLOps Principles - Best practices and tools to test, deploy, manage, and monitor ML models in real-world production.
  • Transparent Telemetry - Designed to give developers the information they need to be effective without having to track detailed user activity.

Security

Protecting software from attacks and misuse.

Culture

Values and practices influencing software development.