发新话题
打印

[转载]程序员的灯下黑:重知识轻技术

[转载]程序员的灯下黑:重知识轻技术

信息来源: WhiteCell

电视《雍正王朝》讲了这么一个故事:大将军年羹尧奉命到青海平叛,清军因路途遥远,军耗巨大,因此力求速战速决。但叛军避开锋芒,东躲西藏,年羹尧没有办法找到叛军决战。这时,朝廷内外压力越来越大,年羹尧陷入困境。这是一位谋士对年说:我知道叛军在那里。年大喜。这位谋士指出,敌人就在不远处的一座皇封寺庙里。年不信,谋士不慌不忙地说:这就是灯下黑,离自己越近就越不可能意识到,但却是最可能的地方。果然,大军一出,大获全胜。

我想讲一些关于程序员对自身认识的故事,这些故事都和灯下黑有关。只要正确认识自己,道理非常简单,但是,到处都可以看到灯下黑的故事。



某程序员,有一天接到一个任务:公司的有一个产品的文件太大了,要求采用压缩算法,减少尺寸,最好能压缩20%。

程序员兴高采烈地接受了任务:以前没玩过压缩算法,这下可以学习新东西了!研究了几个月后,他觉得差不多了,就交给了项目经理。项目经理正等着呢,高兴坏了,拿着演示文件就去找产品经理。产品经理开始挺高兴,看完脸就拉下来了。打开文件,把所有的文件尺寸一算,很淡淡的说:“才压缩了10%,有什么用啊!”

程序员愣住了,“不会吧!我看过的,压缩了 20%!”

产品经理指着文件列表说:“你看,某文件是压缩了20%,可你的压缩算法增加了一个动态库文件,尺寸还不小,总共加起来,不就只减少了10%吗?”



各位看官,这是不是软件公司里经常发生的情形?

这种失败的成因当然是复杂的,有沟通管理方面的问题,也有程序员能力的问题。我今天想要说的是程序员认识方面的问题。

继续故事:

项目经理很没面子,回去就和程序员找原因。项目经理是老程序员了,直话直说;终于弄清楚的事情的本质:

第一,这位程序员一个的时间读了很多关于压缩算法的书,会了不少算法。可是从来没比较过算法的优劣。这老兄觉得研究算法很有趣,乐此不彼,写了好几个实现。

第二,这位老兄在最后几天才想起来20%的目标,也没太放在心上,看看差不多就拿出来了。



这是典型的程序员的认识问题,重知识而轻技术。



先从是么是知识,什么是技术说起。

知识就是知道,你知道了某件事是怎么回事,就是有了知识。

技术就是你能做出来,做得好叫技术好,做的不好叫技术差。


怎么写操作系统?看完操作系统原理,再苦读完源代码,这叫有知识了。如果有本事把任务调度、内存管理、IO什么的都写出来,还能写得稳定,快速,可扩展,那是有技术。有知识和有技术可差远了。早年我在工厂实习,要挫一个圆孔,拿着内锉刀干了一天,只挫了一个椭圆;师父来了,三分钟,比冲床冲出来还圆!我是个好学徒,使用锉刀的知识全记住的,可以写一篇内圆挫使用大全。知识是有了,可没这个技术。


程序员也一样。什么C++,Java,.net,什么STL,Struts,Spring,就是门门都满分,这也就是有知识。算不算技术好呢?差远了。软件工程师界就专门出这种不会写程序的“高手”。我遇到一位老兄,精通Java知识,从虚拟机到各类框架,概念,无所不同,谈起Java来,没人说的过他。可是他的代码永远Bug最多,而且都是最简单的Bug,什么逻辑不对啊,功能没实现啊,UI不对啊。他的领导只有又好气又好笑。问下去,发现这老兄写了几个程序文件以后,就不感兴趣了,因为所用的技术没什么不知道的了。所以马马虎虎交差。


说到底,写程序是个手艺活,就和古代的匠人一样,是要讲工艺的。比如一个玉匠,能打造栩栩如生的玉孔雀,那得打的好!要是一个玉匠说,这些手艺我都知道了,重复做东西没劲,将就着给客人做出来吧!那他还不吃西北风!

可是,十几年来,程序员界有的是这样的人,还引发大规模争论。象什么C++和Java之争啦,J2EE和.Net之争啦。你看里边的帖子,不停有人赌这个阵营那个阵营,有发誓一辈子做C++的,有发誓打倒.Net。我还奇怪了,专门没人效忠机器码的,那不是最难最有“学问”吗?这都是在争论什么知识最重要。可是啊,很少有人谈谈怎么做好产品的。



现在程序员最大的问题就是太看重知识,拼命追逐新玩意,而忽略了身边的够得着东西。好,什么C++,Window API都知道了,东西也弄出来了,可是三天两头崩溃,还找不到原因?为什么?有没有看看代码,看看是不是某函数写了2000行,自己都看不懂?是不是全局变量乱用?是不是没考虑前后兼容性?没考虑冗余和故障恢复?



末了再回到开头的故事:

项目经理回去和程序员再重新设计,又多花了一个月,终于达到了目标。但因为这个部分是一个大项目的一部分,整个项目不得不延迟了一个月。

年底考评的时候,项目经理给程序员打了一个及格;程序员不服,告到总经理那里。总经理说:“你知足吧,给你打及格已经看在你干的很辛苦的份上了,因为你没有按时完成,整个项目延迟了一个月,这帐都没找你算呢。”程序员颓然。

TOP

过去有一位年轻和尚,一心求道,希望有日成佛。但是,多年苦修参禅,似乎没有进步。
有一天,他打听到深山中有一破旧古寺,住持某老和尚修炼圆通,是得道高僧。
于是,年轻和尚打点行装,跋山涉水,千辛万苦来到老和尚面前。
两人打起了机锋。
年轻和尚:请问老和尚,你得道之前,做什么?
老和尚:砍柴担水做饭。
年轻和尚:那得道之后,又做什么?
老和尚:还是砍柴担水做饭。
年轻和尚于是哂笑:那何谓得道?
老和尚:我得道之前,砍柴时惦念着挑水,挑水时惦念着做饭,做饭时有想着砍柴;得道之后,砍柴即砍柴,担水即担水,做饭即做饭。这就是得道。

翻译成程序员,编一个故事:
过去有一位程序员,一心想追求技术,希望有一天能成为顶级高手。但是,多年学习,似乎没有进步。
有一天,他打听到某高手,到了首都北京,其水平享誉业界,是公认的权威。
于是,程序员打点行装,从牙缝里挤出差旅费,坐火车来到北京,迷了几次路后,咬牙打的找到了高手。
两人开始探讨程序员应该怎么个人发展的问题。
程序员:请问高手,你在名声大震之前,干什么?
高手:在公司写程序。
程序员:成名之后呢?
高手:还是在公司写程序。
程序员于是哂笑:那有什么不一样?
高手:没什么不一样,不过我近来进步,做事情更专心了,不再老是想着写程序发不了财了。这样我就成了高手。

其实,写程序就是写程序。这本身就和前途啊,财富啊不直接关联。只不过时代使然,使它成为刚好是个待遇较好,也是较有机会的行业。因此,年轻一代涌向这个行业,只有一小部分人是兴趣使然。这样,我们所见到的,有毅力,沉得下心的人颇为难得。很多人,坐在电脑屏幕前,要么视为苦差事,要么东张西望,不能定心。如此哪能成功。

每一行都有自己的道,和尚想成佛,俗人想成功。但是不管是谁那行,都只有定心苦修,克服心魔才能有所建树。

也效仿古人写一偈:
一年两年刚入行,三年四年不值讲。
五六七年识门道,八九十年算登堂。

TOP

rInG04h是一个软件公司技术总监。有一天,有一位程序员小A提出想要和rInG04h谈谈。小A工作5年了,程序写得很不错。他进到rInG04h的办公室,坐下,在rInG04h的对面。
rInG04h的桌子有点弧度,于是rInG04h挪动椅子,和他斜对面。rInG04h问他有什么事?
“我现在很困惑。我不知道是不是应该转行去做管理。”小A说。
“为什么?”rInG04h问。
“我看到一些媒体,还有一些认识的Leader都说只有做管理才有前途。”
rInG04h想了想。小A人很踏实,同时也很聪明,所参加的项目很有挑战性,但他一直做的不错,因此,薪水比同时进公司的员工已经高了20%。
“这样吧,我问你一个问题:现在公司开始执行10%淘汰制。你是一个10个人的组长,因此,你必须淘汰一个。这10个兄弟干得都不错,至少没有吊儿郎当的,跟你的关系都不错。现在的问题是:你准备淘汰那个?”
小A觉得这个问题很难回答。
rInG04h说:“这样吧,我换一个问题。你喜欢不希望成为作决定的那个人?”
这次小A回答得很快:“不喜欢。”
rInG04h说:“好,其实你自己已经回答了,你不应该去做管理,因为你根本不喜欢。做一件你不喜欢的事情,你会很不开心。”

