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

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

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

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

精彩

感动

搞笑

开心

愤怒

无聊

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

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

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

显示用户信息 
地板  发表于: 2011-03-08   
俺有个问题请教咱坛子里的编程同学: \tP*Pz  
n]>L"D,  
为何公司这样钟情一个个巨大的巨复杂的宏(macro),而不是写成一个函数(function)或过程(procedure)呢?如果按后者的思路,重新使用这个东东时,只需要对函数或过程的接口弄清楚就可以了啊! =c%gV]>G  
6_:KFqc W  
杺栫杣杊椌柮栬,䒴蓉艿芖。
rainazhang 离线
级别: 团长
显示用户信息 
地下室  发表于: 2011-03-08   
编程高手不仅有能力,还得有体力。经常连连熬通宵,只有强牛才行。
清水 离线
级别: 军长
显示用户信息 
5楼  发表于: 2011-03-08   
不懂编程。 c_aj-`BKp  
顶个帖子吧。
newport93 离线
级别: 资深会员
显示用户信息 
6楼  发表于: 2011-03-08   
引用
引用第3楼伍胥之于03-08-2011 07:28发表的  : k4` %.;  
俺有个问题请教咱坛子里的编程同学: Ci2*5n<  
4{0vdpo3F  
为何公司这样钟情一个个巨大的巨复杂的宏(macro),而不是写成一个函数(function)或过程(procedure)呢?如果按后者的思路,重新使用这个东东时,只需要对函数或过程的接口弄清楚就可以了啊! #E#@6ZomT  
s=Kz9WLy  
(%9J( 4  
O8-Z >;  
Ex-程序员来唠叨。 X9C:AGbp  
你说的宏我还真没写过。我当时的程序是给军火商或国防部写的,系统很大。后来也卖给民营。但木知道这个宏:((( ViUx^e\  
代码极简洁,且运行快。是最高境界。。 
随遇而安, 知足常乐。
姍姍 离线
级别: 论坛版主
显示用户信息 
7楼  发表于: 2011-03-08   
原作者看来是个很会吹的人啊。
newport93 离线
级别: 资深会员
显示用户信息 
8楼  发表于: 2011-03-08   
引用
引用第7楼姍姍于03-08-2011 13:51发表的  : \ )2'+R  
原作者看来是个很会吹的人啊。 -WGlOpg0;  
ZbH_h]1$D  
是啊,QC跟编程是两码事。这是个很会吹的人。
随遇而安, 知足常乐。
娃娃天使 离线
级别: 军区司令员
显示用户信息 
9楼  发表于: 2011-03-08   
不懂,但还是顶一个吧。
猪小秘 离线
级别: 师长
显示用户信息 
10楼  发表于: 2011-03-08   
引用
引用第6楼newport93于03-08-2011 10:43发表的  : _&]Gw, ~/i  
f3<253 1/}  
Ex-程序员来唠叨。 R0F&!y!B  
你说的宏我还真没写过。我当时的程序是给军火商或国防部写的,系统很大。后来也卖给民营。但木知道这个宏:((( af/0e}-  
代码极简洁,且运行快。是最高境界。。  %-|$7?~   
dd4^4X`j  
_9S"rH[  
军火商?好怕!国防部?安全点?? `'pfBVBz  
newport93 离线
级别: 资深会员
显示用户信息 
11楼  发表于: 2011-03-09   
洛克西德之流,他们这些公司用的计算机系统比较早也比较复杂,数据库比较庞大而已,没什么可怕的。我们不接触武器方面。 R l)g[s  
(Y"./BDY  
因为数据库比较庞大, 所以,运行速度是考验编程人员功力的硬指标。 OZe`>Q6  
! z5Ozm+}  
既然吹牛不上税,我也吹吹。我的职业生涯亮点是改一个洛克西德的程序,原来他们要花3-5个小时才能算好的数据,改后能在3分钟内完成。这个project他们给我们公司50万刀,新港同学花了三天时间改,但是一毛钱奖金都没有。原程序也是我们公司写的。 ^[q/w<_j~  
; Ji3|=4u  
呵呵,过去的事。如今写软件与我渐行渐远了。。。
[ 此帖被newport93在03-09-2011 17:48重新编辑 ]
随遇而安, 知足常乐。
描述
快速回复

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