6

高效工程师系列(二) 花时间学习新技能

 3 years ago
source link: https://zxs.io/article/1325
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

高效工程师系列(二) 花时间学习新技能

2018-02-17 分类:效率 / 翻译 阅读(4735) 评论(2)

  工作中很容易被各种必须完成的事压得喘不过气来。我指导过的那些人,通常都是刚开始工作的人经常感觉到他们的工作任务清单在持续增长,而且进度远远的落在了后面,他们总是花很长时间追赶进度而不是花足够的时间开发能让他们更高效的新技能。

关于这点,我从Google借鉴了一个解决方案。Google开创新的提出了一个"20%时间"的理念,就是相当于工程师可以每周花一天的时间来做一些别的能让公司更好的项目。最初,20%时间是一个有争议的提议,有人怀疑这提高了公司的底线。事实上这种投入使得工程师能创造出像Gmail、Google新闻、AdSense这些最后成为google核心竞争力的产品。 许多其他公司也纷纷效仿。
  想让自己得到成长,你必须付出你20%的时间。每天1-2小时比每周用一整天的时间学习效果要好,这样你可以把提升自己的技能变成一个日常习惯。可能刚开始你的效率会有所下降(你把你上网或者做什么其他分散你注意力的事的时间拿过来学习根本也不会有什么影响),但在长期来看肯定是能提高效率的。
  所以你应该用这20%的时间做什么?你可以深入去理解下你工作的领域或者你用的工具。或者,你可以从微软Windows部门前负责人史蒂文•辛诺夫斯基(Steven Sinofsky)所说的“相邻学科”中获得经验。有些学科和你的核心角色相关,可以让你变得更自信和高效。如果你是一名产品工程师,你的相邻学科可能有产品管理、用研甚至是后端开发。如果你是一名基础研发工程师,你的相邻学科可能包括机器学习、数据库内核、网页开发等。如果你是一名关注增长的工程师,相邻学科可能有数据科学、时间、行为心理学。邻近学科的知识不仅有用,而且你还会更有可能记住信息,因为你会积极地练习它。
  无论你选择哪条路线,这有10条关于利用你身边可用资源的建议。

  • 学习你们公司最优秀程序员写的代码。 通常而言如果你在一个大科技公司,一般都会有一个共享代码库可以看到早期员工写的核心库。从一个你用过的开始看,问问自己能不能写一套类似的代码并且你能从中学到什么。理解为什么他们这么选择和如何实现,看看早起版本是否被重写以解决缺陷。你也可以把这种方法用在任何你们公司正在用或者考虑用的设计良好的开源项目上。
  • 写更多代码 如果你感觉变成是你的弱点,多把时间从会议往编码上倾斜。十多年在学习上的研究表明,当你从记忆中获取知识的时候,你越努力,你就越能更快的学会和记住这些想法。因为编程比被动的阅读代码更耗费精力,你会发现实践是你提高编程技巧最有效的方式。此外,你很容易理解你读过的东西,但当你真正去做的时候你才会发现有大量的知识空白。
  • 利用好任何内部可用的教育材料 例如在Google,有大量经验丰富的工程师写的核心抽象代码库。如果你的公司维护设计文档或者举办技术讲座,这些都是很好的学习机会。
  • 熟练掌握你使用的变成语言 看一两本相关的好书,专注于扎实掌握该语言的先进概念,熟悉核心代码库。确保至少有一门语言是脚本语言(比如 python或ruby),它可以成为你快速任务的瑞士军刀。
  • 让最严厉的人review你的代码 优化好的有思想的反馈比降低你工作的门槛好的多。多问下你不自信的实现细节。 和你们公司最好的设计师讨论软件设计避免你写出设计良好但不工作的代码。
  • 注册一门你想提高领域的课程 这些课程可以是公司的、附近大学的或者在线课程,比如Coursera、edX、Udemy、Udacity等。在线教育井喷式发展,你很容易就能注册一门机器学习、移动开发、计算机网络、编译或者其他课程。这些课程基本上都是世界级教授所教授的,比如斯坦福、MIT等。有些大公司甚至会帮你的课程付费。
  • 参加你感兴趣的设计讨论 不要等着别人邀请你,问下项目lead是否介意你旁听或者参与到设计会议里。如果内部邮件组开发,直接把自己加进去,或者直接阅读存档中的关键对话。
  • 参加多样性的项目 如果你发现你直接一直在用相似的方法做相似的东西,是时候学一些新技能了。交错参与不同的项目可以教会你哪些问题在项目中是常见的,哪些可能只存在于你当前项目中。此外,研究表明,不同技能的交叉练习比重复的、集中练习的一种技能更有效,它可以帮助人们解决不熟悉的问题。
  • 确保你们团队至少有一个你可以学习的高级工程师 如果没有,考虑下换个项目或团队,这可以帮你在剩下的80%的时间里提升学习率。
  • 勇敢的扎进你不懂的代码里 经过多年的观察,前facebook的工程主管Bobby Johnson总结出工程的成功和『无畏地扎进他们不懂的代码是强相关的』。害怕失败经常拖累我们,导致我们在开始尝试前就放弃了。但Bobby Johnson解释道『在实践中深挖你不懂的东西,能让你写出更好的代码』。

  从你20%的时间里创造学习机会,你就会稳步提高你的技能和生产力。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK