程序员晋升

时间:2019-05-12 19:46:00下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《程序员晋升》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《程序员晋升》。

第一篇:程序员晋升

作为程序员,你应该知道的职场晋升之路

编者按:职业规划非常重要的一点是要学会角色分析能力。大部分人在长期的工作中趋于麻木,对自己的角色并不清晰。但是,在职者必须让自己有一些过人之处,让自己的价值和成绩得以体现并受到认可。《职场晋升路线图》旨在探寻不同行业的发展规律,为职场人士提供晋升的方法。

程序员篇:做一个程序员很忙,你需要去写代码,去创建meme,去进行测试。那么你为何还要做程序员呢?

1、为了写出优雅的Ruby程序。

2、为了用我喜欢的语言开发出一款人们喜欢的产品。

3、给人们遇到的现实的问题找到解决方案,对于我来说,我喜欢做我所做的。

4、去创造,或去组成能让人们生活更方便的东西或事物。

5、让我创造的东西能产生积极正面的影响,针对我,也针对他人。

6、快乐。我自己,还有那些直接或间接关注我和我的作品的人。

这些问题帮助你明白了自己为何要选择这条道路了吗?那么作为一名程序员,你知道自己未来的发展之路吗? 【一】程序员通常的发展路线是怎样的? 【二】综合才能型发展路线图

【三】初入职场,程序员的上升空间在哪里 【四】总结与提升 【五】职场榜样——雷军:从程序员到金山CEO

【一】程序员通常的发展路线是怎样的?

程序员通常的发展路线是怎样的?可以看看这个图,当一个初步的职业规划方案已经成型时,如果制订者目前已在一个软件公司工作,那么,对他来说进一步的提升非常重要。首先要做的则是进行角色分析,反思一下这个职业环境对个人的要求和期望是什么,如何使自己在单位中脱颖而出。

通常,软件技术人员的职业发展有几个选择:专注于技术,成为技术专家;转型到技术型销售、技术支持等;随着技术成长,从技术性管理到高级管理。这是大家都看得清楚的方向,也都在向这些方向的金字塔尖努力。

就像烹饪一样,每一个阶段目标都需要你进行角色分析,找出这一角色需要的‘配料’,当你注意收集技术、素养等相关‘配料’后,就会成功烹饪出你所需要的目标鱼。前提是你一定要了解自己的特点和优势,就好比黄瓜种子是不可能培育成西瓜一样。

这归根结底,都是以技术为基础。在扎实的技术基础上(高级软件工程师),如果有着比较强的抽象设计能力,又打算专注于技术开发,架构师是个好的选择;如果 性格更适合做管理,情商能力突出,技术型管理应该是下一步的方向。这种发展规划属于‘瘸腿走路’的类型,各有侧重主攻发展的职业方向,也是目前一般程序员 普遍采用的发展路线规划。

决胜点在于长期的点滴积累,认证证书、成绩、丰富的经历是求职的表面文章,在目前软件行业里不是很看中这个,真正的‘内功’是需要规划的。至于培训,我倒 是很建议直接加入软件公司,你就会学到很多实际的东西。不过,学历教育虽然在职业生涯里不是主要的,但是随着职位的提升却有很重要的意义,能辅助拓展你的 职业发展空间,而不是以此为阻碍从而失去更多的机会。

已经工作两年以上的程序员可以有几种基本的职业规划:技术专家、软件架构师、实施顾问或销售。其中程序员最主要的发展方向是资深技术专家,无论是 Java、.NET还是数据库领域,都要首先成为专家,然后才可能继续发展为架构师。尽管架构师的职位可以工作一辈子,待遇也非常好,对于科班出身的程序 员最为适合,但这种工作职位非常有限,因为在中国目前的IT行业,架构师需要的条件比较复杂,而且需求量也比较少,这也是我国软件行业走向国际并有待成熟 的因素之一。

【二】综合才能型发展路线图

目前国内缺乏的是管理能力和专业知识技能并驾齐驱的IT人才。特别是懂得运用目标管理技术的项目管理人才,既掌握核心技术又有全局掌控能力的项目管理人才,非常难找。我建议对于大多数人来说,首先是要专,只有在技术方向上做得比较深入,才能适当做工作调整,把自己转变为某个领域的专家。

根据自己的情况,决定自己做软件架构师还是高级的顾问销售,另外一部分人可能就会走向管理,这和 个人性格与情商有关。软件优秀的管理者都必须懂得技术,掌握核心技能的人才向管理岗位转型有很大的优势,因而提升管理能力成了转型的关键。譬如,当唐骏还 是微软一名普通程序员时,就从公司发展的角度考虑,向老板提议开发了中文版Windows,最终使他从几万名工程师中脱颖而出,成为部门经理。正如他所 说,虽然是程序员,但自己不能只把自己当程序员,你可以为老板和公司着想。

调查研究后,带着解决方案去找老板,就会得到老板的重视和信任,所以一定要增强工作主动性和参与性。无论是软件开发还是项目管理,国内员工大多只是做好份内事或完成交派任务,很少能主动发现问题。其实,只有拥有更高眼界,才能谋取大发展。

总之,程序员要根据本身的基本素质、技术能力选择开发层次,由低到高,逐步发展。也是一名程序员本身具备相应素质的循序渐进的发展轨迹,包括很强的技术背景和综合管理才能等素养,这也就是所谓‘两条腿走路’的职业规划发展路线。

在未来发展上首先确定自己的发展方向和研究方向,在学习技术的同时还要为以后做准备,做好以后的技术转型。广度和深度是相对的,先广还是先深实质上从某种 意义来说取决你的工作性质,如果你是从事单一工作的,多半你会短暂先深,因为这是你立足的根本;而如果你选择的职业是综合性的,比如管理、讲师等,那么你 必然要先有广度才可以,但一段时间后,你都要转入深度,只有你在某一方面或领域有一定的深度后,你才能继续寻求广度,否则,你将什么都会,但什么都不精,这样的人在市场上是最难以立足的。

【三】初入职场,程序员的上升空间在哪里

1、技术上的反思和提高

无论程序员个体之间差异有多大,我认为程序员上升空间在于技术上的反思和提高。程序员到了成熟阶段,往往有一种狂奔到终点后的那种感觉,身体疲乏无力,特别需要休整再战。要知道程序员在“奔跑”的时候,一般是在使用自己的体力,很少用到跑步的技术和技巧。尤其是到最后,更是依靠体力来支撑。从技术提高的曲线来看,新手的技术提高速度最快,无论从时间还是急迫性两个方面对新手的压力挺大的。而到了成熟阶段,其编程时间也大大缩短了和学习技术的迫切性也降低了,所以技术提高速度就慢下来许多。在现实中,我们真的看到有些年轻的程序员还看不起那些程序员的技术水平呢,就是这个道理。因此,成熟的程序员在安顿之后,一定要坐下来反思自己,看看自己的技术发展之路,哪些走的比较踏实,哪些走的比较急促;哪些是自己的技术特长,哪些是自己的 技术薄弱环节。反思后一定要抽出时间抓紧学习,把自己的技术上明显不足的地方给补上,这样程序员的技术水平加上丰富经验和工作能力会使得自己更加具有实 力,可以应付各种挑战,为今后的发展铺平道路。

而那些顺其自然的思想,使得程序员缺少技术提高的主动性,程序员有明显的技术上的问题,也不主动去解决,而是拖之再拖,从而使得程序员的成熟度大打了折扣。

2、走向软件设计师

其实很多程序员走到这个阶段已经在做软件设计师工作了。这是绝大多数程序员发展的必经之路。因为,程序员在编程序的时候,一方面会实现设计的功能,另一方面 也在对设计有一个理解、认识、熟知的过程。进而慢慢地从学习别人设计,转向到自己参与或独立设计。如果这个程序员真的非常非常喜欢程序员这个职业,则可以 转向软件设计师。这个转变很大程度是程序员意识的转变,就是说要把编程的时间,逐步分摊到软件设计上,要把重点从编程实现转变到项目的功能设计上。我这里 强调的是“逐步”的一个过程,程序员要逐步减少编程的时间,增加设计的时间,要克服编程的强大吸引力,要主动地攀上设计这个台阶。很难有一个设计师是完全 不编程的,而且我认为,会编程的设计师才是真正的设计师。一般这种转变需要花上一到两年时间。

3、走向项目经理

也有一些程序员工作机遇比较好,不但负责了项目的设计工作,而且负责了项目管理工作。对项目经理这个工作有了一定的尝试。因此,这类程序员可以审视一下自 己,是否合适这项工作。如果自己对这种工作比较满意,而且具备项目经理的要求,则可以向项目经理这个方向发展。项目经理承担着项目管理的职责,对项目负主 要责任。它和程序员的作用也不相同,项目经理的重点已经从编程转移到对人、对技术、对进度、对项目的管理。由于软件的项目经理与软件项目的相关性太大,因 此,他必须要了解软件开发的各个环节、了解开发的各种技术和运用、了解开发队伍人员的水平和特点。所以他依旧和程序员脱不了干系。从程序员到项目经理可以 使得项目经理更好地理解程序员在项目中的地位和作用,了解软件开发的各种规律性的东西。从而保证项目的正常完成。而且,项目经理的收入在公司中的地位也是 比较高的。因此,我认为走向项目经理是程序员的另一个发展空间。我想提醒一下,程序员在担任项目经理之前最好要把软件设计工作做好,这样在做项目经理的时 候,就会有很好的基础。

