或许上面写的比较偏激,但真的是很普遍,我想告诉你们,你们虽然只是负责一个模块,但无论如何,请要知道你的项目到底是什么,如何运转,哪些地方好,哪些地方不好,因为这是对你自己的一个提升,也是对公司的一个负责。说到负责,我不得不说责任感,很多人就是缺少了责任感,以为完成了任务就可以了,但你要知道,你的公司或许等的不是你的完成呢?

请您拿到项目需求的时候,分析一下您要做的东西,用你敏捷的思维想一下,该如何去做,还请您多想想下一步,如果扩展了,我要改哪些地方,最重要的是,请您想想,这个任务对公司是否有利,或许你会说你只是个程序员,我没有权利去改变任务,没有错,你是个程序员,首先请你完成你的任务,在完成任务的同时,想想任务的完成对公司的运营是否起到反作用,因为有时你会比你的老板更了解项目对公司的利弊。如果你真的觉得不太好,不要怕,提出你的观点,但一定要想好你观点的描述,尽可能的表达清楚,让你的老板知道你的意思,因为老板他不一定懂技术,所以一定要白话一点。如果你的观点是正确的,你们老板也听明白你的意思了,那样你们老板会更加的器重你,而不会不可理喻的让你完成他所要的东西了。毕竟这是对他好的建议,也是对公司发展好的建议,如果你的观点不好,那样老板也会给你一定的提点,何乐而不为呢?

下班后,请你抽空想想公司的发展吧,因为你是公司中的一员,公司发展前景好也代表着你的发展前景好,如果你的想法给公司带来了好的前景,那也是对你能力的一种肯定。

最后说说面试,我也经历过很多面试,同样也面试过很多人,刚开始也会为工作着急,到处找面经,但最好的面经是无法从其他地方找来的,因为面试是一个展示自己的机会,而不是一再的ctrl+v 。刚开始我也会紧张,但马上,我调整了自己,每次面试就当自己一种磨练,一种交流、沟通、展示的机会,随后的几次面试都比较成功,再随后的几年,我回到了老公司进行面试,显然他们对我的能力已经是一个肯定了,最后我还是没有选择他们,因为我回去面试只是为了看看公司的发展进行的如何了,因为这一切也有着自己的一份努力。最好玩的是一次邮件面试,对方给了很多题目,大多是网上都有的,我也没有baidu,用自己的想法回答了所有的问题,并提出了很多意见,没想到对方回错了邮件,把他给人事的邮件发给了我,貌似是说面试还可以,就是工资高了点之类的话,我也懒得继续往下看,回信给对方,发错邮件了。过后不久收到对方的面试通知,更确切的说是offer,不过在他电话中我直接给回绝了,因为我已经在一家自己喜欢的地方就职了。

我爱我的公司,我爱我的程序,我也爱我的老婆和家人,因为他们给了我快乐,也给了我支持,让我能更全身心的去投入到代码之美中,我更相信公司能异军突起,成为IT界的领军人物,因为我看到了一群为公司孜孜不倦,辛苦能力的同事,我很爱这种氛围,我相信我们的努力一定会给自己带来收获,就算没有收获,我也没有任何怨言,因为我沉醉了,因为我快乐,因为我是个快乐的程序员。(工作计划之家 FZ76.cOm)

zc530.Com小编推荐

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


4、对代码的信任

作为项目管理者,你怎么相信他们的代码。有些程序员,你可以对他们说:我星期五就要结果.--星期五到了,你收到了这样的Email:代码我都已经检查过了,现在就等着测试了。你很放心,只会有很少的瑕疵在质量确保的团队被查到。当然,还有些轻率的例子,一些程序员在邮件里是这样说的:我还没弄完,星期一上午我会最先完成它.你不太确信这东西,发现很多Bug,很长时间基本上不能用。又得花上几个星期清理代码中的Bug.

关键:你对一个开发人员越有信心,他离成为一个伟大的程序员的距离就越近。想象你是你的管理者,如果他并不担心你的代码,会给你多少信心和勇气!

5、对方案的信任

和对代码的信任是一回事--如果你手上有伟大的程序员,你就会对解决方案有信心。这些程序员同时也是伟大的建筑师。他们剖析整个问题,指出问题需要怎样去解决。这就不只是用伟大的代码编程的问题了,很大程度取决于你怎样构筑解决方案。这是关键,而且会让你在软件世界里出类拔萃。

6、满足客户需求

