从大学到工业界的转变伴随者一些惊喜和教训。结合我自己的经历,分享一些我的感悟。另外我也分享一些研究生期间我养成的一些转变的很好习惯,以及融入到工业界要求的一些重要变化。
练习编写可扩展的代码
大学期间编程实验课的一个共同点就是一旦你按照规定的要求交了作业就万事大吉了,你再也不会去碰这些代码了。应该认识到这些作业事互相依存的,为多了有一个坚固的基础应该花些时间架构和测试每个作业。这会让你第一次体验到使用模块化和经过测试的代码是一件多容易的一件事。工业界的项目要求代码在可预见的未来内必须是可维护可伸缩对其它项目有用,所以那种“交了就忘”的哲学是行不通的。
学习有效沟通
顺利进入工业界一个重要的技能就是有效沟通。那些能把想法写成文章的人会在项目说明书和实现细节上被委以重任。你必须能把你的想法讲述给非技术人员听。锻炼这个技能的好机会是在技术写作课上。我在技术写作课上的小组里既有工程师也有非工程师,我们为一个真实的公司开发一个Facebook游戏。这个公司完全是一个非技术公司,并且他们的期望超出了我们小组在有限的时间和技术知识的情况可以完成的目标。这给了我一个珍贵的经历,在没有技术基础的情况下,让我在小组和公司之间调整技术设计细节。
有效的沟通对防止跨项目的知识库来说是很重要的。如果你能清晰地讲解框架的抽象概览和项目实现细节你就能减少工程师进入状态所消耗的时间。清楚的设计文档会让工程师更好地理解代码的意图,从而能帮助他们尽快进入项目状态。如果你不能提供要给有意义的文档,就只有理解项目的长远规划,这样你就把自己置于危险之地了。
课外项目有影响
我在大学期间做过的最有意思的事情之一就是在和一个朋友在Georgia科技做一个课外项目。我们创造了一个人工智能完备的框架,这个框架可以轻易创造出一些新的人工智能挑战。所创造的挑战类型基于一个实现了机器人类的客户端,这个类实现了人工智能逻辑来控制机器人在比赛中与对手对抗。这个课外项目教会了更多关于可扩展行、单元测试、软件架构,这些都是我们在学校课堂里所学的理论。我不但学到了很多经验,当我做一个并不是学校要求的项目的时候,我也知道了软件工程是我真正感兴趣的。在面试中谈论课外项目会向你的潜在雇主展示你自律的习惯,也会展示你承担新项目以及挑战的能力。
马拉松而不是短跑
进入工业界的一点不同就是认识到总是有做不完的工作。项目规划图
通常跨越未来的数月数年。一个项目的完成就是立即去着手开发下一个功能,直到下一个任务到来才会有空余时间。随着更多额外的可能性,一个项目的完工常常会导致一个更长的项目规划图。另外,项目中经常有同时第三方依赖,这些会阻碍你在一阵疯狂写代码后就立刻完成项目。深夜写代码会导致大量难以阅读的代码如果凌晨三点每人审阅你的代码的话。通常,可持续的生产能力是很重要的,因为工业界项目的要求和大学课程作业相比是不太可能改变的。
这些认识促使我调整我在大学期间养成以及用来获得成功的习惯。我经常工作到深夜,为了给自己几天没有作业的日子我经常故意通宵达旦抓紧时间在截止日期很久前就完成作业。这策略在工业界行不通。从周一到周三十分努力地工作我也不能在接下来的几天放假。另外我发现我通宵工作的能力快速下降了,对身体的消耗以及负面影响可以持续好几天。我得到的这个教训是工作是场马拉松,而不是短跑。
我得到这些教训的方式是痛苦的。我之前写的一些项目不能扩展。当下一个任务要建立在之前项目的基础上时,我被迫重写很多代码,要是我之前能做好架构的话,就能少些很多代码。当我刚入职Wealthfront的时候,我试图用短跑的方式去工作。很快我就崩溃了,转变到细水长流的工作方式不仅帮我从崩溃中恢复过来,还是我更具有生产力。我希望你们从我的亲身经历的教训中学到一些间接经验使你们从学生到工作台的转变更成功更平滑。
** 全文完(2017.3.19) **
不完善之处日后抽空修改,翻译不得当的地方请指正并多多海涵
网友评论