第一篇:程序员是怎样炼成的
在成为程序员的道路上,要经历四个坎坷,让我们用四个境界来标明他们。
【第一境界】掌握一门或者几门编程语言,会模仿例子来实现程序代码,并且让代码在计算机系统中运行起来。达到这种境界的人,还不算真正意义上的程序员。而仅仅是掌握了一种或者几种工具的工匠。他们中的熟练者能够快速模仿现成的例子,以实现自己或用户的软件模块。
第一境界的特质是对语言工具的掌握,在这个境界的高手,会强调自己对语言如何如何的熟练,因此这个境界可以用“知器”来表示。
【第二境界】第二境界里,我们要学习的是分解问题和推理的技巧,学习用逻辑的语言来精确地表达一个命题。在这个境界里,软件工作者掌握的是一种分析具体事物的方法,他们不再一味地模仿,而是开始对一个又一个具体问题思考并尝试用自己的方法来更好的解决。
在这个层次里的“程序员”开始关注解决问题的思路,并且关注分析和推理的数学技巧。他们中的优秀者熟知各种算法善用各种各样的命题推理来分析并解决问题。他们同样善于借鉴前人的例子,但是往往能够根据问题的特点进行有效的改进,并且能够在尝试改进的过程中得到创新的成就感和新的经验。在这个层次里的人,对语言工具的认识比第一境界更加深刻,他们是真正知道如何利用手中语言工具的特点更好地解决问题的人。但是他们并不会强调自己对于语言如何熟悉,也不再热衷于宣扬掌握如何如何多的语言,在他们眼里,语言仅仅是一种工具而已,真正重要的是分析问题的方法。
第二境界的特质是对具体问题的分析,在这个境界的高手,往往善于从具体问题中分析出合理有效的解决方法。因此这个境界用“格物”来表示。(第二境界里有真正对如何用程序来解决问题经验丰富的人,这些人能出色地胜任编码工作,因此我们称他们为Coder,或者初级程序员。)
【第三境界】第三境界里,我们要学习的是抽象思维和找出事物表象后面的规律。在这个境界里,软件工作者不再针对一件一件具体的事物来分析,而是尝试理解事物表象下的本质。在这个层次里的人,开始关注事物的共性,并且逐渐掌握归纳和总结的方法。“模式”开始出现在他们的头脑里。
“设计模式”是软件领域的“三十六计”,是经过抽象总结而归纳出来的真正的思想精华。第三个境界的软件工作者开始接触并且理解“模式”,学会灵活运用模式和抽象思维来解决“某一类”问题。
第三个境界的特质是对事物本质规律的认识,在这个境界的高手,往往能够快速地抽象出问题的本质,从而用最合适的方法来解决问题。这个境界我用“明理”来表示。
达到第三境界的程序员,是天生的设计师,他们对问题的本质的领悟能力帮助他们用优美简洁的代码来解决问题,他们的代码中充满设计思想。他们是真正能够享受到程序设计的艺术魅力并且充满成就感的一群人。这个境界里的程序员真正当得起programmer的称号。
在这个境界之上,依然存在——
【第四境界】第三境界程序员中的极优秀者,并不满足专家的地位和高薪,他们开始向第四境界艰难地前进。第四境界是程序设计领域的最高境界,要达到这个境界,只需掌握一样东西,然而这个东西并不是寻常之物,而是许多人穷尽一生也无法得到的这个世界最为深邃的秘密。这样的东西,叫做“道”。
所谓道,是天下所有规律的总和,是最根本的法则,只要能够了解道,就可以明了世间所有的一切。掌握了“道”的程序员,才是真正的程序设计大师,能够创造出流芳百世的作品。对第四境界的程序员来说,“思想”已经已经不再是很重要的东西,因为他们对程序本质的理解已经超越了问题本身。在他们的代码里,有的只是自然,现实和虚幻的边界都已经模糊,一个完美自治的系统在刹那见诞生,却仿佛从亘古时刻起便存在着、运动着,从简单而质朴的规律中涵盖者世间万物的本质。因此,这个境界,我称之为“成道”。
第二篇:程序员是这样炼成的12
程序员是这样炼成的(12)-勇于面对开发失败
个人一辈子不犯错很难,作为一个程序员要每天不制造程序错误更难。今天跟大家讨论如何面对失败和错误,大到一个项目的开发失败,小到几行代码中的bug,都是我们在日常开发中经常要面对的问题。
有一家这样小公司,测试部和软件开发部是独立的两个部门,有各自的部门经理。老板总是喜欢给下面的员工施紧箍咒,施加压力,又是能力评估,又事绩效考核,于是某一年,在领导们别出心裁的领导下,公司出台了软件开发工程师的考核制度,制度明确规定:将程序员开发项目和软件的测试一次通过率和项目中的bug个数纳入开发人员的年终绩效考核,由测试部门进行考核和执行。(所谓一次通过率,就是软件提交测试后,一次通过的概率,一次测试就通过的软件/提交测试申请的软件数*100%)新法颁布后,测试部大呼过瘾,软件开发部一片哗然,第一年的过去了,果然“成绩喜人”,全公司的软件一次通过率达到了97%,无数未经测试软件被偷偷发布给了客户。第二年领导们在吸取了第一年的经验和教训后,毅然的修改了考核标准,在统计bug个数的同时融入了代码行数的概念,bug个数/100行代码 *100%来,进行年终考核,第二年过去了,软件开发部门戏剧化的以100行代码0.5的bug数,高效的开发质量给了领导们一个有力的答案。这是一个真实的事故,一个三流的软件公司的开发水平和软件质量已经“超越了”微软和google,我相信现在仍然还有很多公司在进行类似这个的考核。
这样的小公司把软件开发和测试部门独立本身就是一种错误,严重的影响的开发和测试的时间,两个部门相互扯皮,项目进展一拖再拖。
其次,两个部门工作的出发点也错了,两个部门的工作重心是交给客户尽善尽美的软件产品,而不是为了应付考核和被考核。
第三大错特错的是考评制度,一看这样的制度,多半都是事不关己高高挂起的人出的主意,开发软件能一次就通过吗?写出来的代码能没有bug存在吗?公司要提高产品质量,不把注意力放在项目管理人,开发人员的能力培训上,开发规范和文档管理上,想凭借一纸空文,或者员工的主观能动就达到一个“质”的飞越,实在愚不可及!软件工程师在把软件测试N次以后才敢把软件提交测试,几行代码就能完成的完成功能,引用了很多填充行数的无效单元。
最可恶的是,使所有的开发人员,散失了面对失败和错误的勇气!为什么不改面对呢?一面对就要扣工资和年终奖,谁还敢去面对啊?于是,整个开发风气就是:开发人员私下放行软件给客户成风,不经过任何测试。程序员有了错误死有的不承认,有了bug支支吾吾。不但开发水平提升不上去,常见的开发问题还没有被公开和分享解决,导致产品质量严重下降。
大家都应该知道在开发的过程中,越早发现软件的问题,软件就更加的完善。而不是藏着掖着,或者添上一抔土把这个“地雷”埋着,留着让用户踩去吧。正确的心态是:测试人员越早发现我们开发软件中错误,我们应该越高兴,因为不仅可以弥补我们的思维漏洞,让我们的代码更加完美,更加减少了我们挽救这个问题的开销。不敢直面bug的程序员,算不上真正的程序员,如果你没有闯过雷区,没有被炸了个人仰马翻,没有给你留下深刻的教训,那么下次你仍然会不知道代码的隐患在哪?仍然不会学会选择趋吉避凶之道。仍然会被炸的死去活来。
写代码有经验的人,对异常处理都很有一套,知道大概这一块要保护起来,那一块要加一个判断,这里要验证下是否存在或已经被销毁。如果程序员没有很好的对未能遇见的故障做好防御工作,那么产品带给用户的错误提示或者死机,将让客户连杀了你的心都有。记得好多年前,在一个网吧找了一台赛扬上网,打开IE,自动弹出网页,然后就报错系统级的错误了,还无休无止,CPU直接满上,然后死机,当时又好笑又好气,你写个弹窗软件,偷偷弹就算了,代码都没写好,结果害网吧老板重装系统:)
看过武侠的都知道,危难关头,出现异常的时候,才是检测一个真正武林高手水平的时候,平时的舞蹈练剑都是假把式,最多只能算是基本功,补救危局,化腐朽为神奇才能显示技艺的高超。有多少人会记恨千年虫问题是哪个混蛋带给我们的?但是解决千年虫问题软件工程师们都是英雄。所以放心的动手开发
吧,即使你犯了错误,被骂成狗熊,也没有人会记住你。问题被解决后一切释然。
是人都会犯错误,对别人犯错误评头论足的人愚昧。用发布制度来阻止别人放错误的人愚蠢,因为害怕放错误,而畏手畏脚不敢创新和向前的人则更加愚上加愚。错误面前我们要敢于应对:
1、对错自在人心。
当然你发现问题后,请马上提出,不要企图隐瞒问题,越早发现问题,那么损失就越小,抗震救灾有黄金72小时,软件开发也有黄金72小时。我们在解决陈年诟病的时候,通过要花上数倍的时间,来回忆当时的开发心境和设计意图。
2、接受批评。
如果这个问题跟你有关那么就是你的问题,千万别动念头找到一只替罪羊,出现问题后,重要的解决问题,不是秋后算账,更加不要交缠不清推脱问题。
3、向解决的方向前进。
如果你不能马上解决这个问题,那么请你把这个问题向解决的方向推进,如果你无法推进问题去解决,那么请不要让这个问题继续恶化。让大家都知道这个问题的存在。
4、寻求帮助。
请不要让自己的自尊心作祟,拒绝别人的帮助,一个好汉三个帮,放下那所谓的自尊,去听取团队和伙伴的建议。
每个人对错误的处理方式不同,会产生不同的结果,问题处理的好,会使得团队更加信任你,甚至比遇到问题之前,更加信任你,要是处理的不好,不但摧毁了大家的信任,还会让人觉得你难以担任重任。
第三篇:程序员是这样炼成的5
程序员是这样炼成的(5)-海纳百川 做程序员要“海纳百川”,其实就是建议各位要做一个通才。当然做通才是有条件的,我总结了下前提有三:
1.你已经是一个专才。熟练操作学一门像样的编程语言。
2.有稳定的工作和收入支持。
3.想得更多的挑战和机会。
作为项目经理和管理者而言,坦白的说,比较喜欢的还是专才,因为专才听话,你在他知晓的领域划一个圈,他能保证帮你完成任务,而且还不给你添麻烦,专才们在各自的领域的努力才会推动项目前进。那在项目中,通才的表现又如何呢?你给他画一个圈,他会给你考虑到圈子以外的事,甚至跳到别人的圈里子耍弄一番。他就像润滑剂一样,提出很多创新的idea,虽然老是给项目管理者带来不少的麻烦,但是总能让整个项目更加协调。其实项目管理者讨厌他,但又离不开通他,他的鬼点子时常能优化各个结构和模块。更重要的是当管理者被提升,要选择接替者一般是一个会顾大局,协调众多专才的通才。
在所有的项目管理者或者teamlead的心里,肯定都有一种软件工厂的构思或者布局。大意就是整个部门各个人都各施其职,让整个软件开发的过程,就像一个生产工厂一样运转。招来的程序员都是生产线上的工人。他们不需要想太多,照任务单做就是。客户需求就像产品订单一样进来,需求分析师开始根据订单安排我们要生产的产品规格满足客户的需求,系统架构是开始把这些规格加工成工厂生产计划或者价格框架。设计师拿着详细的设计文档来往这个框架里面套,剩下的就交给代码机器人们填充内容,然后到质量工位,检查贴牌,然后出厂。整个过程每个工位都是专才,在领导的构想中,他们每天都只需要做重复的劳动就好了,如果他们想辞职了,也不会带走我们全部的生产机密,更重要的是这样的工人很廉价,找一个替换品不难。但是实际上管理者的春秋大梦很难实现,原因是软件这个产品具有可复制性,也就是软件可以copy.在软件工厂里,生产两个完全一模一样的产品是没有意义的。客户的需求都是很柔性的,每次都会不一样,大大小小的改变是避免不了的,管理者们费尽了心血设计的一套生产流程,竟然只能生产一件产品?(去过生产线的朋友应该都知道,一旦生产的流程有所
变化,线上的工人们基本上都不知道怎么开始干活了,要重新培训上岗,因为他们从来就没有想过,半成品是从哪来的,又是干什么去,一直都在做机械的劳动。)但是我们的管理者们,他们肯定不会罢休焦头烂额,会再一次优化生产流程。到下一个新的产品,又会继续把生长线从头至尾优化一下。某一天管理者突然顿悟,我们为什么每次都手把手的跟每一个人安排任务,每次都亲自设计整个流程,我应该去办公室里面喝喝茶,上上网。这个时候他会想到谁?毫无疑问,肯定不是专门,他需要的是一个能走通每一个环节的通才。
小时候我经常听我老爸说:“不要半桶水,不要什么都懂点,什么都不专”这句话就是用来贬低通才的,在这里我要为通才平凡。我的一个软件项目曾经出了一次事故,整个汽车的生产线面临停产,几次电话支持的效果都不理想,需要一个技术人员立马去现场解决问题。软件用delphi开发在windows平台运行,oracle数据库,通过进口的硬件,用客户的线束跟汽车通信,操作员是个新手,电脑硬件是我们提供的,现场环境恶劣。我思索了每个可能出现问题的可能,客户能提供的有效信息太少,连软件的日志文件都无法取出来(USB端口封闭,车间信息严格保密)。我不可能同时派一个软件工程师,数据库DBA,IT,或者硬件工程师奔赴现场。最后我选择去的是一位软件工程师,他很快找出来原因,是客户的线路没有按照我们的电路图制作,关键线一条线是断开状态。我相信他,不是因为他是我们公司最厉害的程序员的,而是他懂技术领域的比其他人要多。其实在整个项目开发过程,除项目经理外,不可能每个人都会一直忙忙碌碌,无论是程序员,测试员,设计师,架构师,你总会有一段时间无所事事,除非你同时加入很多的项目。希望你能在有空的时候关注下你的同事们在做什么?你能不能帮助下或者学习下。做了这么多年的程序员,我们可能都常有一个共同的担心,这个担心是什么呢?我们一个项目或者我们公司的的关注点,研发的中心开始转移出我擅长的技术领域。我们害怕自己发挥不了作用和特长,害怕我们对公司没有价值,也就是意味着我们涨工资的幅度要比别人小了,或者没有工资加了。其实这个担心还不是最要命的,最要命的是,我们要精简团队的时候,你才发现自己比较单纯,只会测试或者编码,很多平时做其他工作的同事都能做你的替代者,那么你就要被over了。
说了这么多的苦口婆心劝大家做一个海纳百川的通才,大家肯定会问,我觉得我在我的team里面已经算了百事通,万事通了,我应该怎么继续丰富我们的技术领域呢? 夜深了,还没洗澡,我在这里不打算多说了,我请问各位几个问
题,希望可以为你指点方向:
1.你有没有想过在公司里,你计划的职业阶梯的各个领导每天都在干什么吗? 你的boss,你boss’boss…..?(拿破仑不是说过将军和士兵之类的名言….)
2.你知道你的一个组的同事在干什么吗,每天?
3.你知道哪几种操作系统平台,软件开发平台?你会通过别的路径走到罗马吗?
4.软件工程师你知道你要用的数据是哪来的怎么来的吗? 数据库管理员你知道你的数据是去哪里的吗?为什么人家装个oracle一下就搞定,我写了一辈子连oracle的程序连个listener.ora都不会配。
5.程序员知道你开发的软件,打包后是怎么安装注册的吗? 那般客户的是什么折腾你的宝贝软件的吗?
6.有没有约个骂你的杰作的客户出来吃吃饭,听听他的用户体验?
希望我们都能明白自己缺少的是什么?如果程序员想找一份工作,做一个专才足矣,如果想把事业做好你最好做一个通才。
第四篇:程序员是这样炼成的10
程序员是这样炼成的(10)-现在我们能做些什么?
前天在1+1<2里面谈到的那个麻烦今天被解决了,最后还是以AB两组双赢为目,相互合作,两组和二为一,共同完成项目,这个是最好不过的结局了。今天的文章是写给一位网友的,因为他问了我一个问题:“现在我们能做些什么”?
其实我以前也常有这样的感觉:茫然,麻木,不知道自己要做些什么?也不知道自己能做些什么? 有时候一天下来,虽然一直在忙碌不停,但是工作都会自动的膨胀到占满我所有的时间,包括我休息的时间。有时候我常问自己为什么会这样?是我们的项目计划出了问题?还是我们的任务量在增加?都不是,其实是时间在我们身边偷偷的溜走了。我以前做项目的时候有个坏毛病,项目的前80%的时间,被我浪费在所谓需求分析和程序设计上,(实际上没有花这么多时间,花时间在偷懒上了),到了最后的20%的时候,时间已经非常紧迫,这个时候我会发现编程的状态完全不一样。原因是,项目的dead line要到了,我们没有机会拖延时间了,已经没有时间让我拖着熬着不作出决定,没有时间让我去组织无聊的项目会议,没有时间让我去接听一些莫名其妙的客户电话,我更没有时间呆坐在电脑面前思考如何去躲过这无聊的工作,我必须要全力以赴在第一时间完成工作。其实当这个项目完成时,我再回头想想,并不是我在最后的时候“盖茨附体”,“图灵重生”,而是一种危机感和急迫感让我的效率提高了两三倍,让我在一些徘徊犹豫的问题上花费的时间变少了。我相信很多软件工程师都有这样的感触。事实很明显,我们的问题是在于我们能做很多,只是我们都没有做,我们只动嘴,却没有动手。
在我的公司有一个这样的故事,某几位同事负责一个项目,项目的进展一直都不是很理想,不久公司公布半个月后集体outing的消息(就是集体旅游,还是公费),为了保证项目的完成时间,一些项目拖延的员工需要驻守大本营,继续奋斗。本已经被我们放弃的那几位同志,尽然在短短的半个月中,完成了1个月的工作量,提前的把项目完成了。看来小宇宙爆发的威力真的很恐怖,可怜公司测试部的MM们,被那几个家伙拖着天天加班:)。可见,有时候工作虽
然让我们很头疼,但我们不应该把问题高高挂起,或者因为官僚作风,或者以召开分析会,技术评估的名义去拒绝问题,其实很多的困难都可以在我们的日常工作的空隙去完成的,没准是一杯咖啡或者一根烟之后,我们就可以做出选择。程序员应该学会选择和面对。
我们不是不知道我们能做什么,而是我们没有学会面对和抉择,没有想去做。附: 有的朋友问我,为什么每次更新文章的时间都很晚,实在抱歉4-6月我有一个开发项目要完成,周一-周四一般都在加班基本上10点才能抵达小窝,请谅解。
程序员是这样炼成的,每天深夜写作,已经过了十章完成了一半,虽然很累,谢谢一直支持和鼓励我的同事和网友们,我不会半而废的!
第五篇:钢铁是怎样炼成读后感
钢铁是怎样炼成读后感范文 篇1
这几天,我终于“啃”下了一本外国名著《钢铁是怎样炼成的》,书的作者是奥斯特洛夫斯基。这一本书不知激励过多少热血青年创造生命的价值,帮助过多少人了解生命的意义,指引着一代又一代人面对困难砥砺前行。
这本书的主人公是保尔·柯察金,他的一生艰险曲折。他降生在一个穷人的家庭,上学时因淘气被神父赶出学校。他的妈妈也无可奈何,只有把他送到食堂去洗碗赚钱。在那里,他目睹了下层社会的种种恶行。离开食堂后,在朋友朱赫来的影响下,成为一名布尔什维克。后来因病魔的袭击,无法继续战斗,再后来他又双目失明。他很痛苦,很绝望,差点没有活下去的.勇气。但他最后还是战胜了各种困难,靠自己的毅力和勇敢活了下来,他没有因为自己的不幸而丧失信念、失去勇气,相反越挫越勇,他的坚贞不屈,使我对他敬仰万分!
钢铁是怎样炼成的?是通过烈火炼成的。在冶炼的过程中要遭到高温焚烧和千锤百炼,最终才能炼成好钢。俗语说,“不经历风雨,怎么见彩虹?”我们应该感谢上天赐予我们这些困难与磨难,正是因为经历了各种困苦,我们才能茁壮成长。正如保尔一样,他曾被朋友出卖,被恋人抛弃,正是这些风吹雨打,使他成为百折不挠、信念崇高、意志坚强的革命战士!
生活在和平年代的我们,生活中的一点小困难更算不了什么。只要我们勇敢面对,我们会发现困难并不可怕,可怕的是我们害怕困难,被困难吓倒!保尔的精神永远值得我们学习!
钢铁是怎样炼成读后感范文 篇2
前不久,我读了《钢铁是怎样炼成的》一书,感触很深。读的时候我随着主人公保尔·柯察金的成长和他的命运心中跌宕起伏。细细品味这本书,品味着保尔的精神,越发感觉到我们应该从保尔的精神中汲取营养,坚定自己的理想信念,树立正确的世界观、人生观和价值观。
记得书中有句脍炙人口的名言:“人的生命是最宝贵的”。几乎没有人甘心平平庸庸地生活,因为即使小草也想努力为春天增添光彩,希望在春回大地的彩卷上留下自己的身影,但是未必人人都能炼就成一块好钢。
那么钢铁是怎样炼成的?相信大家的脑海里一定会出现那烈火熊熊的炼钢场面。有人说保尔是天生的英雄,其实,在这个世界上没有真正的'英雄。保尔之所以成为英雄,完全是由于自身的努力。
和保尔想比,我们今天的生活是多么幸福啊!我们沐浴在这明媚的春光里,让我们寻找往日的英雄情结,重塑“保尔精神”,意义非同小可。为了我们祖国的繁荣昌盛,让我们以保尔为榜样,去炼就人生,乐观地拥抱未来吧!
钢铁是怎样炼成读后感范文 篇3
主人公是一位名叫保尔的俄罗斯人讲述他是如何从一个淘气的孩子变成一个英雄的。保尔,一个很普通的战士,却有钢铁般的精神,是什么样的力量鼓舞着他前进呢?是共产主义的力量,这就是他与病魔作斗争的动力。保尔说“人最宝贵的东西是生命。生命对人来说只有一次,因此,人的一生应当这样度过:当一个人回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧。这样,在他临死的时候,能够说:我把整个生命和全部精力都献给了人生最宝贵的事业――为人类的解放而奋斗。”
钢铁到底是怎么炼成的呢?其实人生就像是在炼钢,没有什么东西是天生就有的,保尔也不是天生的英雄,它也是靠自己的坚持和努力――在战火纷飞的战场上,生死攸关,可他丝毫没有退缩;工地上,饥寒交迫的情况下,他也没有倒下;双目失明,双腿残废时,他没有放弃,而是选择了另一种方式来支持革命,写作。保尔他把自己一辈子的`心血放在了革命上。人生的道路难免磕磕碰碰,会遇到许多的困难,失败,嘲笑,但我们一定克服。
每个人的生命都是有限的,或许我们用一生的努力都不会成为一个英雄,但只要我们勤奋,坚强,乐于助人,我们至少会成为一个对社会,对国家有用的人,同时我也认为这样的人就是一个了不起的人!
钢铁是怎样炼成读后感范文 篇4
自从我读了《钢铁是怎样炼成的》这本书,我就对书中的主人公保尔油然而生出敬意。
这本书让我领悟到:一个人的毅力对他的一生是有很大影响力的。
保尔从小不是被母亲责骂,就是被神父冤打。但他相信,只要有足够的毅力,一样可以很好地生活下去,并立志要从军。长大以后,他实现了他的从军梦,成为了一名伟大的军人。从军期间,他凭借自己的毅力和老一辈的栽培和教育,全方面刻苦学习和严格要求自己,终于锻炼成具有崇高理想,坚毅的意志和刚强性格的革命战士。他把自己和人类的解放连在一起,义不容辞地去追寻幸福,为人类的解放做斗争,尽自己最大的能力使世界和平!
毅力是成功之本,是一种坚持,是一种积累;毅力是无穷的力量,是一种锲而不舍的精神。有了毅力,人们就不会向困难和挫折低头,而会更坚强地去面对。
毅力也需要坚持,在坚持的.同时也需要毅然断然的决断。有毅力的人面对考验能无所畏惧。
看了《钢铁是怎样炼成的》,让我懂得了:我们现在的美好生活来之不易,要倍加珍惜,更要成为一个有坚强毅力,无所畏惧的强者。