做一名真正的程序员

2024-04-13

做一名真正的程序员(精选6篇)

篇1:做一名真正的程序员

如何才能成为一名真正的Web程序员[2]

]

3. 组件技术

我想是现在的Web应用推动了组件技术的发展,以前,从老式的静态库、动态库(dll),到现在的COM/DCOM,再到正在兴起中的Web Service;从单机调用,到基于内部网的分布式调用,到现在基于Internet的分布式计算。现在的.应用都是基于组件的n层结构,最明显的就是COM和JavaBean。

这些东西体现了软件架构的发展,以前是基于单机的应用,然后是C/S结构,到现在的B/S结构。我记得李维曾经说过,程序员一定要注意软件技术的发展趋势,只有这样,才不至于被淹没在技术的洪流中。我想,作为Web程序员,一定要明白COM的原理,如何实现这种调用、如何进行分布式调用。说实话,我觉得COM还是比较复杂的,否则微软为什么要提供ATL和VB呢,要搞明白,应该学学C ,因为VC中提供的ATL库可以很明显的说明COM的内部运行机制,

4. 网络技术

这可以说是Web程序员最应该懂得东西。起码,应该知道Web服务器的机制,要明白Http协议。就拿IIS来说,要懂得web应用程序运行的进程安全和IIS的关系,懂得ISApi的作用。

如果有时间,就看看TCP/IP,看看winsock,这些都是底层的网络的东西。

我所说的这些都是基于微软技术下的东西,其他的像Java方面的东西都可以对照参考,就不多说了,这也是我这几年来的一些心得。总之,学海无涯,每当接触一些新的东西,就会发现自己的不足,同时也就觉得基础知识的重要。说实话,像我们做应用开发,用别人的东西,在现在这种情况下,新的技术层出不穷,稍不注意就会被甩开,这也是没有办法的事情。

篇2:做一名真正的程序员

参加了全市股级干部培训之后,我个人受到了很多的启迪和感悟。作为公安机关的一名股级干部,我当不负厚望,立足基层、加压奋进,真正把股级干部的职责履行好,把“三项建设”落实好,把基层公安工作开展好。

一、在学习和实践中锻炼自己,做好基层公安一线的“先锋官”。此次培训班,使我深深感受到,必须时时刻刻加强自身的学习,并在学习和实践中锻炼提高。要认真学习和实践科学发展观,要坚持用科学发展观武装自己的头脑,学会从基层的实际出发,科学、全面、扎实落实各级党委的战略决策。同时,要抓紧对公安工作理论和公安基础业务的学习,在不断提高自身政治思想觉悟的同时,不断加强和提高自身业务素质的养成,善于在错综复杂的形势下,有效驾驭当地治安形势,善于在不断变化的情况下,妥善处理各类突发事件,善于在不同条件的环境中,冷静应对各种新挑战,从而使自己真正成为“政治合格、业务精通、作风过硬、品行优良,把握上级指示精神准确,落实上级战略决策迅速,推进基层各项工作扎实”的公安一线先锋官。

二、在总结和探索中磨练自己,做好基层公安一线的“排头兵”。作为股级干部,始终处在一个“排头兵”的位置,自己不仅是指挥员、战斗员,更应当是“勘探员”和“调研员”。要善于总结自身工作,及时发现存在的不足,特别要敏锐察觉存在的各种问题和苗头,尤其是在队伍管理上,要体察入微,防微杜渐。同时,作为公安一线的战斗实体,股级干部必须注重对各类治安动态的研究和分析,牢牢把握一方社会治安的总体脉搏,要善于铺下身子,深入社会、深入群众,认真开展调查研究,时刻理清工作思路,认清工作方向,随时完善和修正工作措施,在打击犯罪上,真正做到精确制导、精确打击;在队伍建设上,真正做到有的放矢,招招实效;在致力和谐警民关系建设上,真正做到率先垂范、为人师表。此外,要大胆探索基层公安工作的新方法、新途径,想普通民警之未想,为兄弟单位所未为,以为人民负责,为上级领导负责的高度责任心,以科学、客观、求实、求真的工作态度,积极开拓创新,创造性地实现基层公安工作的赶超发展。

三、在信心和决心中砺炼自己,做好基层公安一线的“领头雁”。信心的建立,源自对自身工作的准确评价和判断,决心的下定,取决于对工作发展的科学前瞻。作为一名股级干部,一方面,需要学会站在上级领导的高度把握局部的宏观,另一方面,必须要置身普通一兵的位置调节微观。要做到这一点,就要按照干部标准来严格要求自己,让自己在实际工作中自觉接受各种砺炼。作为股级干部,他必须要具备一定的工作信心,不可以其昏昏、使人昭昭;他必须要具备做好一切工作的决心,在精神和意志上,不可有半点疲软。唯有自己振翅高飞,才能率众奋起。

篇3:如何成为一名真正的学生干部

一、学生干部的五种角色定位

根据我这些年的工作经验, 我认为学生干部的角色定位可以分为以下五种:

1. 服务角色:

学生干部是普通又不普通的学生。学生干部既是学生工作的对象, 又是学生工作的主要载体, 是倡导大学生“自我管理、自我教育、自我服务”的核心力量, 因此学生干部是学生中的自我管理者, 也是服务于广大学生的角色。

2. 模范角色:

模范并不是优秀的代称, 而是指学生干部值得学习和效仿的理念和行为。学生干部必须成为自己工作领域、专业学习、日常行为或者道德体系中的标兵, 但并不要求成为全面的模范, 而是某方面突出的模范。

3. 桥梁角色:

学生干部是师生之间、同学之间、学校与同学之间的纽带。在熟悉学校的工作内容后, 掌握分解任务的能力;同时通过调查研究掌握学生的思想、学习和工作等各方面的情况, 主动向老师形成书面或者口头的汇报, 作为管理角色的依据。从这个层面上看, 学生干部的作用大于老师。

4. 管理角色:

管理角色定位是学生干部区别于学生的最大不同, 是学校、社会对学生干部认可的系统性职能和首要角色, 是“自我管理”实现的重要保障。因此, 学生干部的管理角色使学生管理学生的事物更加系统化, 而不是滥用公共权力谋取私利, 逐渐成为学生管理中的障碍。

5. 学生角色:

遗憾的是, 有相当一部分学生干部在自我定位时主观上看重“干部”而轻视“学生”, 造成了“角色倒置”的可怕现象, 这会使“干部”的工作成分压倒了学习成分。

二、当好学生干部要处理好四种关系

找准学生干部的定位后, 我认为要处理好以下四种关系, 才能为当好学生干部打下一定的基础。

1. 干部与同学的关系:

要树立为同学服务, 创造良好学习氛围的工作宗旨;要身正为范给同学起到旗帜鲜明的导向作用;对同学要细心、耐心地给他们学习生活的指导。

2. 干部之间的关系:

干部之间要互相帮助, 要有团队合作和协作的精神。“一根筷子轻易被折断, 十双筷子牢牢抱成团”, 团队精神的力量是不可估量的。所谓合作是指为了达到同一个目的而共同努力, 协作是指为了达到不同的目标而相互协调。每个干部的职能是不一样的, 因此在工作中要互相协调, 共同发展。

3. 干部与老师的关系:

每位干部都是由多位老师观察选拔出来的综合能力出类拔萃的同学, 主要职责是协助老师共同管理好班级和校园, 因此给老师反馈的信息一定要实事求是, 要诚实可信, 要不卑不亢、积极主动服从老师的谆谆告诫和指导, 及时如实上报自己所知晓的信息。

4. 学习、工作、休息的关系:

文武之道, 一张一弛;要拿得起放得下, 不要熬夜, 注意休息, 有解不开的心理疙瘩要及时同家长老师沟通排解。

三、当好学生干部要具备五方面的能力素质

处理好以上几种关系后, 学生干部要想进一步出色地完成各项工作任务, 就应不断增强领导才能, 提高能力素质。学生干部的能力素质包括很多, 其中最主要的有以下五个方面:

1. 管理、组织协调能力:

如对班级纪律、卫生、安全的管理及对大型活动的组织协调。

2. 观察、分析问题能力:

如在学习生活中要注意同学的思想动态, 观察是否有同学有违纪的苗头、是否有同学集结小团体等矛盾趋向, 要及时报告给老师, 防患于未然。

3. 语言表达能力:

作为学生干部, 他的感召力, 离不开人际交流和沟通的能力, 给老师汇报工作时语言要表达准确流利。

4. 处理突发事件的能力:

同学中突发疾病等情况的时候, 不要惊慌失措, 要冷静地处理突发事件救治并同时派人告诉老师。

5. 自我控制能力:

这一条对于学生干部来讲是至关重要的。首先遇事不慌要冷静、理智, 是我们开展工作的前提, 这就需要我们要有良好的心理素质, 要善于调节自己的情绪, 要有坚定的信念、顽强的意志、稳定的情绪、健康的身心, 做事要自信;在工作中, 会遇到很多困难, 比如在检查卫生的时候别人会对你不理不睬, 甚至有时候会遭受语言上的侮辱, 高年级的学长那些藐视的眼神等等, 也是让学生干部心理很不平衡的事情, 此时一定要很好的自我控制避免冲突, 有自己解决不了的困难一定要告诉老师, 不要硬上, 要注意保护自己。

篇4:王能智:做一名真正的教师

1970年,王老师大学毕业后,被分配到密云县焦家坞中学,成为一名“乡村教师”。在老校长的支持、帮助和鼓励下,他凭着年青人的勤奋、热情和关心农村孩子的朴素情怀,用自编的乡土地理教材,帮助闭塞的农村孩子们睁开了一双科学的、理性的看待家乡和认识家乡的眼睛。尽管当时并没有诸如“学有用的地理”、“学生活中的地理”等课程理念,但它们已在王老师的课堂上鲜活地表现出来。

