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

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

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

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

精彩

感动

搞笑

开心

愤怒

无聊

灌水
杺栫杣杊椌柮栬,䒴蓉艿芖。
newport93 离线
级别: 资深会员
显示用户信息 
11楼  发表于: 2011-03-09   
洛克西德之流,他们这些公司用的计算机系统比较早也比较复杂,数据库比较庞大而已,没什么可怕的。我们不接触武器方面。 }Sv:`9=  
Y$_B1_  
因为数据库比较庞大, 所以,运行速度是考验编程人员功力的硬指标。 a`>B Ly5o  
m-, x<bM?  
既然吹牛不上税,我也吹吹。我的职业生涯亮点是改一个洛克西德的程序,原来他们要花3-5个小时才能算好的数据,改后能在3分钟内完成。这个project他们给我们公司50万刀,新港同学花了三天时间改,但是一毛钱奖金都没有。原程序也是我们公司写的。 0GeTS Fj  
DvvK^+-~  
呵呵,过去的事。如今写软件与我渐行渐远了。。。
[ 此帖被newport93在03-09-2011 17:48重新编辑 ]
随遇而安, 知足常乐。
猪小秘 离线
级别: 师长
显示用户信息 
10楼  发表于: 2011-03-08   
引用
引用第6楼newport93于03-08-2011 10:43发表的  : $!t4r  
=Xr.'(U  
Ex-程序员来唠叨。 ' ` Hr}  
你说的宏我还真没写过。我当时的程序是给军火商或国防部写的,系统很大。后来也卖给民营。但木知道这个宏:((( NgPk&niM  
代码极简洁,且运行快。是最高境界。。  Dlvz )  
?Ir:g=RP*  
R6->t #n,  
军火商?好怕!国防部?安全点?? InI$:kJ  
娃娃天使 离线
级别: 军区司令员
显示用户信息 
9楼  发表于: 2011-03-08   
不懂,但还是顶一个吧。
newport93 离线
级别: 资深会员
显示用户信息 
8楼  发表于: 2011-03-08   
引用
引用第7楼姍姍于03-08-2011 13:51发表的  : @=u3ZVD  
原作者看来是个很会吹的人啊。 ns4,@C$  
{)<v&'*c~  
是啊,QC跟编程是两码事。这是个很会吹的人。
随遇而安, 知足常乐。
姍姍 离线
级别: 论坛版主
显示用户信息 
7楼  发表于: 2011-03-08   
原作者看来是个很会吹的人啊。
newport93 离线
级别: 资深会员
显示用户信息 
6楼  发表于: 2011-03-08   
引用
引用第3楼伍胥之于03-08-2011 07:28发表的  : Dvln/SBk  
俺有个问题请教咱坛子里的编程同学: d/ @,@8:  
;dhQN }7  
为何公司这样钟情一个个巨大的巨复杂的宏(macro),而不是写成一个函数(function)或过程(procedure)呢?如果按后者的思路,重新使用这个东东时,只需要对函数或过程的接口弄清楚就可以了啊! sDV Q#}a  
08{@rOr  
ySI !d|_  
93 hxSRw  
Ex-程序员来唠叨。 zbPqYhJzA  
你说的宏我还真没写过。我当时的程序是给军火商或国防部写的,系统很大。后来也卖给民营。但木知道这个宏:((( #`s"WnP9'!  
代码极简洁,且运行快。是最高境界。。 
随遇而安, 知足常乐。
清水 离线
级别: 军长
显示用户信息 
5楼  发表于: 2011-03-08   
不懂编程。 ovV'VcUs  
顶个帖子吧。
rainazhang 离线
级别: 团长
显示用户信息 
地下室  发表于: 2011-03-08   
编程高手不仅有能力,还得有体力。经常连连熬通宵,只有强牛才行。
伍胥之 离线
级别: 军区司令员

显示用户信息 
地板  发表于: 2011-03-08   
俺有个问题请教咱坛子里的编程同学: vfo~27T{(  
[ikOb8 G#  
为何公司这样钟情一个个巨大的巨复杂的宏(macro),而不是写成一个函数(function)或过程(procedure)呢?如果按后者的思路,重新使用这个东东时,只需要对函数或过程的接口弄清楚就可以了啊! HpnWo DM  
 jZ; =so  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
板凳  发表于: 2011-03-08   
关于社交网络,以及对一个编程高手的贴子的感想 H>@+om  
SX-iAS[<  
来源: Blue_Diamond 于 2011-03-02 23:25:53 WuW^GC{7  
_J[P[(ab  
社交网络我也看了。身为程序员,也是会有些感触的。 W@!S%Y9  
B7vpsSL  
像男主角那样,一旦成功,就抛弃有交情并给过帮助的老朋友是不应该的。 hR|MEn6KC  
IT业的确造就了几个比尔·盖兹,马克·扎克伯格那样的亿万富翁。 OZ!^ak  
另一方面,有的人虽没靠建功立业而创造那么多的財富,却也著书立说,为计算机理论立下了丰碑。像Donald Ervin Knuth的《计算机程序设计艺术》,还有C++的发明者Bjarne Stroustrup,ALGOL语言之父Edsger Wybe Dijkstra。 #3d(M  
1aABzB ^  
以上两类人也还是天才或聪明人中的少数。其他更多的电脑高手还是在为公司默黙无聞地工作,收入不可与之相比。为什么?“时也、势也、运也”。。。 6LZ;T.0o  
@\I#^X5lv  
看了那位编程高手的贴子,明白他是高手了。编程高手是有共性的:数学好,逻缉性强。而且,以编程为乐。代码极简洁,且运行快。 pD]OT-8  
^Zp>G{QL{  
关于‘算法’,我认为编程高手也应是算法高手,算法方面可有独创,只需他人提出要求即可。 -Y;3I00(  
想当年,我也是个电脑高手,对编程如痴如醉,曾多次为编程直到凌晨。多年来从不放弃,只因乐在其中。 `y* }lg T  
0qT%!ku&  
不过,我的编程功力没随年龄而减退。来美国工作后,在每家公司,编程水平都名列第一。直到进了这家大公司,人才济济,有上百名同类程序员,不到一年,我因在攻克公司多年编程难题上连下三城,多有好评,可能已是多数人心中的第一。我甚至说,没有我编不出的程序,也还有人相信。当然,可能只是我无缘见到本行业的编程天才。 >lM  l  
7t_^8I%[  
中国人中是有不少电脑高手的。如果你是高手,至少可以以编程为乐,轻松地玩成工作任务。 29q _BR *:  
& ZB  
编程高手们换种编程语言易如反掌,一种编程工作做厌了,可以再学另一种自己感兴趣的编程嘛。这样就不会闲着没事做了。 { [>Kob1  
^G-@06/!  
至于创业,是要能够拥有一定的人力財力资源与时机等等。条件不成熟,也是没办法的。仁兄不必难受。 2GStN74Xr  
至于无事时上网闲聊,这总比玩电脑游戏好,不算玩物丧志。我也曾在脑坛玩过,没多少人气,就来这儿了。这儿热闹,我会一直常来看看。人生嘛,不可能事事如意,也就只好开心一天算一天了。人有时确实会有不少感叹:“如果能重新回到20岁,那该有多好呵。” sn>~O4"  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

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

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