程序员个人简历模板。

第三部分,未来职业生涯规划、家庭环境分析、例如经济状况,家人期望等。感谢您阅读《从糟糕到不朽 程序员的八个级别[1]》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。

在面试时,你可能会被经常问到在未来5年,你想干什么?,这可能是一个比较难回答的问题。在中国,答案一般可能会是Team leader,Manager,或是Architect,Specialist等,在中国,大家可能更多地觉得manager会是程序员的下一个目标,可是在国外,经理和程序员可能是两个不同的分支,Architect或Specialist 比经理来说更牛、代遇可能也更好,因为这些人的智商需要的更高。

在著名的Coding Horror上出现了这样一篇文章,我把其转到这里(我并没有完全一模一样的翻译,我只不过是用自己的话转述罢了),也让大家看看国外人的思考方式(当然,这篇文章只是分析程序员的级别而不是工种)。正如其作者结尾时所说,这八个级别并不是很严格的,其只不过是一种想法,希望能给大家另一种思路。

第八级 不朽的程序员

这一级别是程序员的最高级别。你的代码比你的生命活的还长,当你死后,你将会成为整个历史的一部分。其它程序员对你顶礼膜拜,或许你会获得计算机最高奖图灵奖,不然就是一系列极其影响力的论文,再不然,就是发明了一些可以影影响整个编程界根基的技术。你拥有的不仅仅是在维基百科上的一个词条,还会有一个专门的网站来研究你的生平和你的工作成果。

比如:Dijkstra, Knuth(编程艺术的作者),Kay

第七级 成功的程序员

这类程序员一方面很著名,另一方面在商业上也很成功,他们影响了整个工业界。他们似乎决定了工业界中发展的方向,这些人,自己的编程能力固然了得,但估计他们的Business方面的能力应该大于他们编程的能力。(我个人认为Linus应该属于这一类)

比如: Gates(比尔盖茨), Gates(Doom和Quake 3D游戏), DHH (Ruby on Rail的创建者)

第六级 著名程序员

这一类的程序员,在编程圈子内比较有名气,但是他们的这种名气并不一定能给他们带来某种利益。名气是一件好事,但是成功可能更好一些,这类人一般正在给一个很著名的大的公司,或是是一极具影响力的小公司里工作,或者正在创建自己的事业。无论怎么样,其它的程序员听说过你的名字,并以你为榜样在效仿着你。

第五级 骨干程序员

这类程序员一般来说都是公司里的骨干份子,他们担任着公司内最重要的编程角色,在公司内部,他们受到老板和其它程序员的尊敬,他们不会失业,因为他们随时都可以很容易地找到工作。他们工作过的公司都会因为他们而有所发展。

zc530.cOm编辑推荐

从程序员到软件工程师[1]


看了程序员系列文章,颇多同感。做为一个从业13年,一直做软件开发的人,我想给那些已经、将要和有志于走上这条路的朋友一点点忠告。

首先,说说程序员和软件工程师。虽说都是编程的干活,但是还是有一点高下区别。

主要说来区别是程序员programmer是将程序(已经有流程,伪代码或设计模板)写成代码;需要熟练掌握至少一门编程语言。而软件工程师则要将目的描述成程序语言并实现的能力。例如将数学算法、自然语言、思维模式描述成程序算法,程序流程/类或/和人工智能,并写成代码的能力。

对初入行的人,当然重在语言,要做一个合格的程序员,首先要熟练掌握语言。包括语言特性和实现的能力。例如使用尽量中文说的面试题,就要求面试对象掌握C++中的类的封装;构造函数的重载和运算符重载。

做过一两年后,要想继续吃这碗饭就必须提高自己,首先当然是深入了解语言,特别是语言的思维方式,编译器的工作方式和常用设计模板。就拿C++的多态性来说,很多公司面试就会问什么是虚函数/纯虚函数(思维方式)?用C如何实现函数重载(函数指针和了解编译过程)?接口类/工具类/工厂类和 Sigleton类的实现(常用设计模板)。另外还有一大块就是内存管理了。

如果能做到深入了解语言本身,那么恭喜你,你现在Title至少是高级程序员了。

在对自己的语言有信心后,下一步就想一想自己要想哪方面发展。是管理方面(项目经理)还是技术方面(软件工程师)。既然这里讨论编程,我们就先不考虑项目经理。想发展为一个软件工程师其实也有两条路。一条是走系统软件工程师或者叫架构工程师的路;另一条就是算法工程师。

在国内的朋友我建议走架构工程师的路。要求就是知识面广,对整个系统熟悉,能很快了解和分析客户/设计需求,很快估计工作量、风险和所需要的资源(承担相当部分项目经理的任务),能根据现有技术人员储备提供一个解决方案。当然还需要一定的表达能力和文档写作能力。例如我当年走访某省农行,和对方聊了银行卡和医院医疗卡的联网,当天晚上就和市场部的人合作,搞了一个通宵,写出了60页的技术方案和外加40页的基于此方案的标书。