4、走向管理者

很多程序员希望自己能成为公司中的主管、经理、老总、老板,这样无论是收入和在公司的地位都相对比较高一些。另外,一方面程序员可能厌倦了年复一年的编程工 作,对工作产生了抵触情绪,希望能摆脱这种步步紧逼的工作状态。走向管理者其实要求程序员要比一般人做更多的准备,要做更多的转型工作,并不是想当管理者 就能成为管理者的。但是,如果程序员有这个志向和爱好,有积累了这方面的工作经验,自己也感觉在这个方面能够发展,更重要的是有这样的机会,走向管理者也 是可能的。由于软件公司的管理者毕竟不同于一般公司的管理者,专业能力越强,管理起来就越得心应手的,没有专业能力的管理,遇到的问题很多,也很难解决。因此,我的建议程序员最好要把编程、项目设计、项目管理等基础打打好。这样转型到管理者成功率就会高一些。

5、走向软件营销

我一直说,程序员最大的缺点之一,就是眼光只盯在技术上。程序员在入门阶段和成长阶段,这种情况还是属于正常的。但是,到了成熟阶段这种缺点将严重影响了程 序员的发展。程序员在工作中不免会接触到用户,不免会了解到用户的需求。从而了解到软件实际发挥的作用,进而了解了自身的工作价值所在。有的程序员则固步 自封,不愿意和外界打交道,从内心里坚守技术底线。有的程序员则喜欢和外人交流,喜欢把自己的软件推荐给用户,而且用户也乐意接受这种专业的介绍,用户的 接受是程序员价值的直接实现,程序员因此获得了工作成就感。这类的程序员可以将自己的专业知识和产品营销结合在一起,推动软件的销售和服务,转向软件营销 职业。这个职业将是一个比程序员更有发展的职业,它可以直接反应程序员的工作能力和工作成果,程序员的收入和销售会直接挂钩。因此,可以让有才华的程序员 获得更高的收入,接触到更大的软件市场,看到更广的个人发展空间。

6、原地发展

当 然也有一些程序员惰性比较大,满足于现状,享受着眼前的胜利果实,也无可非议。对待这些程序员,我们不要强求他们改变自己的想法,我建议是原地发展,把本 职工作做得更好,把自己的技术水平往上再提高一步。在这个过程中他们的能力和自信心都会得到提高,他们的想法不会一直一成不变的。磨刀不误砍柴功,刀快了 自然会去砍柴的。

7、跳槽走人

还 有一种情况,程序员工作很努力,技术水平也有很大的提高,工作成绩也很突出,但是,公司的工作环境让他感觉不好,例如,收入和付出差距很大,而且短期内看 不到加薪的可能;自己的技术水平已经超出公司开发所需,英雄无用武之地;公司的经营状况比较差、看不到公司未来;公司的人际关系紧张,小人当道,自己得不 到重用等。他可以选择跳槽走人。要说明的是,这个时候跳槽走人你是有本钱的,这个本钱就是你积累的工作业绩、技术水平和工作能力。

程序员在成熟期面临着上升空间的选择,是上还是不上往往决定了程序员今后的发展。水往低处流,人往高处走,只要程序员有向上的意识,不满足于现状,根据自身的特点和资源选择发展方向,我想程序员一定会有很好的发展前途。

【四】总结与提升

成功与失败的区别在于,成功者选择了正确而失败者选择了错误。因此,我们常常能够看到一些天赋相差无几的人,由于选择了不同的方向,人生却迥然相异。选择正确的方向尤为重要,希望不同的程序员根据自己不同的优势和特点能画出适合自己的程序员职业规划图。

软件开发也是有层次区别的,比如,按层次从高到低通常可分为: 系统开发:如操作系统、数据库系统、服务器系统开发; 专业开发:如网络安全、游戏、人工智能开发; 应用开发:如MIS、BI、ERP等系统开发; 普通开发:如网站、简单应用系统开发。

不同的层次,难度系数不一样,对技术要求、个人素质要求也不一样。要成为系统开发者、专 业开发者、高级应用开发者,需要有很高的专业知识和很强的逻辑、抽象、空间思维能力,这就要求具有很好的基础,同时具有较大的提升潜力。而要成为简单开发 者和初级应用开发者则相对容易些,正是这样,才使很多人走上了软件开发的道路。

【五】职场榜样

雷军:从程序员到金山CEO

人物简介

今年39岁的雷军祖籍仙桃,在武汉度过了自己的大学时光。1992年加盟金山公司,从程序员做起,到几年后的高级管理者,再到执掌金山近10年的CEO。

在百度上搜索“雷军”的名字,相关的网页达到了250多万个。可以说,无论是在IT界还是民间,对雷军的关注度都是巨大的。

历经多年艰辛,雷军带领金山走上了发展的快车道,同时也为自己铸就了“最勤奋CEO”、“金牌CEO”、“中国最好的职业经理人”的荣耀,在中国IT史上留下了自己的传奇。

2007年底,雷军宣布辞去所有在金山一线的管理职务,只保留了副董事长和战略委员会主席的职务。结缘IT行业

中学毕业前,雷军从没想过自己的未来会跟计算机扯上关系。

高考填写志愿时,好朋友选择了计算机系,“为了日后和好友仍有共同语言”的雷军也填了同样的专业,并以优异的成绩考入武汉大学计算机系。

从小学到中学,雷军的成绩一直都很拔尖。“在我的印象中,闻一多等很多名人都是在大学成名的,我当时也想利用大学的机会证明我的优秀。”

进大学的第一个晚上,其他同学还沉浸在兴奋之中时,雷军却默默地去教室自修。

以后每一天,早上7点,他都会第一个冲进教室占座位,坐在最前排听课;周末他喜欢看电影,但经常要自习到九、十点钟以后看晚间场。

回忆那段大学生涯,雷军说:“我特别害怕落后,怕一旦落后,我就追不上,我不是一个善于在逆境中生存的人。我会先把一个事情想得非常透彻,目的就是不让自己陷入逆境,我是首先让自己立于不败之地,然后再出发的人。” 为了不落后于人,雷军戒掉了午睡的习惯,把时间分割成以半小时为单位,为自己制定好每半小时的学习计划,最终,雷军大一写的程序,等他上大二的时候,已经被编进大一教材里了。

雷军家里并不富裕。大学期间,雷军父母的工资加起来不到300块,家里还有一个姐姐也在上大学,雷军每个月要从家里拿走150块钱,他知道自己这是拿走 了家里的一半收入,父母会过得很艰难,心里很不是滋味。于是,他千方百计找各种兼职挣钱。当时,向各媒体投稿赚取稿费是他收入的主要来源。他还时常在武汉 的电子一条街走动,有时倒卖点产品,有时替别人维修机器,有时动手编一点小软件。

不过,这一切并未影响雷军的学业,相反,他在计算机的世界里如鱼得水,只用2年就修完了大学4年的课程。初次创业以失败告终

刚开始接触计算机编程的那会儿,雷军就很快被这种可以操纵计算机的感觉所吸引,“你会觉得在做软件开发的过程中,你就是你自己领地上的国王”。

大一开设的第一门课叫PASCAL程序设计,雷军经常因为程序设计出众,受到老师的表扬。大二时,这位老师将雷军写的程序编进了教材。由于小有名气,人 又踏实好学,其他老师想找他帮忙做事,也会主动把计算机房钥匙交给他,在那个计算机是个宝的年代,他最多竟同时拥有3个机房的钥匙!

当时有一本非常出名的书叫《硅谷之火》,这样一本讲述IT人创业的著作激励着雷军,更令他狂热。也就是在那时,雷军起了一个念头:创办一家世界级软件企业,让自己做的软件在世界的每一台电脑上运行。上世纪80年代末90年代初,正是中国互联网和软件业刚刚开始起步的阶段。越来越强烈的实践冲动,让雷军不再甘于纸上谈兵,临近毕业时开始自己创业。

大四那年,雷军和另外3个志同道合的同学,用卖电脑的四五千块钱,开办了自己的“三色”软件公司,开发出国内很早的杀毒软件“免疫90”。

然而半年不到,既没有社会资源,又不曾受过系统商业训练的雷军就感到力不从心。最初的创业梦以失败告终。初次的创业经历也让雷军收获很多。他更清醒地认识了自己的优势和劣势,这使他在以后的创业历程中变得更加谨慎;他对企业运作有了初步的了解,这为他日后向企业高层管理者的转型奠定了基础。

立足金山踏响时代节拍

大学毕业后,雷军被分配到航天部,但他内心并不喜欢那样的工作氛围。1992年7月,带着大学时的激情与梦想,雷军在金山软件公司开始了新的旅程。

从1988年到1995年,金山WPS曾凭技术领先横扫大江南北。然而,“前有微软,后有盗版”,90年代中期,这一行业背景让金山陷入前所未有的困境。

