五个月前——4月16日,星期四——我们发布了bugtrackers.io作为展示web开发人员生活的一个新的平台。
我希望它能够成功,能够受到大家喜爱。因为我们展现了很多或著名的,或成功的,或平凡的高科技人员的生活,比如CTO(首席技术官)、开发人员、网页设计师或产品人员。
在我意料之外的是,对我也产生了很大的影响。
今天,我想将这些顶级的经验分享给大家。或者你也可以阅读所有的采访。
这将是你的宝贵的财富,正如它们带给我的那样。
Morten Primdahl,Zendesk的首席技术官兼联合创始人
1.扩展技术是一个挑战。Just do it。
我们是从一个只有3个人其他啥都没有的创业公司逐步成长为一家大型的具备可扩展性,业务操作能力,数据库和产品开发的企业。如果你真心醉心于做企业,那么这就应该成为你的目标。
当你从2009年还只有几十号人成长到我们现在这个规模,那么你得能适应公司巨大的变化。既有技术上的挑战,也有组织结构上的考验。扩展经营意味着迅速成长和雇佣更多的工程师。这是一个全球性的挑战。但是要真正解决的话,我只有一句话:真的很难。
2.迸发激情。
做你喜欢做的事情。做你充满激情的事情。不要别人说什么你干什么。了解怎样才能实现自我,走好自己的道路。激情是促使你前进的动力。
3.面对面交流对于远程团队是必不可少的。
我们规划了高额的差旅费用以便于让大家能够面对面地交流。尽管我们有Skype、谷歌视频群聊(Google Hangouts)和Flowdock,但是我们依然每年组织几次让大家聚在一起。如果你加入本公司,那么你会有两周时间在旧金山和团队相处,此经历让会 让你获益匪浅。
欢迎阅读我们对Morten的采访。
Sunil Sadasivan,Buffer得首席技术官
4.角色比职位名称更重要。
在非自然层次结构中我的角色被定义为是CTO。但是,在自然的层次结构中,其他人或许也会承担一些我的工作任务,如果他们在工作中需要的话。
因此,在Buffer,职称变得不是那么重要——因为我们大多数人会担任很多不同的角色。
5.投资自己。
Mark Cuban曾经说过,“你能做的最好的投资就是投资自己”,事实确实如此。
虽然我以前的创业公司并不成功,但这或许是我做的最好的一件事,因为这是一个投资。
我投资了时间来专注发展自己。
6.100%的测试覆盖率并不重要。
我们并不是太关心测试覆盖率有没有达到100%。
重要的是你要去判断什么是真正重要的,什么将会被破坏,然后根据实际情况添加测试。
欢迎阅读我们对Sunil的采访。
PJ Hagerty,Engine Yard的团队领导
7.学习新技术。
关于技术教育现在有一个巨大的转变。技术发展是如此之快,以致于越来越多的人开始意识到,我们需要学习了。
所以我是周末课程学习的坚实拥护者,学习不仅可以挑战自我,还能激发兴趣。何况现在网上各种免费的资源比比皆是,你还有什么理由不去学习呢。
8.优先测试,经常发布。
我们信奉测试先行的理念。我们上市的产品很少是没有经过高规格测试的。
但是我从不认为我们有办法找到所有百分之百的bug,因此经常发布是王道。
欢迎阅读我们对PJ的采访。
Rani Angel,Infragistics的web开发负责人
9.管理远程工作人员是一个挑战。
最大的挑战毫无疑问是管理分散在全球各地的团队。这是一个巨大的挑战。其中最大的难点是由于时差的不同,团队能够同时工作的重叠时间只有区区几个小时。
我们面临的挑战是,作为一个管理者你得确保你的工作任务始终保持在第一位。另外,你还得解决团队不能在同一地理位置工作所产生的痛苦。
10.探索各个行业。
随着我的成长,我开始喜欢接触不同的机会,比如说实习工作,营销工作,所以了解一点销售知识,能够让我更快地进入这些领域。
年轻时候的经历在很大程度上影响了我的观点,让我更能适应职场。
欢迎阅读我们对Rani的采访。
Thomas Schranz,Blossom的CEO
11.不管你多大年纪,都应该去学习如何写代码。
我曾经认为:“哎呀,我不会编程,学习编程实在是太复杂了。”我知道那个时候,有很多年纪比我还小的孩子早就已经开始编程了,我心里想:“唉,我已经晚了,算了,我不学了。”然后,一个很偶然的机会,我学会了编程。
我建议任何人,对,就是任何人,无论多大年龄的,至少可以从开始学习编程。
12.学会如何说“不”。
有时说“不”其实比真正去做这件事情更难。
我认为大家面对的一个经常性的挑战就是对要求说“不”。不管是来自客户的,团队的,还是来自于你自己的。
对想法说“不”并不意味着这个想法就是坏的。说“不”其实更麻烦。因为你将不得不向每个参与的人解释,说服他们,在会议上降低所有人的积极性。与此相比,只是构建一个东西,哪怕你知道它不正确,相对而言就比较简单了。
欢迎阅读我们对Thomas的采访。
Leif Singer,iDoneThis的产品负责人
13.紧跟其他开发人员的脚步。
我认为最重要的事是使用技术——实践并优化,跟随其他人都在探索的技术,但也不要一下子学的太多。保持在现行流行趋势的顶端对于我们而言比技术更重要。
14.不要害怕删除产品的功能。
我们时不时地还得删除功能,当我们发现没人使用或没有足够的人使用这些功能的时候。
删除不再使用的技术也会成为一种问题,这是因为这不属于真正改善和提炼产品,但却是一个任务。
欢迎阅读我们对Leif的采访。
Eric Elliott, Fight Poverty with Code的创始人
15.明智地选择编程语言。
Javascript有着巨大的潜力,因为它是当今世界最流行的语言。如果你写Javascript库,那么就能帮助更多的人。
16.实时功能既工程巨大又非常复杂。
关于实时性和协作功能我们已经接触过不少。多人同时操作app的状态是极其复杂的。
我工作于Adobe的创意云团队。创意云团队是所有人都可以参与合作的创意项目。我亲眼目睹了其合作管理之复杂,以及做好一个真正好的能和其他用户交互而不会互踩脚趾头的用户工作流程的困难。
欢迎阅读我们对Eric的采访。
Johannes Nagl,Swat.io的首席技术官
17.标准化的编码方式。
当开发人员从创建短命的营销活动转移到长寿的长时间在线的SAAS方案时,实现一个完全新的关于架构、代码和可持续性的思维将会是一个大的挑战。
代理项目经常像个人秀——各种不同的代码风格层出不穷。将这些风格规范化标准化是快速奏效的首要方法之一。使用如持续集成等工具有助于更多地专注于产品。
18.谨记测试。
在web开发中,我深信测试是“另一个每个开发人员都应该知道,并整合到他们的工作流程中的学科”。
因此,资源专业化是维持已建立的测试环境的好方法。更重要的是,每个开发人员应该时刻将测试谨记在心。
欢迎阅读我们对Johannes的采访。
Florian Motlik,Codeship的首席技术官
19.关于CTO的角色现在还没有达成共识。
一百个CEO就有一百个CTO的角色问题。关于如何成为CTO的书也并不是很多,这是因为这个角色在不同的公司中往往不尽相同。我是一个面向外部的CTO。我不管理团队。
我从来没有真正在内部管理过一个团队。一旦我们真的成长到需要更多管理的时候,我们会招聘一个工程副总裁。
20.作为服务的基础设施将发挥巨大的作用。
云依然是服务的集合,服务的集合依然是你必须要管理而我不喜欢做的事情。我们应该做的是为此提供服务。
21.测试复杂度和测试速度之间的权衡。
我们需要做的最大权衡是测试复杂度和测试速度之间的权衡。
最好的情况是,在每个浏览器上统统测试一遍以确保它都可以工作。但是,这需要很多很多的时间,甚至是一个做不完的工程。
所以你必须做好权衡得失。
欢迎阅读我们对Florian的采访。
Christian Braun,PAYMILL的工程副总裁
22.招聘伟大的开发人员是一个挑战。
当然,或许你不认为这是挑战。之所以聘请开发人员会成为一个主要挑战的原因是每家公司都希望人才。此外你还必须得有足够的开发人员才能完成产品改进。
23.让沟通变得畅通无阻。
我们预测变化需求。然后,管理层就可以对有关费用和轻重缓急有一个清晰的轮廓。
欢迎阅读我们对Christian的采访。
更多
除了这23个宝贵的经验教训之外,我们还收获了很多。
最后,我想知道,你最大的收获是什么呢?