我一直很好奇一家具有世界影响力的软件技术公司的工程师文化是怎样的,我想《Google 软件工程》这本书给了我一个了解和学习的机会。在翻阅这本书,解答了我工作以来一直对领导工作的误解和好奇,这本书也是一家大型软件公司的工程团队的运作经验的参考范本。书中虽然有些方案不是很完美但还是有许多值得学习借鉴的。
1. 什么是软件工程
- 软件工程关注人的协作,更加关注代码的维护成本,主要还是体现在软件生命周期内对其维护的工作。
- 在软件的生命周期内,我们需要具备响应依赖关系,技术或产品需求变化的能力。
- 流程效率低下和软件迭代低下的问题会缓慢展开,需要时刻回顾,注意该问题。
- 应该使用客观数据进行决策,而减少主观判断。
2. 如何更好地参与团队合作
- 保持谦虚,尊重和信任。坦诚清晰,平等沟通,学会接受批评,太过于自我会影响做事的效率。
- 早失败,快失败,常失败。
- 软件工程是团队努力的结果,应该及早验证,小步快跑,提前暴露问题。
- 习得无指责的回顾文化,从错误中吸取教训,通过根因分析还原整个失败过程,并记录 “回顾分析”。
- 一份好的回顾分析文档应该包括以下内容:
- 事故的简短摘要。
- 事故的时间线,发现事故→ 调查事故→解决事故
- 导致事故的主要原因。
- 影响和破坏范围评估。
- 可立即修复问题的行动事项。
- 防止事故再次发生的行动事项。
- 事故中习得的经验教训。
- 学会了解自己和他人的个性和工作方式,少量的时间投入会有效提升协作效率。
3. 知识共享
- 心理安全是知识共享的基础。
- 可以考虑激励措施,鼓励分享专业知识的人和团队,提升知识共享的氛围。
- 知识是软件工程组织最重要的无形资本,知识共享能使组织在面对变化更游刃有余。
- 促进开放和诚实的知识共享文化可以让知识有效的在组织中传播,随着组织一起成长。
- 将部落知识(部落知识指代团队成员脑袋中未文档化的知识)文档化可以更好的在团队甚至整个组织内部继承和流动。
- 创建和维护一个安全的环境,可以确保新成员有信心提出问题,新专家能感到有能力帮助这些新成员,而不必担心他们的答案会受到既有专家的批评和攻击。