职业规划就是对职业生涯乃至人生进行持续的系统的计划的过程。一个完整的职业规划由职业定位、目标设定和通道设计三个要素构成。

我一直以编写代码为乐,起因并不是我精于此道,而要部分归因于它是一大挑战。我发现没有什么比指挥个人电脑在显示器上显示Hello World!更令人激动的了。而在显示器上显示三个红桃或者黑桃A(Ace)和J(Jack)则是一个完全不同的问题。我毕业后写的第一个程序是用 Northstar Basic为NorthStar Horizon编写一个自动售货机程序,后来又为Northstar Advantage编写了基于图形的21点纸牌(Blackjack)游戏程序。

尽管如此陶醉于编程,但我必须坦白地承认:我是一个平庸的程序员,总在寻找一种方法来获得大的回报 - 即程序没有语法错误并能正常运行。这并不奇怪,我从未像一名程序员那样做好本职工作;我发现自己具有成为一名优秀开发人员的天赋。但是,在我们继续往下谈之前,我要给平庸程序员下一个定义。

平庸程序员--会使用一些现成工具的程序员。他只知道最简单的命令语法,但懂得在哪能找到更复杂命令的语法。他不知道如何编写最高效的代码,但懂得在必要时如何重写和测试比较高效的代码。他可以克服重重困难独辟蹊径达到目标,但他把每个困难视为挑战,并自信会找到每一个困难的解决方法。他可能需要较长时间才能完成,但总能达到目标。他不知道如何创建一个DLL,但在必要时可以弄懂。他与大多数程序员一样,并不特别喜欢做工作记录,之所以这样做是因为他是一个专家。

工作决定技能

虽然我很想继续编写游戏,但为了填饱肚子,我只得迁就本地就业市场;公司们有必需胜任实际工作这个奇怪的要求是众所周知的。产品、人力资源、会计、库存跟踪和数据报告只是做生意必要的一些东西 - 你知道,很无聊的东西。

当我真正为报酬而编写程序时,我的技能发生了戏剧性地变化。它不需要采用大量先进的编码技术来围着数据团团转,并耍魔术般地变成信息。

我被休斯飞机(Hughes Aircraft)公司雇用,通过IT服务来为产品控制部门提供支持。我的工作需要开发/分析技能,我热爱我的工作。编程不过是达到目的的手段。

开发人员身兼数职

程序员只是开发人员所扮演的诸多角色中的一个,通常你要身兼以下数职:

购买方(带预算)Buyer (with budget)
清道夫(无预算)Scavenger (no budget)
分析师(Analyst)
设计师(Designer)
规划师(Planner)
程序员(Programmer)
协调员(Coordinator)
测试员(Tester)
文档管理员(Documenter)
技术支持员(Support technician)

当开发人员未被认可为一个或更多角色中的专家时并不太令人奇怪。对我来说,工作职能就是编程。

zc530.Com小编推荐

一个还不太老的程序员的体会


谨以此文献给所有想当程序员的朋友

(一) 文章由来及个人经历

我是一名计算机专业的本科毕业生,毕业已经1年多了。毕业后从事的是软件编程工作,经常有其他专业的朋友想从事软件编程工作,向我请教如何,因为我自觉涉行不深,不敢信口开河,无奈朋友信任,我不得不郑重考虑一下这个问题了,来帮助朋友选择和回报朋友的信任。 这也就是此文的由来。

还是先谈谈我个人的经历吧。(是不是有点俗套,但我觉得了解我的经历,有助于理解我话的含义;我一向认为不了解古龙的生活经历的,不会真正读懂古龙的作品和古龙笔下的英雄的)我本科就读于南方一所著名的高校(因为自己的不成气,愧谈母校名谓),学的就是计算机专业。上本科时,几乎没有认真的听完一门专业课程,上课看报纸睡大觉,下课看录像看小说看球赛,临考抱佛脚,每次考试和课程设计都是蒙混过关。(于之相对是,我选修的工商管理和经济贸易方面的课到是听得不亦乐乎,考的分数颇高,也许这才是我的真正兴趣所在。)

总而言之,大学是混过来了,对专业的理解和掌握程度,应该没有达到毕业要求的合格水平。(也很后悔,但是有什么用呢,当时不知道珍惜;如果上天再给我一次机会的话,我一定会抓住,多看点美国大片少看点港片;现在,重回校园是我的一大理想)但是大学的学习使我有了一个简单的知识框架(总算学费没白交),我对一个朋友这样形容过我的这个知识框架,它不是钢筋铸的,是稻草扎的,哈哈哈,不要笑,真的,我敢说很多本科毕业的朋友的本专业的知识框架也只不过是稻草扎的。直到现在,我一直觉得自己的基础知识还是很薄弱,一直想抓点时间,把基础书本好好的温习一下。(此项任务正在计划和实施中)

毕业后,分配到某研究所工作。当领导让我选择自己以后的工作方向时,我毫不犹豫的选择了软件(也不知道到底是对还是错,但我决不后悔)。此研究所主要是以硬件为核心搞通信控制设备的研发生产;软件是辅助,所以也不受什么重视,很多搞软件的人都跳槽走了,留下来的大都是一些已经废掉和行将废掉的伪/萎程序员(名副其实的软件人员)。在这里感觉不到什么高紧张和高技术程度的研究和开发;软件开发的技术含量极低,以致于大部分人只有半年的学习和开发经验,以后都是这些知识和经验的重复利用。(我问过其他到研究所工作的同学,他们说都一样,呜呼,我们的国防科研开发呀)对于软件的开发,领导的意志和老掉牙的经验在新课题的技术采用和开发中起了决定性作用,没有明确的需求,没有明确的开发计划和进度,大家在一天一天一周一周的浪费着宝贵的时间,最后开发出来的东西修来改去,直至它变成垃圾。 我越来越认识到一点,要么象那些废人一样废掉,要么自己去努力寻求出路,反正别指望从工作中得到什么高明的经验了(教训倒也许有)。期间发生了一些感情上的纠纷,严重的影响了学习计划和效果,直到现在浮躁的心仍然有些浮躁。

期间,我读了一些书,看了一些文章,编过一些小例程,搞了一些没有什么技术含量的开发工作,也和一些前辈和高手们谈过聊过。 我一直在思考几个问题;如何学习软件开发?如何搞软件开发,国外的软件开发到底其秘诀在何处?为何我们的软件业一直在低水平徘徊?我们难道真的离了Microsoft就活不了?我们的程序员到底在浪费时间干些什么?软件开发到底是如何分类的?我们如何走自己的民族软件之路?

我想了很久,一些想通了,一些还在想。但我知道有一点是肯定的,那就是我们一定要靠我们自己走出自己的软件之路!跟在别人屁股后面永远受制于人!

好了,关于经历和牢骚就先写这些吧,该进入我们的正题了。

程序员你真的只是程序员吗[1]


你是不是感觉标题有点矛盾啊,是啊,程序员当然就只是程序员而已嘛,还会有其他什么吗?

No,No,No,如果你以前是如此认为的,那看完这篇文章后,请从此打消这个念头,因为你要改变成一个不一样的程序员(怎么还是程序员?)

虽然我工作经验也就6年左右,但经历了很多,也自己创业过,也是从一个初级程序员走起,因为看的比较多了,某些东西也普遍存在着很多程序员身上,希望自己的经验能帮助你们。

当刚踏入程序员这条路的时候,有幸为一家公司开发一个大型的电子商务网站,因为这篇领域当时还算刚刚起步,自己的编程能力还不太好,所以做起来就比较吃力,每天重复着做完PM给的工作,但是做了大概几个星期,我发觉某些地方真的不合理,但自己又仅仅是一个程序员而已,怎么办呢?我还是按照PM的任务一步一步来做,私下里我用了大量的时间去尝试着我的做法,在接下来的几个星期,我试着跟我的PM进行沟通,他也发觉不错,所以一并写了方案提交给上级领导,很好的是,我们的领导发觉建议还不错,所以改变了原先的策略,对我们的网站原先的设计进行了彻底的推翻,一套新的理念就此诞生了。

这只是一个小例子,并不是炫耀自己的能力,我只是想说,程序员,你其实不仅仅是worker,更应该是Ideaer。当你选择程序员这条路时,如果你仅仅为了工作而选择的,我想你的人生真的很灰暗,为什么这么说呢?我面试过很多人,大多都是从培训中心出来的,虽然我也是从那里走出来的,不过我当时是为了学习编程而去培训,但现在更多的人会为了工作而去培训。其实如果你是真正的选择程序员这条路,我想你的思维能力一定不错,因为一般程序员大多是理科出生,理科靠的就是你的思维能力,在某些时候或许你的思维还不够敏捷,但我知道,每个人在接受了一段时间的工作后,就会产生各类的想法,或许某个想法你会改变你公司的命运,可为什么提出观点的人就寥寥无几呢?

我想可能是因为性格吧,因为很多程序员都是内向型,因为我们需要花一定的时间,去沉醉在代码中,因为这是一个奇妙的世界,无法自拔,所以很多时候就忽略了沟通,因为我们打交道最多的是abcd。如果你正是如此,希望你快点走出来吧,分清楚何时沉醉,何时交流才是最好的。我的偶像-唐骏,我看过他的访谈,他在大学时还是一个不会沟通的人,只是偏执于技术,而且和大多人一样,都会觉得自己什么都会,什么都行,是个天才,但在他大三的时候,他意识到了错误,花了几年的时间去学习交流、沟通,在宁愿委屈自己进入微软做程序员,再到无数次发意见给Bill,一步一步成就了这位打工皇帝。

所以,我们每个程序员要做的是,技术和沟通并行提高。在唐骏的话中,我会学到很多东西,他能从容应对每一次挑战,当时有幸成为唐骏的下属,见证过他的能力,虽然他当时只是个技术总监,但他的想法、创意给盛大带来了无比的利益,我不得不佩服他的胆大,不得不佩服他的能力。从他身上还学到了专一,其实很多程序员会在编程的道路上三心二意,这是很正常的,不过我相信一段时间以后你会学会专一的,因为程序真的很美,带来的不仅仅是工作和薪资。

我这里又不得不批判一些年轻程序员了,他们仅仅看中的是工资、福利等,没错,这是考虑工作的一点,但你要知道,有些时候,你第一点的工资,或许你会学到更多的东西呢?我经历过很多,经历过1年工资翻几番,又经历过折一倍,又经历过小公司,又经历过大公司,各种各样看的实在是很多,但我不会说我自己半途而废,因为每次我会把事情做的觉得自己可以了,我才会选择更好的发展前景。我面试过一些人,工作也就2,3年,做过的东西也很多偏向于OA、ERM等项目,就觉得自己很了不起了,工资也是漫天要价,可真正面谈的时候,我才得知,你仅仅是其中的一个小模块,但当我问其项目的整个运维的时候,就会楞个半天,最后来一句,这个模块不是我负责的,敷衍了事。那好,我问你自己负责的模块,如何具体写的,用了何种方式等,基本都会回答,三层架构,什么什么,My god 三层架构是你一个模块就能体现的吗?那好,既然你说三层,何为三层,三层的优点,缺点在哪里?诶~~~~~前几天首页那篇批判大学生的文章,我觉得写的太好了,你们这是在沉醉吗?如果你不喜欢,你为什么非要选择程序员这条路呢?

如何从优秀的程序员成为伟大的程序员[1]


怎样评定一名软件开发人员?这是一个颇为奇怪的问题。现在已经有了很多的理论和形式来做这件事,人力资源部门也试着帮你管理和反省自己的行为。然而,怎样才是一个伟大的软件开发人员,在今天,你该怎样发展你的职业生涯?以下是我评定团队中软件开发人员的军规.按照这些技巧和规则,你可以改善你的现状,由一个优秀的程序员,成为一名伟大的程序员。

1、时间花在写精彩的代码上

这里说的不是数量,而是质量。对此,一种歪曲是:要数量,也要质量。你也许会很多次的遇到以下的两种情境:

情境A:你有一个发疯似的能写代码的程序员,事情似乎在进展中然后,Bug开始不断出现,你们也不知道为什么,好像永远补不完。补完十个,又出来五个,现在你手里的,就是一大堆代码

情境B:你现在有一个看起来很聪明的程序员,你面试他的时候,他似乎无所不知,能把理论说的头头是道。然而,你留给他三个任务,三个星期以后,他还在做一些三天就该干完的事。这下该你困惑了,他这么聪明,他知道generics(详见备注),多线程的一切事情,甚至还能给祖母级的人讲解什么是指针,让老太太兴奋的想去编程。可是--怎么什么都没完成?

于是,在梦境中--你写出了堪称伟大的代码,--伟大的代码是伟大的程序员写出来的,他睿智,明白代码的真正品质所在。写代码就像托尼?霍克在玩滑板一样自然优美,看上去就令人愉快。这些程序员以让你眼花的速度搞定一切,他们知道每个问题应该处理多长时间,也不会追捧寻觅所谓的世界最好解决方案,弄很多线程很多层来写一个简单的游戏。他们写的程序没有Bug,因为写的时候自己测试过了,在睡觉时也在写代码说的就是这样的人。这些程序员太宝贵了。

