登录注册
社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
主题 : [ZT]我所见到的编程高手的故事和一些回忆
伍胥之 离线
级别: 军区司令员

显示用户信息 
楼主  发表于: 2011-03-08   

[ZT]我所见到的编程高手的故事和一些回忆

来源: Blue_Diamond 于 2011-03-05 20:22:23 &k'J5YHm8H  
http://bbs.wenxuecity.com/kghy/845089.html m$nT#@l5bH  
Vgy}0pCl  
(上) paFiuQ  
@0}Q"15,I  
编程语言五花八门.所以,同为程序员,又用同种编程语言工作,才真正算是同行.在我所干的这一行中,能够在编程语言的某个方面或在某个细节上有独到见解,从而能发表论文作交流,或有同等能力的,大约只占5%到10%.也就是1/10到1/20. vLQ!kB^\W  
Ay?;0w0  
先定义程序员的能力系数,如果把从职场上随机选取的N名同行的程序员按水平从高到低排序.而你是第
m名,那么,当N很大时(以几百上千为宜),你的能力系数为:k=N/m. 5 9$B z'LY  
yZ7aH|Q81B  
再定义编程任务的难度系数,如果一项编程任务的难易程度正好适合一个能力系数为
k的程序员在全面发挥其水平的条件下做出,那么,这项编程任务的难度系数是:k ^7Sk`V  
9 Yv;Dom  
能力系数大到10,可称为准高手。能力系数大到20,必为高手。我要讲的就是这类人的故事。 }yM /z  
tbz?th\#  
我去东岸一家中型公司工作时,遇到高手X,中国人,理工科出身,10年工作经验,宏编程能力超强。我工作到3个月,也被刮目相看,派去做QC。不久,就开始给他的产品(程序)作QC。‘行家一出手,就知有没有’,我见过他的代码,简洁流畅。我评出他的能力系数:30。他是我熟悉的人中能力最高的。 aju!Aq54G  
*n9t~t6GHg  
后来,我又给别人QC,就发现公司其他人中,还有个西人,能力系数曾接近于10。但以做管理为主,编程时间不到50%,能力就降下来了。而公司里较难的编程任务的难度系数多在10与20之间,从而,程序员们错误百出,QC特别费时。因为原产品没做好,该公司的QC任务更难,难度系数有时达到30以上,这在以后的职业生涯中也没遇到过。程序员走了2个,于是,QC任务都压过来还有时限,只好加班。我每周常常工作70小时,公司付加班费。结果,各个项目接连完成。不久,冒出一项难题,几经他人试做与推逶,就交给了我。一上手,很难,我干脆又接受了一项附加要求,难度系数增加到60。当我完成后,已被誉为作图专家。又作了几个形态各异的图后,6个月合同期满。公司说要再续半年,可我说累了,执意要回家,走了。 so[i"ZM)  
6ww4ZH?j  
一睡就是一个月。我一睡醒,猎头们来了。旧猎头问我过得怎么样.我说,睡觉,拉小提琴,或逛曼哈顿。他说:好了,接着干吧,有家公司免面试。我就说这可前所未闻。他说免面试仅对你,就是你刚干过的那家公司。我说别的都行,那家公司干得太累就免了吧。他说可以涨工资。我考虑到上班近,就又从了。  $`7cs}#  
  kMD:~ V  