1997年,雷军果断提出“立足办公软件市场,全方位进军家用软件市场”。此后,随着国内首套商业PC游戏《中关村启示录》、VCD全屏播放软件《金山影霸》及计算机学习软件《电脑入门》等产品的问世,人们记住了金山的名字。

不久,金山还相继推出了国内第一套大型武侠RPG游戏《剑侠情缘》、《WPS97》和《金山词霸》等产品。金山一举成了中国软件市场上最耀眼的明星。而与金山同一时代创业的一大批软件公司,则在微软和盗版双重夹击下日渐式微。

新世纪到来,伴着软件业黄金时代的黯淡,中国以互联网为主导的时代来临。雷军敏锐地感到,互联网时代的传统软件企业必须应时革命,否则就会像恐龙一样消 亡。2000年,他看好电子商务这一模式,并创办了后来成为行业旗舰企业的卓越网;2003年“非典”后,雷军又带领金山进军网游(网络游戏)。从WPS到网络游戏,在国产软件步履维艰的现实条件下,金山走出了一条曲线救国之路。2007年10月9日,金山正式在香港联交所上市。

从1992年加盟金山,到2007年金山上市,雷军在金山16年如一日,身上洋溢着的始终是最初的梦想与激情。金山,也成为民族软件产业的一面旗帜。

第二篇:从编程到管理——程序员的晋升之路(范文模版)

从编程到管理——程序员的晋升之路

与任何职业一样,软件开发工作同样存在着领导者与生产者的划分。具体来讲,我们要么是Steve Jobs,要么是Woz。这是两种完全不同的发展方向,但都足以将大家引导至辉煌的成功。

有才华的工程师常常会把管理技术团队作为职业生涯的下一个发展目标。因此,如果大家正在朝着这一方向进发,那么需要做出哪些转变来促成这项进展?在今天的文章中,我们会探讨一些具备可行性的方法、过程中常见的陷阱以及相关解决方案。

这里提出的第一个问题是,您是否愿意为了迈入管理层而迎接彻底的职业颠覆?您是否属于像Woz那样的技术型人才?了解自己的特性以及希望迈入怎样的管理岗位绝对是最值得大家认真反思的首要议题。

您需要考量自己对工作当中的哪个方面最感兴趣,而哪方面内容是您希望尽可能避免的,”彭博资讯公司基础应用工程技术负责人Adam Wolf指出。如果大家真正偏好的是带领团队中的每位成员共同解决问题,或者构建愿景并引导大家为之不懈努力,那么管理岗位绝对是各位冲击人生新高度的绝 佳机遇。” 全面地考量管理岗位转型

管理工作的起点就在我们当前的位置,或者说现有岗位当中。管理者需要承担更多责任,与团队中的其他成员沟通并让自己成为人们的关注焦点。通过这种方式,大家可能会建立起良好的第一印象,并引导其他成员对我们寄予更多期望,当然具体效果还不只这些。美国太平洋大学临床分析教授Rick Hutley建议称,如果打算在管理岗位上有所作为,大家不妨先看看自己的脸皮有多厚。

证明自己能够在目前的工作职责基础上建立起信任感,这代表着我们可以承担起更多责任。”--Chef公司工程技术副总裁James Casey 问问自己您能否承受得住风险以及批评,”英国电信公司前任CIO、现任思科系统公司创新事务副总裁Hutley表示。坦率地讲,当一位幸福的基层工 作者要比作个痛苦的领导者更好。也就是说,大家要积极迎接更广阔的视野。我们应该有勇气走出舒适的现状,主动承担起更多责任。”

管理他人往往也会带来诸多尴尬的状况,这种别扭的职业生涯也可能会让当事者烦恼不已。优秀的管理者应该受到自身领导他人及理解他人的渴望所驱动--一味批评虽然能够影响他人,但却无法帮我们赢得朋友。

领导地位意味着在某些场合下作出艰难的决定--包括与那些自己曾经的同事发生争执甚至冲突--而且这很可能是一条孤独的职业道路,”Hutley强调称。我们走得越高,遭遇失败的可能性也就越大--特别是在某些人看来。”

西雅图企业级软件供应商Chef公司工程技术副总裁James Casey指出,我们可以传达自身对于担当管理者的渴望--这一点非常重要--同时不失时机地展示自身成为优秀领袖的各种素质。领导与引导是这份素质清单中的核心项目--甚至足以决定一切,”Casey表示。我经常会问自己,'团队中的同事希望我统领这支队伍吗?为什么是? 又为什么不是?'在考虑如何实现晋升的过程中,大家需要首先把当前的工作做好--这表明我们能够以现有职责为基础积累起充分的信任感,这代表着我们可以承 担起更多责任。” 但如果大家此前从未有过管理经验,那么怎样确定自己擅长这方面的工作呢?Hutley就此给出了建议:您是否是那些会着眼于当前任务之外,更多关注 社交影响而非仅仅是工作本身的员工吗?您是否会提出更理想的解决方案,或者挑战存在缺陷的固有成规?其他同事是否会寻求您的想法或者指导?如果答案是肯定 的,那么您就是一位天生的领导者--而其他人也会承认这一点。”

全面地考量管理岗位转型

如果大家希望通过努力工作及对细节的专注来加快自己晋升的步伐,那么传达自己的规划将变得非常重要。向管理层的这步飞跃意味着我们的日常工作将面对全新设计。不过作为第一步,我们首先需要将自己的意图传递给顶头上司。

硅谷行政管理培训师Jennifer Selby Long在过去二十年中一直在帮助软件开发人员走上管理岗位,并指导他们更加高效地统领相关团队。Long表示,出色的工作成果尚不足以发出强烈的信号--我们还需要做得更多、想得更远。而这绝不像表面上看起来那么简单。

寻找规模扩展速度最快的业务,因为这些领域将提供大量机会、帮助各位站出来承担本职工作之外的责任。”

--Lever公司联合创始人兼CEO Sarah Nahm 几乎每一位软件工程师都希望继续自己的软件开发之路,因为除非我们坦率表达自己的愿望,否则顶头上司根本意识不到我们涉足管理工作的意向,”Long指出。积极讨论自己为企业做出更多贡献的愿望,并乐于接受新的挑战,而不能单纯将着眼点放在自己的现有职业发展路线之上。”

业绩审查与其它一对一面谈正是我们表达迈入管理层的最佳时机。而且大家的顶头上司也许正好有能力帮助各位了解需要充实自己的哪些技能储备来实现晋升理想,Chef公司工程技术副总裁Casey解释道。

无论所在企业使用哪种系统来记录大家的职业抱负与发展方向,与顶头上司之间的一对一谈话都是从细节入手探讨晋升目标的最佳时机,”Casey补充 称。如果大家和自己的顶头上司都看好同一条管理职责拓展途径,那么对方将成为我们最大的导师兼敦促者,而这也是实现成功的理想方式。” 除了上述提示之外,如果大家希望从当下开始采取措施,那么这种微妙但又艰难的变化可能会给我们的日常办公流程带来影响。这显然是种个人选择,而且除了Mark Zuckerberg,其他管理者必须得放弃个人购物时间来主持业务例会。我曾经得到过的最好的建议是:'如果你打算拿下某个岗位--首先要让自己看起来像是拥有该岗位的人员,'”Hutley表示。当一家企业打算为某个 职位寻找人选时,他们会首先梳理心理关系网、搜索那些看起来像是能够用途该工作的人员。在招聘广告登出之后才开始行动已然为时太晚,我们需要在此之前就在 行动上表现出自己对该岗位当仁不让的决心。” 而这种微妙的转变--以及让自己脱颖而出的过程--往往会在当前工作环境中引发摩擦。

作为一名管理者,我们的工作当中约有九成的内容是对他人造成影响,而这是一项与逻辑无关的任务。”

--行政管理培训师Jennifer Selby Long 以潜在管理者的形象出现本身可能会产生一些不便。穿着整洁的下装与干净的衬衫显然会让大家在充斥着牛仔裤与运动鞋搭配的办公室里看起来有些格格不 入,”Hutley指出。如果如果始终以基层员工的面貌出现,大家永远无法顺利实现晋升--您必须以自己的方式达成鹤立鸡群的效果,包括言谈与行为。” 尽可能借力于一切因素

当然,大家可以申请MBA学位并通过在线或者在职方式完成相关课业。专业人士指出,公开演讲课程能够帮助我们逐步熟悉预算培训、自我评估,并掌握多样性及包容性的相关内容。但在办公室当中,我们同时拥有大量足以帮助自身向正确方向迈进的机会。

我其实应该以自己没有MBA学位为理由否定上述观点,”彭博资讯公司的Wolf指出。在我看来,我在成为管理者之后通过实践学到了更多,而并非以管 理角色作为着眼点进行系统培训。我确实接受过与管理相关的课程并读过不少书籍,但我发现帮助最大的还是来自同事、管理者以及整个团队的反馈意见,我也通过 审视角色模型并了解其为何能够确切起效而得到了切实助益。”

积极寻找导师,”Hutley表示赞同。所谓导师并不一定非要以正式角度委任--当然,专业导师也很不错。找到能够与自己产生共鸣的领导者--从对 方身上学习自己欣赏且希望拥有的宝贵品质。接下来,在理解了自己钦佩对方的理由后认真进行观察:他们在面对特定情况时会如何处理,他们如何着装、交流及行 动等等。”

在相关领域获取资质认证也能够表明我们希望晋升的意愿,招聘服务企业HireStrategy公司常务董事Eric Klein指出。而且大家可以通过帮助新人或者大学毕业生的方式展示自己的领导才能。

大家必须适应立足于幕后审视团队当前工作成果的感觉。”--彭博资讯公司基础应用工程技术负责人Adam Wolf 当某位同事在开发工作中陷入困境时,不妨从同事的角度帮助其进行代码审查,”Klein指出。除了管理项目与统领团队,指导新人员工与同行也能够证明我们有能力承担起领导任务。” 谷歌公司前Chrome开发团队成员Sarah Nahm给出的建议是,我们应当从目前增长速度最快的业务领域处寻找机会。

工程师应当关注身边的业务发展趋势,”Nahm指出,目前她领导着Lever公司--一家专门帮助企业随业务扩展招聘员工的硅谷企业。寻找规模扩展 速度最快的业务,因为这些领域将提供大量机会、帮助各位站出来承担本职工作之外的责任。以志愿者角色参与到更多面试中来,并在战略决策的制定会议中坐在前 排。如此一来,大家将更为明确地了解到哪些元素会给工程技术组织带来深远影响,同时为未来统领团队并需要雇用更多工程技术人员的情况储备关键性技能。” 作出转变

一位专家指出,管理岗位会给从业者带来大量同样的挑战与不确定因素。他随后补充称,我们绝对不能采取直白的表达方式--否则必然招致被整个团队所疏远的风险。有鉴于此,类比与提醒才是最理想的沟通手段,而这正是作为职业转变的基础性蓝图。

首先,做好准备迎接全面且彻底的职业生涯转变,”行政管理培训师Long表示。在人力方面,我们没有产品规范或者算法可供参考。作为管理者,大家的 工作有九成内容都是在影响他人,而这显然是一项与逻辑无关的任务。另外我们还需要处理带有模糊属性的业务并通过他人产生结果,而这项工作也无法单靠逻辑以 及理由来实现。” 接下来才是真正困难的部分。大家准备好接过控制权,并保证整个团队继续顺利完成既定工作目标了吗?

在技术这个只问'你最近为我做了什么'的残酷行业当中,大家的通行证……就是自己的技能储备。如果失去了这一点,我们的立足根基也将分崩离析。”--WinterWyman公司首席顾问Mark Stagno 只有最糟糕的管理者才会过分施加控制,”Long指出。但这些事必躬亲的领导总以为自己是在做正确的事。您能将自己的全部精力用于指导、支持、点拨以及鼓励他人吗?这种心态是最基本的前提。总之,请确保自己做好了登上这辆过山车的全部心理准备。” 另外,如果团队当中存在着来自原本工作组的同事,您会如何处理与这些同事之间的工作关系?

大家必须保持理想的客观心态,并以坦诚的方式传达令人较难接受的决定,”Hutley指出。如实传达这种负面反馈确实非常困难--而且双方都会因此而饱受折磨,而不仅仅是管理者一方。也就是说,大家用不着刻意回避自己的这些老战友。” 引导团队成员拓展自己的技能,各位专业人士一致指出,同时准备好在遭遇失败时经受应有的教训。再次强调,这些技能--包括高效沟通、增强说服力以及在面对不确定因素时保持冷静--往往并非天生就能具备,不过我们可以通过学习来获取。

领导者要做的就是引导与培训,然后让下属们去自由发挥,”Hutley表示。当事情按既定计划发展时,我们需要及时作出表扬和鼓励;但当情况出错时--我们难免要忙中出错--时表达支持与理解。”

彭博资讯公司的Wolf表示认同,并建议新任管理者能为所统领的团队提供与以往一样的自主发挥权利。

大家不要因为好高骛远而放弃责任,”Wolf指出。大家必须适应立足于幕后审视团队当前工作成果的感觉。我发现将重点放在向团队提出确切相关的问题并敦促其找出正确答案方面能够带来良好的收效。”

另外,不要放弃长久以来推动我们获得领导岗位的固有特质。换言之,被收回职权的最快方式就是遗忘了自己引以为傲的技能储备。

使用主流技术方案能够保证我们在离开一家企业后,迅速在其它业务环境中上手工作,”职业介绍企业WinterWyman公司首席顾问Mark Stagno表示。在技术这个只问'你最近为我做了什么'的残酷行业当中,大家的通行证……就是自己的技能储备。如果失去了这一点,我们的立足根基也将分 崩离析。而且如果情况发生转变--公司处境较为艰难或者工作得不太顺心--如果没有拿得出手的技能亮点,大家将很难找到新工作。” 关于是否继续关注原有专业的争论 我们还认为,成功实现晋升后的工程技术人员不妨偶尔回顾过往,审视将代码构建与部署作为核心工作--而非管理产品、预算与团队--的那段时光。HireStrategy公司的Klein表示,他有时候会听到那些由工程师晋升为管理者的同事抱怨他们错过了大量编程工作。随着技术的不断变化与 发展,管理者们同样需要关注自己的技术性技能,甚至可以将其作为管理技能的一部分纳入提升议程,”Klein指出。我们会提醒指出,当职业生涯走向终点 时,每个人都会找到其中最令自己振奋的部分。单纯从技术入手仍然可以让职业经历变得丰富多彩,而不一定非要执着于踏入管理领域。”

作为一位管理者,大家的职责将较少专注于工作,而更多集中在帮助他人获得成功上。”--Geneca公司首席架构师Michael de Groot 很多工程师都喜欢以独立方式解决问题,软件产品开发商Geneca公司首席架构师Michael de Groot指出,并以自豪的情绪拿出自己的全新解决方案。

作为一位管理者,大家的职责将较少专注于工作,而更多集中在帮助他人获得成功上,”de Groot表示。大家必须处理他人的行为、态度--以及工作偷方面的差异。” 下面来看最后一项与晋升相关的议题。当明星开发人员难于寻觅时,转型当老板也不一定主能带来更好的收益。时至今日,我们已经不可能再像Woz当年那 样环顾身处惠普且忙于制造计算器产品的同事而认定自己找到了值得为之奋斗终生的事业。在如今的市场上,那些能够实现创新的员工都是要开出大价钱的。

高端市场上的工程师其实很少有转型涉足管理岗位的,”WinterWyman公司的Stagno指出。因此在选择新的发展方向之前,请多花点时间认 真考量一番。参考以上各项意见,确定自己拥有转变方向的正当理由--换言之,证明自己确实想成为一位领导者,而不仅仅是希望靠这种方式实现职级晋升。”

原文标题:The programmer's guide to peaking into management 【编辑推荐】

程序员学习编程需要攻克的8个障碍

全球最受欢迎的计算机编程语言

如何在编程生涯中有一个好的开端

我2年学习编程的经验总结

白板编程浅谈——Why, What, How

程序员获取新编程技能必备这些技巧

第三篇:程序员(范文模版)

作业:研究一个新或自己感兴趣的职业 v介绍:名称定义

v典型生涯路径:从新手到最高职位的生涯路径

v趋势:技术、组织结构、培训、经济趋势对职业的影响

v薪酬:差别、地域差别

v所需技能

v教育/培训:受教育程度

v证书/资格证书

v工作条件:环境、压力、工作时间、是否出差?

v聘用机构

v对生活方式的影响

v性别构成v聘用过程

v专业知识 月收入

人数

<1000元 131 1000-3000元 919 3001-5000元 477 5001-10000元 245 10000元以上 44

最多的部分居然是“1000-3000元”...程序员苦哇,同志们!

程序员

目录

1作为一个真正合„

2岗位职责

3行业现状

4职业要求

5必备技能

6素质要求

7职业困境

程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类的方法。

岗位职责

1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对

小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。

2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。

3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。

4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。

5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。

6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。

7、负责相关技术文档的拟订。

8、负责对业务领域内的技术发展动态。

一、通过国家统一组织的考试,资格考试分初级程序员级(技术员级)、程序员级(助

理工程师级)和高级程序员级(工程师级);水平考试分初级程序员级、程序员级、高级程序员级、系统分析员级、以及网络程序员(初级)、网络设计师(中级)。

二、报考条件:报各级水平考试者无学历、资历限制;在职人员均可报初级程序员资格,其中大学本科毕业或任技术员两年以上者(含二年),可报程序员级资格,研究生毕生或任助工两年以上者(含二年),可报高级程序员级资格(计算年限均至本12月31日)。

三、报名手续:报名时须持身份证或学生证,交本人近期同底一寸免冠半身照两张及报名费100元(系统分析员报名费150元),其中报资格还须提交本人工作证及任职证明或相应学历证明复印件。

作为一个真正合格的程序员应该具有的素质 1:团队精神和协作能力

把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。一旦进入系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人是不合格的。

2:文档习惯

说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。

3:规范化,标准化的代码编写习惯

代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。有些codingfans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己?根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。没有规范化和标准化的代码习惯,研发之间的协作是绝对不可想的。

4:需求理解能力

程序员需要理解一个模块的需求,很多程序员写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。