2、阐明问题

可以明确的是:即使有问题暂时处理不了,还有成百上千的方法去解决。有些人反应很迅速,很快就能提出多种解决方案。然而,一个伟大的程序员应该在做出行动以前清晰阐明问题--创建文档或用白板表达出来。他们写邮件给项目的管理者,这样表述:我想和你说说我是怎么理解这个问题的,我们能这样处理吗?然后他们就会动手给你多种方案。

对,这些人明白自己看问题和阐明立场的方式,而这理解方式大概不会是问题创建者所想要被理解的。请牢记这就是关键所在。一名伟大的程序员在尝试解决问题以前,一定要完全的理解它。你百分百搞明白了吗?没有?百分之九十九?--回去再多问些问题,确保百分之百理解清楚了。

3、怎样着手解决问题

那一搞明白了问题,就开始动手写代码?错!一个伟大的程序员应该按照规划,开始思考面临的多种选择,基于问题开始考虑最好的解决方案。我觉的这像一场国际象棋比赛。你知道每个棋可以怎么走,知道所有的游戏规则。但是你会马上走棋吗?不,你要审时度势,制订计划,紧盯对手,分析其通常的做法。和这一样,在你coding解决问题以前,你也要这么做。

看看问题,计算出需要怎样的结果,你的时间能怎么安排,预期的质量,你必须用的工具,好了,开工吧!

好程序员的习惯之一 积极解决每一个问题


对于好程序员,有很多好的习惯,为什么要把这个习惯放在第一个呢?有很多人如果阅读过《高效能人士的七个习惯》,其中第一个习惯就是积极主动。如果从这个角度来看,我把解决解决每一个问题放在首位从理论上是完全没问题的。但我要说说我们程序员独特的地方。

所有人都知道,程序员永远是拿着键盘在战斗的勇士。他们不能只是纸上谈兵。他们得有非常多的实战经验,人家才慢慢地说你是一个高手。可以说,高手绝对不是吹出来的,而是真枪实战干出来的。

在这里,我们不需要考试,不需要比赛。我们就看同样是一年年过去,到底谁做出来的东西最好,最多!因此,解决问题是我们提升自己能力,并且证明自己能力的非常重要的路线。我有一个非常好的朋友,大家认可他,就是因为往往全公司最难的问题,都是他解决的。还有一个朋友,就是因为他解决了全公司最大的技术问题,而得到了公司的十万元的奖金。

事实上,对我们来讲,任何一个问题,都可能是给我们打开了另外一个知识领域的大门,让我们了解到很多未曾关注的事物。这里面我有很多经验。

有一次我在研究代码注入的时候,发现Delphi的VCL对接口的实现方式。而且这个发现,让我很好的解释了,为什么在Delphi中做接口类型的强制转换的时候会发生错误。

还有一次,因为我做了一次技术分享,当时会上我的同事就提及了Ruby的不同设计思路,我当然也开始关注起来。这次事件,让我发现很多不同面向对象设计语言背后的实现思想,非常受用。像C++/C#/Java语言的继承,讲究的是类型的定义。而Ruby却可以动态修改任何一个已经定义的类。

当然了,这样的例子非常多。我们还不如反过来说说,如果我们遇到问题都绕过,或者不闻不问,或者得过且过,全然不当存在过一样。你会发现这样的人,事情分配给他的时候,他才会去做。偶尔也能看到他的聪明,但是就是看不到成绩。

是的,积极主动地解决每一个问题,让我们能够做程序员做得每天都不一样,每天都很精彩。而且,必须认识到的是,改变别人对自己的看法很难,唯有自己对事情的看法,才是我们可以,也是最容易去改变的。当我们心中真正开始热爱这些问题的时候,我们就走上了优秀程序员的长征之路。

是的,万里长征,这还只是开始!但是只要这一步走对了,下面就不会偏太多。

程序员的时空定理[1]


改革开放三十年,中国迅速从官本位社会向重商社会转型。商业社会的公理是商业驱动技术,反映到现实中,就是做技术的程序员被做商业的营销及管理人员驱动而成为附属,做商业的因代表客户利益而有着最高的话语权,其结果常常是技术与商业的二元对立,用被誉为中国的比尔?盖茨的金山软件公司董事长兼CEO求伯君的话,中国软件、互联网等IT从业人员的最大问题是就技术论技术、就商业论商业,技术与商业二律背反。

作为程序员,怎么办?

从商业驱动技术的公理出发,我们可以推论出关于程序员的两大定理,即程序员的时空定理。

程序员第一定理,不妨俗称之为站高定理,或空间定理,即:程序员应就商业之局论技术之域.古人云,不谋全局者不足以谋一域,这个局就是商业大局,这个域就是技术实现。反映到程序员身上需要做的心智模式的第一个战略转变是就商业(之局)论技术(之域),古今中外,概莫能外。

百度创始人兼CEO李彦宏在北大2008本科生毕业典礼上说,我在北大是信息管理系,学的是信息检索方面的理论,这让我比任何计算机系科班出身的工程师都更能够理解普通用户习惯于怎样的信息获取方式。这就是一个典型的站在商业的高度论技术实现的案例。

IBM的第二次战略转型,即1961年小沃森豪赌System 360项目,取得了历史性的成功。S/360对于IBM的意义以及对于IT行业的影响,相当于Windows对于微软的意义以及其对于PC时代所产生的影响。

从技术角度看,S/360取得专利权数量超过了300项,其中包括发明了内存芯片、发明了关系数据库、发明了人类第一个高级编程语言FORTRAN等。但是如果仅仅从这些技术的成功推断其成功源于这些技术,就大错特错了。

S/360的成功源于其创新的商业战略兼容,所有的技术实现都是围绕这一商业战略而展开。在S/360之前,每台电脑都有自己的指令集,所以每开发一台新的电脑就必须重新撰写程序。S/360成为了历史上第一款指令集可兼容电脑。当然,这同时这也意味着IBM将淘汰自己过去生产的所有型号的计算机,完成自我颠覆。

那么程序员如何站在商业战略的局审视技术的域,有没有一整套的系统方法论?

产品哲学的道,适用于做任何产品,讲述了什么样的产品是好产品,什么样的产品是伟大的产品;用户购买的本质是什么,企业如何应对购买本质;什么是产品的灵魂;做产品分为哪三个层级。

天马设计的天,将产品设计拆解为生产者集合的行业与消费者集合的市场通过创新机制孕育生成产品的三大流程。首先是如何通过行业流程及新经济的特性洞见产经大势,解决产品设计we should do的问题;其次是如何通过市场流程专注客户需求,解决产品设计we must do的问题;最后如何进行有目的、有组织、系统化的创新及中国式创新流程(13类方法)来具体规划产品线及产品功能,解决产品we can do的问题。

落地执行的地,将产品实施拆解为战略执行力的三大组成流程:战略目标、组织管理和开发运维。首先是经营责任化的目标流程,将产品与项目目标逐层切割分解作为经营责任落实到单一责任人,IT技术的趋势及中国式的产品运作模式是什么;其次是管理精细化的组织流程,如何配套对产品成败影响巨大的产品组三大组织模块六个构件;最后是运营程序化的开发流程,在确保工程三要素折中匹配的前提下,以本土实践为本,兼容并包四种工业级流程体系,形成三权分立的强矩阵最佳战阵。

关于女生的程序员之路[1]


首先声明,本人是男生,从来没有站在女生的角度思考过问题,因此只能就自己的角度来探讨一下问题,说得不准,勿怪。

嗯,说个现象吧,我在成都呆了12年,确实没怎么看到女性程序员,有几个,生了娃以后,都回家带孩子去了,不过我到西安来以后,吓了一跳,程序员中男女比例接近1:1,呵呵,确实给我上了一课。

所以,就我的经验值,我发现你说的其实不准确,起码中国北方城市,女性就业率还是比较高的,至于是不是程序员职业,并不重要,也有很多女性做的,你大可不必担心这个问题。

当然,女性有女性的弱点,生理上的咱们就不说了,其实对于办公室工作来说呢,问题不大,关键是结婚生孩子,根据劳动法,女性一般是4~6个月的产假,这在很多小公司来说,一个人接近半年不上班,还拿薪水,确实有点难以接受,因此,在招聘时,不知不觉就对女性有点回避倾向,就造成了女性求职困难的现状。

但是呢,我觉得这是短期现象,为什么呢?一个公司,如果要做大做强,做正规,必须正视这些劳动法规定给员工的基本福利,如果老板刻意回避这些话题,应该说,这家公司也确实做不大。至少,我到现在没有看到哪家超过1000人的大中型企业,里面一个女人都没有的。你说是吧?

所以,这个问题,归根到底,我的理解,还是市场经济的初级阶段问题,即中国的企业刚刚出现,还在进步,目前实力还弱,无力承担太多的社会责任,无法承受女性结婚、生子的一系列额外成本增加,因此导致女性就业渠道偏弱。

就我的经验而言,目前国有大型企业、欧美外资企业,嗯,台资和港资等企业也是,对劳动法遵守比较好,反而是中国的民营企业,遵守得不好,让买个社保都磨磨唧唧的,更不要说女性的产假等问题了。因此,如果求职时主要针对上述企业来说,应该问题也不是很大。嗯,国内华为、中兴等大型企业,对女性歧视也很小,可以考虑。

但是,要注意,这里面也有个门槛问题,国有大型企业,其实福利是比较好的,但是,工资待遇偏低,尤其是进去主要靠关系,很少有凭借真本事能进去的,这个难度很大。其他三资企业,人家是典型的资本主义社会原则,看人部分男女,都是成本,每个人必须创造出效益来,因此,首先必须要真本事才进得去,其次,进去后,人家用人也比较狠,我们常说女生当男生用,男生当畜生用就是这个道理,如果进这类企业,要做好被扒层皮的思想准备。

程序员对经验的一点思考[1]


曾经有一段时间对经验不是很在意,甚至有过这样一种想法:总觉得经验会制约思维的能动性,会构成个体客观思考问题的障碍。

举几个自己经历过的例子:

1、在自己现在参与的这个产品研发过程中,一开始设计一组核心数据结构的时候,我们team里一个有经验的同事对一个我和老大作出的设计提出了不同的建议,我和老大也跟他作了一番讨论,他告诉我们以前他在一家大公司里就是采用他建议的方法解决了我们在设计面对的问题,但是具体到以前他们公司为什么要采用这个方法及其前因后果,他不能详细地作出解释。所以最终我和经理还是坚持了已有的作法。数个月后,在后续开发工作中,我的老大发现之前的那个设计的确存在一定的局限,而那位同事基于他的经验提出的建议的价值也显现了出来。于是在经过又一轮讨论,并结合现有的代码进行分析以后,我们决定对以前的设计作出调整,而因为这个设计用于一个比较底层的数据结构,其调整也造成较多的代码需要进行相应的重构。

2、最近我的老大在作一件事情。这件事情从实现上来看,工作量并不是非常大。但是在确定这件事情的目标特征范围上,他花了比预期要多得多的时间。因为之前没有相应的经验,不知道这件事情作到什么程度,涵盖哪些场景会比较适宜,于是只能通过使用现有的一些工具来获得一些实验结果,对实验结果进行分析,总结,以协助确定任务的特征范围。这份实验工作消耗了他大量的时间。

3、前一段时间,自己在作一件事情,老大跟自己的观点存在不一致,老大存在不同意见的一个重要的依据是之前在他的公司里,他们对相似问题的解决办法跟我给出的办法有所不同,但是因为这件事情是我具体在负责,细节方面他并不是非常了解,所以我总是能够找到一些具体的理由来证明自己观点的正确性。

在激烈的争论之后,老大没有继续试图说服我,让我选择了自己提出的方案。事隔半年之后,在加入一个新的feature的时候,自己发现之前的设计的确存在较大的局限性,而当初跟老大争论时老大提出的建议以现在的眼光看来还是比较正确的, 自己也不得不在已经基于原始方案展开一定工作的前提下再度考虑他提出的方案。

在第三个例子里,面对一个问题,自己作完一遍,要在真正遇到障碍以后,才能意识到问题的关键,而我的老大却能在第一次看到问题的时候就作出准确的判断。我想,这固然跟个体能力的不同,思维穿透性的差异有关,但是跟老大丰富的工作经验也有一定关系。

而另两个例子则更生动地说明了经验的重要性,如果说我的老大或是我在遇到问题的时候具备相应的经验的话,我觉得在很大程度上是可以少走一些弯路,至少是可以节约一些因为在问题空间里作尝试消耗掉的时间,加快项目的开发进度。

在我看来,经验是主观个体在实践过程中获得的一种解决问题的方法以及思考模式的积累,这种积累对于以后遇到问题的时候能够提供可复用的参考以及借鉴,是有着很大的积极意义的。但是如果采用不当的方式使用经验的话,也会给个体带来一些局限。

1、随着经验越积累越多,个体会倾向于将自己的经验视作自我的一部分,个体对自己的经验会产生一种维护其正确性,确保其不受攻击的心理,这就可能带来知见障了。