和小A一样,其实几乎每个程序员几乎都会面临,或面临过这个问题。
管理是一个很好听好看的词,似乎只要和管理沾了边,就是高薪,荣誉,更广阔的出路。也许对,可我也看到过曾经的技术强人,做了所谓的经理多年后,居然找不到一份满意的工作。因为实际动手能力已经消退了。
所有想要做管理的程序员可以想一想:
管理是什么?管人吗?如果抱着这样的想法去做管理,一定头破血流。现在的时代,没有人愿意被看管的。即使是经理人,也是和人相处,并非凌驾于他人之上。想一想陆纯初,因为一封电邮就被秘书PK下马。
管理有什么用?其实如果大家都好好工作,所有的经理人都是多余的。现代的管理理论是经理人作为协调人,进而是教练。好的管理者应该低调,把荣誉让给干活的人。
管理者也未必比干活的人工资高。存这样想法的人是官本位。我和很多国外公司接触,他们的很多经理告诉我,他手下的高级工程师很多薪水远比他这个boss高,地位也稳固。而经理往往随着公司政局变化而动荡。而高级工程师往往稳得很。
当然,管理者也有很多乐趣,最主要的乐趣在于通过管理的技巧和有效的执行改变团队。但这些往往是隔山打牛的功夫,不是每个人都喜欢这样的工作。

我在包括CSDN内的很多技术论坛看到很多关于是要做管理还是技术的争执,所谓不能做一辈子技术的论调是我不屑于反驳的。但对于走向管理,大部分人是从是不是能挣更多钱(包括所谓前途,爽等),但很少见到有人考虑过是不是喜欢的问题。
实际上程序员们不妨问问自己:
你是希欢智商上的挑战呢,还是情商逆商上的挑战?
如果是前者,请把做技术作为终生追求。
如果是后者,可以试试走向管理。
如果都不喜欢……

TOP

[s:39] 偶不管什么知识和技术,各种语言的优势劣势,偶把"写程序/寻找程序错误"当成爱好....想到什么,就无比要写出来才甘心....感觉现在进步很快... [s:37]

写,才是正道.....
游戏吧  http://www.game8.cc/MyBlog    http://www.asm32.cn

TOP

test
fuck you

TOP

呵呵,应该是程序员重管理重编码却轻设计!!与知识无关。
QQ:838468959

TOP

顶一个
倚剑天涯过客,细水竹楼,杏酒花雨一杯,把酒歌,柳絮东来燃花,歌谓吾忧,孤影月下寻欢,清明花谢,谢落细柳坟前;一杯酒,一人饮尽一人冥,两茫茫,香尽人绝,唯有碧中血;---------------丰初

TOP

有感触,收藏了。
欢迎2008!

TOP

不过,个人感觉,这样子有好的一面也有坏的,,坏的,就是这种想法把一个人的思想给埋没了,要他一味的追求技术上的东东,而放弃了许多,在从外看虽然好似得道,但我不并不赞成,我本身也是一个程序员,丰初再次路过
倚剑天涯过客,细水竹楼,杏酒花雨一杯,把酒歌,柳絮东来燃花,歌谓吾忧,孤影月下寻欢,清明花谢,谢落细柳坟前;一杯酒,一人饮尽一人冥,两茫茫,香尽人绝,唯有碧中血;---------------丰初

TOP

比较赞同第一篇。

许多时候,我们只是为了验证下某个知识,而匆忙热情地写一段程序。而真正把他们做象样的时候却很少。
而实际上,那才是发挥我们自身主观能动性的时候。

以前看过一篇关于使用各种语言的人们薪水的比较的文章。排在第一的是华尔街的那些使用mutlable的牛人们。
为什么?
其实,语言就象工具,关键在你对你要做的活的了解与领悟程度。工具的好坏完全可以被你的意识所遮盖。就象古代的那些工匠,同样的工具给他们让他们雕刻同一件物品,做出来的东西就是会不一样,从而,好与坏也诞生了。
源静则流清 本正则丰茂 内修则外理 形端则影直

TOP

发新话题