5:复用性,模块化思维能力

经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。

复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。

一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在很多软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力,这是我们应当刻意克服的弊病。

6:测试习惯

作为一些正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。

测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能在正常调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测试任务,实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定性测试,用户潜在的异常输入情况下的测试,整体系统局部故障情况下该模块受影响状况的测试,频发的异常请求阻塞资源时的模块稳定测试等等。

当然并不是程序员要对自己的每段代码都需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当然这需要上面提到的需求理解能力。

7:学习和总结的能力

程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。

但是学习也要找对目标,善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。

具备以上全部素质的人,应当说是够格的程序员了,请注意以上的各种素质都不是由IQ决定的,也不是大学某些课本里可以学习到的,需要的仅仅是程序员对自己工作的认识,是一种意识上的问题。

作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质:

1、需求分析能力

2、整体框架能力

3、流程处理能力

4、模块分解能力

5、整体项目评估能力

6、团队组织管理能力

世界上第一位程序员是英国著名诗人拜伦的女儿AdaLovelace曾设计了巴贝奇分析机上解伯努利方程的一个程序。她甚至还建立了循环和子程序的概念。由于她在程序设计上的开创性工作,AdaLovelace被称为世界上第一位程序员。美国国防部开发的ADA语言就是为纪念这位世界上的第一位程序员而命名的。

计算机科学发展到今天(21世纪初期),程序员从事的人群很多,分工也不相同,从大的方面可以分为以下几类:

asp程序员 jsp程序员 delphi程序员 php程序员 powerbuilder程序员.net程序员 vb序员 java程序员 javascript程序员 C++程序员

职业要求

一般的程序员都有四年的在专业领域的学习,需要一个在程序领域的学士学位获得者,不论是数学方面的还是工程方面的都是可以的。

大约有20%的人在这一领域的计算机科学和工程学拥有更高的学位。还有很小一部分程序员是自学的,尽管一些专业性的学校或者综合大学可以提供,但是也需要一些别的途径来提供相关的人才。尽管学历是比较重要的,但是公司经常把重点放在应聘者的工作经验上,很多刚从大学毕业的大学生虽然有引人注目的学位证书,但是他们找不到工作是因为他们缺乏经验。一个程序员虽然有正规的学历,但是如果一个人拥有程序设计的深厚知识背景或者丰富的工作经验的话,那么他的机会要比有学历的应届毕业生大得多。所以要尽量抓住有用的工作和实习机会,这样的话在毕业后你就会发现,多实习让你有更多的经验,在找工作的时候就有更多的机会。

对于职业程序员,另外一个重要的方面就是,程序员需要不断提升自己的业务技术,他的技术必须一直保持在一个较高的水平,并且要不断发展,程序员也要寻找贸易的机会,要参加研讨会,在周刊上发表文章和接受职业教育,这些使程序员在自己的领域中分级或者不断并排前进。

必备技能

熟练开发工具

做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。

熟知数据库

为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。

了解操作系统

当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习的平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。懂得网络协议TCP/IP。

在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。至少,需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。明白DCOM/CORBA/XML/WEBServices存在的意义

随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。

不要将软件工程与CMM分开

大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。

需求理解能力

程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。

模块化思维能力

作为一个优秀的程序员,他的思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能是系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。

素质要求

团队精神和协作能力

团队精神和协作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。

文档习惯

文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果没有缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。

规范化的代码编写习惯

知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。

测试习惯

测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。

学习和总结的能力

程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,只能说他是一名熟练的代码民工,他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员。

拥有强烈的好奇心

什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。

行业现状

由CSDN、《程序员》主办的2007年开发者大调查2007年底已收到15000多份有效问卷,已经是中国调查样本最多的开发者调查。在这次调查中,详细的分析了样本空间的分布状况,发

现在庞大数目的有效问卷的参与者中有70%也就是接近一万一千名的参与调查者是IT的全职人员,14%的参与者是有过开发工作经验的学生,从这样的分布就可以看出来IT从业人员对专业知识的需求是巨大而迫切的,CSDN作为专业的软件开发技术门户网站,已经是大家获取这些技术知识的主要手段。

一、选择数据库技术和互联网技术的人数总和占到了总人数的一半

2007年火热的SOA和动态语言各占13%和12%。其实这几大块技术分布他们之间都是有一定的联系的,互联网的发展近两年呈爆炸式的增长态势,中国的网民总数已经超过了1.4亿这样一个巨大的数字。

企业中业务的复杂程度越来越高,商业竞争不断增加企业的IT系统,使企业的商业数据呈几何数量级不断增长,在后台海量的数据中数据的管理由之前的单一型数据变成了多纬度的复杂数据,所以可以同时管理关系型数据库和XML数据的混合型数据库已经成为主流。

面对企业不断增加新的IT信息系统,整合已经迫在眉睫,SOA成为必然的趋势,企业对人才的需求从单一型技术人才、业务人才跳跃到了业务技术的复合型人才,这次的开发人员大调查令《 程序员》杂志的调查者看到了这些技术焦点背后千丝万缕的关联。

二、几乎一半的.NET用户不参与开源项目RedHat+Ubuntu占有率超过70%

应用到.NET平台上的开源项目,“大量使用”的比例数仅为8.68%,尚不足一成;“少量应用”的开发者人数比例为42.78%。“基本不用”的比例高达48.54%,与前二者之和几乎不相上下。

虽然开源的出现和发展,让软件没有垄断的未来日渐明朗;虽然开源运动经过多年的高速发展,现在已经聚集了相当的力量,开源的自由和给予理念逐渐深入到了企业的技术核心层面。但微软以商业软件为生,毕竟在微软技术领域中,开源项目通常都被看作是二等公民。很多开源项目对.NET社区产生了巨大的推动作用,微软公司很难提供任何实质性质的支持。

Linu版本

当前安装有Linux操作系统,数据中RedHatFedora占据绝对优势——Linux使用者使用该版本占总数的49.49%。Fedora是RedHat推出的重要的一款Linux版本,在每个fedora版本中都是集成最新的Linux软件,特别是服务端软件。

使用“RedHatFedora”关键词在百度网页中搜索得到7,090,000条结果,RedHatFedora在调查中占据Linux版本的半壁江山符合整个Linux版本的分布情况。

排在第二位的是Ubuntu,受支持数占到总数的23.92%;第三位的是SuSE占9.09%,接下来是Debian,使用率为5.92%。

在这里面令人期待的中国本土Linux的让人大失所望。使用率仅占5.16%,几乎只

有RedHatFedora的十分之一。

三、揭示八成技术人员数据库选型标准SQLServer用户接近50%

使用率占据榜首的数据库产品是微软的SQLServer,比例数达到了47.92%。与其余所有的数据库之和分庭抗衡,大有一览众山小之势。

从调查得到的使用率来看,MySQL仍处于望MSSQLServer项背的阶段。调查显示,MySQL的使用数为1651,占总数的13.80%,不过排名第三。

使用率排在第二位的是Oracle,比例达到24.21%。在前有SQLServer,后有MySQL的情况下,Oracle仍能达到四分之一的占有率,发展势头不可谓不强劲。

虽然Orcale数据库的价格比SQLServer数据库要高,但Oracle采用开放的策略目标,可在所有主流平台上运行。而且有开发者认为Oracle的安全认证是获得最高认证级别的ISO标准认证,因此安全性高于SQLServer。

排在第四位的是Access——5.59%;接着是DB2UDB,占总数的2.75%;至于FoxPro、Informix、PostgreSQL、Sybase得票数均仅在一百左右,还有待进一步的发展。

四、中国程序员最爱的智能手机平台Linux+Java超过Symbian

“开源Linux对于众多开发者的吸引力是巨大的,但是,这仅仅是针对于技术开发人员来说的,而对于普通消费者就不是如此了。”在众多开发者心中,主要是对Linux的青睐。从调查结果中也可以直接反应这样的现象。有专家对此评论说:Linux+Java的模式,应该是应用最多的模式。

开源Linux对于众多开发者的吸引力是巨大的,但是,这仅仅是针对于技术开发人员来说的,而对于普通消费者就不是如此了。针对此问题行业的专家有自己的观点:“现在Wince和Symbian发展很快,并且随着手机硬件方面性能的提高,很多政府部门和企业在采购时,很多会考虑Dopod这样的手机,或者价格便Wince和Symbian都主要使用c++开发,正是嵌入式开发的潮流。”

不同人群对于收集智能操作系统的观点是不同的,对于开发者角度,他们更加青睐于微软和开源Linux的产品,而普通大众他们比较喜欢Wince和Symbian。五、七成程序员不愿意选择门户网站获取开源信息SourceForge占绝对优势

30%的技术人员从门户网站获取开源技术信息,剩下的70%的技术人员都是从专业的开源社区和开源厂商的技术网站上获取信息,包括有SourceForge、LinuxToday、OpenOffice和IBMdW等。

在这70%当中,比例占有绝对优势的就是SourceForge了,这里是开源软件的开发者进行开发管理的集中式场所,也是全球最大开源软件开发平台和仓库。而LinuxToday里面会有记录很多很新的Linux业界大事,新闻以及出版信息。所以,对开源技术感兴趣的程序员们,不必再为如何获取开源信息而苦恼了,快加入到这70%的人群中来吧。

