20120701

作为程序员,你的价值在哪里

作为程序员,你的价值在哪里

1. 学生时代

程序员以前都是学生,我们从学生时代快结束时讲起。

本科毕业论文答辩时的一个笑话。有女同学翩翩然说,"各位评委老师……"提问和
点评的时候,我作为"评委"的第一句话就是,"对不起,这不是选秀节目,我们也
不是评委老师。"

坐在下面的那些老师 (与非你莫属不同,不是坐在上面),我们一般称为答辩委员
会成员,作为论文答辩(或项目投标、讨论) ,他们与选秀的评委任务不同。答辩
委员会成员,一般不太在意轰动笑果什么的,所以常问一些一再重复的问题,对
谁都问,有时就被称为套话。

这句套话非常之重要,以至于答辩委员会成员经常要求答辩者跳过综述 (你看了
哪些资料,你的工作在学科中的地位,你的工作如何重要等等),而要求直接讲--

"你的工作是什么?"

当年我本科毕业论文的时候也被问过。我卡卡卡卡讲了半天,我用的这个语言有
前途啊,我从事的这个领域也有前途啊,布拉布拉。是的,我用的语言是HTML,
领域是计算机网络,当时连ASP好像还没出来,可见我选择了多么富有远见的方
向。但是,答辩委员会老师忍了半天,就是如今的刘校长问我,"你的工作是什
么?"

我然后就卡壳了。我选择的语言很牛,我选择的方向很牛,又怎么样,那些都是
别人做的,跟我又有什么关系呢?

我当时说,我看了这么厚的一本书,英文的,全看完了。然后才理解了啥啥。老
师们非常和蔼地没理我。

很多年以后,我明白,作为程序员,你学会了什么并不重要,所花费的时间也不
算作你的工作。在这个世界上,除了你的父母,没有人再会因为你学会什么而高
兴,他们只会因为你用学会的东西做出贡献而高兴。

那么,你的工作,你的贡献是什么。

2. 最近的一个实例

某处前两天网站建设会议,我作为技术人员出席,发言的时候只提了一条与技术
有关的建议,其余那些条都是表达网站建设与技术人员关系不大,更多的是美工
和广义上的政治。

唯一与技术相关的那条建议是去除网页上的百度统计,原因是加上它以后网页载
入速度有明显地下降。

最初我不知道里面有百度统计,还问过ZHUMAO,你们那个点个网页,怎么载入的
时候会这么慢。会上,作者同学指出了百度统计的优点:1.能统计出哪个链接点
击的人多,有多么多,比例如何;2.能用热力图展示哪个位置被用户点击多少
下,点击多的地方就更红一些,点击少的地方就更绿一些。

我为什么认为应该去掉百度统计呢?这个东西固然是好,但是它影响性能,更重
要的是,它不是你做的。那个热力图真的形象,漂亮,强有力,但是那是百度的
工作啊,不是你的工作。你的网站架在自己的机器上,容易获得 w3c log,方便
统计出这些数据。如果你用w3c log 统计呢,这就是你的工作了。而且,你同时
也避免了不必要地向第三方泄漏网站访问数据。

你的岗位存在的意义,是选择合适的工具,而不是强有力的工具,去完成任务。
我为什么说"你的岗位"的意义,而不说"你的意义"呢?这可以从一道面试HR乐意
问的问题看出来。HR可能问,"你对薪酬要求如何啊"。一种合理的回答是,"薪
水的多少取决于这个岗位对公司可能的贡献,而不是我的能力。"

克拉克还是超人呢,报社也没有多付他一分钱。

所以,你的岗位期待你选择合适的工具。

3. 什么是不合适的工具

合适的工具是什么,是个太大的话题,以后再聊吧,我们不妨先看看什么是不合
适的工具。

特强大的,众所周知牛的,干啥都行的,这些基本是不合适的。另一种不合适
的,是本科同学们愿意在答辩的时候说的一句,"我为什么选择JAVA?因为我们
就会这个,这课是周老师讲的,他……""就会这个",可不是一个好理由。

同时,也不能逮着啥有名气正流行,就认为它会是好的解决方案。例1,项目课
程里一位同学,打算做俄罗斯方块,或者贪吃蛇。她认为,这一定需要用多线程
来解决。为什么呢?因为你看,方块在起, 同时,还能响应用户的键盘消息。
例2,还是项目课程,另一位同学做扑克牌游戏,觉着需要用access数据库存扑
克牌的当前次序和排序什么的。