当我回到原公司,看到了
7个新招的程序员,其中两个西人老头。高手X还在,廋了。我奇怪:有这样疯招的吗?他说:近期公司编程项目进展不顺,没能按时完成,统计师也坐立不安,只好乱招人。又问:老头子行吗?他说:其实不行,公司又外包部分任务到一家外州的CRO,他们有3个程序员由我们遥控。 .hI3Uv8[  
9qyA{ |3  
我先是给那3个远程程序员做QC,他们的能力系数都小于5。完成后,新任务是给一个30多的西人程序员J作QC,这人谢顶,有些列宁的风度.我问X:J 行吗?答道,新招的里面,他是最好的。QC开始,这人竟把代码藏着,看不到。别以为我没能耐,我可以不知道机器的运行状况,而照样把关产品质量。渐渐我觉得这人不差。但即使聪明,也常出错,那是因为任务的难度系数达到了20。不久得知,此人擅长宏编程,10年工作经验,自己开有小公司并雇有2人(怪不得来公司如同三天打鱼,两天晒网.),也爱写论文参加会议交流。我给此人当时的能力系数评为15。他是我熟悉的西人中能力最高的.(后来,我曾见到他2010年的会议交流论文和他的公司网站,3年了,想必能力系数应增长到20,或再高点。) PF$K> d  
-$Y@]uf^  
再不久,X生病住院了,还要开刀。打电话问他,他说干得太累了,尤其是我不在的那个月。我开始自责我那一个月的长觉。 nNbOq[  
TR2X' `:O  
继续与J配对工作,此人编程快,但我QC也快。J渐渐很听我这QC程序员的劝告,因为我指出他的问题,一般十有八九为真。我下班总是很晚,恐怕是大厦清洁工最熟的面孔了。笔记本电脑上又安了软件,偶而可在家编码。如果你看到一个程序的存盘时间是清晨5点,你知道那是我通宵编程做的?还是早起编程做的? 9+'QH  
5?-cP?|.9  
不知不觉又快半年了,我必须离开,而公司合同也只能聘11个月。又有新任务计划了,但我已不在那计划之中。一次,讨论该计划,J竟说要独挑编程产品的大梁,让另外4,5个程序员去给他作QC。其中一位会后叹道,J乃狂人发狂言,200多个报表,他能那么快完成?我知道, 没有好的QC程序员,J会孤掌难鸣的. zY?GO"U"  
~!o\uTVr  
恰巧,一位上次无功而返的猎头找到我,电话中一阵嘘寒问暖后,便与我伊妹儿频频,并急忙为我联系面试.还关心地问这是否是我近期唯一的面试。我说那当然,因为我只对这一个工作机会感兴趣阿。终于,程序员们开始感叹:他就要离开公司了。 J:s^F n  
.&Uu w  
多年后,当我看到这家公司的股票5年走势图,心中总有些微感慨在那峰谷之间。 0*?/s\>PS;  
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
沙发  发表于: 2011-03-08   
(下) r{DR$jD  
8m? 9?OV5  
记得那年刚来加州,最大的感概就是那蓝天白云,阳光灿烂.对比而言,新州的冬天,是令人苦不堪言的. `-)!4oJ]  
3yNILj  
这次我是在加州的一个大公司工作,光程序员就上百人.有不少高手,而一般的高手在这儿并不出众.我在一个有约20名程序员的编程部门里工作.有一位高手是我过去的同事的中国同事,能力系数约为25.是我知道的最善于图形编程的. ! Jh/M^  
bWc3a  
在大公司里工作的好处是,有很多可用的宏.就我所知,多数宏写得平平,经过多人改写,代码支离破碎,且少有定期维护.除非非用不可,我以少用为妙.依我看来, 宏是应是由一人编写,以后也要由编写者本人维护,除非编写者力所不逮才可换人. ~ Iin|  
H JFt{tq2  
很快,有一个不可不用的宏引起了我的注意.这个宏专用于把一个文件转为另一类文件,我称之为宏R.宏R可称为QC程序员的眼镜.用了它,成百上千页的文件可由电脑程序自行对比检查完成.不过这个宏也常出问题,另有几种擅自的修改版本,也还不顶用.我开始问别人了,答复是,即使用法正确,问题仍会发生,不怪宏编得不好,而是所要处理的文件太复杂多变了. UhQsT^b_  
K-D{Z7J^l  
宏R的原作者是程序员M.我研究过宏R的代码,编得确有许多闪光之处,能够正确组织代码应付如此复杂的数据处理问题,的确是大手笔.又上网查相关方面的论文,能搜到的不多,倒是有一篇论文读了很切题.再看作者,正是M.查本公司网站,见到M相片,并知道还在同一栋楼工作.--若有机会见到他,我估计我会说:我拜读过你的论文,受益匪浅. W z M9{c  
/_Z--s> j  
据后来我知道的,M是本公司昔日编程头号高手,大概来自欧洲,颇有编程天才.后荣升为经理.他的宏编程能力绝佳,他的能力系数定为:80.是我知道的人中能力最高的. 4;G:.k!K  
?m&?BsW$)  
为工作需要,我盟生了擅自改一改的念头.再加以研究后,发现了其代码上的得与失.有数据处理流程细节上的把握失当,也有算法上的低效问题.而注解中见得着后来的修改者(为何不由原作者来维护?),但从根本上来说,修改又于事无补. F8e]sa$K\  
r;3{%S._  
我干脆吸取宏R的长处,重写了一个宏(姑且称为R1)为我所用.R1的运行极快,为R的10倍.且运行得更平稳.不久,部门组织2人测试来R1并要求将R1的功能加码,宏R1完成后也成为公司的正式版本.因有多项附加的功能,成为宏R的替代品.宏R1的难度系数:90. CiE  
1.7tXjRd+  
不久,本部门又来一个程序员Y,工作经验近10年.编程上见解独到,代码分析细致入微.高手,能力系数:20. A`E7V}~  
#BA=?7  
一天,经理交给我一项任务,编一个宏(姑且称为G),为每个程序员所使用.要求它自行测出当前程序文件名和路径,找到最近的输入/输出数据存放处….总之,就是在每个程序的开头都使用这个宏,让它去做它所能做的一切.我是宏G的编程者,Y为宏G的两名测试者之一.没想到,在我刚开始编时,Y就给我两个好建议,进度加快了.开始测试后,他又有好的改进意见.就这样,编程,测试,讨论,直至顺利完成.宏G的难度系数:70 6=V&3|"  
sT| $@$bN  
终于,一道作图难题悄悄地来了.说它是悄悄的,是因为没有人提出让我做.但谁都知道那是困扰本公司多年的一大难题.曾有人尝试过换用另一种编程语言去作这类图,不大成功.更关健的是,要想一次编成,反复使用,必须用编程的手段把它做成一个宏.也就是,要编一个作图宏.而作图宏的难度系数几乎为一般作图程序的两倍. pJM~'tlHV  
2&*r1NXBE  
我就有挑战难题的习性.于是,抽空跟经理说(我的谦虚精神不够,大概是这样说的):我在以前的一家公司,有人称我为作图专家呢,公司不是有个作图难题吗,现在我想把它做出来,怎么样?她说,你做了,我们还得有人力花时间来给你测试.这要有个计划,以免耽误日常编程工作.等等看,先别急. ;6op|O  
v7rEU S-  
这倒像是我扁担挑子一头热呢.没关系,就当我吹牛吧.不过,在下个月的会议桌上,这项任务真的就提出来了并交给了我.这个宏可称为宏P,很快就成立了一个小组,我负责编程,有5个人作测试,另有一人专写用户指南.另外还有不少要求来自统计师,无非就是说:你要把图画成这样的或那样的,再就是除了正确,图还得要好看才成。这些要求我都答应下来了,难度可能增大一点.同时,也听到有人轻笑几声,我想那是在提醒我:“说得容易,做起来难”。 h.\V;6ly  
3+6s}u)  
做宏P的难度和复杂程度在不久后就展现开来,往往是过了一个难关,就又看到了下一个难点.无怪乎有人曾认为这是个令人生畏的难题.当我还在开发宏P的半途中,得不到成功的喜悦,只得凭着耐心向前探索.几经修改,我的代码仍旧组织得有条不紊,而在编程流程上我心中也有慎密的规划.我在心里鼓励自己:过去用计算机解决难题无数从未失手,这次一定要战胜困难走向光明. dP8b\H  
p(EV-^  
做为一个程序员,他的工作就是凭着计算机来不断地解决难题。有些公司是没有高手的,或只有能说会道但动手编程能力差的所谓高手。遇到做不出的难题,就会抱怨那是人力所不可及的。若公司非做不可,就得采取分工合作的方式,费时费力。而产品即使成功,多半性能不佳,首先,各模块间配合不良易出错,另一个问题是代码量大,运行慢。 2[WH8l+  
D ff0$06Nq  
终于,宏P开发成功了,测试顺利通过,用户指南也有人写了。这是我在工作中所做的最难的一个作图宏。宏P的难度系数:150.后来,宏P在公司各部门推广使用并深受欢迎,因为这种复杂多变的图形,正是统计分析师所需要的。成为本部门的一项引以为傲的成果。 sZ`C "1cX  
" P A:  
后来,我除了日常编程,时而,还负责宏R1,G,P的维护与改进工作。我另外又完成了两个难度约为100的作图宏。 Z i-)PK^  
X+l &MD  
程序员从手指尖流出一个个的键盘符号.当这些键盘符号以最巧妙的排列方式组成程序代码时,计算机就会又快又准地为你工作.放眼望去,我真想说:宇宙不过就是几行程序代码呢。 $JKR,   
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
板凳  发表于: 2011-03-08   
关于社交网络,以及对一个编程高手的贴子的感想 [kf$8 2  
F@e9Dz|  
来源: Blue_Diamond 于 2011-03-02 23:25:53 jq6BwUN  
y,$kU1yH7  
社交网络我也看了。身为程序员,也是会有些感触的。 nic7RN?F<  
!acm@"Ea  
像男主角那样,一旦成功,就抛弃有交情并给过帮助的老朋友是不应该的。 CXqU< a&  
IT业的确造就了几个比尔·盖兹,马克·扎克伯格那样的亿万富翁。 gXtyl]K:  
另一方面,有的人虽没靠建功立业而创造那么多的財富,却也著书立说,为计算机理论立下了丰碑。像Donald Ervin Knuth的《计算机程序设计艺术》,还有C++的发明者Bjarne Stroustrup,ALGOL语言之父Edsger Wybe Dijkstra。 asT*Z"/Q!  
9b`J2_ ]k  
以上两类人也还是天才或聪明人中的少数。其他更多的电脑高手还是在为公司默黙无聞地工作,收入不可与之相比。为什么?“时也、势也、运也”。。。 dZnAdlJ  
RS&l68[6  
看了那位编程高手的贴子,明白他是高手了。编程高手是有共性的:数学好,逻缉性强。而且,以编程为乐。代码极简洁,且运行快。 XA`<*QC<  
A%H"a+  
关于‘算法’,我认为编程高手也应是算法高手,算法方面可有独创,只需他人提出要求即可。 ?-^eI!  
想当年,我也是个电脑高手,对编程如痴如醉,曾多次为编程直到凌晨。多年来从不放弃,只因乐在其中。 |Sg FHuA  
~Yrtz   
不过,我的编程功力没随年龄而减退。来美国工作后,在每家公司,编程水平都名列第一。直到进了这家大公司,人才济济,有上百名同类程序员,不到一年,我因在攻克公司多年编程难题上连下三城,多有好评,可能已是多数人心中的第一。我甚至说,没有我编不出的程序,也还有人相信。当然,可能只是我无缘见到本行业的编程天才。 sFNBrL  
GX4HW \>a  
中国人中是有不少电脑高手的。如果你是高手,至少可以以编程为乐,轻松地玩成工作任务。 @ eQIwz  
7CfHL;+m<4  
编程高手们换种编程语言易如反掌,一种编程工作做厌了,可以再学另一种自己感兴趣的编程嘛。这样就不会闲着没事做了。 x5q5<-#  
JA!O,4  
至于创业,是要能够拥有一定的人力財力资源与时机等等。条件不成熟,也是没办法的。仁兄不必难受。 EsA)o 5  
至于无事时上网闲聊,这总比玩电脑游戏好,不算玩物丧志。我也曾在脑坛玩过,没多少人气,就来这儿了。这儿热闹,我会一直常来看看。人生嘛,不可能事事如意,也就只好开心一天算一天了。人有时确实会有不少感叹:“如果能重新回到20岁,那该有多好呵。” 56i9V9{2  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
地板  发表于: 2011-03-08   
俺有个问题请教咱坛子里的编程同学: d! 0p^!3  
;>?NH6B,  
为何公司这样钟情一个个巨大的巨复杂的宏(macro),而不是写成一个函数(function)或过程(procedure)呢?如果按后者的思路,重新使用这个东东时,只需要对函数或过程的接口弄清楚就可以了啊! rzC\8Dd  
c}9.Or`?  
杺栫杣杊椌柮栬,䒴蓉艿芖。
rainazhang 离线
级别: 团长
显示用户信息 
地下室  发表于: 2011-03-08   
编程高手不仅有能力,还得有体力。经常连连熬通宵,只有强牛才行。
清水 离线
级别: 军长
显示用户信息 
5楼  发表于: 2011-03-08   
不懂编程。 I_ "1.  
顶个帖子吧。
newport93 离线
级别: 资深会员
显示用户信息 
6楼  发表于: 2011-03-08   
引用
引用第3楼伍胥之于03-08-2011 07:28发表的  : |l)z^V!  
俺有个问题请教咱坛子里的编程同学: Y%AVC9(  
E/MD]ox  
为何公司这样钟情一个个巨大的巨复杂的宏(macro),而不是写成一个函数(function)或过程(procedure)呢?如果按后者的思路,重新使用这个东东时,只需要对函数或过程的接口弄清楚就可以了啊! x9UF  
dTN[E6#R  
v8Ga@*  
`Paz   
Ex-程序员来唠叨。 d>j`|(\  
你说的宏我还真没写过。我当时的程序是给军火商或国防部写的,系统很大。后来也卖给民营。但木知道这个宏:((( GAK!qLy9  
代码极简洁,且运行快。是最高境界。。 
随遇而安, 知足常乐。
姍姍 离线
级别: 论坛版主
显示用户信息 
7楼  发表于: 2011-03-08   
原作者看来是个很会吹的人啊。
newport93 离线
级别: 资深会员
显示用户信息 
8楼  发表于: 2011-03-08   
引用
引用第7楼姍姍于03-08-2011 13:51发表的  : J9+< 9g4-t  
原作者看来是个很会吹的人啊。 7f!"vhCXM;  
Tw^b!74gq  
是啊,QC跟编程是两码事。这是个很会吹的人。
随遇而安, 知足常乐。
娃娃天使 离线
级别: 军区司令员
显示用户信息 
9楼  发表于: 2011-03-08   
不懂,但还是顶一个吧。
猪小秘 离线
级别: 师长
显示用户信息 
10楼  发表于: 2011-03-08   
引用
引用第6楼newport93于03-08-2011 10:43发表的  : Cp[{| U-?G  
xA?(n!{P  
Ex-程序员来唠叨。 ?<3wks|C  
你说的宏我还真没写过。我当时的程序是给军火商或国防部写的,系统很大。后来也卖给民营。但木知道这个宏:((( ZT;8Wvo  
代码极简洁,且运行快。是最高境界。。  tQTVP2:Y  
 nIWZo ~  
@Kl'0>U  
军火商?好怕!国防部?安全点?? l)1FCDV  
newport93 离线
级别: 资深会员
显示用户信息 
11楼  发表于: 2011-03-09   
洛克西德之流,他们这些公司用的计算机系统比较早也比较复杂,数据库比较庞大而已,没什么可怕的。我们不接触武器方面。 *'BA# /@  
\H6[6*JuB  
因为数据库比较庞大, 所以,运行速度是考验编程人员功力的硬指标。 {(00,6M)i  
f\/'Fy0  
既然吹牛不上税,我也吹吹。我的职业生涯亮点是改一个洛克西德的程序,原来他们要花3-5个小时才能算好的数据,改后能在3分钟内完成。这个project他们给我们公司50万刀,新港同学花了三天时间改,但是一毛钱奖金都没有。原程序也是我们公司写的。 M@ TXzn!&o  
I7[F,xci  
呵呵,过去的事。如今写软件与我渐行渐远了。。。
[ 此帖被newport93在03-09-2011 17:48重新编辑 ]
随遇而安, 知足常乐。
描述
快速回复

验证问题:
3 * 6 = ? 正确答案:18
按"Ctrl+Enter"直接提交