第四级 一般的程序员
这类程序员的优点在于,他们很清楚地意识到了自己可能这一辈了也无法成为一个伟大的程序员。天才只是很少的一部分人。如果这类程序员有一些商业和人员管理能力,他们也会在公司里相当的成功。认识自我并不简单,这并不是一般人能做到的,能够认识自己的人已经是很不错了,找到自己的长处,并像那个方向努力,一定也会很成功的。因为在公司里,并不只有程序员一种职位,经理,PM,流程,SQA,技术支持,售前,管理员,测试人员等等都可能会让这类程序员有更为广阔的天空。
第三级 业余的程序员
这类人员不管是不是计算机科班出身,基础如何,他们对编程有着特殊的爱好,他们可能会是一些很有前途的学生或实习生,也许他们可能会给开源做一些贡献(比如说提供一些语言包或是一些插件什么的),有时候,他们也会写两个小工具软件放在网上让人下载,也行有些时候就是为了玩玩而开发一些小程序而打发一下他们空闲的时间。他们完全是靠热情和承诺来编程。兴趣永远是最好的老师,也是最好的一件事,因为兴趣而引发的热情通常会让这些程序员成为骨干程序员。
第二级 不知名的程序员
这一级的程序员是典型的为大众所知的程序员,他们有一定的编程能力,但并不出众,也许他们会在一家大公司里工作,只程序员只不过是他们的工作而已,并不是他们人生的全部。当然,这样的程序员也挺好的。必竟,平凡地人还是大多数,平凡地活着也没有什么错的。
第一级 糟糕的程序员zc530.com
这类程序员不知道为什么就走上了编程这条路,他们甚至连最基本的编程经验和能力都没有。所有被他们碰过的事情都需要他们的同事重头再返工一遍,他们根本不就是程序员。程序员这个职位对于他们可能就是一个错误。
正如原文作者所说,这些级别并不是很严肃的,也并不是每个程序都会去思考一下自己的未来,但是这些级别可能会让你去想一想从事程序员十年/二十年/三十年后,自己可能变成什么样。
扩展阅读
当时看算法本身的文档,然后又回头看线性代数,终于理解了算法,并用程序表达了出来。由于是嵌入式用的,又花了大量时间进行算法优化。
后来跳槽时终于尝到甜头:
1。薪水高,基本上一应聘就是Senior的职位
2。稳定,这个一般大街上招一个程序员是做不来的
3。机会多,这个怎么说呢,反正只要是大公司招人,象微软、Google等,除了问一些语言本身的问题外,基本上就是算法和数据结构的问题。
通常面试那些时间你写源代码是来不及的,基本上就是写伪代码。或说明你的算法基础和思路。答的好一两句话就解决了。
想走这条路的朋友,我首先建议好好读读《数据结构与算法:C++版》,里面所有常用算法和经典算法及数据结构必须烂熟。其次,建议将大学课本找回来,几本高数好好复习复习。《线性代数》《概率和数理统计》《微积分》《常微分》等等。
我们不是大牛,基本上创造不出新算法,但是我们能够将别人的算法实现或者能把一个具体问题分解成已知的算法,那么你就是一个很不错的算法工程师了。
说实在话,语言只是工具,是很容易掌握的。99年2000年泡沫时期,不是很多人突击那么三个月就可以上路做programmer么。就象刀法是很容易学会的。要应用精熟,也不过是长时间的积累而已。
对语言的理解实际上就是对刀法的领悟,有人是顿悟。但是多用总是会渐悟的。
最重要的是基础,就是数学能力,那可是内功。可以这样说,你要想真正和其他程序员拉来差距就在这里。
我朋友的孩子想走计算机编程这条路,考大学我就推荐考数学系!
再有就是多做那些大公司的面试题,一是锻炼自己的大脑,二是熟悉这些算法的应用。
好了,现在能想到的就这几点,这里给几个面试的例子,看看能不能用最简单的描述解答
1.如何生成一组正态分布的随机数?
2.有一个二维迷宫,如何找到出口路径?
3.有数据库存储一股票每五分钟的实时报价,如何生成每小时,每天,每周的股票价格变动曲线?
====我的建议答案
1。生成二维随机数,只取落在正态分布包络线内的数
2。二维连通图深度优先遍历
3。傅利叶变换
4、对代码的信任
作为项目管理者,你怎么相信他们的代码。有些程序员,你可以对他们说:我星期五就要结果.--星期五到了,你收到了这样的Email:代码我都已经检查过了,现在就等着测试了。你很放心,只会有很少的瑕疵在质量确保的团队被查到。当然,还有些轻率的例子,一些程序员在邮件里是这样说的:我还没弄完,星期一上午我会最先完成它.你不太确信这东西,发现很多Bug,很长时间基本上不能用。又得花上几个星期清理代码中的Bug.
关键:你对一个开发人员越有信心,他离成为一个伟大的程序员的距离就越近。想象你是你的管理者,如果他并不担心你的代码,会给你多少信心和勇气!
5、对方案的信任
和对代码的信任是一回事--如果你手上有伟大的程序员,你就会对解决方案有信心。这些程序员同时也是伟大的建筑师。他们剖析整个问题,指出问题需要怎样去解决。这就不只是用伟大的代码编程的问题了,很大程度取决于你怎样构筑解决方案。这是关键,而且会让你在软件世界里出类拔萃。
6、满足客户需求
一天下来,你写出了最棒的代码、用了最好的框架和最好的解决方案,但这真的能迎合用户的需求吗?恐怕根本不是那么回事儿。你搞砸了。尽管现在多次失手,一个伟大的程序员还是会正中靶心,找出客户需要的,给用户逐步展示他们所需要的无bug的最终版本。需求正中靶心的同时,用户满意了。
7、不断升级
伟大的程序员会积极主动地把自己的技术升级。他们对知识的态度就像饿猫见着了牛奶,他们从不用上级催促给自己设定目标、不用经理要求他们完成任务,因为他们自己就已经安排OK了。
他们发现自己想要参加的大会就会给公司写Email本人非常想参加今年的Tech-Ed大会。我将用心研习,并对作出贡献。我预计这可节省金钱/其他原因.如果可行,不知公司是否帮我支付此行?如果我收到这样的邮件,我不仅会帮他支付参会费用,他的路费我也会全程买单。
伟大的程序员们永远会关注例如。net用户组或Java用户组的所有用户群体。他们参加本地的技术会议,并从中汲取知识。你会看所有最新博客和最新的杂志吗?现在列出你最喜欢的前5个开发博客。你能做到吗?你应该像参加基督教青年会那样轻松做到。做到这些,可以很好的帮助你延伸你的思路!你将会不断获得更好的点子!你会得到更好的回报!
看了程序员系列文章,颇多同感。做为一个从业13年,一直做软件开发的人,我想给那些已经、将要和有志于走上这条路的朋友一点点忠告。
首先,说说程序员和软件工程师。虽说都是编程的干活,但是还是有一点高下区别。
主要说来区别是程序员programmer是将程序(已经有流程,伪代码或设计模板)写成代码;需要熟练掌握至少一门编程语言。而软件工程师则要将目的描述成程序语言并实现的能力。例如将数学算法、自然语言、思维模式描述成程序算法,程序流程/类或/和人工智能,并写成代码的能力。
对初入行的人,当然重在语言,要做一个合格的程序员,首先要熟练掌握语言。包括语言特性和实现的能力。例如使用尽量中文说的面试题,就要求面试对象掌握C++中的类的封装;构造函数的重载和运算符重载。
做过一两年后,要想继续吃这碗饭就必须提高自己,首先当然是深入了解语言,特别是语言的思维方式,编译器的工作方式和常用设计模板。就拿C++的多态性来说,很多公司面试就会问什么是虚函数/纯虚函数(思维方式)?用C如何实现函数重载(函数指针和了解编译过程)?接口类/工具类/工厂类和 Sigleton类的实现(常用设计模板)。另外还有一大块就是内存管理了。
如果能做到深入了解语言本身,那么恭喜你,你现在Title至少是高级程序员了。
在对自己的语言有信心后,下一步就想一想自己要想哪方面发展。是管理方面(项目经理)还是技术方面(软件工程师)。既然这里讨论编程,我们就先不考虑项目经理。想发展为一个软件工程师其实也有两条路。一条是走系统软件工程师或者叫架构工程师的路;另一条就是算法工程师。
在国内的朋友我建议走架构工程师的路。要求就是知识面广,对整个系统熟悉,能很快了解和分析客户/设计需求,很快估计工作量、风险和所需要的资源(承担相当部分项目经理的任务),能根据现有技术人员储备提供一个解决方案。当然还需要一定的表达能力和文档写作能力。例如我当年走访某省农行,和对方聊了银行卡和医院医疗卡的联网,当天晚上就和市场部的人合作,搞了一个通宵,写出了60页的技术方案和外加40页的基于此方案的标书。
一般来讲,要做到对整体系统的深入了解,没有两三年的时间是做不到的。所以给国内程序员的建议是不要频繁跳槽,尤其是不要频繁跨行业跳槽。踏踏实实地将本行业的软件吃透,最好每个部门或模块都工作过。如果有这个想法,一般情况下你可以和项目经理沟通,通常他们会鼓励你这样到各个部门/模块工作。
我出国后,发现情况有点变化,由于语言和文化的区别,对自己走系统工程师的路没有很大的信心。只好转向走算法工程师的路了。
确定了这条路后,突然发现自己的数学能力太差了。不得不重新恶补线性代数,概率和数理统计等高等数学。同时将《数据结构与算法:C++版》好好从头到尾读了一遍。然后终于蒙混到了一个职位。
当时第一个任务就是在一个嵌入系统中写一段程序将bmp压缩为jpg。各位可能会问了,这个在网上满大街都是源代码,为啥还要自己写呢?其实这就是我不太建议国内工程师走算法这条路的原因。除非你是数学大牛,有自己原创的算法。否则在国内实在没有算法工程师很大的生存空间。但是在国外有很大的不同,稍正式的公司基本上都禁止使用open source。因为open source也是有版权的,有的是不能商用,更有的copy left是那些公司碰都不敢碰的。因为copy left要求你使用了他的代码,你也必须公开你的代码。
当然,我们可以看那些open source,然后自己重写。不过相信我,通常情况下如果你不是想简单做些变量替换就交差的话,看原代码不如看这个算法文档本身。
或许上面写的比较偏激,但真的是很普遍,我想告诉你们,你们虽然只是负责一个模块,但无论如何,请要知道你的项目到底是什么,如何运转,哪些地方好,哪些地方不好,因为这是对你自己的一个提升,也是对公司的一个负责。说到负责,我不得不说责任感,很多人就是缺少了责任感,以为完成了任务就可以了,但你要知道,你的公司或许等的不是你的完成呢?
请您拿到项目需求的时候,分析一下您要做的东西,用你敏捷的思维想一下,该如何去做,还请您多想想下一步,如果扩展了,我要改哪些地方,最重要的是,请您想想,这个任务对公司是否有利,或许你会说你只是个程序员,我没有权利去改变任务,没有错,你是个程序员,首先请你完成你的任务,在完成任务的同时,想想任务的完成对公司的运营是否起到反作用,因为有时你会比你的老板更了解项目对公司的利弊。如果你真的觉得不太好,不要怕,提出你的观点,但一定要想好你观点的描述,尽可能的表达清楚,让你的老板知道你的意思,因为老板他不一定懂技术,所以一定要白话一点。如果你的观点是正确的,你们老板也听明白你的意思了,那样你们老板会更加的器重你,而不会不可理喻的让你完成他所要的东西了。毕竟这是对他好的建议,也是对公司发展好的建议,如果你的观点不好,那样老板也会给你一定的提点,何乐而不为呢?
下班后,请你抽空想想公司的发展吧,因为你是公司中的一员,公司发展前景好也代表着你的发展前景好,如果你的想法给公司带来了好的前景,那也是对你能力的一种肯定。
最后说说面试,我也经历过很多面试,同样也面试过很多人,刚开始也会为工作着急,到处找面经,但最好的面经是无法从其他地方找来的,因为面试是一个展示自己的机会,而不是一再的ctrl+v 。刚开始我也会紧张,但马上,我调整了自己,每次面试就当自己一种磨练,一种交流、沟通、展示的机会,随后的几次面试都比较成功,再随后的几年,我回到了老公司进行面试,显然他们对我的能力已经是一个肯定了,最后我还是没有选择他们,因为我回去面试只是为了看看公司的发展进行的如何了,因为这一切也有着自己的一份努力。最好玩的是一次邮件面试,对方给了很多题目,大多是网上都有的,我也没有baidu,用自己的想法回答了所有的问题,并提出了很多意见,没想到对方回错了邮件,把他给人事的邮件发给了我,貌似是说面试还可以,就是工资高了点之类的话,我也懒得继续往下看,回信给对方,发错邮件了。过后不久收到对方的面试通知,更确切的说是offer,不过在他电话中我直接给回绝了,因为我已经在一家自己喜欢的地方就职了。
我爱我的公司,我爱我的程序,我也爱我的老婆和家人,因为他们给了我快乐,也给了我支持,让我能更全身心的去投入到代码之美中,我更相信公司能异军突起,成为IT界的领军人物,因为我看到了一群为公司孜孜不倦,辛苦能力的同事,我很爱这种氛围,我相信我们的努力一定会给自己带来收获,就算没有收获,我也没有任何怨言,因为我沉醉了,因为我快乐,因为我是个快乐的程序员。
职业规划怎么写,相信很多朋友们对这个问题很感兴趣,下面给大家介绍一下。第一部分,前言即总论;第二部分,自我分析,包括业余爱好、性格、价值观、专业技能等;
我的生存之道
尽管我的编程技能不尽如人意,我仍然是一个非常成功的开发人员。这里有一些我多年来学到的诀窍,以及如何我作为一个平庸程序员,发挥出最佳平均编码技能水平的生存之道:
▲ 明确要求--我会预先得到完整、精确的系统要求清单。如果你直接开始编码就意味着你没有针对系统设计的要求来进行。
▲ 分析和设计--我获得了分析和设计权。一名普通程序员获得了分析和设计权,就拥有了一个超越一名伟大的程序员的优势。
▲ 项目计划--坦白来说,我早期职业生涯中没有用过正式的项目计划,一直到我加入了CSC,不得不使用更多的正式文档编制技术,从而开始使用项目计划。由此我充分认识到使用经过慎重考虑后的项目计划也是平庸程序员的一个优势。
▲ 经常翻阅手册、指南--我总是备有手册、指南以供不时之需。我也研究了其它的参考材料。
▲ 拷贝-粘贴程序员--我不介意承认自己是一名拷贝-粘贴程序员。多年来,我写了许多可以在新项目中重复使用的代码。因为我至少花时间写了一次代码,所以我对这些代码如何工作略知一二。在工作中我从不拷贝其他人写的代码,并且我从不使用我在其他公司写的代码。黄金规则和版权法都适用于知识产权:您不得复制和使用别人的代码,除非明确允许,或者你可以得到特别的许可。
▲ 毅力--我永不放弃,我一直相信自己能完成任何编程任务。
▲ 工具--当我需要一台更快的电脑但这又不在预算之列时,我发现了一个经理愿意用他们的一部分预算资金为我购买。你可以通过乞求、借用,或交易来获取所需工具,从而完成自己的任务,要经常向你的经理提出自己的要求;只这些要求是合理的,一个优秀的经理会尽最大努力找到一种方式来获得软件,硬件,手册,或者你所需要的帮助。
▲ 手气好(Serendipity)--也被称为代码一写就好策略。有几次我像一个初级程序员那样写了代码,而这些代码运行得很好。我把它比作是国际象棋,你在下棋的过程中突然发现,自己走两步就有将死的机会。这不是编程应有的方法,但由于我在检讨自己的职业中的罪过,我不得不纳入此项。
底线
我要做一个最终坦白:我不喜欢被看作是次等的团队成员。我见识卓越,而幼稚的程序员却真的相信:不能写出先进代码的人对团队和公司来说毫无价值。这些精英认为平庸的程序员能力有限,不足以生产高品质的代码,几乎总是犯错,令人不快。有个观念令我感觉既可笑又惊讶:如果你不能 ________(填空),就不是优秀的程序员。
你不必成为一个出色的程序员或伟大的开发者,特别是正在开发商用系统的时候。没错,我是一个平庸的程序员,其主要原因是我从来不需要成为一个伟大的程序员。
我不是纵容平庸。不论做什么,都要尽力做好--包括编程。最好的代码可能难以确定,但越高效的代码可能也越难维护。可以说,任何可以完成工作的代码就是好的代码。代码是像索玛立方体(Soma cube),有240种途径可以解决索玛难题,同样,也有许多代码编写方法可以用来完成任务。底线就是尽可能做好工作--这是任何一个平庸的程序员都可以做到的。
怎样评定一名软件开发人员?这是一个颇为奇怪的问题。现在已经有了很多的理论和形式来做这件事,人力资源部门也试着帮你管理和反省自己的行为。然而,怎样才是一个伟大的软件开发人员,在今天,你该怎样发展你的职业生涯?以下是我评定团队中软件开发人员的军规.按照这些技巧和规则,你可以改善你的现状,由一个优秀的程序员,成为一名伟大的程序员。
1、时间花在写精彩的代码上
这里说的不是数量,而是质量。对此,一种歪曲是:要数量,也要质量。你也许会很多次的遇到以下的两种情境:
情境A:你有一个发疯似的能写代码的程序员,事情似乎在进展中然后,Bug开始不断出现,你们也不知道为什么,好像永远补不完。补完十个,又出来五个,现在你手里的,就是一大堆代码
情境B:你现在有一个看起来很聪明的程序员,你面试他的时候,他似乎无所不知,能把理论说的头头是道。然而,你留给他三个任务,三个星期以后,他还在做一些三天就该干完的事。这下该你困惑了,他这么聪明,他知道generics(详见备注),多线程的一切事情,甚至还能给祖母级的人讲解什么是指针,让老太太兴奋的想去编程。可是--怎么什么都没完成?
于是,在梦境中--你写出了堪称伟大的代码,--伟大的代码是伟大的程序员写出来的,他睿智,明白代码的真正品质所在。写代码就像托尼?霍克在玩滑板一样自然优美,看上去就令人愉快。这些程序员以让你眼花的速度搞定一切,他们知道每个问题应该处理多长时间,也不会追捧寻觅所谓的世界最好解决方案,弄很多线程很多层来写一个简单的游戏。他们写的程序没有Bug,因为写的时候自己测试过了,在睡觉时也在写代码说的就是这样的人。这些程序员太宝贵了。
2、阐明问题
可以明确的是:即使有问题暂时处理不了,还有成百上千的方法去解决。有些人反应很迅速,很快就能提出多种解决方案。然而,一个伟大的程序员应该在做出行动以前清晰阐明问题--创建文档或用白板表达出来。他们写邮件给项目的管理者,这样表述:我想和你说说我是怎么理解这个问题的,我们能这样处理吗?然后他们就会动手给你多种方案。
对,这些人明白自己看问题和阐明立场的方式,而这理解方式大概不会是问题创建者所想要被理解的。请牢记这就是关键所在。一名伟大的程序员在尝试解决问题以前,一定要完全的理解它。你百分百搞明白了吗?没有?百分之九十九?--回去再多问些问题,确保百分之百理解清楚了。
3、怎样着手解决问题
那一搞明白了问题,就开始动手写代码?错!一个伟大的程序员应该按照规划,开始思考面临的多种选择,基于问题开始考虑最好的解决方案。我觉的这像一场国际象棋比赛。你知道每个棋可以怎么走,知道所有的游戏规则。但是你会马上走棋吗?不,你要审时度势,制订计划,紧盯对手,分析其通常的做法。和这一样,在你coding解决问题以前,你也要这么做。
看看问题,计算出需要怎样的结果,你的时间能怎么安排,预期的质量,你必须用的工具,好了,开工吧!
1.从程序员到PM,是一条脱变的路,事实上程序员走的路最终不应该是项目经理。首先有一点需要明白的就是,一定规模的项目中,项目经理不需要太懂技术,他可以是一知半解。项目经理的任务不是在技术方面,技术相关的应该交给SA去做。项目经理更多地是做管理,沟通等工作,你如果可以的话到书店查看一下关于项目管理的书籍,你就会明白。当然对于小项目来说,有可能是PM,SA是同一个人,而这样的项目经理更多只是SA加上一些管理工作。要做项目经理,你就首先告诉自己不再去碰技术细节了。程序员并不是一个培养项目经理的好环境。所以没有什么从Coder到什么developer再到SA然后是PM的路,这是一条比较悲哀的路。在大公司,SA下一个目标不是PM,而consultant,然后是seniorconsultant,PM走的是另一条路,所需要的技能不是技术,技术给PM带来的能力提升是很少的。在项目中你最后能分清楚PM与SA的关系及各自在项目中的分工与用途。
2.其实我蛮同意gzlucky(Lucky)的看法的,确实是我们公司不少项经理就是不很能跟得上现在的一些技术,因为很多人都快年近四十,儿子都上高中了,要他们再学新技术真的难度比较大,他们的工作基本上就是天天找手下的程序员,布置这个任务,询问那个任务做的怎么样了。不过我的头倒是和我一样编程,他手下写代码的就我一个人,他自己也会ASP和JSP,但是可能对。NET不熟,就由我来主负责了。我觉得项目经理还是像他这样的好,自己也能懂不少技术,可以服人。但是我的头儿好像在沟通这一块不是非常出色,当然也有可能是俺太内向,不太与他沟通,所以他也只是在交待任务后就不再多询问,而不像别的项目经理天天追程序员后头问。我想问问各位,你们看哪种项目经理才是比较好的,像我的头儿这样的,还是像某些喜欢追程序员后面问进展的。
3.原来在一个小公司做过半年的DM,一年的PM,后来为了让自己的技术更扎实一些,离开了原来公司,现在在大公司做程序员,开始后悔了,在大公司里很难接触管理方面的东西,也很难晋升,个人认为在小公司做DM,PM,有经验后直接找大公司的PM,这样也是一条路。
或者考PMP之类的证书,然后直接找管理的工作。
希望过来人能给予更好的意见和建议,我也现在想往管理层发展。
技术很硬了再去做PM,这种想法是错误的,我就犯了这个错,边搞好技术(为了生计)边学管理知识(为了将来),慢慢向管理发展,不能等。有句话说的好,机会是属于那些有准备的人的。利用业余时间多学些管理方面的东西,所谓人的差异在业余时间。
要走向管理层,英语一定要学好。
沟通很重要,要做好管理者,先学会做人。多跟下属沟通,多为下属着想,而不要去巴解讨好上司。体谅下属,把项目计划做的尽量合理,不要让下属加班,给下属发展和晋升的空间,这样才能是下属有干劲,才能把项目做好,你才有更高的升迁机会。
只有把自己知道的不断的让你得力下属知道,只有提拔起一些得力的下属来,你才有时间和精力去向上爬,不然你抱着不放,就没有升迁的机会。
管理不是喝酒抽烟那么简单,那只是过去的那种不思上进,耽误自己前程。
吃尽苦中苦,方为人上人。
做PM不是混,是要把项目做好,这跟做人是一个道理,这也就是为什么做管理要先学会做人的道理。
pm的整个工作重点是什么?如果做为一个PM,技术不高怎么对付组里的牛人
我们经常会因为公司里的顶尖人才、个性化太强,不能与其他人合作而感到棘手,要解决这一问题其实也是有法可寻的。
一、在肯定其价值和优势的前提下,明确地制定改进的目标;
二、顶尖人才能够面对中肯的,明确及一对一的批评作正面反应,所以要加强与他沟通的力度;
三、可以根据具体情况调整考核目标,加强与其他员工合作的内容;
四、把顶尖人才调到相对能独立发挥其才能的岗位,减少与别人发生矛盾的机会。
职业规划是对职业生涯乃至人生计划的过程,职业生涯规划的好坏可能将影响整个生命历程。感谢您阅读《如何从优秀的程序员成为伟大的程序员[5]》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。
15、组织技巧
把所有事情整合在一起的最关键要素是组织。你可能是世界上最好的程序员,但如果你不善于组织你所做的事儿,你的工作将陷入瘫痪,最终丧失优势。伟大的程序员保持自己工作平台的整洁有序,保留所有的笔记并调理清晰。他们标出自己的会议日程表。他们有专门的收件箱给日程邮件、会议和新任务分类。他们保留文档并能在需要时迅速找到所需。
额外要提到的:激情
伟大的程序员如果没有热情,那么他的工作也并不伟大。好的程序员有了热情来对待他的工作、方案和团队,那么他比伟大的程序员还要伟大。
在回顾的时候,我用这些标准来评判我的开发团队。我给我的团队尽可能最好的环境,作为回报,我想要他们都成为最伟大的程序员。你可以用这些标准来评判你的团队,或者你本身就是一名程序员,请用这张列表来尽可能地改造自己来超越同侪。
备注:Generics是程序设计语言的一种技术,指将程序中数据类型进行参数化,它本质上是对程序的数据类型进行一次抽象,扩展语言的表达能力,同时支持更大粒度的代码复用。对于一些数据类型参数化的类和方法来说,它们往往具有更好的可读性、可复用性和可靠性。在设计集合类和它们的抽象操作时,往往需要将它们定义为与具体数据类型无关,在这种情况下,使用Generics就是非常适合的。
8、团队奉献
你可以是团队中最棒的那个人,可是如果你不是最好的程序员、不是建筑师、不是团队里最有活力的人,那么对我来说,如果你不能分享或对你的团队有帮助,你的价值就会大打折扣。一个好的程序员会使自己周围的人同样强大起来。试想一下,好程序员会不断完善自己的知识和能力,如果他们不和周围的人分享他们的知识,他们从哪儿能获得更多呢?
他们不断学习新东西,发掘新技术,但是不会让其他人知道他们这么做了。一个好的程序员会准时完成方案,但是那是在催促和团队得不到休息的前提下。然而一个伟大的程序员则会与团队中所有的项目保持联系,在需要的时候还可以出手帮忙。他们会如是说:我注意到A团队的项目进行到xx进度了,如果不介意的话,我想我可以帮忙?
9、做好会议记录
做好会议记录绝对至关重要!开会期间,大家花大量时间来说明了新观点、新主张、集体讨论还有提出了新设计方案,可是会议结束后却没有人可以拿得出会议记录,简直没什么比这更糟糕的事情了。即使你有会议大纲,我还是期望见到参会的每一个人员都可以带着纸和笔(当然对于程序员来说笔记本则堪称完美).一个伟大的程序员会注意到这点。他们会记下所有的会议记录,并且在会议结束的的时候说:就刚才的会议,我着重记录了几点:XX 我是否记录全了呢?
接下来,伟大的程序员就会把他做好的会议记录分发给项目管理者,列出会议时间、会议主题和参会者。接下来,是会议项目的标题和重要条目。在这之后,就是这些议题的详细记录。一个好的程序员没有做会议记录,并在会议上对提出的每项事宜都点头称是,那只能寄希望于他的记忆力足够好了。随后,他会给你发邮件让你看看他的改动,你得回头提醒他忘记的不多,百分之九十的都没错。--这不是浪费时间嘛!根本不是这么回事!所以,做好你的会议记录。
10、孺子可教和接受批评
如果你读到这儿了,就表明你有希望接受这些建议,并在以后的开发行动中尝试执行。对,程序员的另一项重要能力就是向他人学习并且能够接受批评。通过把自己变为一个虚心受教的人,像海绵一样快速吸收大量知识,毕竟在编程的路上你还有很多前辈。当然,也许他们在写代码的岁月里慢慢生了锈,甚至伤痕累累,但是他们毕竟曾披荆斩棘跨过无数的坎儿。对于做出正确决定,他们又着瞬间的本能,让你不得不服。处于他们这个位置,很乐于见到你的成长和成功。
所以,只要你是个伟大的程序员,就会理所当然的拥有理想的工作环境。如果你不断改善技能、虚心好学、在别人给出的意见和批评中总结错误并得以改善,我向你保证你将会成为一个伟大的程序员而不只是想象自己变得伟大而已。如果你总把自己想象成为精英而不进步,那你只是自欺欺人。如果你不成长,你甚至不能停留到原地,等待你的只有灭亡!
相关文章
最新更新