2、经验获取的过程中,有的时候,因为思维的惰性,个体只会知道经验的具体表现,而未必搞清楚了经验背后的前因后果。通过这种方式积累起来的经验往往不扎实,容易随着时间的推移而淡化甚至发生扭曲变形,其参考价值和借鉴意义也就大打折扣了。

程序员如何踏上社会[1]


这个问题相对比较复杂,也很宽泛,很难简单回答,我这里,也仅仅就个人的一点认识,谈谈看法。

目前在学生里,我也观察到,很多二本,三本的同学,在心里上有种自卑感,总觉得考分低了,出来就低人一头。这点,我是万万不赞同的。很多时候,我对小弟讲,我相信你们的老师,师兄,师姐,前辈,都有讲过:大学毕业,仅仅是开始,不是结束。

中国的社会,越来越商业化,其实商业化有一个好处,就是这个社会给每个人的机会,总的来说还是越来越公平。这个问题分怎么看,名校毕业,高官子弟,亿万富豪的孩子,总会比我们站在更高的一个起跑线上,这是事实,但是,也仅仅是起跑线而已。在社会上,也有太多的故事,从一个穷家子弟,经过努力奋斗,最后成功的事实,因此,首先我觉得大家不必气馁,万事有拼才会赢,只要敢拼敢做,没什么大不了的。

我自己的学历就不高的,经过这么多年奋斗,也取得了一点成绩,这里就不多说了,总之,请大家记住,这个世界,还是相对比较公平的,只要肯努力,就会有回报。反过来说,当我们认为社会不公的时候,不妨问问自己,自己尽到自己最大努力没有?

第二个问题,关于学校里面开设的课程,大家可能会觉得不够时髦,不够酷。净是一些计算机组成原理,数据结构等老掉牙的课程,远没有什么spring 框架来得过瘾。呵呵,不过根据我的经验,工作几年以后,大家可能会觉得,最值钱的,恰恰是这些最土气的课程。用框架,永远不算本事,也没有什么核心竞争力的,哪天框架死了,你就死了。会做框架,才叫本事,才叫公司里面的骨干人才,才可能成为架构师。而另一方面,框架也是人做的,大家以为,做框架需要哪些知识?是不是上述old的知识?

因此,我的建议,大家好好学好自己的课程,在这几门课上,清华的老师,比起你们的老师,未必有优势,因为这些知识太经典了,也没有给老师什么推陈出新的发挥余地,学这几门课,大家和清华的学子,是站在同一个起跑线上的。

第三个问题,学习C和C++的问题,大家不用想,我的经验,别说这两门相对复杂点的语言,就算是 Java,PHP等语言,没有指针的干扰,要想学精学透,没有3到5年、5到10年的刻苦,也是不行的,大学毕业就想做大师,不太可能的。因此,建议大家不必妄自菲薄,你做不到,别人也做不到,大家还是一个起跑线,关键看,以后工作中,能不能扎下来潜心研究,仔细揣摩,不断增长自己的经验值。

第四个问题,关于培训机构不培训C和C++的问题,我也很好奇,好像是有这么回事。我曾经研究了一下,认为原因是这样的:

培训机构也是商业公司,主要目的是赚钱。对他们来说,赚钱有两个重点,第一是短平快,要短期出成果,让学生和家长有看得见的进步,给客户以信心,好让客户买单。第二则是成本够低,在同样营业收入的情况下,培训时间越短,请的老师价格越低,老师的沟通成本越低,培训机构的利润越大,因为企业做生意,核心问题是利润,即他真正赚到手的那部分钱。

这就很好理解了,无论从哪个方面理解,C和C++都不是最佳的选择。大家可能没有讲课的经验,但是我本人有一点。我讲课时,发现最难和同学们沟通的细节就是指针,翻过来揉过去说,几个小时下来,就是有人搞不懂指针,至于指向指针的指针,就更晕了。更不要说C中的函数指针,C++中的对象指针,泛型设计等复杂概念,反之,Java,.net都有比较成熟的应用程序框架,同学们可以快速搭建一些立竿见影的应用,因此,从短平快角度,从利润最大化角度,C 和C++都不是最好的教学语言。

如果我开培训公司,我的目的是赚钱的话,我也不会教C和C++,太费神了。当然,有人说你贵买贵卖吗,收费贵点,把成本补回来。那样也不太现实,因为,太贵的费用,就没有客户了,大家试想一下,如果开个培训C和C++的培训班,保证出来会写操作系统,收费20万,大家学不学?我估计就算这个课程值这个价,恐怕也卖不出去。

所以,这位同学说的培训机构的意见,我的建议是,听听就好了,不要太认真。

修炼一名程序员的职业水准[1]


假设你是一名软件专业毕业的本科学子,如何在工作中修炼成为一名有较高职业水准的程序员呢,本文试图总结作者从事15年软件开发工作的感想,希望对有志成为职业程序员的人有所帮助,并借此机会感谢原昆明工学院计算机系的和智玲老师和张怀宁老师,特别感谢我的硕士导师,南京大学计算机系的博导郑国梁教授。

注:本文辞尖刻,乃作者脾气秉性使然,如果你看着有气,就请多多见谅,放下别看了。

程序就是一系列按步骤进行的操作序列,它有好多种级别,比如最低级的微程序、次低级的汇编程序、高级的各种编程语言程序、最高级的脚本语言程序,也许我列的不对,但没关系,我要说的是不管是那个级别的程序,其本质都是操作的逻辑序列。大多数系统和应用程序都是建立在高级编程语言上的,比如C、C++、C#、FORTRAN、BISIC、JAVA等等,就让我们只关注这一级的编程能力吧。因此如果一个程序员的逻辑能力不高,他永远都不能成为一名具有合格职业水准的程序员,我们在下面的讨论有关编程能力的方方面面,最终都是为了最大程度地提高和实现一名程序员的逻辑能力。