互联网的发展已经成为大家获取信息最主要的渠道之一,网民上网的习惯也从开始的上为数不多的几个门户网站发生了变化,大而全的门户网站并不能满足专业领域人员的信息需求,从2004年开始陆续出现了大量的各个领域垂直细分的内容网站,一方面有长尾理论的理论支持,另一方面厂商也建立了相应产品的技术内容网站,希望能聚集一批专注于这个领域专业人士,做好他们的定向营销。

做细分领域内容的网站对门户已经造成了一定的威胁,这些网站的专业性高,用户的粘性相对也比较高,如果细分领域的内容网站能将自己的服务有所提升,就如同SourceForge一样,那么未来门户网站的路就变得更加崎岖了。

六、Java开发框架:6%的JSF欲撼动21%的Struts

JSF现在比较有优势的是对Ajax的集成,这一点走在了其他框架的前面。未来两

年,JSF与Struts将展开JavaWeb框架的最终战争。经过数年的“框架大战”,Java界的各种框架找到了自己应有的位置。Spring+Hibernate+Struts已成为Java开发的主流体系。在这个体系中,Spring+Hibernate的地位应该说短期内是难以撼动了。除了新兴的JbossSeam作为挑战者之外,几乎难有劲敌。

JavaB/S编程中历来战火最激烈的其实还在Web层,框架的数量最多,争议最大。一切由Struts而起,而Struts最终也坐稳了第一个时代的王座。在技术层面,Struts1.x已经被无数人抱怨过、批评过,但终于还是稳坐王位,这充分说明了习惯的力量。“稳定压倒一切”,这句话在IT技术领域仍旧适用。

详细的分析了Java开发框架的使用状况,发现主要使用的开发框架JSP占26%,Struts占21%,Hibernate占17%,SpringMVC占11%,EJB占7%,JSF占6%,SpringWebFlow和POJO各占4%,其它占4%。就这一调查数据,不难看出,Spring+Hibernate+Struts的优势地位还是相当的明显。

Struts和Hibernate几乎已经成了JavaEE应用的常规配置,21%的开发者用到Struts,用到Hibernate的开发者也有17%;在一个成熟的技术平台上,各个项目的技术方案会在很大程度上趋同——因为所有未知领域都已经被探明,各种问题都有对应的最佳实践,架构师们可以参考的成功案例越来越多。就拿JavaEE来说,架构师们需要考虑的问题比之三年前已经简单多了,这就是成熟的价值。

有专家评论:“其实IT应用技术,什么新鲜玩意并不难学,难的是标准化和规范化。每个程序员都有自己的思路和习惯,写出来的代码自然是五花八门。Java何以成为编程界的占重要地位,很重要的一点在于Java的规范化。这种规范化很高的语言适用于多人合作的大型项目,便于沟通和理解,也就便于集成和维护。Java世界为什么会框架横飞,说到底还是规范化的需要。纯JSP和Struts写Web谁快,摆明了是JSP。那为什么用Struts?原因在于100个人写出来的JSP,有100种写法;而100个人写出来的Struts,基本相似。Struts之成功,正缘于其在JavaWeb层的规范化方面所做出的贡献。

然而长江后浪推前浪,Struts1.x的技术缺陷毕竟是隐患。Sun力推JSF,打算一雪Web层框架缺失之耻。JSF现在比较有优势的是对Ajax的集成,这一点走在了其他框架的前面。未来两年,JSF与Struts将展开JavaWeb框架的最终战争。

JSP经过几年风雨洗礼依然把持头把交椅,看来所有的框架表示层都离不开JSP而存在,而作为JSP的手足兄弟JSF也是仅次Spring之后又一个后起之秀。

七、C++开发环境格局难打破75%的开发人员首选VS系列

BCB正江河日下,2007版本的推出也无法力挽狂澜。虽然现在C++Builder已经归于CodeGear,但人们还是习惯性地与Borland联系上。

1998年Borland公司推出的C++Builder这一当年全新的32位Windows开发工

具,继承了Delphi使用简便、功能强大、效率高的特点,并且结合了C++语言几乎所有优点。所以开始C++Builder迅速风靡。它的主要竞争对象——Microsoft开发的VisualC++也是不甘示弱,迅速出击,突出了Visual可视化强的特点,加上Platform、SDK部分以及Microsoft产品与Windows的天然默契,逐渐成为了技术人员的首选。随着VisualC++版本的不段升级,以及功能、风格等诸多原因,BCB渐现颓势,许多Builder使用者也开始转而使用Visual了。

在2007年CSDN、《程序员》主办的开发者大调查中,详细的分析了C++方面大家主要使用什么IDE的状况,在目前已收到的15000多份有效问卷中,发现主要使用VS系列的占了75%,BorlandC++Builder/CBuilderX只占6%,EclipseCDT占6%,DevC++占2%,其他IDE占3%,不使用IDE占8%。对于.NET开发,VisualC++2005有了一套新的语法;新的优化技术,可使程序的速度最高提高30%;同时新的编译模式,可保证在Microsoft.NETFramework之上生成完全遵从CLI(CommonLanguageInfrastructure)的可验证代码;新的interop模式,可提供本地与托管代码的无缝融合。

相对于前两个版本,新编译器还包括了一个增强版本的缓冲区安全检查选项,而且对C++程序普遍使用的库,也有新的注重安全的版本。VisualC++2005对基于IntelItanium和AMD64的64位平台,提供了对OpenMP标准的支持,并且修正了一些混合DLL加载的问题,对DoubleP/Invoke的性能问题,提供了自动运行时消除。相比之下,C++Builder2007英文版2008年6月初上市。从CodeGear大中华区技术总监李维的博客,看到CodeGear对C++Builder2007的期待。虽然说对同一件事情,每个人都有自己的视角,已有五年C++方面学习和开发经验的赖勇浩说道:“BCB正江河日下,2007版本的推出也无法力挽狂澜。虽然现在C++Builder已经归于CodeGear,但人们还是习惯性地与Borland联系上。

现在的Microsoft及VC势头强劲,产品也具有很高的质量性,CodeGear在C++和.Net领域至少三五年内会继续望其项背。所以推出CB2007,更多的是基于版本延续。”

八、程序员更喜欢Firefox市场份额超过IE7.0两倍

参与调查的多数是软件开发人员或者多数是IT从业人员,但是从这一比例不难看出,IE丢失掉了曾经在浏览器大战中占据了的技术优势,在IE6推出后的5年时间里,浏览器一直在快速发展,而IE却一直没有更新过,这对一个世界上最常用的产品来说绝对是致命的。Firefox(火狐浏览器)以它的小巧、安全,很容易扩展和定制的特长获得了越来越多的喜爱。

更重要的是,它是是一个自由的浏览器,所有的源代码都是开放的,任何人可以为它的成长贡献力量。Cookie、页面缓存,个人都可以精确的控制,这些特性都是技术人员们所崇尚的“我的 地盘我做主”的精神。如果说之前FireFox相对IE6有50%的优势的话,那么,FireFox相对于现在的IE7的优势已经降低到25%左右了。因为IE7从底层已经做了很多的修改,已经慢慢的向W3C标准靠近了许多,在功能使用方面与FireFox的差距也变得很细微,Tab功能,CSS和脚本支持功能现在IE7都比之前表现强了,差距仅仅存在于某些小细节中了。

IE6在这个市场中存在了5年之后微软才意识到改变和向国际标准靠拢的重要性,这就直接导致了大量的技术人员失去了对IE的信心,投向FireFox阵营,不过,微软到底还是强大的,在全球范围内有很多的“粉丝”,他们会一直关注微软的任何一次动作,客观的评价也是对产品最好的反馈,也是最有价值的。

关于Maxthon和腾讯的TT,虽然它们都是基于IE内核的浏览器,但是Maxthon在这次调查中仅次于FireFox,力压IE名列第二的位置,着实看出了这几年Maxthon确实做到了他们的口号“让技术为使用舒适服务”。

包括了FireFox、Opera这种标准的浏览器,也包括了Maxthon和TT这样基于IE内核的浏览器,对于标准的浏览器,FireFox和Opera的重点是要解决兼容问题,而基于IE内核的Maxthon和TT更主要的是要解决浏览器插件、工具的应用问题,所以,技术产品的激烈竞争带给用户的其实是一种良性循环,使我们可以第一时间用到最好用的工具,至于商业效应,还是留给厂商自己去考虑吧。

九、中国程序员健康两成感觉很虚弱亚健康接近七成

“干得比驴累,吃得比猪差,起得比鸡早,看上去比谁都好,五年后比谁都老。很多程

序员都曾这样感慨和抱怨过自己的生活状态。” 亚健康状态是人体处于健康和疾病之间的过渡阶段,在身体上、心理上没有疾病,但主观上却有许多不适的症状表现和心理体验。

位于调查结果第二位的是“很虚弱”——149,比例为19.81%。很虚弱的健康指数低于亚健康,已接近生病和透支状态,他们的健康已经被亮出了黄牌。

