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