一天下来,你写出了最棒的代码、用了最好的框架和最好的解决方案,但这真的能迎合用户的需求吗?恐怕根本不是那么回事儿。你搞砸了。尽管现在多次失手,一个伟大的程序员还是会正中靶心,找出客户需要的,给用户逐步展示他们所需要的无bug的最终版本。需求正中靶心的同时,用户满意了。

7、不断升级

伟大的程序员会积极主动地把自己的技术升级。他们对知识的态度就像饿猫见着了牛奶,他们从不用上级催促给自己设定目标、不用经理要求他们完成任务,因为他们自己就已经安排OK了。

他们发现自己想要参加的大会就会给公司写Email本人非常想参加今年的Tech-Ed大会。我将用心研习,并对作出贡献。我预计这可节省金钱/其他原因.如果可行,不知公司是否帮我支付此行?如果我收到这样的邮件,我不仅会帮他支付参会费用,他的路费我也会全程买单。

伟大的程序员们永远会关注例如。net用户组或Java用户组的所有用户群体。他们参加本地的技术会议,并从中汲取知识。你会看所有最新博客和最新的杂志吗?现在列出你最喜欢的前5个开发博客。你能做到吗?你应该像参加基督教青年会那样轻松做到。做到这些,可以很好的帮助你延伸你的思路!你将会不断获得更好的点子!你会得到更好的回报!

程序员:你是要学历还是要经验[2]


第三部分,未来职业生涯规划、家庭环境分析、例如经济状况,家人期望等。感谢您阅读《程序员:你是要学历还是要经验[2]》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。

随便你说吧,迪恩,我说。我不是说他的道路不对,我只是想说我和斯坦认为获得大学学位还是比为了兴趣而退学要好些。

斯坦给我帮腔:无论公平不公平,在咨询业里你的简历是会被潜在客户拿来严厉判断的。高学历不仅可以为你争取到更多的服务合同,而且也能够让你更容易拿到更高的工资。(你知道,自从我进入管理层之后,我是多么的想念这些坦率的交谈。)

房间里的温度不断上升。你肯定你的薪水比我高,斯坦?乔说。即使是这样,你觉得这合不合理呢,只因为你上过一大堆无关紧要的课程?

斯坦试图保持冷静,但已经有些手足无措。我只是说你可能会看上去更像是个围着电脑转的蓝领程序员,而不是可以坐到办公桌上的白领开发者。而且这也会影响你的前途。轮到我运用人际沟通课上学的东西来维护和平了。

每个人都会做出贡献的。我们该牢记的是我们建造的东西,历史上所有的奇迹都是蓝领工人搭建的,建造或修整伟大的事情,这就是我们做的。 我急忙插话说。

迪恩在一边笑了,是啊!当个蓝领没有问题。不过,蓝领意味着体力劳动,我不认为我们中有哪个人在编写软件时会汗流浃背的。好吧,也许你会,埃里克。他继续笑着说。

乔并没有被逗笑,你想说我没有学位就是蓝领阶层吗?你知道我认为谁是蓝领?那些在数据中心的技术人员。他们有许多是自学拿到管理认证的,他们的手被服务器和电线弄的脏兮兮的,而我们干的是设计和编写复杂的代码。

迪恩跳了起来,哦,难道保护数据中心的工作就不复杂了?你最好不要让他们听到,要不然你的下一个请求将没人搭理。

每当回顾起这些,我都会感叹当时的我们是多么的不成熟。我不记得我们的谈话中的每一个字,但差不多是这样的。每个人都觉得自己的软件教育更好,都觉得能编写软件就会高人一筹。

经过了这么多年(真是很多很多年),我才体会到使用不同的方式来教育开发者的好处。事实是,尽管我们之间的分歧,我们作为一个团队在一起工作的非常出色,开发了许多优秀的软件项目。

比受到的教育更重要的是,开发者对编写软件的热情,最好的开发者靠这东西来生存。他们整夜的阅读有关最新的软件趋势,永不会满足,他们总想成为领先的人,即使他们的经理会让他们适可而止。虽然这不是成为一位了不起的开发者的要求,但这有助于更全面的发展,不仅对你的工作,也对你的生活。

何谓程序员?何谓中国的程序员?


程序员,曾经是很多人尤其是计算机初学者为之崇尚的一个职业,仿佛就是理想、激情和事业的象征,从此就开始了IT白领人生。计算机技术发展之初,几乎就是一个个人英雄主义时代。一个天才的程序员,几乎就可以主宰一个计算机时代,创造出无数奇迹和梦想。

