编者按:格雷格·波拉克(Gregg Pollack)是 Code School 的 CEO 兼创始人,Code School 是一个通过生动有趣的内容为现有开发者以及致力于成为开发者的人们提供教育的在线学习平台。
每当我问起软件开发者如何提高自身的技术水平时,总会得到各种各样的回答——做业余项目,浏览 Hacker News,收听技术播客,参加在线教育课程。往往一个人的答案还不止一种,而且这些事情大多都是在下班以后做的。
然而我很少听到这样的回答:公司在他们的学习过程中扮演着重要的角色。
非常有趣的是,科技公司和创业公司常常给人才开出惊人的薪酬福利,在员工完成工作最重要的方面上——持续学习——却没有提供帮助。由此我扩展出了一个重要的话题。
编程与大多数工作不同
许多工作需求的知识基础比较静态,但是软件开发并非如此。技术总是在不断进步,因此如果开发者致力于做到***的话,他们也应该一同进步。可以这么说,对于编程这份工作而言,学习的重要性不亚于写代码。
举个例子,新语言、新框架的出现并不是什么稀罕事——苹果的 Swift 语言就是***的例子——这可能会改变一位开发人员未来一段时间内使用怎样的编程语言。
当我回顾自己的职业生涯时,我发现大学里我学的是C++,工作时学习了 Perl,自学 Java 从而找到了更好的工作,然后自学 Ruby on Rails 创办了自己的咨询公司。通过学习新技术、新语言,我才能保持作为一名开发者的竞争优势,也取得了非常成功的职业生涯转变。如果不是坚持学习,我不可能达到现在这样的成就。
所有开发者都有这样的学习动力吗?恐怕不是。那么如果开发者没有紧跟技术发展趋势的话,会产生怎样的后果?他们开发的产品以及他们效力的公司最终都将蒙受损失。代码会因此更难维护,执行时间更长,或者编写代码使用的旧语言/旧框架其它开发人员都不愿意再使用了。对于任何公司而言这样的情况都十分可怕,不过下点功夫的话这个困难也会迎刃而解。
公司应当如何支持开发人员的持续学习
大多数由公司驱动的教育解决方案实施方便,价格合理。而且即便价格不菲,生产力或员工幸福指数的提升肯定也让它显得物有所值。
一开始,你能做的最简单的一件事就是向员工重申可以在工作时间内学习。对于开发人员来说,在工作时间里不“工作”,抽空学习教程或者阅读 Hacker News,难免会感到不安,但是你与老员工、新员工沟通方式的简单改变就可以扫除这样的恐惧。
另外一个完全免费的解决方案就是鼓励结对编程。一方面,结对编程已经被证明能够***限度地避免 bug,提高代码质量,另一方面***时间见证另一位开发人员如何解决问题也是学习提高的***途径之一。
另外,一些公司已经实行了继续教育措施,确保技术团队在相关领域中拥有大致相同的知识基础。开发团队中知识的差别能够对生产力造成毁灭性的打击(更不用说士气了),因此开设官方的学习项目是一个减少不满情绪的好办法。
Code School 的每个月当中,我们都会抽出一天来进行一个我们称为“提高”(betterment)的项目。这一天中,我们只做一些、开发一些或者学习一些能让我们得到提升的东西。比如参加一个打字班,阅读某一本书,开发开源的业余项目,学习新语言或新框架。这一天为我们公司从教育、创意和士气上带来的提升一直都超出我们的想象。
我们还会为员工付钱,让他们每年参加一次当地会议、一次外地会议,并且帮助购买图书、在线课程、研习班等等学习资料。我认为,对于许多科技人才而言,他们会觉得这些比免费的 Netflix 订阅或者在办公室拜访桌上足球更有意义(而且这些东西也太老套了吧)。
这些只是我的几个想法。最终每家公司都需要针对公司、针对团队、针对如何达到***学习效果摸索到最适合的解决方案。
学习型团队更能创新
鼓励学习的工作环境还够带来一项副产品,那就是对产品以及整个公司的生命周期产生积极影响。它能够培养出永远使用***的工具(而不是大家最熟悉的工具)来工作的文化。
那些为寻找创造性解决方案应对难题准备更完善的组织更有可能获得成功。尽管打造成功公司取决于很多方面的原因,但是建立一个持续学习的团队将会让你领先于那些把技术人才当作码农而不是学习者的公司。
事实上,这两方面的能力所有的开发者都要具备。