写点什么

谷歌工作十年,我总结了这些工程师必备软技能

  • 2022 年 6 月 28 日
  • 本文字数:2455 字

    阅读完需:约 8 分钟

谷歌工作十年,我总结了这些工程师必备软技能

编译 | 辛晓亮


谷歌浏览器的一位高级工程经理,分享了他在谷歌工作十年时间里学到的一些软技能,下文为部分经验摘录。 

批判性思考并提出合理的论点

 

批判性思维是使用认知技能独立思考以做出深思熟虑的决定的能力。投资于这项技能,以提高你的思路清晰。

 

作为工程师,我们有时会急于立即解决问题,因此感觉就像我们正在取得进展,或者看起来我们正在对利益相关者做出响应。如果我们没有充分考虑原因和后果,这可能会带来风险。换句话说,批判性思维是有目的地思考并形成自己的结论。这种以目标为导向的思维可以帮助你专注于根本原因问题,从而避免未来因不牢记原因和后果而出现的问题。

熟练掌握“可转移”技能

 

可转移的技能指的是可以从一个项目带到另一个项目的技能。

 

基本原理是任何软件工程工作的基础。它们有两个层面——宏观和微观。宏观层是软件工程的核心,微观层是实现(例如技术栈、库、框架等)。

 

在宏观层面上,你学习的编程概念在很大程度上是可以转移的,不管是什么语言,语法可能有所不同,但核心思想仍然是相同的。这包括:数据结构(数组、对象、模块、哈希)、算法(搜索、排序)、架构(设计模式、状态管理)甚至性能优化(例如缓存、延迟加载等)。这些都是你经常使用的概念,对它们进行逆向了解会有很大的价值。

 

在微观层面上,您需要学习这些概念的实现。这可能包括:你使用的语言(JavaScript、Python、Ruby 等)、你使用的框架(如 React、Angular、Vue 等)、你使用的后端(如 Django、Rails 等)以及技术你使用的堆栈(例如 Google App Engine、Google Cloud Platform 等)。其中涉及的细节对于获得有效的专业知识可能很有价值,但并不总是可以转移的。

专注于用户,其余的将随之而来

从用户体验开始,倒推你需要的技术

 

史蒂夫乔布斯曾经说过一句名言:“你必须从客户体验开始,然后再回到技术。你不能从技术开始,然后试图弄清楚在哪里销售它”。

 

作为工程师,我们太容易从想要使用特定解决方案的地方开始--无论是由于流行、开发者经验还是个人偏好--并试图找到一种方法来合理地使用它们。相反,我们应该专注于我们是为谁建立的,他们有什么问题,以及目前可用的选项是如何落空的。

 

伟大的用户体验来自于两个观点的结合--客户和技术。向人们展示你认为他们想要的东西,并注意他们所反馈的内容。企业的成功取决于客户的满意度,而客户的满意度往往转化为软件的用户体验。

打造技能的深度与广度

 

我非常喜欢 T-Shaped 工程师的想法。这些工程师在一项或少数几项技能方面是深度专家(T 的竖条),但他们对构建和运行产品所需的许多其他技能(横条)也都有基本了解。有些团队喜欢通过一系列不同的专业来轮换团队成员,以建立更多的 T 型团队成员。我还发现,在中等规模的团队中,拥有某个领域的专业技能和技能、多才多艺、善于合作的人,在必要时可以替代其他人,这是很有效的。

通用代码与特定代码

 

为手头的问题编写专门的代码,但要努力发现那些你可以负担得起的地方,使其成为一个小的通用的代码。

 

通常情况下,我们试图把代码写得尽可能的通用,最终却使那些有效的代码不能帮助完成问题。相反,专门为这个问题而构建,但试图发现可以让它变得更通用的地方,这完全消除了未来没有考虑到这一点导致不得不再次重构的情况。

 

https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it

 

https://ronjeffries.com/xprog/articles/practices/pracsimplest/

在维护项目中学习

 

在处理旧系统中的遗留代码时,任何高级工程师都应该尽量理解留下的代码和舍弃的代码之间的区别。软件行业已经到了一个阶段,许多项目都在处理旧的或遗留系统的维护和迁移问题。部分软件工程师对修改生产中的代码持谨慎态度,因为他们担心会引入一个错误。但不要假设现有代码是完全可靠的,随着时间的迁移,节省时间的做法可能会成为维护的噩梦。

设计文档的重要性

 

设计文档不应该是事后的想法,而应该是软件工程过程中的一个组成部分。

 

设计文档可以帮助你从同行或者对接团队中获得共识,来自他人的反馈能使你找出差距并改善设计。设计文档还能帮助未来新加入团队的工程师更好的理解当前系统。

拒绝的力量

 

说“不”比过度承诺更好。在涉及更多工作的情况下,我们大多数人都不善于说“不”。一方面是大家没有意识到“不”是一种选择,一方面是我们喜欢这种挑战。然而,过度承诺是一种责任,而且可能会造成项目延误。让对方知道你已经在做什么,并提供一个合理的估计(需要多长时间)是一种尊重的表现。