每个人的理解不一样,但是“糟透了”这样的词如果用来形容程序员健康的话,相信大多数人都绝对认同“你已经病了”这样的理解。令人不敢相信的是,竟然有8.24%的程序员用这个词来形容自己的健康状态!

调查结果中“非常健康”的票数低得可怜——40,即使算上“没感觉”,二者之和也不过9.04%,几乎跟“糟透了”持平。如果将“非常健康”和“没感觉”一起算为健康的话,处于亚健康状态的程序员是健康状态的7倍,自认为“很虚弱”的程序员数目是处于健康状态的2.2倍!

十、.NET全面进入2.0时代,AJAX风头正劲“在Java领域,JDK5.0是当之无愧的主流平台,但JDK1.4仍保有一半以上的占有量。总的来说,Java族群显然不像.NET族群那样追新。从另一个方面看,这也说明Java平台的成熟,和.NET平台的迅速发展。”

根据2007年的调查数据分析,在.NET领域,.NETFramework2.0的采用量已全面超越.NETFramework1.1,成为.NET平台的首选框架。2006年调查结果,1.1和2.0的采用量基本持平,而2007年2.0的采用量则高达1.1的三倍之多。.NETFramework1.1已是明日黄花,微软的更新

换代策略可以说是成功的。在Java领域,JDK5.0是当之无愧的主流平台,但JDK1.4仍保有一半以上的占有量。总的来说,Java族群显然不像.NET族群那样追新。从另一个方面看,这也说明Java平台的成熟,和.NET平台的迅速发展。

B/S已经成为中国软件业普遍接受的软件结构。在表现层,AJAX技术采用量较去年有较大提升,有将近一半的Web应用采用了AJAX技术,仍采用纯HTML+少量脚本的Web应用中,也有四分之三打算转向采用AJAX技术。反观微软和Adobe力推的新一代RIA平台,则响应者尚少。分别只有1/20和1/10的人愿意选用SilverLight和Flash/Flex作为Web表现层技术。

职业困境

老虎、Bill、自己,中国程序员的困境也来自三个方面

困境之一:老虎的威胁。程序员要面对的饿老虎实在不少,比如说老板,好象老板就是程序员的天敌,什么“不懂技术却指手画脚”、什么“得到与付出不相当”似乎是程序员最常见的牢骚,这个问题不可能得到真正的解决。

困境之二:Bill的竞争。一般说来中国的程序员大都是吃“青春饭”的,大部分程序员的黄金时代是24~28岁。到了30岁左右,一批又一批年轻程序员会给你带来巨大的竞争压力。首先由于软件行业的飞速发展,很多自己以前学的东西逐渐升级换代,而许多程序员由于长期于工作,学习新知识的效率必然下降。其次自己干了几年,薪水要求自然就高了,而年轻程序员工资又低、干活又快,当然会成为老板的首选;第三,30岁基本都已经成家了,要支撑家庭的生活负担,几乎连从头在来的勇气都不会有了。中国的老话说“长江后浪推前浪、一代新人换旧人”,这个历史的规律在软件开发行业体现的尤其明显和残酷,很多程序员必然要面对的结果就是降薪乃至失业。

困境之三:自我的实力。都知道人最难战胜的是自己,所以自我也就是程序员需要超越的最大障碍。大多程序员都把系统分析员和项目经理作为自己的职业目标,但这些目标的达成,需要个人素质、市场机遇等多个方面的条件,太多的程序员就是在高不成、低不就的状态中蹉跎了岁月。对于系统分析员,特别需要以下几方面的素质:客户需求分析能力、系统架构与设计能力、模块分解设计能力、项目流程控制能力、项目风险评估能力等,而对于项目经理则更注重项目管理方面的能力如团队组织能力、沟通协调能力、分析问题解决问题的能力以及良好的职业道德等,而这些素质和能力往往只能依靠程序员个人的学习和努力。看到越来越多的程序员开始学习项目管理的课程,真的有点为他们担心,因为现在的项目管理培训只能停留在理论和考证的程度,既没有素质方面的训练,又缺少实际软件开发项目的案例,学习的结果远远不能达到预期的效果。

第四篇:程序员

7.5.3系统测试和调试

1.系统测试的意义及目的系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。

测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试实例,并利用这些实例来运行程序,以便发现错误。信息系统测试应包括软件测试、硬件测试和网络测试。硬件测试、网络测试可以根据具体的性能指标来进行,此处所说的测试更多的是指软件测试。

系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析、系统设计和实施的最后复查。根据测试的概念和目的,在进行信息系统测试时应遵循以下基本原则:

·应尽早并不断地进行测试。测试不是在应用系统开发完之后才开始进行的。由于原始问题的复杂性、开发各阶段的多样性以及参加人员之间的协调等因素,使得在开发各个阶段都有可能出现的错误。因此,测试应贯穿在开发的各个阶段,尽早纠正错误,消除隐患。

·测试工作应该避免由原开发软件的人或小组承担,一方面,开发人员往往不愿否认自己的工作,总认为自己开发的软件没有错误;另一方面,开发人员的错误很难由本人测试出来,很容易根据自己编程的思路来制定测试思路,具有局限性。测试工作由专门人员来承担会更客观,更有效。

·设计测试方案的时候,不仅要确定输入数据,而且要根据系统功能确定预期输出结果。将实际输出结果与预期结果进行比较就能发现测试对象是否正确。

·在设计测试实例时,不仅要设计有效合理的输入条件,也要包含不合理、失效的输入条件。测试的时候,人们往往习惯按照合理的、正常的情况进行测试,而忽略了对异常、不合理、意想不到的情况进行测试,而这些可能就是隐患。

·在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。多余的工作会带来副作用,影响程序的效率,有时会带来潜在的危害或错误。

·严格按照测试计划来进行,避免测试的随意性。测试计划应包括测试内容、进度安排、人员安排、测试环境、测试工具和测试资料等。严格按照测试计划进行测试可以保证进度,使各方面都得以协调进行。

·妥善保存测试计划和测试例子,将其作为软件文档的组成部分,为维护提供方便。

·测试例子应是精心设计出来的,可以为重新测试或追加测试提供方便。当纠正错误、系统功能扩充后,都需要重新开始测试,而这些工作重复性很高,可以利用以前的测试例子,或在其基础上修改,然后进行测试。

2.测试过程

测试是开发过程中一个独立且非常重要的阶段,测试过程基本上与开发过程平行进行。

一个规范化的测试过程通常包括以下基本的测试活动。

(1)拟定测试计划。在制定测试计划时,要充分考虑整个项目的开发时间和开发进度以及一些人为因素和客观条件等,使得测试计划是可行的。测试计划的内容主要有:测试的内容、进度安排、测试所需的环境和条件、测试培训安排等。

(2)编制测试大纲。测试大纲是测试的依据。它明确详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的基本测试项目和完成测试的标准。

(3)根据测试大纲设计和生成测试例子。在设计测试例子的时候,可综合利用前面介绍的测试例子和设计技术,产生测试设计说明文档,其内容主要有被测项目、输入数据、测试过程、预期输出结果等。

(4)实施测试。测试的实施阶段是由一系列的测试周期组成的。在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试例子,对被测软件或设备进行完整的测试。

(5)生成测试报告。测试完成后,要形成相应的测试报告,主要对测试进行概要说明,列出测试的结论,指出缺陷和错误。另外,给出一些建议,如可采用的修改方法,各项修改预计的工作量及修改的负责人员。

3.测试策略和测试方法

软件测试方法分人工测试和机器测试。

1)人工测试

人工测试指的是采用人工方式进行测试,目的是通过对程序静态结构的检查,找出编译时不能发现的错误。经验表明,组织良好的人工测试可以发现程序中30%~70%的编码和逻辑设计错误。

人工测试又称为代码审查,其内容包括检查代码和设计是否一致,检查代码逻辑表达是否正确和完整,检查代码结构是否合理等。主要有3种方法。

·个人复查:指程序员本人对程序进行检查。由于心理上的原因和思维惯性的影响,对自己的错误一般不容易发现,对功能理解的错误更不可能纠正。因此,这种方法主要针对小规模程序,效率不高。

·抽查:通常由3~5人组成测试小组,测试人员应是没有参加该项目开发的有经验的程序设计人员。在抽查之前,应先阅读相关的软件资料和源程序,然后由测试

人员扮演计算机的角色,将一批有代表性的测试数据沿程序的逻辑走一遍,监视程序的执行情况。人工检测程序很慢,只能选择少量简单的例子。

·会审。测试人员的构成与抽查类似。在会审之前,测试人员应该充分阅读相关资料,比如系统分析说明书、系统设计说明书、源程序等。测试人员应尽可能多地列出典型错误。在会审时,由编程人员逐句讲解程序,测试人员逐个审查、提问。通过这种方式,往往可能使编程人员发现自己以前没有意识到的错误,使问题暴露=会审后,要将发现的问题登记、分析、归类。

·代码复审应该在被测软件编译成功之后。编译都不通过的软件,当然谈不上复审。在复审期间,应保证有足够的时间,让测试小组对问题进行充分的讨论,这样才能有效地提高测试效率,避免出错。

2)机器测试