今天,计算机技术的发展日新月异,技术朝着愈加复杂和简单的两个看似矛盾其实一致的方向发展。计算机技术越加普及,无数非计算机专业的人群,出于爱好或者生存的需要,也加入了这个程序开发大军,并且都称之为程序员。

软件技术的发展,已经进入了一个大分工、大整合的时代,由此导致了软件开发工作的分层和分类越加细致复杂,同为程序员,彼此之间工作的技术含量可以说有天壤之别。系统软件、应用软件,是一个大的分水岭,几乎大多数程序员,都在应用软件这个层次进行开发,国内的程序员更是几乎全部如此。

既然是应用软件,就必然要和实际应用结合,而实际应用,是非常复杂多变的,尤其是具有中国特色的国内应用。于是乎,大多数程序员都在为开发应用层面的软件忙得不亦乐乎,财务软件、ERP、CRM、OA等等,几乎成了国内软件开发的主流方向,更不用说电信、石化、铁路、电力等具体行业应用软件的开发了,这些早已被称为项目了。国外的应用软件,除了以上业务应用之外,尚且还有像CAD、3D等专业领用的软件,具有一定的核心技术。

很多工作了多年的程序员们,在回首往事的时候突然发现,自己依然是一个辛苦的打工者,一个IT行业的苦力。反思一下,我们这些自认为程序员的工作者,其实是在核心技术的外围做一些表面工作,和那些非软件开发人员相比,我们觉得自己有技术,其实我们到底掌握了多少核心技术呢?现在的很多程序员,连数据结构、编译原理、操作系统等这些基本的知识都掌握得模棱两可,天天跟着老外的屁股后面追捧所谓的新技术、新框架。其实,又有多少是我们自己的呢?作为JAVA程序员,经常听到很多人自称精通Spring、Struts、Hibernate等主流框架,并有大型项目的开发经验,其实我们只不过比那些初学者多干了几年,使用这些框架更加熟练而已。国内软件行业的面试经常有此类现象,一个面试者可能这次面试不合格,但是他回去看一下书之后,再来面试,很可能就通过了。为什么?因为我们的面试太初级,太表象化。

我们经常接触IBM、微软等公司的面试,他们一般情况下是不会考核面试者具体掌握了什么框架、什么语言的,一般都是考核的面试者最基本的逻辑思维能力和分析判断能力。这也说明了,同为程序员,其间的差别是如此之大。

作为一名程序员,尤其是国内的程序员,应该对自己有一个清醒的认识,不要被表面的感觉所迷惑。到了这个时代,不是说程序员已经失去了光彩,而是我们所从事的层次,技术门槛已经大大降低,很多人处于同质化竞争。

怎么办?很多人说软件行业是个辛苦活,国内的很多软件公司更把程序员当牲口使用。其实,根本上还是怪我们自己没有很好的反思和调整。一方面,如果对技术真的有浓厚兴趣和激情,那就不妨向软件的底层核心技术迈进,另一方面,如果觉得自己真的缺乏这方面的潜力,那就努力适应国内环境,实现技术与应用的完美结合,争取向公司的中高层发展,如果不给与机会,那就自己创业,选择好技术和市场的切入点。

此外,一名优秀的程序员,一定不能是一个唯技术论者,如果持这样的观点,即使专心做个技术专家,也会存在发展障碍。微软的例子,sun公司的例子,都生动地说明了技术与市场的辩证关系。

当然,每个人的成败观是不一样的。如果始终把技术追求放在首位,追求技术完美的境界,并以此为乐,也未尝不是一道美丽的风景。

程序员的时空定理[2]


营销法略的法,将产品营销拆解为面向机构客户采用一目标(CUTE)、二手段(建网10-30-60法则、达情1-3-6法则)、三宗案(赖式、袁式、牟式)的国情式流程,面向大众客户采用美式营销的普遍真理(6大要素、经典8P、当今新法)与中国市场的具体实际(本土特征、本土各P)及IT特殊的鸿沟现象相结合的差异定位专业式流程,以及不收客户的钱还能赚钱的出奇守正的第三方流程。

关于为将者的产品人修炼,智(坐知立行)、信(合作共赢)、仁(客户至上)、勇(勇于创新)、严(品质保障)五大素养,在成就企业产品的同时,也成就自我人生的成功。

