Software Engineering
8/23/26About 4 min
Software Engineering
软件工程关心的不是“代码能不能跑”,而是一个系统能否被持续构建、交付、观察和演进。这里把语言、数据库、中间件、DevOps、测试与工具放进同一条工程链路中。
Engineering Knowledge System
Build the service. Manage the state. Connect the system. Operate it with confidence.
从语言与运行时出发,把业务状态放进合适的数据系统,通过中间件连接服务, 再用自动化交付、测试和可观测性建立稳定的生产反馈回路。
LanguagesDatabasesMiddlewareDevOpsObservabilityTesting
The Engineering Loop
01Build
用合适的语言、运行时和框架表达领域模型,并保持接口和代码边界清晰。
02Store
围绕一致性、访问模式、延迟和成本选择数据模型、索引与缓存策略。
03Integrate
通过消息、搜索、代理和服务治理解耦组件,明确失败与恢复语义。
04Operate
自动化测试和交付,用日志、指标与追踪观察系统,并从事故中持续改进。
Knowledge Map
01 · Build
Languages & Runtimes
Java、Python、Go、C++、Rust 与前端:类型、并发、内存、运行时和工程生态。
02 · StateData Systems
SQL、MySQL、Redis、MongoDB 与 HBase:事务、索引、持久化、缓存和高可用。
03 · IntegrationMiddleware
Kafka、RabbitMQ、Elasticsearch、Nginx 与 Canal:消息、搜索、流量和数据同步。
04 · DeliveryDevOps & Infrastructure
Unix、Docker、Kubernetes 与 CI/CD:从开发环境到可重复、可回滚的生产交付。
05 · FeedbackObservability
Metrics、logs、traces 与 profiling:从用户症状定位到资源、代码和依赖根因。
06 · ConfidenceSoftware Testing
测试层次、性能测试与质量反馈,让系统变化变得可验证、可重复。
Product surfaceApplication Engineering
Native、Web 与跨平台技术的边界、共享策略和产品交付取舍。
Developer leverageEngineering Tools
Git、UML、文档与站点工具:减少协作摩擦,保留可复用的工程上下文。
Choose a Learning Path
Questions Before Choosing a Technology
| 维度 | 先问什么 | 常见误区 |
|---|---|---|
| Workload | 读写比例、数据规模、延迟目标是什么? | 先选产品,再找问题 |
| Correctness | 哪些状态必须一致,哪些可以最终一致? | 把所有数据都设成同一一致性等级 |
| Failure | 超时、重试、重复、乱序和部分失败怎样处理? | 只设计成功路径 |
| Operations | 怎样发布、回滚、扩容和排障? | 把运维留到上线前 |
| Evolution | Schema、API 与数据如何兼容演进? | 把第一次设计当成最终设计 |