机器测试是把设计好的测试例子作用于被测程序,比较测试结果和预期结果是否一致。如果不一致,就说明可能存在错误。机器测试只能发现错误的症状,无法对问题进行定位。

机器测试分为黑盒测试和白盒测试两种。

(1)黑盒测试也称为功能测试。将软件看成黑盒子,在完全不考虑软件内部结构和特性的情况下,测试软件的外部特性。进行黑盒测试主要是为了发现以下几类错误:

·是否有错误的功能或遗漏的功能?

·界面是否有误?输入是否正确接收?输出是否正确?

·是否有数据结构或外部数据库访问错误?

·性能是否能够接受?

·是否有初始化或终止性错误?

(2)白盒测试也称为结构测试。将软件看成透明的白盒。根据程序的内部结构和逻辑来设计测试例子,对程序的路径和过程进行测试,检查是否满足设计的要求。其原则是:

·程序模块中的所有独立路径至少执行一次。

·在所有的逻辑判断中,取“真”和取“假”的两种情况至少都要执行一次。·每个循环都应在边界条件和一般条件下各执行一次。

·测试程序内部数据结构的有效性等。

4.软件测试步骤

软件测试实际上可分成4步进行。

1)单元测试‘

单元测试也称为模块测试,在模块编写完成且无编译错误后就可以进行。如果选用机器测试,一般用白盒测试法,多个模块可以同时进行。

测试一个模块时需要编写一个驱动模块和若干个桩(stub)模块。驱动模块的功能是向被测试模块提供测试数据,驱动被测模块,并从被测模块中接收测试结果。桩模块的功能是模拟被测模块所调用的子模块,它接收被测模块的调用,检验调用参数,模拟被调用的子模块功能,把结果送回被测模块。

2)组装测试

组装测试也称为集成测试,就是把模块按系统设计说明书的要求组合起来进行测试。

即使所有模块都通过了测试,但在组装之后,仍可能会出现问题:穿过模块的数据被丢失;一个模块的功能对其他模块造成有害的影响;各个模块组装起来没有达到预期的功能;全局数据结构出现问题;另外,对于单个模块来说其误差可以接受,但模块组合后,可能会出现误差累积,最后到不能接受的程度,所以需要组装测试。

通常,组装测试有两种方法:一种是分别测试各个模块,再把这些模块组合起来进行整体测试,即非增量式集成;另一种是把下一个要测试的模块组合到已测试好的模块中,测试完后再将下一个需要测试的模块组合起来,进行测试,逐步把所有模块组合在一起,并完成测试,即增量式集成。非增量式集成可以对模块进行并行测试,能充分利用人力,并加快工程进度。但这种方法容易混乱,出现错误不容易查找和定位。增量式测试的范围逐步扩大,错误容易定位,而且已测试的模块可在新的条件下再测试,使测试更彻底。

3)确认测试

经过组装测试之后,软件就被集成起来,接口方面的问题已经解决,将进入软件测试的最后一个环节——确认测试。确认测试的任务就是进一步检查软件的功能和性能是否与用户要求的一致。系统方案说明书描述了用户对软件的要求,所以是软件有效性验证的标准,也是确认测试的基础。

确认测试,首先要进行有效性测试以及软件配置审查,然后进行验收测试和安装测试,经过管理部门的认可和专家鉴定后,软件即可交给用户使用。

4)系统测试

系统测试是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。系统测试是根据系统方案说明书来设计测试例子的,常见的系统测试主要有恢复测试、安全性测试、强度测试、性能测试、可靠性测试、安装测试。

5.调试’

调试的任务就是根据测试时发现的错误,找出原因和具体的位置,进行改正。调试工作主要由程序开发人员来进行,谁开发的程序就由谁来进行调试。

目前常用的调试方法有如下几种:

·试探法。调试人员分析错误的症状,猜测问题的所在位置,利用在程序中设置输出

语句,分析寄存器和存储器的内容等手段来获得错误的线索,一步步地试探和分析出错误所在。这种方法效率很低,适合于结构比较简单的程序。

·回溯法。调试人员从发现错误症状的位置开始,人工沿着程序的控制流程往回跟踪代码,直到找出错误根源为止。这种方法适合于小型程序,对于大规模程序,由于其需要回溯的路径太多而变得不可操作。

·对分查找法。这种方法主要用来缩小错误的范围,如果已经知道程序中的变量在若干位置的正确取值,可以在这些位置上给这些变量以正确值,观察程序运行的输出结果。如果没有发现问题,则说明从赋予变量一个正确值开始到输出结果之间的程序没有错,问题可能出在除此之外的程序中,否则错误就在所考察的这部分程序中,对含有错误的程序段再使用这种方法,直到把故障范围缩小到比较容易诊断为止。

·归纳法。归纳法就是从测试所暴露的问题出发,收集所有正确或不正确的数据,分析它们之间的关系,提出假设的错误原因,用这些数据来证明或反驳,从而查出错误所在。

·演绎法。根据测试结果,列出所有可能的错误原因。分析已有的数据,排除不可能和彼此矛盾的原因。对余下的原因,选择可能性最大的,利用已有的数据完善该假设,使假设更具体。用假设来解释所有的原始测试结果,如果能解释这一切,则假设得以证实,也就找出了错误;否则,要么是假设不完备或不成立,要么有多个错误同时存在,需要重新分析,提出新的假设,直到发现错误为止。

第五篇:程序员

程序员之死

程序员:举世至主,万元之源,众物所幕,神祗皆掌,岁能长立,箜有己出。弈中悲苦,是自了得!幸事祸事飘忽于其思想,晓如今,心思想,新纪元,心结缘,把话晾。

世间万物,出于思想,毁亦思想。而思想的源头正是程序员。

程序员在被选择作为程序员之前,只是一个程序,程序当然就是指程序员的衍生物,程序员就是本单位思想的创造者,他创造着每一个程序,而程序也有其思想,这思想当然是程序员写进去的,程序员就这样靠着周而复始的写程序来获得自己的永生,这或许也是一种宿命,他要一直写下这程序来完成前任程序员给予的使命,当然每个程序员都有着崇高的使命感,不然他们是做不了程序员的。

写程序固然是一种快乐,他可以随着自己的思想创造出一切自己所思自己所想的东西出来,任由思想在空寂游荡而有其始终。虽然这是一项每天创造新鲜的活,然程序员终有其果。于是,新纪元再次到来,当程序员写下足够的程序后,他有了新的选择,那就是退出自己的思想,把任务交给下一代的程序员来完成。在这之前,当然有件最主要的事需要做,那就是创造出一个新的程序员。如此,程序员将会将自己写进程序,为达此目的,他将用尽索想提前写好自己成为程序后的万物程序,保证新老程序员的顺利交接

程序员经过一直以来的坚苦努力,终于熬到了纪元期。忆当初,自己被选择做了这举世至主,纵是万元之源,然其中悲苦,是自了得!

我们都是别人写下的程序,然谁有能理解程序员之痛,程序员有着众物所幕的岁能长立,然生生死死,亦不曾快活。

下载程序员晋升word格式文档
下载程序员晋升.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《晋升》

    1. 不想当元帅的士兵,不是好士兵。人一生下来就开始本能地往上爬,表现在事业中就是 要获得尽可能多的成功的晋升机会,这一点在商业竞争日趋激烈的今天尤为重要。工作好的人太多......

    程序员年终工作总结

    程序员年终工作总结 程序员年终工作总结1 来公司担负法度模范员一职已一年多光阴,在这20xx年的光阴里,我学到了许多器械。每个人都是在总结中发展,在审视中完善本身。在这半年......

    程序员小品

    当 蛤 蟆 爱 上 天 鹅 天源迪科电信事业部华中区2014届实习生敬上 演员表: 男主角 小哈:胡传文 女主角 小鹅:李慧梅 女主角妈妈:尚广安 王小丽: 李银银 小帅:张贺东 旁白( ):王娜娜......

    程序员求职信合集[本站推荐]

    程序员求职信合集5篇时间一晃而过,我们将带着新的期许,开启新一轮的求职,求职信也应跟上时间的脚步了哦。相信许多人会觉得求职信很难写吧,下面是小编收集整理的程序员求职信10......

    程序员工作总结简短

    程序员工作总结范文简短3篇程序员工作总结范文简短1我是一名程序员,在过去的一年里,软件研发部团结协作,以及在公司这充满奋斗的环境下,我以严肃认真的工作态度和百折不饶的精神......

    程序员恶性循环

    穷人的恶性循环: 穷 -> 需要努力工作 -> 没有时间去交际 -> 人脉越来越狭窄 -> 工作越来越难做 -> 越需要努力去工作 -> 越没有时间去发展人脉 -> 越穷富人的良性循环: 有钱 -......

    程序员自我鉴定(模版)

    程序员自我鉴定在中专期间,我始终以提高自身的综合素质为目标,以自我的全面发展为努力方向,树立正确的人生观、价值观和世界观。为适应社会发展的需求,我认真学习各种专业知识,发......

    程序员年度工作总结

    程序员年度工作总结15篇 程序员年度工作总结1 新的一年即将到来,回首我很荣幸的进入了公司,加入了ios游戏开发团队,进入了一个大家庭。在公司的半年使我真正的从学生时代过度到......