程序员第二定理,不妨俗称为看远定理,或时间定理,即程序员应就职涯之世论技术之时.古人云,不谋万世者不足以谋一时,这个世就是职业生涯的全景,这个时就是当前的技术实现。反映到程序员需要做的心智模式的第二个战略转变是就职涯(世)论技术(时).

程序员可以选择职业路径,始终做工程技术,其职涯大致的到达路径是研发、技术方面的首席技术官CTO或工程、项目管理方面的工程管理副总VP Engineering;也可以选择职业路径二,从技术端向商业端走,其职涯大致的到达路径是首席产品官CPO、首席营销官CMO或销售副总VP of Sales.一般情况下,这几个职务中能到达CEO的只有从CPO、CMO或VP of Sales上去,从CTO和VP Engineering一般上不到CEO,即CEO更偏向商业,这大抵也是商业驱动技术的写照,美国的CEO九成以上是从有过销售经验的营销或产品人员中产生。

长江后浪推前浪,创新的技术、产品和企业不断涌现,IT行业最大的敌人是周期性的创新衰减,或曰创造性毁灭,即你可以通过创新毁灭别人,新企业也同样通过创新来毁灭你,如微软之于IBM、Google之于雅虎,以及现在打得火热的微软和Google.

企业如斯,人亦如是。IT业人的最大的敌人是因年龄增长引发的激情与创新的衰减,随着年龄的增大,谈婚论嫁、成家生子,你会发觉刚毕业时整晚都可以呆在电脑前的激情逐渐消失了,曾经被自己嘲弄的没有志向的朝九晚六之人,现在又多了一位,而在你心有旁骛之时,长江后浪滚滚而来,就要把你拍死在沙滩之上。

企业应对周期性衰减有三类方法,第一类是依靠技术性垄断延长生命,如微软;第二类是阶段性自我颠覆,如IBM的老沃森、小沃森、郭士纳等领导的三次战略转型;第三类是通过兼并完成自我重塑,如思科。

IT业人亦然,第一种,用人单位就只有你能搞定这个产品或技术,地球离开你就不转,你就是微软,号令天下,莫敢不从,倚天不出,谁与争锋;第二种,跟着新技术潮流,不断学习,与时俱进,完成阶段性的自我颠覆,如原来在DOS下编程,后来Windows,再后来。Net、SOA、云计算等;第三种,从技术领域通过兼收并蓄其他领域的知识和技能,完成自我重塑,如成为PM、成为产品经理、成为营销业务人员。

不谋全局者不足以谋一域,不谋万世者不足以谋一时,这就是程序员的时空定理。

程序员的“四高”


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

21世纪需要的IT人才具有5个鲜明的特点:

四商兼高(IQ、EQ、AQ、SQ)

21世纪的企业强调全面与均衡。一个人能否取得成功,不只看他的学习成绩或智商(IQ)的高低,还要看他在情商(EQ)、逆商(AQ)、灵商(SQ)这四个方面是否达到了均衡发展。

高智商(IQ,Intelligence Quotient):高智商不但代表着聪明才智,也代表着有创意,有很强的学习潜质,善于独立思考和解决问题。

高情商(EQ,Emotional Quotient):高情商是具有很好的认识自我、控制情绪、激励自己及处理人际关系,参与团队合作等相关的个人能力。在高级管理者中,情商的重要性是智商的8倍。

高逆商(AQ,Adversity Quotient):高逆商是指一个人具有很好的面对困境时减除自己的压力、渡过难关的能力,包括逆境态度、减压力、抗挫力、积极乐观向上的心态,摆脱逆境推动人生发展的能力。

高灵商(SQ,Spiritual Quotient):高灵商代表有正确的价值观,能否分辨是非,甄别真伪。那些没有正确价值观指引、无法分辨是非黑白的人,其他方面的能力越强,对他人的危害也就越大。

从事热爱的工作

在全球化的竞争之下,每一个人都要发挥出自己的特长。而发挥特长的最好方法就是根据自己的兴趣、爱好来选择工作--因为只有做自己热爱的工作,才能真心投入,才能在工作的每一天都充满激情和欢笑。这样的人才是最幸福和最快乐的人,他们最容易在事业上取得最大的成功。

融会贯通

仅仅勤奋好学,在今天已经远远不够了。因为最好的企业需要的人才都是那些既掌握了丰富的知识,又具备独立思考和解决问题的能力,善于自学和自修,并可以将学到的知识灵活运用于生活和工作实践中,懂得做事与做人的道理的人才。

创新与实践相结合