一、掌握基础知识:十六年寒窗的持续积累 从7岁读小学起,经过16年的学习,你从软件专业本科毕业后,必须完成以下几门专业课程的学习:计算机组成、操作系统原理、汇编语言、数据结构、编译原理、数据库原理、软件工程、结构性设计语言(PASCAL、C)、面向对象设计语言(C++、C#)、计算机网络等,你最好还懂一些算法分析、分布式系统、计算机图形学、形式逻辑、人工智能原理、软件设计模式、软件构架/框架等研究生的课程,16年来,你积累的除了知识,更重要的是形成最适合自己的学习方法和工作方法。这些是你具备程序员职业水准的基础能力,不要受什么计算机软件怪杰之类传奇的影响,那不过是小概率事件,而且这些怪杰们就算没有读过软件本科和研究生,也往往自学了大多数专业课程,很可能比在校学习的学生对这些课程的精髓部分理解的更好,还有他们的工作方法和思维方式是特别而高效的,但普遍性差,可以借鉴,不宜模仿。好,所以现在你只需要问问自己,那些课程和知识都学会并掌握了吗?如果是,那就准备好进行实践了。

二、在实践中提高:成为一名高水平的Coder好了,你毕业了,在校功课都不错,也找了一个专业对口的工作,你想大展鸿图了,可是别急,你的翅膀还不够硬,不信我们说来看看。 通常,你在工作中都会用到某一种单位/公司固定的操作系统和编程语言开发环境,比如Windows、UNIX、LINUX等操作系统,又比如用VC、VB、PB、Delph、JAVA、Motif/XWindow、QT、OpenGL、OpenInventor等编程语言和开发环境,我们在后面把它们合称为开发环境。就在校学习的有关开发环境的知识而言,大概你距工作需要的差距是不小的,当某个操作系统和编程语言环境成为你的饭碗时,就不应也不能用通过课程/认证考试之类的眼光和要求来评价你的能力,即使你能考100分。你需要深入地学习该操作系统和编程语言环境的各类开发手册的所有内容,你会说大多数你都用不上,其实你既对又不对,对的是单从使用的角度而言,你确实用不上开发手册的大多数内容,比如庞大的VC开发类库和复杂的开发环境,你在实际工作中能用到的不到总数的1/10或1/5,不对的地方在于,你用到的部分不是孤立存在的,它们是整个体系中的一部分,只有对整个体系有了一个较完整的了解,才能得心应手、随心所欲地用好你用到的部分,你才算初步具备在这种开发环境下进行Coding的职业水准(还远不够程序员的职业水准呢),而这只是刚开始。如何才能真正掌握一种开发环境的全面的知识呢,最原始的办法就是读开发指南/教程、参考手册,一般来讲,学习开发指南/教程时,你如果是一个认真的人,都会完成5/10~7/10左右内容的学习和练习,如果你想成为职业选手,就应该完成9/10以上内容的学习和练习。参考手册不同,大多数所谓的程序员们只是用到了才翻翻,这差的太远了,你应该象读开发指南/教程一样,每个环节都要读,比如VC,参考手册中的每个类,类的每个函数,都要读上几遍,它们往往是一小伙一小伙地纠缠在一起使用的,开始时读得你毫无头绪、心烦意乱,不要紧,还有一手呢,如果你开发环境安装的全面,它们往往都有开发商做的demo例子可看,你就进入另一个境界了,开始时你关注demo中的具体技术,后来你发现这些demo的程序写的都还算不错,结构简单但合理,如果你真的用心,就一定能发现一些个别的demo是极品,它所展现的程序逻辑结构是你设计不出来的,你现在有点更关心它的程序设计构架,甚于对你原始目的(某种相关的技术/技巧)的关注,这时的你,开始了从一名Coder向一名Programmer的转变,你会忍不住要看看开发商提供的源程序,比如。h和。cpp,通常你会找到include路径下所有的。h程序,你才知道,哇!好多好多东东在参考手册中都没提到,你要学的太多了,没时间顾及其它的业余爱好了,现在知道为什么程序员是年轻人的职业了吧,你要有足够多的时间才行,即使你的智商有160.如果你走到这一步,在你工作的团队中,已经是经常有人向你请教技术问题,经常有人请求你帮忙debug,你已是公认的高手了,别得意,因为你仍然是个Coder,为什么这么说呢,你想想,你已深入了解了这个开发环境中的各种技能,知道一名Coder如何用好这些东西,可是你能设计的出提供给Coder们用的东西吗?唔,你想了想,可能还不太行。对了,就是这样,你还是一名小我境界的程序员呢,本质是个Coder,当然已是一名高水平的Coder了,然而你需要进一步登堂入室才能成为一名真正的程序员。 让我们继续吧,通常你都是从精通一种编程环境开始的,假设你已经较为精通在Windows下用VC开发软件了,这时在技术和技巧方面你将面临一小一大两个挑战,第一个小挑战是如果公司/单位改换了开发环境,比如用LINUX下的QT交互语言工具进行开发,你不过是把前面掌握VC的过程再来一遍,由于在主观上经历了VC工具的学习过程,在客观上各种开发环境都有太多相似的方面,这回你掌握的应该较快。要小心,在这时第一次诱惑之门打开了,因为你感觉良好,看!这回这么快,我就这么好地掌握了新的开发环境,你开始关注其它暂时还用不到的同类环境,比如VB、Delph、JAVA,如饥似渴地掌握各种开发工具,证明自己的学习能力和价值,但你忘了一点,你仍然是个Coder,只不过是一个在好多开发环境下都能编程的Coder,就像你生活在中国,因而精通了汉语,工作需要你又掌握了英语,然后你就来了劲,把俄语、日语、阿拉伯语、拉丁语,等等等等,都学习个遍,我只能说,有点BT.你忘了自己是个职业人,同一类的东西工作中用得到才需学习,太多太多的Coder们喜欢在一起比较和炫耀自己会掌握了几种开发工具,不信你看看招聘时的求职书就知道了,sigh!他们中绝大多数人永远都只能停留在这个层次上,心浮气躁,一生都再也当不成真正的程序员了。

寻找自己的程序员之路[1]


每个人的幸福都是不一样的。我喜欢田园式的生活,在人多的地方总是不舒服。

对我来说,最幸福莫过于在工作中做着自己喜欢的事情。闲暇时,在能够眺望江边的地方,端着一杯红酒,一个人细细的喝。

为了这种生活方式,离开了北京,来到家乡所在的这个三线城市,寻找自己的道路。经过一年的探索,颇有心得。

大体上,我对自己走过的路和即将走的路划分为七个阶段:自信=意志=布局=切入点=团队=渠道=产品

第一关:自信

先说说我这个城市。这是一个什么样的城市呢?依山傍水,适合生活。几乎没有IT,也没几个真正的程序员。一周上班六天,平均工资1000元上下。程序员的工资在1000-3000左右。要在这个城市探出自己的道路,首要的一点就是自信。没有自信,活不下去。这个城市的年轻人大多非常迷茫,对自己的前途缺乏信心,有冲劲的都往大城市里跑了。回来之初,我也迷茫了很久,迷茫的时候,就在WOW里泡着,观察那个世界。在WOW里,作为一个萨满,傻乎乎的扛着个盾晃晃荡荡的升级。当时赚钱,也就是打打元素之火每天赚个几十G.后来,不断的观察不断的总结,成长为日入近万G的大奸商。哦,俺要走的也正是这一条路子。生活总是要继续的,在WOW上也学不到更多的东西了,就离开了WOW,开始了一个人的征途。

支持这条路子的核心力量就是自信。在小城市里不缺乏聪明的人,这些聪明的人大部分却并不优秀,因为他们缺乏自信,缺乏自己走路的勇气,从而甘于平庸。没有自信,走不出这第一步。

第二关:意志

在小城市做IT,相当锻炼人意志。这里就像一片沙漠。市场,没有。程序员,没有。找人说话也找不到。曾经组织过次聚会,包括我在内到了2个人。想要向下走,没有相当强的意志是走不下去的。彷徨,彷徨,最终还是坚持走了下来。

第三关:布局

所谓布局就是决定做什么事和不做什么事。经过相当久的考虑,我决定远离Web开发,远离本地市场,甚至远离数据库。做Web开发和数据库开发的太多了,你呆在偏僻小地,做这些完全没有优势,做本地市场呢,又没客户资源,关系又比不上已经在本地深耕数年的小IT公司。于是宁可荒芜这些技能,也不趟这个混水。最后决定,人做我不做,人不做我做,在偏僻的地方,做外面的市场,做深入的开发,做点做线不做面。为什么呢?

(1)本地的工资摆在那里,做本地的就算做起来了,利润也不丰厚,还累死累活,要赚外面的钱,在本地花

(2)要赚外面的钱,如果做Web开发和数据库开发,根本无法和当地公司竞争

(3)所以只能做别人不做的,或者别人做不了的,做技术要求高的。而我恰恰有相当多的研发性项目开发和管理经验,正适合做这些。

(4)所要做的东西,必须通过网络可以展示,可以远程技术支持。

第四关:切入点

切入点是个很关键的东西,综合上面第三关所讨论的内容,结合自己的技术能力和技术经验,然后结合需求情况,最终我从协议分析这一块切入进去了。哦,不是外挂那种分析。从QQ协议,到MSN协议,到YMSG协议,当然,还有Http这个最简单的,从有参考资料的分析,到无参考资料的完全黑箱分析,到现在在某方面的协议分析已经达到世界领先水平了。从协议分析,切入到验证码识别,从验证码识别,切入到车牌识别,从车牌识别,切入到模式识别、图像处理和机器视觉,而模式识别结合前面的协议方面的工作又可切入进NLP,客服机器人,有这些为基础,我又想切入淘宝店铺工具(哦,还没时间做,并且目前也没找到一个好的切入点).因为对图像处理的了解,我现在又成功切入进Flex开发了。以上各点貌似很散,也是也挺集中,就是:协议分析与设计、机器智能和图像处理,这三者是相辅相承的。

国外高手给想做程序员人的7个建议[1]


如果你喜欢编程,那么你真是受到了上天的眷顾。你是非常幸运的少数人之一,能够以自己喜欢的事谋生。大多数人没有这么幸运。你认为理所当然的观念热爱你的工作,其实是一个很现代的概念。通常的看法是,工作是一种让人很不开心的事,你为了拿工资才不得不去上班。你工作的目的是为了攒下钱去干那些自己真正喜欢干的事,但是前提是你得等到65岁退休之后才行,而且还有不少条件。条件一,你的积蓄必须足够多;条件二,你没有老到走不动,你还有体力去干那些事情;条件三,你喜欢的事情不需要用到脆弱的膝盖、昏花的视力,也不要求你走上一里地不喘气,等等。

毕业前练好写作

如果不是Linus Torvalds不断地散布福音,请问Linux操作系统会成功吗?虽然他是一个非常聪明的计算机天才,但是Linux吸引来全世界一大批志愿者的真正原因却是Linus Torvalds的表达能力。他通过电子邮件和邮件列表用书面形式传播自己的想法,最终引起了所有人的注意。

你听说过现在风靡一时的极限编程(Extreme Programming)吗?我在这个地方不谈我对极限编程的看法,我只说如果你听过这个词,那么原因就是它的倡导者都是一些非常有才华的作家和演说家。

即使我们缩小范围,将目光局限在任何一个软件开发团体中,你也会发现该团体中最有权势和影响力的程序员正是那些表达能力强的程序员,他们无论是做书面表达还是做口头表达,都能够清晰、自如、具有说服力地传达观点。此外,长得高也有助于提升影响力,不过这个不取决于你。

一个普通程序员与一个优秀程序员的区别,不在于他们懂得的编程语言谁多谁少,也不在于他们喜欢用Python语言还是喜欢用Java语言,而在于他们能否与他人交流思想。如果你能说服其他人,你的力量就可以得到放大。如果你能写出清晰的注释和技术规格说明书,其他程序员就能够理解你的代码,因此他们就能在自己的代码中使用,而不必重写。如果你做不到这一点,你的代码对其他人就没有价值。如果你能为最终用户写出清晰的使用手册,其他人就能明白你的代码是用来干什么的,这是唯一让别人明白你的代码有何价值的方法。SourceForge上有许多优美的、有用的代码,但是它们都像被埋葬了一样,根本没人来用,原因就是它们的作者没有写好使用说明(或者压根就没写).这样一来就没有人知道他们的成果,他们杰出的代码就衰亡了。

如果一个程序员不会用英语写作、没有良好的写作能力,我就不会雇他。如果你能写,不管你去哪家公司工作,你很快就会发现写作技术文档的任务会落到你头上,这意味着你已经开始在放大自己的影响力了,管理层正在注意到你。

大学里有些课程被公认为写作密集型(writing intensive)课程,这就是说为了拿到学分,你必须写作多得可怕的文字。一定要去上这样的课程!不要管学科,只要这门课每周甚至每天都要你写东西,你就去上。

你还可以动手写日记或者网志。你写得越多,写作就会变得越容易。写起来越容易,你就会写得越多。这是一个良性循环。

如何计算程序员自身的价值[1]


价值这个词,很正式,俗一点就是一个钱字。可以说这个字是当今社会的一个核心。无论经济活动、社会活动那个能离开这个字呀!人为财死,鸟为食亡。可能是人生的一个真实的写照吧!

回到现实生活之中,我们常常听到程序员抱怨自己的工资很低,抱怨自己的付出和自己的报酬严重背离,有的甚至不考虑自己工作能力和工作贡献,以别人的工资或社会岗位工资来确定自己的报酬。同时我们也常常听到公司的老板的抱怨软件公司不赚钱,最大的成本都花在员工的工资上了,自己在给员工打工。那么我们怎么能够计算程序员自身的价值呢?我们怎么看待程序员价值值与不值呢?我感到程序员自身价值有两个方面,一个方面是程序员的收入价值,一方面是程序员市场价值。程序员收入价值比较简单,就是程序员的年收入。例如一个程序员的年收入是5万。则这个程序员收入价值就是5万。程序员市场价值是指程序员本人编制的软件产品销售价值和预期的销售价值。例如,有5个程序员一年之中为一个客户编制了一个软件,软件售价5万元,假定我们忽略了销售成本和维护成本等,5个程序员水平大致相同,则一个程序员的市场价值就是1万。

程序员的收入和程序员市场价值往往是不相同的:

1)当大学生刚刚参加工作的时候,由于能力的限制,很少能编好程序,大部分时间都花在学习上,但是,他还是获得工资报酬。但是他的市场价值为0。这个时候,程序员是正收入。