这些是"过于"强有力,不适合做这种小游戏的工具。用大炮打蚊子不对的原因之
一,是需要携带这么沉的东西,并非"没有必要","没有必要"这种措辞给同学们
一个错觉,似乎这样也是可以的,只是"并非必要"。不是这样,应该明确指出,
用大炮是"错误的"。

红白机 (任天堂)时代,CPU都那个水平,里面也没跑操作系统,多线程之类的是
肯定没有的。同时响应这一需求,如果我们还没有学到那些知识的话,我们也可
以猜到,一定有更轻量级的工具可以实现。这个轻量级的工具,就是循环,在每
次循环里读按键,如果不是命令,那么重画方块,在新的位置,这样方块就动了。

windows操作系统自带纸牌游戏,从windows 95时代,而且那个时候操作系统里
面肯定不自带access。存序号排序这种事,用链表或数组都容易解决。

有同学可能会说,那我用这个项目顺便练练多线程或数据库不行么?我们应该用
项目练习项目能力,多线程和数据库应该单独练习,或者找适合它们的项目练习。

合适的工具,就是不多不少正适合这个项目的工具。如果它强大到了干啥都行,
那么如果不是它的子集刚好适合你,那它绝不是你的那盘菜,因为它一定复杂到
难以把握。基于同一原理,穷矮挫不该考虑白富美。

3. 什么是不合适的使用工具的方法

试想,表演结束,你走回舞台,聚光灯下,下面掌声雷动。你几次谢幕,全场观
众起立挽留。

答辩委员会不适时地又出现了。它们还会在你以后的人生中数度出现,投标的时
候,经理质询你的工作进度啥的。

答辩委员会里某个亮脑门问,"你的工作是什么?"

"啊呀",你说,"这个简单。你们看到这有个钮么,它的名字叫做开关。按一
下……"

音乐声响起,你继续解释,"这个设备叫做录音机。"

如果你的工作只是选了这台录音机,你就只是行政人员。行政人员是不需要专业
技能的,当他们犯了这方面错误的时候也不会受到指责。

有同学说,我知道录音机的存在,这算不算工作。算呐,当然算。只是你认为这
样的工作值多少钱呢?满世界的人都可以告诉你的经理,免费的或几乎免费的。
如果你比别人早几年知道录音机,可能会好些,至少好日子可以过到录音机满天
飞。

设想另一个场景。还是舞台上,让你再表演的时候,你用自己的手指敲击键盘,
那就完全不一样了。当年杉菜同学 (out了?)就凭这一手震住了高富帅他妈。想
想吧,如果杉同学从衣兜里掏出个mp3接上外放,那会是什么情景。

亲自表演意味着两件事。1.你受过长时间的训练,这些训练不可替代,除非替代
你的人也受到同样或接近长时间的训练;2.你当前真的正在表演,这一工作时间
不可替代。

这就是程序员的价值所在。这也是所有工程师的价值所在。我们选择一种工具,
然后使用它。

讨论观点的时候,大哥以前有个路子,他转引别人的论点,或者说都在这本书
里,你自己回去看吧。如果不是导师指导学生,在面对答辩委员会的时候,这一
招是万万不好使的。如果不你能清楚论述别人的那些观点,并阐述它们与你的观
点及当前问题的联系,是不行的。仅仅说,"子又曰了",只有在高考作文里才有
用。

马利同学前两天转引道,"某位哲学家说过,谁谁谁又说了,在中文里,都可以
翻译为 I think。"当年俺们一位外教说过,写作文不要写"I think",因为大家
只关心你的观点,而不是你的态度,你think不think,who care。

你能用来说服自己的,是信仰,能用来说服别人的,才是道理。工程师的工作不
是让别人跟随自己的信仰,而是为别人创造价值。

如果你借助工具,完成当前项目的目标,你是在使用工具。如果你选择 (或者被
选择)了工具,按了两下鼠标任务就完成了,你不是在使用工具,而是成为了工
具--而且并非你的上级的工具,而是是工具的工具。

最后再讲个工具的工具的笑话,网上看来的,不一定是真事。说中国有个教授到
了韩国。韩国人问了诸多问题,类似你们有钢铁么,有飞机么,有泡菜么,所有
问题都集中于质疑我国的生产力和生活水平。中国教授答:中国和韩国一样,什
么都有,只是没有美军。

前车之鉴。使用工具的时候,我们该想想,我们自己的价值在哪里,什么是我们
的工作。

--------------------

博客会手工同步到以下地址:

[http://giftdotyoung.blogspot.com]

[http://blog.csdn.net/younggift]

[http://www.renren.com/268966623/profile#pblog]

No comments: