Tianhe Gao

software-engineering-soft-parts

https://addyosmani.com/blog/software-engineering-soft-parts/

软技能——非专业技术知识。

作者分享一些自己在 Google Chrome 工作 10 年以来的软技能。反思自己 10 年来的经验教训,并希望能够读者带来启发。

> 成为好的工程师需要经验。每个项目,甚至是很小的那些,都是一个向你的工具箱添加新技术和工具的机会。从一个项目中学习到的工具,能够应用到另一个项目中,如果能够这样解决问题,就能传递更多价值。经历过的项目不会白费的。 {.is-success}

  1. 掌握技术能够提高生产效率。
  2. **批判性思考是使用认知技能独立思考的能力**,它能帮助我们做出合理的决定。投资这项技能,使得我们的思路更加清晰。
  3. 掌握基础并不断应用它们来获得新技能。
  4. 通过学习基础获得技能组合和工具,然后忽略基础得到成长。
  5. 对宏观和微观的基本原理有很好的理解可以帮助你做出更好的决定。
  6. 从用户体验开始,然后回溯到所需要的技术。
  7. 最好的软件是由那些对用户有同情心的工程师构建的。

  1. 选择适合你的用例,而不是本月的流行。
  2. 利用新项目学习新技术。
  3. 保持好奇,从不停止学习。
  4. 在学习的时候记笔记。这样做使得你更理解学习的内容。当你试着向其他人解释的时候,你对这些知识的理解会增加。没有人读也没关系。你只是把这些内容写下来就对自己有很多好处。
  5. 承认自己不知道某件事是很难但值得做的一件事。
  6. 承认自己犯错也是很了不起的一件事。
  7. 做一个 caretaker,而不是owner。

  1. Consider if being a jack of all trades and a master of one is right for you.
  2. 当学习某一新的编程语言时,关注用它做一些能够带给我成就感的一些东西。
  3. 为手头具体的问题写代码,但是努力让代码能够解决更为普遍的问题。
  4. 编写代码,为其他开发人员解决复杂的问题,但通过清晰的界面公开功能。
  5. 在旧系统中处理遗留代码时,要了解应该保留的代码和应该删除的代码之间的区别。
  6. 尝试,创新,快速失败,更好地解决问题。
  7. 定义”已完成”的内容可以节省时间,因为它可以帮助您估计所需的工作量,为开发制定计划,并避免以后进行不必要的修改。

  1. 一个单一的大型发布可以分为一系列风险较低、易于理解的发布。
  2. 在调试时,您应该尝试系统地、严格地解决问题,以解决所有测试条件。
  3. 设计文档不应该是事后的想法,而应该是软件工程过程不可分割的一部分。
  4. 协调设计文档的评审,并将设计与原始文档进行比较,以验证所有相关约束都得到了解决。
  5. 谦逊,清晰的沟通,尊重他人。善良不需要付出任何代价,但其影响是无价的。有些人可能会说,良好的沟通需要精力和深思熟虑。应该有更多的能量来激发同情心。
  6. 使用与听众相关的语言、概念和详细程度。
  7. 对他人友好是一种超能力——运用它。

  1. 大方地赞美那些做出杰出工作的人。
  2. 拒绝比承诺过多更好。
  3. 你不可能取悦所有人——在说”是”和”不是”的时候要非常小心。
  4. 承认不了解某事,并对积极寻求帮助,甚至是比自己经验少的初级工程师。
  5. 利用会议和问答环节提出正确的问题,交流知识并通知团队。
  6. 为你的观点大声辩护,但是每次你有新的证据反驳他们的时候也要回顾一下。
  7. 在一次非正式会议之后,一封友好的电子邮件有助于重申讨论中的要点或承诺。

  1. 知道什么时候保持安静,观察游戏中的动态。
  2. 在不确定的情况下,不要不做决定或不采取行动。
  3. 领导者拓宽了自己的视野,从战略的角度思考问题,并为他人制定了路线图。
  4. 教你的队伍钓鱼。不要总是为他们解决问题,而是温和地引导他们发展自己解决问题的技能。
  5. 在评估具有挑战性的问题时,你以身作则,并在有人提出解决方案时提出相关问题。
  6. 承认犯错误、不知道答案或寻求指导都是可以的,这有助于克服冒名顶替综合症。
  7. 通过及时提供信息来保护你的学员,这样他们就不会陷入完全错误的境地,而是通过自己做事来掌握。

  1. 确保指导关系是高级工程师职责的一部分,当有人进入其他团队、职位或组织时也能帮助保留关键领域知识。
  2. 导师可以为你提供建议,但你是唯一一个可以采取主动和行动的任何建议,以管理你的职业生涯和成长。
  3. 信任可以使团队成员团结起来,朝着共同的目标努力,而官僚主义会使他们产生分歧。
  4. 了解变更对业务的影响。
  5. 对业务-软件等式的洞察力和敏锐性增加了工作的影响。
  6. 为深度工作优化你的日历。
  7. 避免破坏你的工作时间。

  1. 超负荷工作不是好的职业道德的一部分。
  2. 不断尝试超越自己的标准是不现实的。
  3. 时间是有限的。与其试图寻找更多的时间,不如消除不必要的任务。
  4. 你没必要知道所有的事情。
  5. 最好是积极主动地从疲惫中拯救自己,学会说不,知道什么时候停止,并计划你的时间包括工作之间的休息。
  6. 鼓励你和你的团队休息、度假和休假。

No notes link to this note