本周开始是我在Facebook的第四个年头。我的经验在这里发生了巨大的变化:退学后我就来到了这里,在这里遇到了前所未有的挑战。单从这方面讲,我经历和遇到的挑战比这里4/5的人都要多。所以,我想分享一些我的认识和见解,希望其他一些程序员能感觉这有些用处。
作为一个软件工程师,你的工作是开发出能解决问题的东西。初次进入公司时,你会被分配一些小任务,你可以解决它们。随着专业技能的增加,问题的规模越大越大。避免这种问题规模变大或问题难度增加的做法是错误的。程序是你用来解决问题的工具。如果你园丁,你会去种花和除草。提高你的能力发挥并不是种更多的花和除更多的草,你的愿望应该是能更快更高效,成为更有经验的园丁。你真正应该做的是,抬起头来,从整体看这个花园,思考如何布局,整体规划这个花园。
为了能更有效的提高能了,你需要有效的交流渠道。交流渠道代表着一个人在这个世界上活动的能力。作为一个程序员,在你的生活环境里拥有顺畅的交流渠道,这对你全面发掘遇到的问题的边界和最有效利用问题解决方案起着至关重要的作用。这既包括你的代码上的沟通,也包括在公司里和他人的交流。对于你参与的代码库,你要快速的了解清楚各个组件是如何组合的。以这些知识为基础,你不能只去修复被分配的bug问题,而应该去考虑如何阻止这类问题再次发生。你不能只去想着实现一个新功能,而应该考虑如何在这些老代码和新代码上提炼出一个公用组件,让它们共享80%的代码。这需要付出努力,但从长期看会有巨大的回报。
站在更高层面看问题,将整个公司视为己有。不要允许你的同事不做到最好。理解各种决策的权衡以及原因;理解一些临时方案的决定和这样做的必要性,但如果你感觉不对,一定不要在提出你的观点以求获取更好方案前就接受。这是你的公司(你的花园),如果你允许有人犁错了方向,整个花园规划将会变成一场灾难。养成勇于change的习惯,并有信心这些变化将向好的方向发展。
人很容易陷入认为自己无法做到无所不知的漩涡,认为周围的人都比你聪明、有经验,害怕自己说的不对,被对方看不起。事情其实不是这样。当你有了一个想法,和你的团队分享——即使你不能确定你的想法是否正确。错误的认识往往是通往正确认识的里程碑,因为它能帮助你界定问题的真实边界,还因为你能通过的对错误想法的反复推演而获得正确的想法。
你并不能立即很明显的发现跟公司内的其他团队中的人保持交流、维持关系有多重要。随机找一个你几个月未一起工作的人,和他进行简短的聊天。这能给你遇到的问题带来新颖的思路,也能让你发现其它团队已有的解决方案,你可以拿来用。团队之间的信息交流能让你对公司有更全面的认识,而和另一个项目里的基层程序员交谈能激发新思想,新方案,和新优势整合的机会。
我也是刚刚总结出这些经验。我希望这些能给你启发,促你进步,把它据为己有,指引你的团队走向正确的方向。祝你在Facebook工作的开心;我知道我是的。
[英文原文:
This week marks the beginning of my 4th]