从根本上说,价值源于创新,但创新只有与实践相结合才能发挥最大的效力,为了创新而创新的倾向是最不可取的。反之,在实践过程里,我们也不能只局限于重复性的工作,而应当时时不忘创新,以创新推动实践,以创新引导实践。只有这样,我们才能不断研发出卓越的产品。

跨技术领域的复合型人才

21世纪是各学科、各产业相互融合、相互促进的世纪。现代社会和现代企业不但要求我们在某个特定专业拥有深厚的造诣,还要求我们了解甚至通晓相关专业和领域的知识,并善于将来自两个、三个甚至更多领域的技能结合起来,综合应用于具体的问题。

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

====我的建议答案

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

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

3。傅利叶变换

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


职业规划是对职业生涯乃至人生计划的过程,职业生涯规划的好坏可能将影响整个生命历程。感谢您阅读《如何从优秀的程序员成为伟大的程序员[5]》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。

15、组织技巧

把所有事情整合在一起的最关键要素是组织。你可能是世界上最好的程序员,但如果你不善于组织你所做的事儿,你的工作将陷入瘫痪,最终丧失优势。伟大的程序员保持自己工作平台的整洁有序,保留所有的笔记并调理清晰。他们标出自己的会议日程表。他们有专门的收件箱给日程邮件、会议和新任务分类。他们保留文档并能在需要时迅速找到所需。

额外要提到的:激情

伟大的程序员如果没有热情,那么他的工作也并不伟大。好的程序员有了热情来对待他的工作、方案和团队,那么他比伟大的程序员还要伟大。

在回顾的时候,我用这些标准来评判我的开发团队。我给我的团队尽可能最好的环境,作为回报,我想要他们都成为最伟大的程序员。你可以用这些标准来评判你的团队,或者你本身就是一名程序员,请用这张列表来尽可能地改造自己来超越同侪。

备注:Generics是程序设计语言的一种技术,指将程序中数据类型进行参数化,它本质上是对程序的数据类型进行一次抽象,扩展语言的表达能力,同时支持更大粒度的代码复用。对于一些数据类型参数化的类和方法来说,它们往往具有更好的可读性、可复用性和可靠性。在设计集合类和它们的抽象操作时,往往需要将它们定义为与具体数据类型无关,在这种情况下,使用Generics就是非常适合的。

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


职业规划怎么写,相信很多朋友们对这个问题很感兴趣,下面给大家介绍一下。第一部分,前言即总论;第二部分,自我分析,包括业余爱好、性格、价值观、专业技能等;

我的生存之道

尽管我的编程技能不尽如人意,我仍然是一个非常成功的开发人员。这里有一些我多年来学到的诀窍,以及如何我作为一个平庸程序员,发挥出最佳平均编码技能水平的生存之道:

▲ 明确要求--我会预先得到完整、精确的系统要求清单。如果你直接开始编码就意味着你没有针对系统设计的要求来进行。

▲ 分析和设计--我获得了分析和设计权。一名普通程序员获得了分析和设计权,就拥有了一个超越一名伟大的程序员的优势。

▲ 项目计划--坦白来说,我早期职业生涯中没有用过正式的项目计划,一直到我加入了CSC,不得不使用更多的正式文档编制技术,从而开始使用项目计划。由此我充分认识到使用经过慎重考虑后的项目计划也是平庸程序员的一个优势。

▲ 经常翻阅手册、指南--我总是备有手册、指南以供不时之需。我也研究了其它的参考材料。

▲ 拷贝-粘贴程序员--我不介意承认自己是一名拷贝-粘贴程序员。多年来,我写了许多可以在新项目中重复使用的代码。因为我至少花时间写了一次代码,所以我对这些代码如何工作略知一二。在工作中我从不拷贝其他人写的代码,并且我从不使用我在其他公司写的代码。黄金规则和版权法都适用于知识产权:您不得复制和使用别人的代码,除非明确允许,或者你可以得到特别的许可。

▲ 毅力--我永不放弃,我一直相信自己能完成任何编程任务。

▲ 工具--当我需要一台更快的电脑但这又不在预算之列时,我发现了一个经理愿意用他们的一部分预算资金为我购买。你可以通过乞求、借用,或交易来获取所需工具,从而完成自己的任务,要经常向你的经理提出自己的要求;只这些要求是合理的,一个优秀的经理会尽最大努力找到一种方式来获得软件,硬件,手册,或者你所需要的帮助。