技术债务

 

Titus Winters 将技术债务定义为“我们今天拥有的代码和系统与我们希望拥有的代码和系统之间的差异”,某些类型的债务比其他类型的影响更大。有些债务可能是由于没有及早发现的错误(疏忽),有些是由于事后了解到的情况,有些是由于技术系统环境的变化(背景)。

 

坚持优先处理技术债务有时是很难的,因为你不可能总是量化那些没有表现出来的错误或没有发生的故障。如何防止债务积累?除了构建新功能外,技术主管还应定期在 Sprint 周期中投入时间进行清理和偿还债务。审稿人应该意识到推动短期速度实际上可能会导致进一步的问题。经理和主管应该注意批准与现有项目重叠的新项目,除非你确定权衡是值得的(例如,解决现有系统的债务与建立新的东西相比不值得)。最后,监控项目的健康状况非常重要。

工作与生活的平衡

 

过度工作并不是良好职业道德的一部分,你永远不可能比世界上的每个人都更努力。许多公司将过度劳累的员工作为“标准”,错误地认为这是良好的职业道德。成功来自许多因素,不仅仅是过度劳累。

 

时间管理上,优化自己的日历,留出时间,专注于深度工作。深度工作是无干扰、高度集中的工作,可以在短时间内创造大量价值。同时,一个人的时间是有限的,与其试图寻求更多的时间,不如消除不必要的任务。

 

最后,你的健康和家庭至关重要,它会促进整体幸福感,精疲力竭也会影响到你的工作,也会使你的团队精疲力尽。保持良好的工作和生活平衡对于各个级别的工程师来说都至关重要。

 

原文链接:

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

2022 年 6 月 28 日 15:3913282

评论 3 条评论

发布
用户头像
大环境还不允许WLB
2022 年 08 月 04 日 04:13
回复
用户头像
工作与生活的平衡点,感觉越来越难掌握了,特别是在家办公这几年。
2022 年 07 月 02 日 23:43
回复
用户头像
其实就是一个工作手册,肤质疑你我,耗费精力放在哪里!
2022 年 07 月 02 日 10:23
回复
没有更多了
发现更多内容

HDFS中的常用压缩算法及区别

王知无

大数据 hdfs

架构师课程--第十三周作业

孤星

nodejs中的文件系统

程序那些事

nodejs 文件系统 异步IO 异步编程 程序那些事

第一周-胡赵凯-作业

hisun胡

产品经理训练营

Flink1.12集成Hive打造自己的批流一体数仓

王知无

大数据 flink

有道乐读 x AWS | 云上的少儿图书馆!这个寒假让孩子爱上“乐读”

亚马逊云科技 (Amazon Web Services)

云计算 AWS

架构师训练营 week13 学习笔记

花果山

Hbase性能优化百科全书

王知无

大数据 HBase

读书笔记之互联网金融思考一则

石君

金融科技 互联网金融 28天写作

企业需要DevSecOps来保证应用程序的安全

啸天

安全 DevSecOps 应用安全

币币撮合交易系统软件开发|币币撮合交易APP开发

系统开发

敏捷开发需要内外兼修

Bruce Talk

敏捷开发 Agile

精选算法面试-哈希表II

李孟

面试 算法 28天写作

程序员行业半衰期太短,如何保持高效发展?

李忠良

28天写作

架构师训练营 week13 课后作业

花果山

单例模式作业

MR.X

给自己当前岗位所定义的理想岗位模型

邹小胖

自我思考

项目管理系列 (5)-沟通规划

Ian哥

项目管理 沟通与管理 28天写作

怎样更好地阅读源码?

程序员架构进阶

方法论 开发 源码阅读 提升自我 28天写作

案例研究之聊聊 QLExpress 源码 (八-2)

小诚信驿站

聊聊架构 28天写作 QLExpress源码 聊聊源码

数字货币交易APP系统开发|数字货币交易软件开发

系统开发

前端也要懂机器学习(下)

执鸢者

机器学习 大前端

数字货币合约交易系统软件开发|数字货币合约交易APP开发

系统开发

构师训练营 - 第十三周课后练习

joshuamai

AWS Graviton2 | 匠“芯”定制,性能为王

亚马逊云科技 (Amazon Web Services)

云计算 AWS

【计算机内功修炼】七:高并发高性能服务器是如何实现的

码农的荒岛求生

高并发 事件驱动 高性能 Event Driven 高并发优化

HTML(一)——html相关介绍

程序员的时光

程序员 28天写作

Springboot 中的切面AOP处理

武哥聊编程

Java aop springboot SpringBoot 2 28天写作

在 AWS 的视角下,正确打开零信任安全模型

亚马逊云科技 (Amazon Web Services)

云计算 AWS

第一周-胡赵凯-总结

hisun胡

产品经理训练营

ClickHouse在大数据领域企业级应用实践和探索总结

王知无

大数据 Clickhouse

谷歌工作十年,我总结了这些工程师必备软技能_语言 & 开发_Addy Osmani_InfoQ精选文章