今年已经是我成为软件工程师的第5个年头了。关于下面这些事情 我常常想 要是我刚入这一行时就知道的话那该多好 能少走不少弯路 取得的成绩也肯定比现在高。唉 往事不可追 所以在这里我想分享给大家 尤其是刚进入这一行的新手 请仔细考虑自己是否明白以下这8件事情。

1.良好的沟通能力。
工程管理是一个团队活动 哪怕有时候这个团队只有你一个人。由于每时每刻都有那么多事情需要相互了解 所以沟通就成为了最大的问题。90%的工程管理指的就是沟通。比如 得向人解释bug是什么?如何有效诊断?如何向大家完整地表述自己的复杂想法?沟通是项目成功最关键的因素。无效的沟通只会导致大量时间和精力的浪费。
2. 计算机科学的基础。
要想作为成为一名优秀的程序员 计算机科学的基础是必不可少的 但是 老实说 计算机科学和计算机工程真是两码事。不过要想成为优秀的工程师 就得有这个好奇心喜欢专研计算机的发展趋势和计算机的工作原理 包括深层次地了解新趋势可能存在的误区 以及一些替代性的解决方案 这样才有和其他工程师交流的资本。算法 除非是在面试中 其他时候用处不大。我的意思是 大多数情况下有类库就足够了。不过这并不意味着可以完全无视数据结构和算法。此外 推理代码和优化仍然很重要 尤其是在规模化的时候。
3.学会阅读代码。
写代码的重要性不用我说大家都知道 但是关于阅读代码这回事恐怕没几个人听说过。这可能是最值得掌握的技能之一了。关于这一条 到目前为止 我也在努力达到目标的过程中。话说 要是能有透过复杂现象看清事物本质的功力 那就离成为一个优秀工程师不远了。
4.学习UNIX和Linux。
这俩家伙几乎无处不在 所以很值得学习。它们能让通过命令行快速操纵计算机。如果有需要还可以安装Linux软件包和设置服务器。还能通过vi快速编辑(没错 就是vi。我本人就是Emacs用户)。还有一点很重要的是 UNIX实用程序能显著节省时间。此外还需要知道如何使用sed、grep、find、pipes 以及使用基本的bash/zsh写代码。
5.了解文本编辑器。
软件工程师都是玩转文本的高手。即便是现在已经被当做老古董的Emacs和vi 仍然是工程师需要学习的编辑器。两者至少得精通一个 因为它们的理念不同 而了解其中之一不但能让你代码写得更快 而且还不会被任何一种特定的环境所禁锢。不要仅仅是使用编辑器 要让它乖乖降服于你 自动化 符合自己的按键习惯 写出解决问题的脚本。
6.自动化思维。
因为复制/粘贴就是一种自动化模式 所以完全可以编写脚本来实现。而随机写入脚本会让编程更为有趣。也许只用30分钟就能搞定一天枯燥乏味的工作。自动化能缩减过程 也能让学到不少新的东西。
7.了解版本控制。
我喜欢干什么都用git。可惜 这么棒的点子 我竟然在学校的时候根本不知道 真是情何以堪。版本控制能让可以放心大胆地折腾代码 因为要是有什么行不通的地方 恢复原状或者取消键入就可以了。It's so easy!
8.自己搞个小项目。
这非常锻炼人 哪怕有时候会觉得筋疲力尽 恨不得撒手不干。由于的产品是抽象的 不像造大桥那样能看到真真切切的成品 所以只能不停地编码 没劲透了。想不想专心致志搞一个自己中意的项目 像对待自己的孩子那样 尽自己的全力做到最好 在这个过程中 还能学到新知识 学会运用工具 而在工作中是不可能有这样的机会的?答案当然是YES了。
我自己也不是每次都能做到上面每一点的 但是我依然希望 在我刚刚跨入这个领域时 能有人将这些肺腑之言告诉我 我会真心不胜感激。
译文链接:http://www.codeceo.com/article/8-things-new-programmer-know.html
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题