做程序员之后才知道的 5 件惊奇事

oschina
 oschina
发布于 2013年11月15日
收藏 107

从我开始工作算起,已经有20多年了。即便如此,我依然记得当时对从大学毕业并开始工作的憧憬。在那之前,除了少数几份和编程无关的暑期工,我的人 生基本都是在学校度过的。虽然我对工作的大多数期望都实现了,不过在步入职场头几年中也发现这一行许多令人惊奇的事,下面是头五件:

5. 人际交往

编程看起来是一份相当孤独的工作——你需要完成一个功能,所以你坐下来并用代码将其实现。不过事实上,你和其他的同事会有相当多的交流。你会和同事讨论设计,你会在开会时审查新功能,你会和测试人员讨论你的代码。

学会委婉和圆通,在交流中非常有帮助。如果还不会,那你得去学一下。关于这方面,有一本畅销书——卡耐基的《人性的弱点》。如果还没有读过此书,我强烈建议你读一读。

4.写作很重要

通过写作清晰地表达观点,这很有帮助。从某种程度上来说,写代码和写作非常相似,两种都需要你把你的想法,通过某个结构化的方式清晰并且无歧义的表 达出来。Email当然是写不完的了,不过还有你所开发的产品特性所配套的文档、需要清晰描述Bug的漏洞报告、还有对你修复的Bug做出的解释。在大学 里写作并不是重点,但是如果你写作好的话,这绝对是工作中的一个筹码。

3.从来没有已做完的软件

在我开始工作以前,我觉得当我开发出一个特性之后,这个特性就算开发完成了。不过在现实中,你会很经常的要回到这个特性上来。有时候是因为这并不完 全是客户所要求的,也可能是因为你需要为它添加更多功能,又或者是你想要把有些相似的功能合并起来,或者修复一个Bug。不管怎么样,对你的代码继续进行 编程是很正常的事。

在大学里,我们经常会把一个程序从头做起,但这在现实世界中几乎是没有出现过的。当然,除了你做新功能的时候,但这些代码总要融入旧代码。正因为如此,做新功能时的很大一部分工作都是在阅读并理解旧代码。这是一项我们在学校里没有练习过的技能。

2.很少有巧妙的算法

在大学里我得到了一个计算机科学与工程的硕士,我学习了通信系统,里面包括信号处理、错误纠正码、排队论等等的课程。我们也有像算法和数据结构这样 的计算机科学核心课程,我很喜欢这些课,我觉得学会这些聪明的算法和数据结构是一件很酷的事,所以我非常期待在工作中见到它们。

我的第一份工作是在蒙特利尔的爱立信公司,在一个蜂窝网络的移动电话交换中心担任软件工程师。那里有大量的代码来控制通话的建立、挂机、漫游等等, 但当我看到这些功能都是用最基本的数据结构和算法完成时,我觉得有点失望。最有趣的是,我发现用来跟踪用户漫游状态的代码居然是由一千多个二叉树构成的, 用户手机号的末三位数决定了用户处于哪颗树上。当需要找到这个用户时,根据用户的手机尾号找到用户所在的树,然后遍历该树以找到该用户。除了这个,其他的 都是链表甚至是更简单的数据结构。

1.系统集成后的复杂性

说起来既然没有什么精巧的算法,而且整个应用程序都在使用基本的数据结构,那看来在这里工作应该没有什么挑战吧?错!我很快就意识到这套系统高度复杂,倒并不是因为那些复杂的功能,而是因为太多太多简单的功能集成合到了一起。

在我工作过的那么多套系统中,我看到了一些共同点:大多数特性都非常简单,但正因为就是有很多简单的特性,在集成这些特性之时所遇到的微妙(或不那么微妙)交互,就引发了Bug。

 

原文链接: Henrik Warne   翻译: 伯乐在线 - 吴鹏煜
译文链接: http://blog.jobbole.com/50950/

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:做程序员之后才知道的 5 件惊奇事
加载中

最新评论(37

saifi
saifi
wonderful article.

here is the summary :-)

IPC is inter personal communication
COM is communication
CODE is continue over developed code
KISS is keep it simple software
SYS is system is complex even if parts are simple.

There is no future in any job, the future belongs to the person who holds the job !
taojinhuo
taojinhuo
很现实
水溶C100
水溶C100

引用来自“梅开源”的评论

我觉得这三条更重要
1. 找对象比面向对象很重要
2. 修电脑不要太厉害,不然容易失去1或被人当驴马
3. 要努力搞定那帮不会程序还tmd想驾驭你的人

你这个比新闻里说的那五条实用的多。。
盛夏的白菜土豆西红柿
盛夏的白菜土豆西红柿

引用来自“呜哩哈嘻哇”的评论

引用来自“梅开源”的评论

我觉得这三条更重要
1. 找对象比面向对象很重要
2. 修电脑不要太厉害,不然容易失去1或被人当驴马
3. 要努力搞定那帮不会程序还tmd想驾驭你的人

这三条总结的真好,我是最近才开窍发现的

不能同意更多
定期马甲
定期马甲

引用来自“梅开源”的评论

我觉得这三条更重要
1. 找对象比面向对象很重要
2. 修电脑不要太厉害,不然容易失去1或被人当驴马
3. 要努力搞定那帮不会程序还tmd想驾驭你的人

三条全部匹配 悲催路过
65242847
65242847

引用来自“梅开源”的评论

我觉得这三条更重要
1. 找对象比面向对象很重要
2. 修电脑不要太厉害,不然容易失去1或被人当驴马
3. 要努力搞定那帮不会程序还tmd想驾驭你的人

这三条总结的真好,我是最近才开窍发现的
唐海康
唐海康
我希望编程可以一个人搞定……
唐海康
唐海康

引用来自“看天吃飯”的评论

引用来自“codek”的评论

引用来自“梅开源”的评论

我觉得这三条更重要
1. 找对象比面向对象很重要
2. 修电脑不要太厉害,不然容易失去1或被人当驴马
3. 要努力搞定那帮不会程序还tmd想驾驭你的人

经典

经典

哈哈
小白小霸王
小白小霸王
原文是鸟语的 我都不怎么爱看
自由之信
自由之信

引用来自“codek”的评论

引用来自“梅开源”的评论

我觉得这三条更重要
1. 找对象比面向对象很重要
2. 修电脑不要太厉害,不然容易失去1或被人当驴马
3. 要努力搞定那帮不会程序还tmd想驾驭你的人

经典

经典
返回顶部
顶部