自觉学习
前置学习
在工作的前几个月里,你要学习一切如何运作。这将有助于你参与设计讨论、On-Call轮换、解决运维问题和评审代码。OA系统、
代码仓库、版本管理工具、代码评审流程、需求任务拆分系统、软件发布流程、补丁流程、测试流程、周报总结等等,这些都是比写下你到新公司的第一行"HelloWorld"更重要。
实践学习
在实践中学到的东西要比只坐在那里单纯地阅读学到的多出许多。尽你所能去理解你的工作会造成的影响,并以适当的谨慎程度行事。与变更高流量数据库上的索引相比,编写单元测试可以不那么谨慎,从而更快,同时可以从尝试新增某个注释开始合并代码。
运行实例
运行实例代码可以真正地了解代码的工作原理。文档可能会过期,同事们也会忘记某些事情,但是实例代码是安全的。
你知道某个方法被调用了,但无法确定它是如何触达的。你可以通过抛出一个异常,输出一串堆栈跟踪信息,或者附加一个调试器来查看调用层级。
阅读
请每周都花一部分时间去阅读。可供阅读的内容有很多:团队文档、设计文档、代码、积压的任务票、书籍、论文和技术网站。不要试图一下子把所有东西都读完。请从团队文档和设计文档入手。这些文档会就事情是如何组合在一起的给你一个整体的概念。要特别注意那些关于如何权衡取舍和背景的讨论。接下来你就可以深入研究那几个与你最初任务相关的子系统了。
不要像阅读小说一样从前到后地通读代码:请利用你的IDE来浏览代码。为关键的操作绘制控制流和状态图。仔细研究代码的数据结构和算法。注意那些临界值的处理。留意那些惯用写法和风格,也就是去学习“本地方言”(local dialect)。
加入一个阅读小组来跟进学术界和工业界的最新进展。一些公司可能有内部的阅读小组,去问问看。如果你的公司没有,可以考虑成立一个。
听课
观看教程、技术讲座和阅读会议总结。四处打听打听,找到好的内容。你通常可以用1.5倍速甚至2倍速观看视频,以节省时间,但不要被动地观看。你需要做笔记来帮助记忆,并学习任何不熟悉的概念或术语。
如果你的公司提供培训会和技术讲座,就去参加。它们也是你公司内部的活动,所以你会获得真正有价值的信息。
《程序员的README》