2)当程序员具备编程能力,投入到编程工作之中,程序员不但获得工资报酬,其劳动成果也变成的公司的收入。假定公司能收支平衡,而且分配比较合理,那么程序员收入价值于程序员的市场价值相当。

3)当程序员具备较强的编程能力,投入到编程工作之中,程序员不但获得工资报酬,其劳动成果也变成公司的收入。假定公司产生利润,而且分配比较合理,那么程序员的收入价值就会低于程序员市场价值,其差价就是程序员给公司的利润贡献。

4)当公司出现亏损的时候,程序员收入价值就会大于程序员的市场价值。

通过以上分析我们可以看出,程序员的市场价值是程序员收入价值的基础,当程序员收入价值远远低于其市场价值的时候,程序员就会感到收入太少,分配不公,不愿意在公司长期呆下去。当程序员收入价值高于或等于其市场价值时候,公司老板只能维持或靠吃老本来维系公司的运作,维持不下去公司只好倒闭。另外,程序员的市场价值要小于公司的软件销售收入。

就目前的中国软件企业运行状况而言,中国软件业早已告别了暴利时代,残酷的竞争使得软件的公司利润趋于下降。有的软件公司在竞争中倒闭,大部分在维持中维持。究其原因很多,但是大部分软件公司都是靠开发项目来维持生计。而项目都是靠用户需求来驱动的,因此,开发出来的软件往往是定制的,不可复用。一些好的软件公司,往往在一个行业中积累了大量的行业知识和软件开发的程序。通过程序积累系统积累,形成了行业系统的开发工具和通用软件。使得程序的复用性大大增强,逐步形成了行业软件的优势,这样公司发展很好。