1981年,王老师调到北京古城高级中学,从此,偏居校园角落的一间小屋成了他的“地理实验室”。在这里,他“辨才”——发现学生的优点和特长;他“点捻儿”——点燃学生头脑中的智慧火花;他引导学生“自主超前”,帮助学生去钻研没有学过的东西,提高他们的学习年龄。“让学生沉浸在琢磨状态”、“把学习的权利交给学生”、“千方百计帮助学生成功”,这些符合学生身心发展的实践,使王老师成为学校里“最受学生欢迎的教师”。在王老师带动下,石景山区的地理教师团队共同努力,使石景山区地理在高考中创造了全市六连冠的佳绩。

1993年,王老师调入北京教育学院石景山分院(原石景山区教师进修学校),成为地理教研员。当时的情况是:中小学课程教育改革已经启动,但没有现成规律可循;在高考中消失的地理成为家长、学生心目中的边缘学科;一批批刚毕业的大学生陆续走上讲台,与胜任教学的要求还有很大距离……“内忧外患”的形势下,王老师肩负起培养青年教师的历史使命。他独到的“教师观”、“教师发展观”、“培养方法”吸引着充满朝气、刻苦钻研、坚守事业追求的年轻人,也成就了一批年轻人。

在王老师的工作年历中,没有寒暑假和节假日,没有双休日和上下班时间。一年中,王老师只在春节期间的年三十到初二休息三天,看望老友,陪陪家人,其他时间不是在地理实验室,就是在青年教师的课堂中。他对当面请教的青年教师说:“我每年的休息时间是大年三十、初一和初二,其他时间你在办公室更容易找到我。如果不在,只有两种可能,一是外出开会,二是野外考察,你就晚上打家里电话。”

由于白天要上课,所以经常有老师在下午放学后再到分院找王老师请教问题。往往天黑了,整个办公楼漆黑一片,只有地理实验室灯火通明,那是王老师还在和来请教的年轻人研究、探讨问题。

到今年年底,王老师就满70岁了,但他没像其他老人一样享受休闲、安逸的退休生活,一直“退而未休”——每天按时到石景山分院的地理实验室上班,除了生病住院,不论冬夏春秋,不管刮风下雨,雷打不动……

如果你问:“王老师这样努力,会不会是为了功名利禄?”一定会有很多熟悉王老师的人斩钉截铁地回答你:“绝对不是。”

王老师是爱新觉罗后裔,有堪称显赫的家庭背景。改革开放后,身居海外的奶奶非常希望他出国定居,一是补偿他多年来的辛苦,二是全家人享受天伦之乐。他却选择了留下。留住他的,除了“我是中国人,不想出去做二等公民”的信念外,还有学校那一批学养深厚的同仁、民主严谨的文化氛围、宽松的教育教学研究环境,更有自己正在做的小课题研究、自己的学生、自己热爱的教育教学工作。

王老师带着老师们做出的教研成果从不署他自己的名字。北京教育学院地理系一位教授要研究一个课题,找到王老师帮忙。王老师奔波于几所学校间,帮她设计实验方案,准备实验材料,组织研讨备课,进行评价测量,最终课题结题,那位老师在王老师指导下发表了多篇论文,可每一次署上王老师的名字都被他一笔划去。

王老师外出讲课从不收报酬。实在推不掉的,王老师就把它们攒起来,当作学科的“小金库”。他用这些钱带领教师们外出学习、考察,搞教研活动,为他们买各类专业书刊。青年教师生活上遇到困难,他帮助克服,送去温暖。

中国第四纪冰川遗迹陈列馆成立之初,王老师带领冰川馆的工作人员几乎走遍了京西典型的地质构造山区,对冰川遗迹的保护、博物馆与科普教学结合、冰川馆的发展提出许多建设性的意见。野外考察是艰辛的,没有专车时他就乘公交车,车辆无法通行的地方他就步行。与冰川馆合作的二十多年里,王老师风餐露宿,没拿过冰川馆一分钱的报酬。

这就是王老师。在成绩面前不居功自傲,在利益面前拱手相让,谦和超然是他的风范。他始终保持着高度热情,关注前沿、立足实践、把握需求、做“真学问”。所以,尽管王能智老师已荣誉等身,但他仍真诚地说:“我还是学生。”所以,进门,他依然要请别人先进,无论是长者还是晚辈,高官还是清洁工;落座,他依然要先请别人坐下,别人不坐,他会永远站着;说话,无论面对何人,他依然总是以“您”字称呼,即使对方是20岁的晚辈……

《周易》云:“君子以厚德载物。”老子说:“上善若水,水善利万物而不争,此乃谦下之德也……损而不竭,施不求报,善为仁也……以其不争,故天下莫能与之争。”

篇5:一名中学生真正应该做的作文

现在,中国已经是世界上有地位,有威望的一大国家了。

然而,中国的经济在飞奔高峰,中国人的道德素质却坠落谷底。

作为一名21世纪的中学生,我们应该做到文明,礼貌,尊重他人,有孝心,有素质,讲卫生等。