一般来讲,要做到对整体系统的深入了解,没有两三年的时间是做不到的。所以给国内程序员的建议是不要频繁跳槽,尤其是不要频繁跨行业跳槽。踏踏实实地将本行业的软件吃透,最好每个部门或模块都工作过。如果有这个想法,一般情况下你可以和项目经理沟通,通常他们会鼓励你这样到各个部门/模块工作。

我出国后,发现情况有点变化,由于语言和文化的区别,对自己走系统工程师的路没有很大的信心。只好转向走算法工程师的路了。

确定了这条路后,突然发现自己的数学能力太差了。不得不重新恶补线性代数,概率和数理统计等高等数学。同时将《数据结构与算法:C++版》好好从头到尾读了一遍。然后终于蒙混到了一个职位。

当时第一个任务就是在一个嵌入系统中写一段程序将bmp压缩为jpg。各位可能会问了,这个在网上满大街都是源代码,为啥还要自己写呢?其实这就是我不太建议国内工程师走算法这条路的原因。除非你是数学大牛,有自己原创的算法。否则在国内实在没有算法工程师很大的生存空间。但是在国外有很大的不同,稍正式的公司基本上都禁止使用open source。因为open source也是有版权的,有的是不能商用,更有的copy left是那些公司碰都不敢碰的。因为copy left要求你使用了他的代码,你也必须公开你的代码。

当然,我们可以看那些open source,然后自己重写。不过相信我,通常情况下如果你不是想简单做些变量替换就交差的话,看原代码不如看这个算法文档本身。

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


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

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

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

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

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

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

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

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

从程序员到软件工程师[2]


当时看算法本身的文档,然后又回头看线性代数,终于理解了算法,并用程序表达了出来。由于是嵌入式用的,又花了大量时间进行算法优化。

后来跳槽时终于尝到甜头:

1。薪水高,基本上一应聘就是Senior的职位

2。稳定,这个一般大街上招一个程序员是做不来的

3。机会多,这个怎么说呢,反正只要是大公司招人,象微软、Google等,除了问一些语言本身的问题外,基本上就是算法和数据结构的问题。

通常面试那些时间你写源代码是来不及的,基本上就是写伪代码。或说明你的算法基础和思路。答的好一两句话就解决了。

想走这条路的朋友,我首先建议好好读读《数据结构与算法:C++版》,里面所有常用算法和经典算法及数据结构必须烂熟。其次,建议将大学课本找回来,几本高数好好复习复习。《线性代数》《概率和数理统计》《微积分》《常微分》等等。

我们不是大牛,基本上创造不出新算法,但是我们能够将别人的算法实现或者能把一个具体问题分解成已知的算法,那么你就是一个很不错的算法工程师了。

说实在话,语言只是工具,是很容易掌握的。99年2000年泡沫时期,不是很多人突击那么三个月就可以上路做programmer么。就象刀法是很容易学会的。要应用精熟,也不过是长时间的积累而已。

对语言的理解实际上就是对刀法的领悟,有人是顿悟。但是多用总是会渐悟的。

最重要的是基础,就是数学能力,那可是内功。可以这样说,你要想真正和其他程序员拉来差距就在这里。

我朋友的孩子想走计算机编程这条路,考大学我就推荐考数学系!

再有就是多做那些大公司的面试题,一是锻炼自己的大脑,二是熟悉这些算法的应用。

好了,现在能想到的就这几点,这里给几个面试的例子,看看能不能用最简单的描述解答

1.如何生成一组正态分布的随机数?

2.有一个二维迷宫,如何找到出口路径?

3.有数据库存储一股票每五分钟的实时报价,如何生成每小时,每天,每周的股票价格变动曲线?

====我的建议答案

1。生成二维随机数,只取落在正态分布包络线内的数

2。二维连通图深度优先遍历

3。傅利叶变换

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


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

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

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

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

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

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

2、阐明问题

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

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

3、怎样着手解决问题

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

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

一个平庸程序员的自白[1]


我一直以编写代码为乐,起因并不是我精于此道,而要部分归因于它是一大挑战。我发现没有什么比指挥个人电脑在显示器上显示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)

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

程序员的时空定理[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]


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

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

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

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

第二个问题,关于学校里面开设的课程,大家可能会觉得不够时髦,不够酷。净是一些计算机组成原理,数据结构等老掉牙的课程,远没有什么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]


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

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

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

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

第一关:自信

先说说我这个城市。这是一个什么样的城市呢?依山傍水,适合生活。几乎没有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]》一文,由编辑精心撰写而成,希望对您的职业规划有所帮助,更多精彩请访问“程序员个人简历模板”专题!