Skip to main content

Developer Best Practices

Software Developer Best Practices

Getting Started

1.To Codeexpedite Qualitythe learning curve of our developers, at Blueprint, we have a set of standarized frameworks projects teams use to develop solutions for the non-profits. You can find our list of frameworks here

-In Writeevery clean,project readable,you will find a README.md file that contains a basic description of the project and maintainablemost importantly setup instructions to run the service. If you have any issues when following the steps or are missing environment variables, please contact your Tech Lead for further guidance.

Codebase

The structure of the codebase is very framework dependent, as different frameworks might need different directories. However, the structure most projects follow is the following:

/src # All the service code 
-will Followbe consistenthere /moduleA /moduleB /config # Any env + infra configs /docs # specs + diagrams /tests # unit tests + integration tests

Development Workflow

Working in team can get messy and convoluted. Therefore we have the following development workflow.

  1. Our teams use the SCRUM methodology to assigns tasks to every member of the team. Each week, your Tech Lead will assign an issue to you with a description of what has to get done (See example).
  2. Create a branch for the issue you are working on. We have the following branch naming conventions
    -
      Use
    1. `feat`: Branch has new feature work
    2. `fix`: Branch is fixing a bug
  3. Write your code. Commit and Push your changes. We have the following commit naming conventions.
  4. Create a Pull Request
  5. Request review from your Tech Lead and Coding Buddy
  6. Address any feedback and comments
  7. judiciously
  8. Merge once your PR is approved

CI/CD

Whenever you push code to explaina intent,repository, there might be some workflow setup to help us automate some tasks that include:

  • Deployments: Update the code in prod or staging environments
  • Testing: Running integ and unit testing on new changes to make sure tests are updated or not obviousbroken
  • logic
  • Linting:
    -Make Adheresure toeveryone stylefollows guidesthe andsame lintinglanguage rulesconventions
  • - Commit often with meaningful messages  
    - Follow branching strategies (Git Flow, trunk-based, etc.)  
    - Keep main branch stable and production-ready  
    - Use pull requests with code reviews  - Write unit tests for core functionality  
    - Implement integration and end-to-end tests  
    - Automate testing in CI/CD pipelines  
    - Strive for meaningful test coverage, not just high percentages  

    - Maintain up-to-date README files  
    - Document APIs, system architecture, and workflows  
    - Write clear onboarding guides for new developers  
    - Use inline documentation for complex code sections  - Validate and sanitize all inputs  
    - Store secrets securely (e.g., environment variables, vaults)  
    - Keep dependencies updated and patched  
    - Follow least privilege principle for access control  

    - Write efficient algorithms and data structures  
    - Profile and optimize critical code paths  
    - Avoid premature optimization  
    - Use caching and resource management wisely  - Communicate clearly with teammates  
    - Participate actively in code reviews  
    - Respect different viewpoints and share knowledge  
    - Keep tasks and progress visible (issue trackers, boards)  - Automate builds, tests, and deployments  
    - Keep pipelines fast and reliable  
    - Rollback mechanisms for failed deployments  
    - Monitor deployments with observability tools  

    - Stay updated with industry trends and tools  
    - Refactor code when necessary to reduce technical debt  
    - Learn from production issues and postmortems  
    - Mentor peers and share best practices  

    - Write code as if someone else will maintain it  
    - Balance speed of delivery with quality  
    - Manage time effectively and avoid burnout  
    - Uphold ethical standards in software development