谈到文明,现在的中学生一堆一堆的,一个个总是出口成脏,把原本美好的气氛的给污染了。所以,作为中学生的我们,应该文明用语,禁止脏话连篇。

说起礼貌和尊重,更是这样,在校园中,在路上,在家里,有的`学生见到老师,邻居,从来都没有打招呼的习惯,这不就是没有礼貌了吗?还有一些学生,在老师上课,别的同学回答问题的同时,她们做的不是认真听,而是讲话,在课堂上讲话,开小差,议论纷纷,这不就是对别人的不尊重吗?作为中学生,我们应该学会尊重他人,礼貌待人。

其实,作为中学生,我们要做的不是走到哪里都随手扔下手里的垃圾,走到哪里都装威武耍酷,也不是脏话连篇,仗势欺人。而是,无论走到哪里,都应该记住自己是一名中学生,应该随手捡起地上的垃圾,尊老爱幼,文明用语,把中华民族良好的族风传递。

篇6:怎样做一名合格的程序员

作者:**,1990年毕业于**工学院计算机软件专业,后又于**年毕业在**大学完成软件工程专业硕士的学习,现供职于CNPC旗下的一个行业软件研发中心,因为在网上看了许多有经验的各路软件开发人员写的好帖,一时手痒兴起,也凑一篇壮壮声势。

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

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

程序就是一系列按步骤进行的操作序列,它有好多种级别,比如最低级的微程序、次低级的汇编程序、高级的各种编程语言程序、最高级的脚本语言程序,也许我列的不对,但没关系,我要说的是不管是那个级别的程序,其本质都是操作的逻辑序列。大多数系统和应用程序都是建立在高级编程语言上的,比如C、C、C

#、FORTRAN、BISIC、JAVA等等,就让我们只关注这一级的编程能力吧。因此如果一个程序员的逻辑能力不高,他永远都不能成为一名具有合格职业水准的程序员,我们在下面的讨论有关编程能力的方方面面,最终都是为了最大程度地提高和实现一名程序员的逻辑能力。

一、掌握基础知识:十六年寒窗的持续积累

从7岁读小学起,经过16年的学习,你从软件专业本科毕业后,必须完成以下几门专业课程的学习:计算机组成、操作系统原理、汇编语言、数据结构、编译原理、数据库原理、软件工程、结构性设计语言(PASCAL、)、面向对象设计语言(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!他们中绝大多数人永远都只能停留在这

个层次上,心浮气躁,一生都再也当不成真正的程序员了。总结一下,其实你在这时需要的是对自己掌握新开发环境的能力的自信,而不是一遍遍地重复来证明

自己。第二个大挑战就是你明白了只掌握VC是不够的,你发现自己有点浅薄,有

很多东东你会用但你不太懂,很多方面支持VC编程的知识你都没掌握,比如操作

系统的源码、网络协议知识、Windows的注册表、进程和线程的基础知识、硬件

驱动方面的知识、ActiveX、Windows庞大的API,又是一个等等等等,这些基础

知识的学习和掌握可是要花费大量时间的,你再一次深切地感到时间太不够用了,因为这时的你大概有许多俗务缠身了,所以有点沮丧,还不用提IT业每天不知

有多少新东西在发布,KAO,永远都跟不上,越拉越远了。哎!别气馁,振作一点,你还是忘记了自己是个职业人,既然好多东东在工作中你永远都没机会用,那

么干嘛要学呢?用什么才学什么,最多预测到马上要用什么,先一步学什么好了,要知道没有人是真正的、无所不精的全科大夫,除非你是神,但如果你还在耐

着性子看这篇文章,你肯定是个人嘛。

OK,一般工作后三五年,你经历了上述过程,经受了诱惑和考验,终于明白了一

个道理:你要的是强劲的学习知识的能力,是对某种软件知识/技能的有深度的精

通,一种摸到它的根的深度,而不是已掌握的技能的种类和数量。这时无论谁用

他掌握了多少种你不会的技能来吓唬你都没用,你对他的层次只有蔑视。通过几

年的学习和工作,要记住最重要的一点,永远最重要:对自己学习IT知识能力的自信,一个程序员一生都要不停地进行高强度的学习,用心问问自己,有没有这

个自信?别用虚荣心来骗自己哦,如果没有的话,那就不必花费你宝贵的时间向

下看了,作者在此感谢你有耐心看到这里,现在建议你关闭这篇文章,趁着年轻,当机立断转行吧!

三、注重逻辑:成为一名职业程序员

好,再前进一点点,你就要成为一名职业程序员了,让我们继续来完成这个任务

吧!我们在前一节提到过,“你发现一些个别的demo是极品,它所展现的程序逻

辑结构是你设计不出来的,你现在有点更关心它的程序设计构架,甚于对你原始

目的(某种相关的技术/技巧)的关注”,其实你是在关注这个demo程序作者的思维

逻辑,所有程序的本质就是逻辑。技术你已经较好地掌握了,但只有完成逻辑能

力的提高,你才能成为一名职业程序员。打一个比方吧,你会十八般武艺,刀枪

棍棒都很精通,但就是力气不够,所以永远都上不了战场,这个力气对程序员而

言就是逻辑能力(其本质是一个人的数学修养,注意,不是数学知识)。逻辑能力

也是逐步提高的,开始时你一定是用直观的逻辑能力来编程的,怎么想就怎么编,不对就再改,在改进中提高自己的逻辑能力,从直观逻辑能力提高到抽象逻辑

能力,这是很正常的。提前说一句吧,到达逻辑能力的至高境界,其表现是用数

学语言来描述问题和问题的解决办法,高度抽象!好,说回来吧,你要提高逻辑

能力,最快的办法就是读别人写的结构优秀的程序。优秀的代码是百读不厌的(这

句话是我抄来的),暂时放放对其中某种技术和技巧的关注吧,你要推导和学习的是这些好程序的逻辑结构,它们是被精心设计出来的。你可以先捂住这个demo程

序,自己设计一个功能相同的程序结构,然后比较一下demo的程序结构,如果差

距较大,那你就不应简单地改进一下,而是要把demo作者设计的过程在心里复原

一遍,做到这一点也许有点困难,但这种事干的多了,你就会越干越快,越来越

得心应手,你的逻辑能力飞速提升,你能看得上的逻辑结构优秀的程序开始不多

了,下一步就是练习。从工作中开始吧,如果你有空闲,你需要做至少两类练习,一类是算法练习,所有的经典算法都是经典的逻辑,题目有的是,像个好学生

一样吧,每年的国内国际编程竞赛都有逻辑要求非常高的题,你可以只选一两道

难题来做做。当你可以把复杂的单递归程序(只有A调A)变成非递归程序时,已经

不错了,如果你能看得懂双递归程序(A调A、A调B、B调A、B调B都有),我为你鼓

掌!你不必往下看了,我有点不好意思啦――班门弄斧,你快滚蛋吧!另一类是

把以前和当前你工作中你不满意的程序推倒重新设计一遍,这非常重要,省时省

力,因为你熟悉需求,技术上也没问题,目的就是改进程序的逻辑结构,很划算

哦,唯一要克服的就是:你对推翻以前工作中那点小小成就的心理障碍,如果你

真想优秀,说句粗话:这点心理障碍算个屁,一遍遍反复地推倒已有的成果只能

使自己快速进步,放手干吧,没什么好可惜的,马恩早就在《共.产.党宣言》里

说过了:在这个过程中,你失去的只有锁链(禁锢你思想的锁链)。

让我们来总结一下,经过自我否定后,再生的你尽管对过去的“业绩”还有一些

眷恋,但已是一个初步具备职业水准的程序员了,掌握了相应的技术和技巧,具

备了较高的抽象逻辑思维能力,最主要的特征是:能自觉地自我否定,不断地追

求更高水平的逻辑能力。

在这个过程中,如果你能注意以下一些小的方面,你前进的步伐也许会快一些。

l从编译原理的角度来理解你工作中使用的高级语言,如果你做到这一

点,至少有两个好处,第一个好处是避免一大堆低水平重复出现的编译错误。一

名优秀的Coder平均在一个工作日中应该完成200行以上的源码,其编译错误应该

控制在5个以下,要知道这200行源码不是一次完成的,所以大多数情况下你都要

追求一次编译通过,而一名职业水准的程序员,应该进一步做到即使用purify这

类的工具来检查源码,也不会存在严重的内存泄露。第二个好处是可以提高源码的可读性和效率。规范地编写你的代码使你自己的逻辑清晰,因为你明白多加几

个括号和空行、多换行对齐、多注释,编译器是会自动识别的,不影响程序执行的效率,反过来,控制好递归调用和循环内的if语句才是提高程序效率的关键,要全力避免递归,但要深刻理解递归,能通过自己建立堆栈来把递归程序转换成非递归程序,要求还是较高的哦!

l避免思维陷阱,只要你是人就一定有自己的思维惯性,这一定又会表

现在你的程序逻辑中,有时你就是从这个惯性中跳不出来(谁都有这个时候),但

要心里有数才行,所以你需要帮助,如果你有几个水平相若或更高的职业伙伴,太好了,当遇到花30分钟还打不下的bug时,就别浪费时间了,找他们吧,最要紧的是能思路清晰明确地表述你的问题,通常你自己在这个过程中或者伙伴中就有

人把问题解决了,又快又好。另外,有几个可以良性竞争的职业伙伴是人生的一

件幸事,1 1>2,大家各有所长,你最好做到及时公开你的成果,技不压身嘛,IT

发展的这么快,你再优秀,那点东东也没有什么值得隐藏的,所以你可以技术或

水平不够高,但千万不可以让真正具有职业水准的选手鄙视你的职业品质和行为

l有自己debug的特点,下面的说法作者不敢太肯定,只是经验之谈。即

使在VC这种高度完善的开放环境下,你仍然应该要求自己仅凭打印语句就能debug

。这也有两点好处,第一个好处是,遇到bug你会认真想问题所在,而不是用

debug工具一步步简单地追踪卡在哪儿了,你定位bug范围的方式是从大到小、从

粗到精,这是一种自顶向下的思维方式,而用工具追踪,容易形成自底向上的思

维方式,这不算好,你应该先看到森林,再看到树木。我反复提及:程序就是逻

辑过程,大多数程序从main函数开始,是由数据结构和功能子程序组成的一个树

形结构的逻辑过程(要认清即使是面向对象的程序语言也是一样的),它的执行过

程是深度优先的,但你定位bug应该是广度优先的,好好想想这一点,嗯?第二个

好处是强迫你思考并记住而不是用工具看到调用过程,你大脑的抽象逻辑思维能

力和胳膊上肌肉的力量一样,都是练出来的,如果你的bug是程序结构上的逻辑错

误引起的,这一点就非常重要了,顺便说一句,最难打的bug就是程序逻辑结构错

误导致的bug。你要是真正明明白白地认识到这儿了,那我就没什么东西可以告诉

你了。总之,程序员的职业水准:生产效率和程序质量,主要是取决于源码中bug的数量和debug的速度,而不是取决于编写源码的速度。给你一个我自己定义的考

查一个职业程序员的指标:一个合格水准的职业程序员,编程的时间如果算一份的话,其累计debug的时间不能超过一份,真正职业高手累计debug的时间应该控

制在0.5份以下,如何?你关上门悄悄问问自己,你花费在编程和debug上的时间

比例是多少?如果你把程序员作为自己一生的职业,那么就永远都要牢记一点:

追求做一个0bug的优秀程序员!这是任何一个想成为职业程序员的人的理想,请

相信:坚忍不拔地追求实现这个理想将让你出类拔萃!

l做好程序的单元测试,这是另一项考查你是否是一名具有合格职业水

准的程序员的一个必要指标。其实在你拿到需求的时候就要准备单元测试用例了,并且这些用例将直接影响你的详细设计(有关软件设计本来是该放在第四节讲的)。我们还是打比方吧,当你拿到一个需求时,除了分析它静态的功能外,还应明

确它动态的操作/执行过程,把这个动态过程明确地用流程图画出来,比如分为A

~Z的26步,其中A又可以进一步分解为A1~A5的5步,直到不能再分解为止。又比

如说A3步不可分解了,那么你应该把A3步的正常操作和所有五花八门的异常操作

都列出来,确保正常的操作肯定正确,异常的操作起码程序不退出才行。这样你

就要写好多好多的测试用例,说句老实话,我也从来不写!但我一般会列一个提

纲,比如A3步有正常的操作a、b、c、d、e共5项,异常的操作有f、g、h、i、j、k、l、m、n共9项,你在进行单元测试时都应该跑一遍,这样的程序都还不敢说质

量如何好,但起码可以说较稳定吧!如果要想在进行单元测试时干得快、效率高,那么在进行详细设计时,你就应该把A3步中对所有正常操作和异常操作的判断

都设计好,在编程实现A3步时,使得程序的结构合理高效,对不对?所以,如果

你在工作中是割裂地看待软件工程中从需求、分析、设计、编程、测试等各个环

节,恐怕水平很有限喔!但如果你在分析需求时就能看到测试的问题,并改进设

计和实现,为此做好相应的准备工作,嘿嘿,整个软件开发过程你的效率会高很

多,通常你在一个开发团队中就会高度自信的,你已越过当一名偏颇、露骨的高

手的境界,成为一个平静的高手,这可是Thebestinthebest!,用周星星的话说:是高手之高高手,因为别人看不出你高在哪儿,没见你有什么高招或特拚

命干,但反正你就是干得又快又好、又省力。关于进行单元测试还有很多复杂的方法,在此本文只提到了最基本的一点,目的是让你在工作上考虑周全、安排有

序,其它的自己琢磨吧,没有人能替你吃饱饭!

l如果你是用C++编程,我再简单谈谈有关内层释放的一个小技巧,就

是对所有你编写的类,在构造和析构函数中加打印语句,统计每个类在运行程序

时构造和析构的地方,如果是配对的,那么起码没有对象类一级的内层在程序运

行结束时没有释放,然后你就可以把打印语句删掉了,招数虽土,但管用!

l还有其它一些好习惯,在这里我随笔写一些,你要是有不同看法也请

一笑过之吧。编程时应该对齐缩进,一个缩进用一个tab键,一般是4个空格,严

格遵守开发团队的编程规范也是非常重要的。一个子程序不应超过30行(不算空行

),其内多重循环不应超过3层,否则都应该分裂成两个子程序,个别算法程序可

以长一些,但也不宜超过200行。通常一个类的所有成员函数总和不宜超过1500行,多了就应该考虑分解成两个类(这个工作最好在设计时就完成)。每完成一小段

程序,比如15~30行,就立即编译运行,不要假装高手,先敲它一大堆程序,再

编译运行,妄想一次成功,体验一种假爽的、虚荣的快感,或炫耀给别人看,这

么做只能证明自己是一个不折不扣的傻瓜,装酷而已。因为只要有一次不成功,你就会花费大量的时间来调程序,别人的进度在这时就远远地超过你了,平常心

是道,还是修炼真功夫吧!孙子兵法里关于这一点有明确的阐述,我就不引用了,但建议你真的不要这么干,除非你确实就是这样总是一次就成功的天才,那你

还看这篇文章干什么呢?我又不是写给你们这些天才们看的。再就是有学会买好

书、读好书,关于计算机和软件方面的书太多了,时间有限,比如有一个叫侯捷的家伙,几乎写的每本书都不错,张国峰的C++编程也不错,这只是我的个人意

见啊,好书多着呢,列出来比这篇文章长好多倍,我就不多说了。还有一招,要

是你运气好,能搞到一些著名软件系统的源码,好好读读吧,在此我只能告诉你,Linux操作系统的一些源码不错,是开放的,你可以合法地搞到,其它的不要说

是我建议你侵犯知识版权啊!

四、天生神力:成为系统分析员

本来就论述如何成为一名职业程序员而言,本文已基本完成任务了,但《菜根谭

》有言:竭世机枢,似一滴投于巨壑,穷诸玄辩,若一毫置于太虚。既已乘兴到

此,何妨多置一毫于太虚呢,作者不才,干脆尽兴写算了。

你要是运气好,直接进入了一个严格规范生产的软件企业就业,刚开始就应该是

按别人做好的软件设计来实现编程,你可以有机会直接学习软件设计,当你积累的足够多了,能够对其中的一些设计提出好的改进建议,而且干得又快又好,就

会渐渐地展露头角,我相信你终有一天成为一名软件设计人员(注意,不是软件产

品设计人员),步入系统分析员的行列,但这还需其它的一些条件和自我修炼。如

果你在一个不规范的软件企业工作,那也不错,你很可能直接就有机会进行软件

设计,然后开发、测试,甚至还不得不自己定义需求,把软件开发过程的各个环

节走一个遍,当然这样对你的要求更高,而且你也不容易得到及时有益的指点,在正态分布的情况下,你应该是成长的很慢。但不管就业的单位如何,如果你决

心要成为顶尖软件职业选手,通常什么客观困难都阻挡不了你,然而你个人的因

素可能会阻止你的前进。下面提出的观点纯属一己之见,伤人自尊之处作者在此

提前道歉,并建议你除非对本文有强烈的兴趣,否则就请直接看第五节或放下别

看了。丑话已说在前头了,在各种软件开发组织的发展过程中的事实也证明,只

有少数程序员能成为系统分析员,我想这一点不是我杜撰的吧,因此你要是在看

接下来的部分时感到气愤难当,那也实在没着,纯属活该,因为作者只是在说明

自己的观点而已,你最多可以呲之以鼻,表示一下你的轻蔑好了,但没有任何理

由可以骂人!

作者自己没有到微软面试过,但身处软件行业,关于微软的许多东东当然还是有

耳闻的,据说微软招聘一名程序员要过五个已经成为微软程序员的面试关,而且

是一票否决制,又据说大多数面试题并非编程,而是一些有关逻辑和智力的题,作者私下也做过许多流传的微软面试题,并对此做法深以为然。程序的本质就是

逻辑,所以几十年前就有人提出编程是一门艺术,而艺术是要靠天份的,这一点

少有人反对。一个人的逻辑能力可以不断提高,但其能到达的终极逻辑能力的层

次必定为其天生智力所限制,这一点就让人不易接受了。好笑啊!人们可以公开

承认自己没有某种或全部的艺术天份,但要说自己逻辑天份不够,换句话说承认

自己笨、IQ不够高,往往是要怒发冲冠的,其实这又有什么区别呢?话都说到这

儿了,再次建议你如果不够自信,就跳过这一节吧,直接看第五节,好吗?

好了,把话题说回来,你已经成为一门合格的职业程序员了,如果要想成为从事

软件系统设计的职业系统分析员,第一件事就是悄悄找一个标准智商测试的网站

或其它渠道,严格认真的测一测自己的智商,如果IQ低于130(正常智商是110),就请别费劲了,打消掉成为系统分析员的念头吧!好!好!先请你冷静一下,好

好想想,其实微软面试时就是在测你的智商和逻辑数学素质呢,这就是本节的标

题为“天生神力”的原因,因为设计就是从无到有地进行创造,无论是软件还是

其它行业都一样,可以有借鉴的,没有现成的,设计就是创造!如果你IQ在130以

上,又决心要当一名职业软件系统分析员,其实你不过是要准备好吃更大的苦而

已,有什么好虚荣的呢?

修炼还是从基本功开始的,过程和成为一名职业程序员差不多。必须使用设计工

具这一点是不用多说的。在工作中,你基本上遇到的是两类方式的设计,一个是

结构化设计,另一个是面向对象设计,就个人经验而言,面向对象的设计更好。

如果你工作中不得不采用结构化的设计,你必须熟练地掌握数据流图和控制流图的分析和设计,一般来讲,如果你把一个软件中用到的数据模型设计好了,针对

功能化的流程,不难设计出数据流图,但下一步设计控制流图才是挑战,如果你

按照需求走不通设计好的控制流图,那么你或别人在按照这个设计编程实现时,必定也走不通,没有奇迹会发生,还是在设计阶段严格要求吧,又有一点需要牢

记:返工是最慢的。当你在进行控制流图的设计时,也不要妄想得到需求人员提

供给你明确的指点,通常他们要是能够把需求的功能和操作次序写完整的话,你

应该就感恩戴德了,从需求中整理出功能、操作的拓扑次序和条件是你作为系统

分析员的职责。看看,要是没有一点图论的基础和拓扑学的入门知识,你是当不

好一个职业系统分析员的,即使你天赋不错,必要的数学和逻辑素质仍然不可或

缺。也不用气馁,永远没有最好的设计,只有更好的设计,反复地进行设计迭代,勇于推翻旧的设计,你将快速进步。如果你在工作中是采用面向对象进行设计的,那就更有利了,有关面向对象设计的书太多了,不用作者在此多费口舌,建

议精读一本经典的书,比如北大邵维忠等编译的《面向对象的分析》,有些方法

和技巧可能过时,但其逻辑的基本原理是非常正确的,其本质是,你在逻辑上是

如何认识这个世界的,你就是如何设计软件体系结构的,然后读读其它书,触类

旁通,自己创造机会多实践,成功自然会到来的,总之,不管是结构化设计还是

面向对象设计,评价一下自己的软件系统设计方案吧,有好多指标呢,比如是否

均匀和平衡?局部独立性强不强?有没有歧异的结构?有没有层次太多或太少?

有没有某个层次太大、太广?是不是逻辑结构先复杂了再化简的?还是只会设计

简单的,复杂不起来(这一点是笨哦,如果出现多次,请你不要意气用事,转行吧

)?最重要的一点,是否容易理解、实现和改进?你自己会得出评价的。如果有机

会看到别人的设计,一定不要错过学习的机会,自己推导一遍,认真比较比较,获益会较多。

走到这一步,你就应该关注设计模式了,首先还是学习,这方面的好书有的是,但一般在工作中用到的设计模式较为单一,应该多尝试一下其它的设计模式。其

次必须要明白设计模式不是设计思路,也不能代替设计思路,比方你要从A到B修

一条路,设计模式只是让你选择,是修水泥的还是柏油的?是高架路还是普通的,但线路必须你自己定,而线路就是设计思路,模式对思路是有影响,但不能代

替,所以如果你的智商高达250,我相信你直接用汇编语言也能写出面向对象的程

序来。第三在此有一个陷阱,很多系统分析员生搬硬套设计模式,全然不懂如何

融会贯通,在你的一项具体工作中,往往是以一种设计模式为主,其它模式为辅的,思维不拘泥于形式才是关键,而且也为你到达更高的软件设计的境界做好准

备。

唉!都不知该怎么向下写好了,因为已达到作者水平的极限了,我胡乱说一点,你凑合看吧。软件设计最终的层次是:以无法为有法、以无限为有限,这句话是

李小龙说的,不是我说的。再拾人牙慧一把,类比一个故事吧,金大侠在《倚天

屠龙记》里讲到张无忌初学太极,学会的标志是把刚学的招数全忘了,记住的是

太极的道理和精神,和李小龙有些相似喔,软件设计也一样,忘记所有的设计模

式,随心所欲进行设计才是至高境界,所以你能到达多高的软件设计的境界最终

将取决于你的哲学素质,这一点实在是不好写啊,你自己领悟吧!作者只有祝福

了!

五、职业人的终极目标:全面修炼,成为Leader

这一节更不好写,涉及到太多其它非技术方面的因素,特别是个人人生观和世界

观的修炼,如果本帖的点击率超过作者私下期望的一个数值,那我就争取尽力厚

着脸皮再补上吧。我只说一句,虽然大家都知道软件开发是一个团队性的工作,但追求参与一个大型软件系统的成功开发,是一名软件人员的本能,就像拿破仑

说的不想当元帅的士兵不是好士兵,所以不追求实现大系统的软件人员,也不是

一个好的职业软件人员,但你只有成为Leader,领导一个优秀的软件开发团队,才有机会实现这个终极职业目标,对不对?

好吧,不管你现在的感受如何,我都谢谢你能读到这里!我不习惯假歉虚,就不

说什么作者水平有限,本文抛砖引玉,欢迎大家批评斧正之类的客套话了,虽然

作者水平确实有限。所以我认为你尽管有权砸砖,但实在没必要搞回帖、或回骂、或顶之类的玩意儿,我只是尽兴写一点多年从事软件开发工作的体验,因此接

下来我就高挂免战牌,不回复任何回帖了。再次谢谢你能有耐心读到这里!希望

本文对你有所裨益,祝你成功!再见!

上一篇:处理方法下一篇:2021土木工程毕业实习报告202