叶凡网络:做程序员之后才知道的 5 件惊奇事

2013-11-15 09:28:11 | 新闻来源:叶凡网络 | 点击量:630

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

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

5.人际交往

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

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

4.写作很重要

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

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

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

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

2.很少有巧妙的算法

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

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

1.系统集成后的复杂性

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

上一篇:叶凡网络:外交部:设国安委使企图威胁中国安全的势力紧张 下一篇:叶凡网络:习近平担任《决定》起草组长 刘云山、张高丽为副组长