无论从程序员个人的收入价值或市场价值,还是软件公司的运行状况来看。其核心是软件本身的市场价值。如果一个软件市场价值很高,则程序员的市场价值就会很高,公司的利润就会很高。一个软件市场价值往往取决于这个软件的复用性或商品化程度。假定一个软件销售价格为1万,预期的销售个数达1000个时,其市场价值就会达1000万,假定这个软件是由5个人开发的,相关销售、维护、管理费用不计,则一个程序员的市场价值就会达200万,尽管这个程序员年收入只有5万。但是程序员的市场价值是很高的。有了高的市场价值,就有了增加工资、奖金报酬的基础,就会有增加收入的希望。一般开明的公司都会根据程序员的市场价值的大小来,来定义程序员报酬的。只有这样公司才能留住人才,才能获得更大的利润。

程序员应建立商业意识[1]


让程序员感到最为骄傲的事情是什么?那肯定是自己做出的技术在别人的面前进行炫耀。就像当初卡马克做出新的三维游戏技术时,整个世界都为之疯狂,这是一个技术人员能够达到的最终幻想。不过,对大部分程序员来说,这样的高度是无法企及的,但这并不妨碍他们来show一下自己学会的技巧。

我认识一位在Dos时代的技术人员,他在别人只会用拼音输入法的时候学会了五笔输入法;在别人只会用UCDOS的时候,他可以解密WPS文件,在别人会用CCED的时候,他可以拿着打印的长长的用C语言写的Menu的实现代码炫耀。然而,到了今天,仍然对自己掌握了某一个技术感到沾沾自喜。其实,这样的技术人员应该也不在少数,甚至有些人只不过五十步笑百步罢了。这并不能怪他们,因为在最初软件开发进入中国的时候,各方面的技术资料少的可怜,尤其是当 Dos向Windows编程过渡的时候,微软有很多API并没有公布,在那个时候,可能一个产品的核心依靠的就是比别人多了解一个API或者一个钩子的机制。蒋涛曾经讲过金山词霸的开发,其实只不过是因为他们直到如何利用一个钩子机制从程序中截获信息并进行翻译的处理,但就是这个技术,事实上造就了如此大的一个产业,也造就了几位的百万富翁。而对王志东来说,也是靠剖析了Windows系统中的DLL文件实现了对 Windows平台的汉化,并由此诞生了一个畅销的中文之星软件。而瑞星的崛起也是因为刘旭将流行的Word宏病毒的查杀机制做了出来,便一下子打开了市场。那个时候,这些人被称为高手,因为他们掌握着某些关键性的技术。甚至可以说,不一定是技术,有可能只是技巧。

然而,现在随着互联网的兴起,技巧的价值变得越来越小,遇到一个难题,用搜索引擎搜索一下,一般都可以找到答案。实在不行,到论坛中发一个请求,也经常会有高手告诉你答案。一个人掌握某种技术技巧变得越来越不重要了。说到这里,我们可以讲一个小插曲,这便是微软最早评选MVP(社区最有价值专家)的时候,根据专家分来进行判断,也就是谁回答的问题最多,谁就是专家。当通过检索把名单给微软之后,在第一次见面会上,令大家跌破眼镜的是,第一名是一个女生,而且她不太编程。当询问她经验的时候,她说每次看到问题,她就会先用搜索引擎搜索一下,如果中文找不到,那她就用选择一些关键词搜索英文的网站,这样一般都会有人回答,这样答案就出来了,而且很多都是英文的答案,这也让很多网友感觉这的确是一个高人,因为这些问题都是用英语回答的。了解了这一切,令人恍然大悟,除了看到一些程序员的懒惰之外,也可以感受到技巧已经不在称为衡量一个程序员水平高低的门槛了。这个时候,考察一个程序员的价值除了其技术的深度和广度之外,是否能够看到技术之上的商业价值,是否能够拥有商业的意识便变得更为重要。这时,如果作为一个程序员,仍然整天为了获得了某个技巧而炫耀的话,相信无法取得更大的成绩。

以上《一个平庸程序员的自白[1]》一文,由编辑精心撰写而成,希望对您的职业规划有所帮助,更多精彩请访问“程序员个人简历模板”专题!

相关文章

最新更新