Engineering

Engineering Stance #

This document explains fundamental approaches and methods in technical development.

Principles of Technology Selection #

Selection Based on Purpose #

  • Prioritize whether technology is suitable for the purpose rather than its novelty
  • Consider balance of maintainability, scalability, and performance
  • Consider team skill level and learning costs

Gradual Introduction #

  • Try new technologies in small-scale projects
  • Build up success cases before full-scale introduction
  • Acquire technology while minimizing risk

Approach to Code Quality #

Emphasis on Readability #

  • Code is read more than it is written
  • Name variables and functions to clearly convey intent
  • Comments explain “why”

Ensuring Maintainability #

  • Strive for modularization and separation of concerns
  • Minimize dependencies
  • Be aware of testable design

Security Considerations #

Security First #

  • Security is not something added later
  • Consider security from the design stage
  • Regular security checks and updates

Vulnerability Response #

  • Continuously collect security information
  • Respond quickly when vulnerabilities are discovered
  • Prioritize application of security patches

Performance Considerations #

Improvement Based on Measurement #

  • Optimize based on measurement data, not speculation
  • Identify bottlenecks before improving
  • Continuously conduct performance tests

Scalability Design #

  • Design with future growth in mind
  • Consider load balancing and caching strategies
  • Consider scalability in database design

Learning and Growth #

Continuous Learning #

  • Actively learn new technologies and methods
  • Participate in open source projects
  • Share knowledge in technical communities

Knowledge Sharing #

  • Share what you’ve learned within the team
  • Document technical challenges and solutions
  • Knowledge transfer through code reviews

Tools and Environment #

Development Environment Setup #

  • Build and maintain efficient development environments
  • Automate what can be automated
  • Unified development environment across the team

Version Control #

  • Proper version control using Git
  • Commit messages clearly describe changes
  • Clearly define branch strategy

Quality Assurance #

Importance of Testing #

  • Appropriate combination of unit tests, integration tests, and E2E tests
  • Improve test coverage
  • Ensure quality through continuous integration

Code Review #

  • Review code with multiple eyes
  • Opportunity for knowledge sharing and quality improvement
  • Provide constructive feedback