▲ 手气好(Serendipity)--也被称为代码一写就好策略。有几次我像一个初级程序员那样写了代码,而这些代码运行得很好。我把它比作是国际象棋,你在下棋的过程中突然发现,自己走两步就有将死的机会。这不是编程应有的方法,但由于我在检讨自己的职业中的罪过,我不得不纳入此项。

底线

我要做一个最终坦白:我不喜欢被看作是次等的团队成员。我见识卓越,而幼稚的程序员却真的相信:不能写出先进代码的人对团队和公司来说毫无价值。这些精英认为平庸的程序员能力有限,不足以生产高品质的代码,几乎总是犯错,令人不快。有个观念令我感觉既可笑又惊讶:如果你不能 ________(填空),就不是优秀的程序员。

你不必成为一个出色的程序员或伟大的开发者,特别是正在开发商用系统的时候。没错,我是一个平庸的程序员,其主要原因是我从来不需要成为一个伟大的程序员。

我不是纵容平庸。不论做什么,都要尽力做好--包括编程。最好的代码可能难以确定,但越高效的代码可能也越难维护。可以说,任何可以完成工作的代码就是好的代码。代码是像索玛立方体(Soma cube),有240种途径可以解决索玛难题,同样,也有许多代码编写方法可以用来完成任务。底线就是尽可能做好工作--这是任何一个平庸的程序员都可以做到的。

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


在技术的选择上,是敏捷敏捷再敏捷!数据库尽量db4o,前台尽量sl/flex(面向最终客户的就不能选择sl).工具软件尽量用C#开发。尽量只做自己擅长的,不做别人擅长的。

我有一个特点,就是会一大票语言,能用来干活的就有C,C++,C#,Java,Python,matlab,actionscript,javascript,tcl.去上班的话,这是缺点--泛而不精。自己干的话,这反而成了优点了。因为我接的项目,很多属于偏门项目,这些项目往往都有开源的实现,但这种实现,要么只有C版本,要么只有Matlab的,要么只有Java的,会这些语言可以最大范围的参考,降低技术风险。缺点在不同环境下可以成为优点。

第五关:团队

通过前面的不断切入,形成了一系列案例,也积累了良好的信用,业务量是翻番的在长,最后自己的时间成了瓶颈。前两天小试了一把,谈了5个项目(2个flex,2个图像处理,那2个flex项目的核心也是图像处理),4个有合作意向,自己干不完,没办法,只能选择1个。

这就到了第五关了--一个人干不过来,得团队了。

但我前面说过,本地是人才沙漠。我的观点是宁缺勿滥,仔细挑选,从头培养。俺的挑选标准是:有激情、品德要好、数学基础要好、有自学能力。目前在带徒弟,看成长情况怎么样。

不着急,用不着太多的人,培养团队的同时开始摸索渠道。那个也得时间。

第六关:渠道

我最终想做的是产品。而在偏远地区做产品,想做成功,渠道和推广非常重要,不然的话,就算做出来了,也只能拿小头。在国内,还要考虑盗版因素。我现在只是有大致的产品方向,做也是玩票性质的,目的是摸索渠道和商业模式,想摸摸国内的和国外的两种市场。国外的只有试探性的探索。国内的,嘿嘿,前面的开发已经形成了一系列的推广工具了。

第七关:产品

做了这么多年项目,累死了。最终的目的还是产品和平台。我的征途是星辰大海(搞技术的,也得有技术的浪漫)目标是5-10年后,互联网3D化之后的虚拟现实(切入点?俺已有一个初步考虑的切入点).短期(5年内)是开发一些工具类型的产品和推广平台。

我是学材料的,在纳米材料界有一个名言--Build The World Atom By Atom.那么,在可见的未来,虚拟世界就是--Build The World Bit By Bit. 协议、图像、机器视觉、3D、语音,正是构成虚拟世界的因素,前面的种种,都是为这个做铺垫。未来的制造业将是分子制造,于是Atom和Bit将会碰撞--Build The World Atom By Atom, Bit By Bit!

但还是那句话,只做小,不做大,做点做线不做面。

什么程序员30岁之后转行之类的鬼话。俺到今年,才开始感觉进入了程序开发的大门,写程序时开始有一种美感,有那种几十人骑着战马冲击奥山大桥的壮烈。做一辈子的技术又何妨。

上述路径相当保守,指导思想不是胜利,而是避免失败。无恃其不来,恃吾有以待之,无恃其不攻,恃吾有所不可攻也。

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


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

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

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

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

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

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

2、阐明问题

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

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

3、怎样着手解决问题

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

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

2025-03-26