欢迎访问发表云网!为您提供杂志订阅、期刊咨询服务!

程序员项目总结大全11篇

时间:2023-02-27 11:12:28

绪论:写作既是个人情感的抒发,也是对学术真理的探索,欢迎阅读由发表云整理的11篇程序员项目总结范文,希望它们能为您的写作提供参考和启发。

程序员项目总结

篇(1)

中图分类号:TP311.5 文献标识码:B

文章编号:1672-5913(2007)10-0056-03

我院实行院企联姻,把IT企业中培训过程引入到学校教育过程中,目的是扩大就业门路,缩短学生的社会适应期,降低学生的学习成本,提高学生的就业质量。按照当前行业所使用的最新技术进行项目训练,使其达到或接近就业的专业素质要求,达到积累工作实践经验的目的。在培训过程中,除了对学生进行专业的培养外,本人认为还应该在职业素质、综合能力、理论基础、工作习惯等方面进一步培养。

1职业素质

未走出象牙塔的学生心比天高,一向“饭来张口,衣来伸手”的生活方式培养出来的嫩芽撑不住劳动强度的摧残,对于有些工作不是不能,而是不为,出现了退缩念头;有些学生就业期望值太高,受经济利益的驱使,想一口吞个胖子,淡化了过程培训的含义,情绪上出现烦躁,导致对前途迷茫,失去信心。

程序员的工作是枯燥的,整天面对计算机,用26个英文字母和其他符号编程。程序员的工作非常辛苦,是一项智力劳动,需要投入很多的精力,因而需要程序员能够热爱这个职业,有工作热情,有投入的精神。虽然有的人很聪明,但是对软件开发没有兴趣,或者工作很不专心,工作效率很低,别人半天能干完的,他需要两天甚至三天才能干完;情绪浮躁,抵挡不住计算机游戏、各种新闻等诱惑,不能处理好工作与娱乐的关系,自制力和自控力差;写出的代码漏洞百出,质量不高,这样的学生不适合做程序员。有时程序员的成就在很大程度上不是取决于智商,而是取决于情商。程序员应该雄心壮志,面对困难时比较坚毅,吃苦耐劳、讲纪律、讲服从、讲诚信。

2综合能力

综合能力方面主要是:良好的逻辑思维能力、沟通能力与再学习能力。

2.1逻辑思维能力

软件开发过程是解决复杂业务逻辑的过程,是简化复杂逻辑的过程,是用精确来实现模糊的过程,开发人员需要具有良好的逻辑思维能力才能胜任。现实空间是模糊的,数字空间是精确的,在现实世界中很简单的问题,在数字空间中模拟时,就变成了一个复杂的问题。它要求程序员能够全面、准确、简洁地把握、分析和解决问题。

下面要求学生画出问题的程序流程图来测验学生的逻辑思维能力:输入三个整数,作为三角形的三个边,判断是否构成:等边、等腰、直角、锐角、钝角三角形。

这个题目的逻辑很简单,需要处理的逻辑包括:

1) 输入的合法性判断:输入的是否是正整数。

2) 是否构成三角形:任意两边之和大于第三边。

3) 是否构成等腰或等边三角形。

4) 是否构成钝角、直角、锐角三角形。

上边的题目是一个很简单的程序,但是学生回答完全的却很少,常见的错误见下表。

类似的逻辑问题在实际的软件开发中是经常用到的,需要程序员能够对各种情况进行仔细的分析、归纳、总结。如果在这样的问题上出错,是很难成为出色的程序员的。

2.2沟通能力

现在的软件越来越庞大,需要多人来协同工作。作为程序员要善于沟通,习惯沟通,要有团队精神。学生与学生、学生与老师交流问题时,往往要花费大量的时间描述问题。有的学生自己心里明白,但就是说不清楚,或者干脆不说,默默地做项目,甚至闭门造车。这些情况都会降低整个团队的工作效率。

再者,全球IT外包市场主要是欧美和日本,其中85%的IT外包市场是以英语为沟通语言。作为未来软件企业生力军,程序员应具备良好的英语应用能力,这是最基本的要求,如果对英语的熟练程度不高,对待引进的高技术以及与客户的沟通将会出现语言上的障碍。

2.3再学习能力

信息技术的更新速度是惊人的,程序员的职业生涯是一个要求不断学习的过程,永远不能满足现状,必须有很好的再学习能力。只有善于学习的人,才能够不断进步。真正优秀的程序员一定是掌握了很好的学习方法,否则现在是优秀程序员,两年后可能就被淘汰了。只有再学习,才能谈到创新,IT技术的日新月异使很多程序员眼花缭乱,什么都想学,却又不知从何学起,今天看看这个,明天学学那个,贪多不熟。虽然IT技术发展迅速,但很多技术都是有规律可循,一些基本的概念、原理和方法是通用的,可以举一反三。再学习的方法有很多,类比法、询问法、阅读示范程序、网上检索相关的资料等等。

3理论基础

大学计算机专业课大多是从二年级开起,有的学生由于目标不明确或数学基础不好,对专业课程学习不是非常扎实。由于信息技术发展快,有些课程内容陈旧。在培训阶段,对于知识的汇总归纳是非常有必要的。如果基于.net做多层结构的软件开发,以下的知识是必须的:操作系统原理、实体关系理论、SQL语句、面向对象的基本理论、数据结构、软件工程、VC++/JAVA、ASP/HTML、PSP/TSP/ISO、专业英语、程序设计风格、系统分析与设计等等。可以看出如果没有学过数据结构、程序设计方法、数据库概论以及软件工程的基本知识,要想成为一名合格的程序员显然是很困难的,而且一名熟练的程序员需要的知识远不止这些。掌握了基础的计算机科学理论,再拥有一定的学习能力,才能不断进步。

4工作习惯

良好的工作习惯是程序员个人开发过程成熟的体现,是效率的保证。程序员的培养很大程度上是习惯的培养。在实训过程中应注重培养如下几个方面的习惯:

4.1按照明确的编码过程工作

在进行一项编码工作时,需要按一个规范的过程来进行:

第一,定义做什么,包括功能范围、接口,任务;

第二,定义如何做,包括数据结构、算法;

第三,定义验收标准,如何检验正确与否;

第四,动手编程序、调程序;

最后,测试程序。

按照规范的过程来编码,才能真正提高工作效率。职业程序员的设计时间长于编码时间,业余程序员编码的时间长于设计时间。职业的程序员是设计程序,业余程序员是调试程序。职业程序员是预防BUG,业余程序员是修改BUG。为什么会出现这种情况呢?因为职业程序员是按照一个规范的编码过程来工作,编码的前期工作量超过了其实际的编码工作量。有的程序员经过简单考虑后就急于去写程序,往往是把简单的问题搞复杂了,复杂的问题搞乱了,效率很低。

4.2编码之前写文档

文档是软件实现思想的载体,是开发人员之间、开发人员与管理人员之间交流的工具,是设计人员与编码人员之间、设计人员与需求人员之间的一种约定,是组织的软件设计经验的积累,是组织软件财富的记录,是软件复用的基础。只有真正认识到了设计文档的重要性,才能积极主动地写文档。对程序员而言,在动手编程之前通过写文档可以把实现的方法想清楚、表达清楚、讨论清楚,这是已经通过无数的实践来证明了的好经验。初级的程序员往往在写程序的过程中发现越写越觉得复杂,程序越改越乱,等真正把工作做完了,再反思一下,却发现原来是很简单的事情。为什么会有这种感觉呢?问题就在于事先没有真正想清楚,弄明白,一旦进入问题的解决细节中,就很容易出错了,所以职业程序员应该具备写文档的好习惯。

4.3遵循设计进行编码

程序员不能随意自己决策,不按设计人员的设计去施工。同一个问题,可能有多种解决方案,在考虑解决方案时,程序员想的是局部,设计人员想的是全局,因而在进行决策时,设计人员是从全局的角度的考虑问题。在这种情况下,程序员要严格按照设计去实现,不能在如何实现上偏离设计,造成隐患。对于设计中有疑问的问题,可以讨论,但是不可以随意变更。

4.4按照良好程序设计风格编码

对于程序设计风格,原来要求效率第一,而现在要求清晰第一。

有人讲程序设计是一门个人艺术,包含了程序员个人的创造性,正是这样,才使得很多程序构思精巧,耐人寻味。但是同时它又使得程序的可读性较差,尤其是在多个人合作开发一个软件时,风格迥异的程序使得软件的可靠性与可维护性大大降低。程序设计语言一方面是人与计算机之间进行交流的工具,还是人与人之间进行交流的工具。单纯地作为人机交流的工具,只要程序能够正确、忠实地表达设计者的思想,也就发挥了其作用。但是人与人之间的交流没有一种固定的统一的模式,因此作为人与人之间的交流工具,还要表达得清晰易懂,能够为其他程序员所理解,这也正是要求程序员讲究程序设计风格的主要原因。

5总结

通过严格的专业素质训练和职业素质、综合能力、理论基础、工作习惯的培养,基本上可以使大学生走上社会前,从“学校人”转变为一个准“职业人”,使大学生在就业市场立于不败之地!

参考文献

[1] 王长春. 印度软件人才教育 成功就这么简单?[J]. 软件工程师,2005,(Z1).

[2] 刘克青,廖建新,张俊光. 软件项目策划中的工作量估算方法探讨[J]. 计算机工程与应用,2004,(27).

[3] 李洛,吴绍根. 基于印度NIIT培养模式的两年制高职软件人才培养思路[J]. 高教探索,2004,(2).

[4] 杜建立. 软件人才培养新挑战[J]. 中国远程教育,2004,(2).

篇(2)

软件心理学发展大致可分为两个阶段[7],第一阶段是软件心理学的创立和初探阶段,第二阶段为软件心理学的丰富和发展阶段。两个阶段的主要区别是理论基础、研究对象和研究方法不同。20世纪70年代为软件心理学研究的第一阶段,研究学者主要由计算机科学家组成。1971年,Weinberg出版了《程序开发心理学》一书,开辟了软件心理学的新领域。该书从人类行为、社会行为和个人行为等3个角度审视程序开发。但是温伯格坦言,该书中的许多思想未找到“科学依据”,没有很好的理论基础。该阶段采用实验手段研究的代表是Shnei-derman,他采用内省、案例研究和实地研究等手段,对编程风格、项目组织、团队进程、程序员能力倾向和人格特质因素等方面进行了探索[4]。但是,Shneiderman的实验缺乏认知模型的支撑,面临设计问题简单、编程环境失真等问题。20世纪80年代至今为软件心理学发展的第二阶段,吸引了计算机科学家、心理学家和人素工程学家的参与。该阶段以认知模型的构建为特征,采用客观的行为分析作为严格试验方法的补充。从认知心理学引进理论框架,并将其研究成果引入到软件工程中,以促进软件工具的研发,改进编程活动。该阶段弥补了第一阶段的不足:研究对象扩展到专业程序员,而第一阶段的研究对象几乎都是学生;考虑了软件开发的集体性及协作性;所涉及的活动不只是编码,也研究需求规格说明及软件设计;考虑了语言和编程范式对编程活动的影响。纵观软件心理学的发展史,软件心理学的研究方法渐趋成熟、研究内容逐渐丰富、研究学者日益多元化。软件心理学的发展过程是软件工程与心理学融合程度逐步提高的过程。

软件心理学研究体系

从学术文献来看,软件心理学研究的热点主要集中在7个领域:程序设计的认知机制、程序理解理论、专家与新手的差别、程序员人格特质与绩效的关系、程序员情感与绩效的关系、程序员能力倾向测试和人机界面设计。笔者分析了各项研究内容之间的关系,如图1所示。软件心理学的研究从3个层面展开:第一层面为认知活动机理层,第二层面为根源因素层,第三层面为应用层。第一层面从软件生命周期的核心活动出发,研究其认知机制,主要包括软件设计活动的认知机制,以及编码、测试、维护中的程序理解机制。第二层面在第一层面的基础上,研究影响主体绩效的根源因素,一方面研究情感、人格特质对主体绩效的影响;另一方面从“主体的能力是由学习和训练得来的”这一观点出发,研究专家与新手在知识、策略和元认知方面存在怎样的差别。第三个层面是将前两个层面的研究成果应用到软件工程相关的活动中,如将根源因素层的研究成果与心理学测量方法相结合,研究程序员能力倾向测试,用于选拔适合从事软件开发的人员。将程序员的行为和认知机制的研究结果用于指导软件开发环境的人机界面设计。将专家与新手的差别的研究成果应用于软件工程人员的教育与培训。软件心理学在人机交互中主要应用于用户建模及可用性的设计与验证,关注用户描述,对用户的感知、认知和动作进行建模,并构建感知-认知-动作的集成建模。该方面的应用旨在了解和支持人与计算机的交互,使设计的软件或系统的可用性更高。该领域是软件心理学与计算机科学结合最成功的研究领域,存在的评述较多。本文接下来对前6个领域的研究现状及其对软件工程领域的启发展开论述。

主要研究进展

1程序设计的认知机制

研究进展程序设计认知机制主要包含3类元素:知识、策略和过程组织。程序设计知识分为句法知识、语义知识和图式知识[5]。前两类知识与程序语言紧密相关,而图式知识是程序设计的核心。图式(Schema)是主体内部的一种动态的、可变的认知结构单元,是由旧知识组成的无意识的心理结构。图式理论的核心思想是,将主体过去的经历形成模式,在解决问题的时候无意识地匹配和调用与目前情况相符的模式。图式的存在使得人类的认知具有自动加工的特点,同时也是认知失误的重要原因[6]。程序设计图式包括编程图式、结构图式和问题域图式[13]。编程图式是编程领域特有的图式,包括编程基础知识和算法知识等。结构图式是生成和理解文本的重要知识,如1个功能程序的结构图式由3个角色组成:输入、计算和输出。问题域图式是程序要解决的特定问题的领域知识。根据图式理论,程序设计的核心活动是相关图式的激活。程序设计过程就是程序员激活储存于记忆中的适合解决当前问题的若干图式,并对这些图式进行组合的过程。以图式为核心的程序设计模型以Adelson模型[7-9]和Détienne模型[10]为代表,将程序设计认知活动视为图式检索、图式匹配、解决方案评价、调试和通用化[7,8]的过程。程序设计的策略[11-13]包括:①自顶向下和自底向上。自顶向下是指将总体问题逐层分解为小问题解决的策略,自底向上是从细节到总体逐步构造的策略。②向前和向后。向前设计模式即程序解决方案按照执行方向设计,向后设计模式即程序解决方案按照与执行相反的方向设计。③广度优先和深度优先策略。广度优先策略是先解决完一个层面的所有问题,再解决低一个层面的问题,深度优先策略是将一个问题从上到下解决完成后再解决其它问题。④过程式和声明式策略。若编程方案是规程控制,则是过程式的。若编程方案用于声明静态属性,如对象、角色等,则是声明式的。⑤心理模拟,用于评价问题解决方案。程序员在不同情境下会使用不同的策略,策略的触景包括编程语言的认知维度[14]、编程环境特征、问题类型和程序员自身思维方式和已获得的图式,程序员趋于选择自己熟悉和使用频率高的策略[15]。程序设计的过程组织有两种方式。一种为结构化组织方式,认为程序设计是按照自顶向下、宽度优先的方式组织的。但是实验发现,实际的程序设计过程并不是严格按照这种结构化的过程进行的。程序员设计或编程过程中会出现机会性的偏离[16],即程序员(设计师)以实现目标为第一要务,不受规则的限制,自顶向下和自底向上、深度优先和宽度优先策略都会用到,取决于具体的情景。存在许多支持该模型的实验研究结果,如程序员有时会优先实现他认为最重要的功能。这种认知策略会被多个因素触发,如资源限制。当工作记忆超出容量时,结构化的工作模式就会失效,由宽度优先策略跳变为深度优先策略,产生机会主义偏离,即机会主义组织方式。

应用与启示从程序设计认知机制可以看出,良好的知识结构(设计模式)、恰当的策略和过程组织将促进设计工作的开展。基于此,可设计出更适合程序员使用的软件开发工具。在软件开发环境中提供可视化的结构图式和知识图式支持,对程序员具有重要的辅助作用。如在面向对象编程工具中提供一个通用化的对象图式,包括创建、初始化、读、写、输入和输出功能;在开发工具中提供控制流、数据流和功能分解图等。同时,领域知识库的构建对软件开发具有重要意义,也是软件开发工具面临的一个新挑战[17]。程序员机会偏离现象说明,编程环境不能过分强制程序员按照自顶向下的方式编程[18]。编程环境应提供相对灵活的导航工具,以便程序员在不同对象之间快速切换。在支持机会主义偏离的情况下,同时也要提供未完成任务的追踪功能,因为发生机会主义偏离后,被中断的任务搁置后容易被遗忘。

不足与展望程序设计的一个重要特点就是解决的问题是“不明确的问题”(ill-definedproblem)[13,18],存在需求描述不清晰、缺失等问题;并且,一个问题可能存在多个解决方案,无法通过单一的标准进行评价,甚至无法评价。因此,对所要解决的问题的表征(representation)非常重要,问题表征中生成的情景模型直接影响设计方案的生成,也与设计方案共同演化,是造成个体差异的重要活动之一[19]。而目前的研究都是假设所有程序员对问题的表征是一致的,缺乏对程序员问题表征的研究。分析程序员的问题表征,将其集成到程序设计认知模型中,是未来的研究趋势[13,19]。目前的认知模型将设计的核心活动简化为图式检索、匹配和评价的过程。而实际项目中,程序员可能面临知识不足的问题。因此学习成为程序设计中一项重要的认知活动。学习中理解和集成图式将占用大量的工作记忆资源(germaneload)[20],对程序设计的其它活动存在重要影响。而目前的认知模型均缺乏对学习活动的研究,这将是未来研究的一个重要内容。最后,人类认知的一个重要特性就是具有主动监控和调节的高级能力,即关于“认知的认知”———元认知能力。元认知能力与认知失效调节及问题解决能力密切相关[21],而目前的认知模型几乎都没有考虑这一全局性的认知活动。研究程序设计元认知能力对程序设计其它活动的影响机理及其评价和训练方法,对程序员的选拔和培训具有重要应用价值,将是未来一项重要的研究方向[22]。

2程序理解机制

程序理解可谓是程序开发心理学最古老的课题之一。它解决的核心问题是,程序员如何处理源代码和构建高效的软件系统[23]。研究程序员程序理解的行为和策略,以此指导软件可视化编程环境的开发[24]。

研究进展程序理解理论最初从文本理解理论借鉴而来。文本理解是通过信息加工构造表征的过程。该过程翻译文本中包含的显式信息,并调用经验知识得到推断信息,再将两类信息综合为一体。即信息加工过程的信息有两个来源:外源,编码在文本中的信息;内源,存储在记忆中的知识。Letovsky模型[25]使用知识库、心智模型(内部表征)和同化过程,从较高的抽象层次描述了这一过程。程序理解模型包括3类:功能方法,理解程序等价于利用知识图式;结构化方法,理解程序等价于构造关系网;心智模型方法,理解程序等价于构造详细的情景表征。功能方法的核心假设是,程序理解就是激活和实例化知识图式。程序理解的活动包括:激活储存在记忆中的图式,利用从程序代码中提取的索引,并从援引的图式出发推断程序所包含的某些信息。功能理解模型的主要代表是Soloway模型[26]。结构化方法认为,理解程序就是构造命题之间的关系网。程序可以用顺序、迭代和条件等控制结构的基本单位来描述。专家利用结构图式识别结构单元(顺序、迭代和条件),然后构造不同层次的表征。结构化方法的模型主要有Shneiderman&Mayer模型[27]。心智模型方法认为,程序理解就是构造情境表征。这就需要区分两类模型:程序模型和情景模型。程序模型与自然文本理解中的命题模型和文本库概念类似,反映程序在命题层次包含什么内容。而情景模型反映问题领域的实体及其关系,即问题目标及数据流。程序的理解首先需要构造程序模型,这依赖于结构化知识,特别是编程语言的语义和句法知识;在此基础上,构建情景模型,从而达到对程序的理解。心智模型主要有Pennington模型[28]。Mayrhauser集成元模型[29]将Soloway模型和Penning-ton组合起来,并且实验证明,程序员在3个理解过程中转换。该模型由4个部分组成:自顶向下、情境模型、程序模型和知识库。前3个部分反映理解过程,知识库是构建其它3个部分的必要因素,为程序理解过程提供相关信息并存储推断得出的新信息。

应用与启示对程序理解原理的研究,可指导程序理解辅助工具的设计[30]。如在程序浏览方面,对于自顶向下的理解过程,需要提供从顶层的抽象信息到底层的细节信息的浏览;对于自底向上的理解过程,需要提供控制流和数据流浏览;工具还需要同时提供宽度优先和深度优先的浏览,才能同时满足专家和新手的要求。除此之外,工具代码及注释检索功能将大大提高程序理解效率[31]。同时需要提供能够让程序员询问变量角色等的询问功能。最后,应考虑为程序理解提供一些其它认知支持手段,如为专家提供外部便签薄,为新手提供教学辅助,使其能够实时地获得语言和领域知识。集成领域知识将提高程序理解效率[32]。

不足与展望首先,在实际的软件项目中,维护人员很可能不是程序编写者,程序理解过程中通常伴随新知识的学习。因此,随着编程人员和技术的变化,终端用户相关的学习理论将成为一个研究趋势。第二,从理解模型可以看出,领域知识在程序理解过程中发挥重要作用。领域知识的集成是一大难点,也是未来的重要研究方向之一。第三,目前程序理解理论主要研究个体的认知机制,程序理解将向社会化组织化的方面扩展,同地合作和分布式合作方面将受到关注。第四,在工具方面,未来程序理解辅助工具将向快速改进、综合化、集成建议和搜索功能、接口高适应性、可视化、支持团队合作等方向发展[30]。

3专家与新手的差别

研究进展程序员的技能在很大程度上是一种习得性能力,因而研究专家与新手的差别对程序员的教育和培训有着重要意义。专家和新手的差别主要表现在4个方面:知识、策略、熟练程度和元认知[33]。专家与新手在领域知识和编程知识方面存在较大差别。Adelson&Soloway[7]和Burkhardt等人[34]发现,新手在领域知识方面的欠缺将导致其在构建情景模型方面存在困难,但是并不影响其构建程序模型。Schraagen[35]发现,即使都是有经验的程序员,领域知识欠缺的程序员的解决方案也会比领域知识丰富的程序员给出的方案差。因此,区分专家与新手的一个重要因素就是领域知识的掌握情况。在编程知识方面,Rist[36]发现新手更关注语言句法等表面细节信息,而专家更关注于语义信息或设计模式等深层次的信息。Soloway和Adelson等人发现[7],专家在解决模式化问题时的表现比新手好,而在解决非模式化问题时却不存在显著差别。Wiedenbeck[37]同样发现专家倾向于记住程序的语义等抽象表征信息,而新手倾向于记住程序的函数和语义等具体信息。Ye[38]指出,专家比新手拥有更大的图式组块(chunks),在他所研究的样本中,与新手相比,专家在C语言方面的概念块更抽象,组成元素更多。由于知识的组块,对新手是多个图式,对专家却可能只是一个图式,这使得专家的工作记忆能够调用和处理更多的信息。专家与新手除了在知识的数量与组织结构上存在差别之外,在知识的使用策略方面也存在显著差别。经验丰富的程序员倾向于使用自顶向下、宽度优先和向前的策略,而新手倾向于使用自底向上、深度优先和向后的策略[7,33,40,41];并且专家的编程策略可以在不同的问题上重用。Schraagen[35]指出,即使面临新的问题,良好的策略也能保障他们以较为结构化的方式解决问题。Ko[42]发现,即使在陌生的编程环境中,也不会影响专家程序员的问题理解策略。专家与新手在元认知方面存在重大差别。研究[33]发现,专家能够更好地意识到所犯的错误,并及时对生成的问题解决方案进行验证。专家元认知能力也表现在专家更善于利用外界记忆辅助设施(如笔记)作更多的注释[43]。

应用与启示专家和新手不只是存在知识占有多少的差别,在知识的组织、知识的使用策略、熟练程度和元认知方面也存在差别,这对软件工程人员的培训和学习以及专家系统的设计有重要指导意义。对程序员的培训不能只灌输编程语言规则等显性知识,还需要启发其分析知识之间的关系,以及不同解决方案使用的场景,进而形成高层次的图式;还需对知识使用策略和元认知进行训练;在培训的方式上,仅采用书本和授课方式是不够的,由于专家具有实用主义和自动化的特点[44],因此需要设计具体的任务对其进行实战训练。

不足与展望在弄清专家与新手的差别,特别是找到新手存在的缺点后,新手的学习和教育就成为重要的研究课题[45,46]。面向对象编程教育及可视化教育工具的开发成为近年来的一个研究热点[47]。

4程序员人格特质与绩效的关系

大量证据表明,软件开发中程序员的生产率和能力存在着巨大差别。具有相似背景的程序员在编程绩效方面存在巨大差别,学者们猜想,只有存在某种“固有的人格特质”才能解释这种差别。该领域的研究对程序员的选拔具有重要指导意义。

研究进展目前软件心理学领域主要采用迈尔斯-布里格斯类型指标(MBTI)和五因素模型[48]来研究人格特质类型与程序员绩效之间的联系。根据MTBI理论分析[49]:①在思考(thinking)/情感(feeling)维度方面(T/F),要检测和修改编程错误,克服语言错误,编程工作需要逻辑和分析能力,思考型比情感型更能胜任编程工作。②在感觉(sensing)/直觉(intuiting)方面(S/N),感觉型人更倾向于一步一步达到目标,对工作和细节更有耐性;而直觉型人工作更依赖于预感和直觉;但是直觉型人对复杂任务更感兴趣,感知型人更适合简单任务。③外向型(extrovert)/内向型(introvert)维度(E/I),内向型人更注意细节,在行动前喜欢彻底思考事情;外向型人思考问题倾向于表面化。在E/I维度的实证研究方面:David研究了MBTI与代码审查能力之间的关系,实验证明,E/I维度与代码理解能力之间存在强关联关系[50];Capretz[51]研究结果表明,软件工程人员大部分都是内向型性格;Chandler等人[52]发现,计算机专业的研究生主要都是内向、感知和判断型的;在程序员人格特质调查中,Turley发现软件行业样本中90%是内向型人[53]。在SN维度实证研究方面:Bishop[54,55]发现直觉型人在解决问题中表现得更好;Whitley[49]发现直觉型的学生确实更具编程潜能;Capretz[56]研究发现,他的专业程序员样本中直觉型人所占比例远远超过一般人群,他认为直觉型、思考型,特别是直觉-思考型在编程相关任务中能够工作得更好;Devito研究了MBTI与代码审查能力之间的关系[57],发现直觉型人比感知型表现好,直觉-思考型表现尤其好。在TF维度实证研究方面:Bishop[55]认为,完成软件开发中的一些任务(特别是问题解决相关领域的任务),需要在规定的限制条件下执行标准化过程,需要进行客观的逻辑的分析,思考型人更能胜任;Turley和Bieman[53]的研究表明,他们的样本中85%是思考型人;Capretz的专业程序员样本中81%是思考型;Chandler等人的计算机专业学生中86%是思考型;Myers研究表明,思考型人更适合于与逻辑思考有关的任务[58]。

应用与启示在现代软件人员选拔和项目管理中,人员的性格因素不容忽视。人员选拔需要根据角色的任务特点,选择适宜性格的人员,如直觉-思考型人普遍更适宜作编程工作;而需求分析更偏重交流能力,外向型性格比内向型性格更为适宜。实验表明,如果IT企业能够根据雇员的性格特点和潜能进行优化组织,生产效率和质量都可能得到提高[56,59]。

不足与展望正如Whitley所说[49],人格特质与绩效方面的研究是相关性研究,而不是本质上的实验研究,不能得出因果关系推论,不能说编程潜力、态度和行为的差别是由于人格类型导致的。需要对这种相关关系进行深入的机理研究,给出人格特质与绩效之间的相关关系的合理解释,这将是未来的一项重要的研究内容。在找到性格类型与能力偏好的关系的基础上,对于一个特定任务,如何选择和搭配团队成员以形成更加和谐、高效和多样化的团队也是未来一项重要的研究内容[48]。

5程序员情感与绩效的关系

情感(moods)是指“心境或主要情绪的意识状态”[60]。Merriam-Webster字典将情绪(emotion)定义为“意识的情感方面,一种感觉状态,是一种有意识的心智反应(如愤怒或恐惧),对特定对象的强烈感觉体验,一般伴随有身理的和行为的变化”。情感和情绪都是感情状态。情感持续的时间更长,引起的原因没有情绪明确。情感可以持续一两天或者更久,而情绪在几分钟或者几秒钟之内发生或者消逝。大多数心理学家认为情绪和情感在本质上是一样的。几乎所有的日常活动都受到情绪的影响,从驾驶飞机到编程,无一例外都能感受到正面或者负面情绪。情绪可能破坏日常任务,通常会对精力、睡眠和思维造成干扰,严重的可能导致疼痛。研究发现,情感会影响人类的多种活动,如创造性、记忆、推理、行为、认知加工、信息加工、学习、决策和工作绩效[60]。

研究进展虽然情感与绩效关系方面存在大量研究,但是很少有针对IT专业人士的情绪研究。近年心理学领域开展了情绪对行为的影响研究,情绪对IT专业人士的影响的研究却很少[60]。情绪心理学相关研究表明,情感影响推理。而推理是编程的必要元素,如果情感能影响推理能力,那也可能会影响程序员的绩效。Khan[61]设计了实验来测试情感对程序员调试任务的影响。其方法是让程序员在开始调试任务之前,先观看几组激发特定情绪的录像带,比对各组任务绩效。结果表明,情绪的觉醒水平对调试任务存在重大影响,而情绪的效价对任务的影响却不明显。即程序员检测和改正错误的能力依赖于情绪的觉醒水平。Good等人[62]意识到情感对程序员绩效的影响,在计算机实验室中引进了表达和监控学生情绪的设备。实验表明,此设备有助于学生的情绪表达、交流与修复,进而促进学业成绩,获得了良好的反馈。

应用与启示情感对编程绩效存在影响,该领域的研究对程序员的管理有着重要指导意义。如情绪的觉醒水平对调试任务存在重大影响,企业管理中就需要尽量避免员工情绪出现大幅波动,过于高兴或悲伤都对工作不利。需要避免员工带着负面情绪工作,思维受到影响可能引入严重的软件缺陷。情感波动对编程绩效存在较大影响,组织在选拔程序员过程中可参考此因素,优选那些情绪稳定型人格特质程序员负责关键性任务。可用大五人格测量中的神经质维度(neu-roticism)问卷衡量情绪稳定性。

不足与展望针对程序员情绪的研究目前还处于实验室研究阶段,这与实际工程项目中程序员的工作环境存在巨大差别;并且情绪具有实时性和积累效应,如何在不侵扰程序员编程工作的条件下,实时地检测程序员情绪进而帮助其调节情绪是未来的发展趋势。文献[63]提出通过程序员使用鼠标和键盘的信息来监测程序员的情绪。文献[64]提出通过增加人机界面的情感意识(emotionawareness)设计来促进用户的正面情绪。

6编程能力倾向测试

众所周知,有些人认为学编程很困难,而有些人却觉得很简单。要可靠地将这两类人识别出来却是一个大问题。编程能力倾向测试旨在解决这样的问题。

研究进展Wilson&Shrock[65]研究了12个预测因子后发现,有3个预测因子与编程能力有着重要的相关关系,依次是:舒适水平、数学和归因(把成功归因于运气的学生编程能力较差)。Beise等[66]考察了年龄、种族和性别与编程入门课程之间的关系,从统计学上表明,性别和年龄都不是有效的预测因子。Nathan等人发现学生的预期是一个重要影响因素,那些预期自己能得“A”的学生更容易成功[67,68]。Lister等[69]、Fincher等[70]、deRaadt等[71]、Simon等[72]、Tolhurst等[73]指出,在编程入门课程中表现差的学生缺乏问题解决能力。Stuart实验发现,系统商数(SQ)-移情商数(EQ)与编程存在强正相关[74]。Simon等人[75]、Sue&Gary[76]、Tolhurst等人[73]都发现,学生的空间观想能力与编程能力存在正相关,地图描绘实验中画俯瞰图的学生在课程中得分更高,画路线图的学生成绩比俯瞰图的差,画路标图的学生成绩最差。空间观想能力与代码导航能力有关,进而关系到程序心智模型的构建。

应用与启示编程能力倾向测试可以提供学业和就业方向咨询,选择那些适合学习编程的学生,提高编程课程的通过率,减少计算机学生的退学率[77];为企业选拔更适合编程的员工,并识别哪些员工需要进行计算机相关训练。

不足与展望可以看出,目前该领域的研究未能取得公认统一的结论。学者们对预测因子的选取具有较大随意性,各自提出的预测因子繁多且缺乏系统性。究其原因,研究者们未能对软件工程中各种角色所需的认知能力进行机理层面的分析。相关性分析不能说明因果关系。学生在某种任务中的绩效与编程绩效相关只能说明该项任务与编程任务在所需的认知活动上存在某种程度的交叠。因此,用这些因子预测学生将来的编程表现是不够合理的。作为编程能力潜力的预测因子,需要选取与编程认知活动密切相关且相对稳定的因素。本文前几节的分析和总结对编程能力倾向测试的未来研究方向具有重要启发:1)编程能力在很大程度上是习得性能力,知识与经验的差异是程序员个体差异的最主要原因。因此在个体经历和其它条件相同的情况下,学习能力的差异是影响程序员未来编程能力的一个重要因素。同时,学习能力是一项较为稳定的能力,可作为编程潜力预测因子之一。2)软件工程的核心认知活动是问题解决(problemsol-ving),而元认知对问题解决活动进行监控与调节。元认知能力的高低对问题解决绩效起着重要影响[78],并且元认知能力也是较为稳定的高级能力[21],可作为编程潜力预测因子之一。3)情绪、动机(motivation)等因素对认知活动存在较大影响。同样,在外界刺激条件下,人格特质是个体情绪动机差异的决定因素,且人格特质具有长期稳定的特点,可探索部分人格特质维度作为编程潜力的预测因子,如情绪稳定性。总之,编程能力倾向测试的未来研究应着眼于分析软件工程的任务活动特征,识别那些对编程活动有着因果关系且较为稳定的因素作为预测因子,才可能达到“潜力测试”的效果。

篇(3)

马上到年末了,自己也对今年做了一下总结,自己有哪些优点,有哪些还需要加强。每当我想到今年比较满意的地方,对比之前,就会有这样一个思考:如果以前的我要是知道这些该多。在这里给大家分享一下经验,让新人少走一些弯路。

做事要积极主动,态度决定一切

说这些,可能有人会觉得,这些都明白,都是大道理,只是怎么样执行的问题,下面我举一个真实的例子。

我曾经带过的两位新人,A君上班,交代给他负责的东西,是永远没有结果的,我交代给A做一个数据展现的部分,A君告诉我他不会JSP的技术,我给他推荐了一些书籍以及我曾经写过的demo,并告知不能光学,要有成果展示,可以通过这个数据展现来学习jsp技术,但是最后的结果是他下班就走,走之前没有跟我汇报任何进度,我最后只能换人做这个东西。这里我并不是推荐职场新人要加班,但是做事的态度要认真负责,新人可以对技术不懂,但是要有负责的态度,起码应该汇报一下今天的进度。

再来对比一下另一位B君,也是同样接到这个任务,首先B君懂jsp,但是他不懂JSTL,我给了他时间学习,结果B君在很短的时间内,学了JSTL并将总结发给了我,我相信这么短的时间内,他毕竟掌握的有限,但是学习了,又有总结,这种态度令我非常满意。在第二天,B君就把数据展示做出来了,而且确实是我想要的样子!不得不说,同样的事,同一水平线,不同人做的时候,态度和积极性就决定着一切,所以一个人只要工作态度好,我相信这个人的工作绝对不会差。

提问的技巧

作为一个新人来说,不懂就要问!这里我要说两点:

1、 如果是单纯技术上的问题,如果可以google到的,我认为就可以自己消化掉!问的问题一定要先google,然后带着自己的想法,去问一些有经验的人,收获会更大!(推荐阅读:《如何使用搜索技巧来成为一名高效的程序员》)

举个例子:曾经的我,埋头写代码,那时候很怕上司知道自己不会这,不会那!所以拼命的掩盖自己不会的东西,自己查资料,下班了问同学,上论坛发问。但是由于逻辑和现实需求不一样,所以结果并不理想!如果那个时候,我把自己不理解的地方和上司谈,也许会很快的就能完成这个任务,而不是返工。

2、如何提问?问谁?

很多新人不知道如何提问,也不知道问谁。我的建议是,先把你要问的问题梳理好,最好可以有电子版或者打印版的整理,方便其他同事查看和解答。然后就是提出的问题,要让回答的人感兴趣,这样他不但会给你解答问题,还有可能将问题延伸,让你学到更多的知识。对于如何让回答的人感兴趣,就是仁者见仁,智者见智了!看个人发挥了!

对于问谁,我觉得你不了解其他同事的时候,要先问你的上司,当你了解了你的同事每个人擅长的领域之后,就应该把自己的问题归类,然后问最擅长的人。这样会事半功倍!

任务分解

不知道大家做事都是怎样一个逻辑,当年的我做事就是一团糟。当我拿到一个日志分析的任务的时候,就想着做,埋头苦干,但是自己越做,脑子越浑,完全找不到头绪。后来,上司找到我,给我做出了任务分解,我按照任务分解来做,清晰了很多。直到现在,我还保持着做任务分解的习惯。

其实做任务分解可以帮助你更深入的了解你要做的事情,任务分解包括一个事情,你需要分几个步骤去做,每个步骤要做到什么样子,什么程度,多长时间做完。几个步骤为一个里程碑。如果具体做的时候发现一个步骤的事情做起来超过了一个星期,我觉得这属于任务分解的不够细,需要将这个任务再次分解,让你的工作更透明,更有效率。可以使用一些任务分解工作,将自己的工作路线和步骤明确,要善用工具。

主动汇报 + 主动沟通

曾经的我就是埋头苦干,但是从不汇报进度,其实这样是不好的。后来我的领导找到我,问我的进度,才发现意见有所分歧,理解有差距。索性只能重新来过。

新人一定要注意这个事情,有情况,有成果,有可展示的东西就一定要及时的主动汇报这个事情的进度,做成果展示,在对事情有不理解的时候也需要主动的沟通,使之和所有参与人员的意见一致再去做,保证你做的事情的正确性和有效性。

记住一句话:当领导找到你问进度的时候,你是被动的!

上面几点,看似简单,做起来很难!到现在任务分解和提问很多职场新人是不具备的,需要慢慢磨练,但是我们相信,只要有良好的态度,良好的习惯,工作一定会慢慢越来越好!相信自己的明年会越来越好!

程序员岗位个人工作总结范文二

光阴如梭,半年的工作转瞬即将成为历史,伴随着新年钟声的临近,我们依依惜别硕果累累的20XX年,满怀热情的迎来即将到来的20XX年。在这年终之际,现对来公司5个月的时间里所作的工作汇报如下:

1、正义erp项目的编码工作。从了解新疆正义项目的背景、及计划安排,熟悉正义公司制度及业务流程,再到熟悉新能开发模式,之后我根据需求调研报告,从基本的数据库创建,到编码,完成了销售部、生产部、采购部、质检部四个模块的基本单据的制单、审核、选单、查询、打印等系列的编码工作;完成了正义项目的模块测试及流程测试。

通过这段时间的努力,使我个人的耐心、细心程度及对工作的合理安排得到了锻炼,学会了在繁忙之中找条理,危难之中找希望。同时自己也有一些不足之处,一些细节地方技术上还不太成熟,还需加以学习与钻研。

2、、正义erp项目的实施工作。从十一月初开始进行正义项目的实施,每天早起赶在企业上班前赶到企业进行erp的实施。实施期间主要是软件的安装实施及对企业的erp系统的使用人员进行软件使用培训;纪录客户使用过程中出现的问题,晚上下班后加班加点将每天的小错误及客户变更修改完毕。

通过这项工作,使我原本欠缺的业务能力得到了很大的提高,并学到了很多与客户交流的技巧及业务上的知识,更加明晰了erp系统的流程。但离一个成功程序开发人员的标准还差得很远,在今后工作中,定会多多注意,加以改善。

3、帮助和使用手册文档的编写。帮助的编写使我熟悉了dreameweaver和fireworks的使用,为后期的oa开发也奠定一定的基础,使用说明的编写,使我更加加深了项目开发的整体思路与技术要点,总结了前期开发和实施中碰到的问题,并又一次的对软件整体进行了测试,对暴露出的小bug进行了最后的修改。

4、利用工作之余的休息时间加强学习。平时注意收集有关pb方面的资料文件,提高自己的处理新问题和解决新问题的能力,并加强学习java及oa方面的知识(现转为学习.net),为后期的工作打好基础。

以上为本人粗略的个人工作小结,请领导审阅,如工作上有不到之处,请领导不吝指出,以便本人及时改正,从而能更好地工作。

展望临近的20XX年,我会更加努力、工作上认真负责,再接再厉,更上一层楼。相信自己会完成新的任务,能迎接新的挑战。

程序员岗位个人工作总结范文三

先自我简介一下,本人从事asp.net开发进一年,XX届毕业生,XX年11月开始上班,之前做asp,09年2月后开始做asp.net,由于公司转型,现在带十几个人在一起搞asp.net开发,主要是关于准金融行业的行业管理软件。年度总结在会议上也写了,但仅限于对于工作总结及20XX年工作计划,自我总结较少,因此今天专门做下自我的年度总结,主要从技术、管理、人生上面谈谈这一年的收获,前辈路过欢迎多多指正。

技术

我在学校里学的是电气自动化,程序基础仅限于C基础课程的一些知识,后来由VB、HTML转向asp,在asp上花费了不少时间,对asp比较熟悉,后来由于公司业务需要,将开发平台转向asp.net,开始对asp.net不是很感冒,以为就是asp的一点扩展(那时还不知道三层架构,数据数据访问全在页面里——!),后来招来几个北大青鸟的过来终于意识到asp.net的强大之处,经过个人的努力已经逐步掌握了asp.net,现在层次上只能讲个人觉得是入门而已,原因是多方面的,待会儿会讲到。

相信从面向过程转向面向对象的同学都有一种感觉:面向对象开始真的有点别扭, 涉及到属性,尤其是类之间的各种关系,那时老想用面向过程传递参数多方面啊。于是老在想对象这种东西,从概念中跳中来,以自己的方式去理解才逐渐体会到页面对象的精华来,分层次展现、分级别访问、封装对象之间各种关系逐渐真正理解了,尤其是对象之间的关系,如对象a与对象b两者之间的关系,有些需要完全公开,有些需要隐藏,有些需要通过第三方传递,有些需要给自己的下级可见,有些需要让下级去完成具体操作——这不是现实的实际模型吗?应该这么理解,面向对象来源于现实,它不是一种凭空空想出来的理论,这些对象之间的关系可以将其还原为父子、夫妻、领导下属、同事、朋友之间的关系。相比之下,页面过程往往像是一股脑全部推给用户使用,其中的数据与数据访问方法层次不清晰,在模拟现实上它与面向对象相比更易于入门理解,实质上难于准确直接地表述。

面向对象上另一方面是它的设计模式,在之前的面向过程中 对这个设计模式并没有清晰地提出来,面向过程优秀的代码要求高内聚低耦合,从个人的理解上,这仅是对软件开发方法“技”上理论总结;设计模式是达到了“道”的层次,因为它从更大的方向、更抽象的层次来去表述具体的代码模块之间的关系,可以认为设计模式是完全从实际的应用来不断总结得来的经验,之间并没有这种术语,但相信前人肯定也使用到这种思想,它从实际应用于来,当然要应用于实际工作中,认真思考不断总结每个人都会有自己的“设计模式”,可以借鉴前人的思想来去提升自己,不可去为“设计模式”而设计模式。

具体到asp.net的实现模型中,真正理解它的机制与方法也就不难理解,记住b/s中离不开post或get,所有的AutoPostBack、SelectedIndexChanged……都是去调用Form传值,加上runat=server的服务器控件打开它生成的源文件也是普通的HTML标签,微软的让软件开发更容易的思路是很好的,时代在前进,很多年前你使用C写出MIS证明你很牛,很多年之后你不在使用C去写“学生管理系统”、“图书馆管理系统”那只能说明你的脑子少一根筋,开发语言都有长处与不足的地方,因为它们适用的场合不同,类似不能拿匕首去跟炮弹比,也不能拿C与PHP比,程序员都有一种偏执的心理,但一点要记住,你面对的用户才有最终发言权,程序能不能满足需要,易用性、稳定性、成本才是应当首先放到重要位置来去谈的。

管理

最开始担任管理一职时开发团队加我在内只有四个人,那时只是抱着接受挑战的心理去做管理,加上我本人比较重感情,团队之间关系相处都不错,但严重的问题逐渐显露出来:工作的随意性、团队精神薄弱、工作方式蛮干,印象深刻的是有几个开始承诺项目不能完工,于是最后天天加班,一直做到早上6点,睡一会7点半接着上班,几个同事都是年龄差不多的小伙子,干劲十足。后来随着时间的推进,问题越来越摆在眼前:项目迟迟不能完工,又由于公司待遇方面让新员工感觉不值得,于是形成了老板抱怨员工也抱怨的状况,我在中间两点都要去“消火”,这期间是我们部门相对最累的时间但也是相对感觉最充实的时候,后来,之前的员工跟我说“再也找不到那种感觉了”,这是我能想像的。这期间主要是老总对我十分信任,工作上主要是管理方法上对我指点了不少。后来我逐步体会到,管理应该是“大家定规则去遵守”,而不应该是“人管人”。

人管人很容易陷入一个误区:领导去时时刻刻关注每个员工,这样最后往往后造成员工对领导的敷衍了事,管理松了员工会责任下下降,管理紧了造成员工与领导关系紧张,另一方面领导时间精力有限必然耗费大量的精力在日常的监督中而不能投入到全局的管理中。

于是“定制度-定分工-定进度”,明确日常所有的规章制度,这期间除了公司主要的工作规章制度外其他的日常工作纪律、日常管理等规章制度都是我本人制订,然后征求大家意见最后去贯彻执行。中间也遇到了不少问题,比如开始我们内部是允许使用QQ的,后来员工用QQ闲聊的时间增多,大大影响了工作效率,最后决心禁止,开始阻力较大(貌似程序员都喜欢挂上几个QQ去到群里搞个群主,虽然群里大多都是菜鸟),最后多次开会,逐个谈话,阐明道理,形势逐渐好转。

项目分工上针对技术水平明确分工,制订项目开发计划,由于开始技术都不是很成熟,不少时间我这边强势要求,使用野蛮方法,完不成加班——我陪着加班, 这段时间能感觉到员工对我稍有怨言但总体还是认可的。

这期间公司新招人员,人员的增多更使我意识到团队管理的重要性,这期间版本控制、编码规范、文档管理、Bug管理等诸多问题都得到一一解决, 技术水平上主要是我个人利用空余时间学习新知识充电,然后展开各种培训,主要是photoshop、css、js、SQL等方面,培训一方面提升了员工的技术水平,一方面我本人在学习培训的过程中得到的最多,因为这个时候个人要求去思考的会更多,加上我本人对技术兴趣比较深厚,所以后期工作慢慢踏入良性循环。

待遇低、条件艰苦、工作时间长、工作压力大是团队中最大的难题,这方面公司在某些方面决策层有着严重的错误思想,造成技术人员对公司埋怨增多,在这方面我本人只能以劝架婆的身价去安慰身边的兄弟,因为我明白现在公司的问题与当前中国软件行业的通病一样,盲目追求利益最大化,不求质量,但求速度,整个社会风气造成软件行业良莠不齐发展,整个中国三四个人的开发团队组成的公司数不胜数,整个程序员阶层生存状况可想而知,疯狂加班、代码质量低下、维护成本大、稳定性差、用户体验差……。当然我们本身不能去逃避这个现状,对于个人来讲任何假大空的口号都是没有意义的,程序员作为技术人员最重要的是心态,以良好的心态去面对各种问题,发现问题、解决问题,发现问题抱怨是解决不了问题的(“IT民工”是我个人认为IT人最没有正确的自我定位的一个称谓,试想一个人连自己都看不起自己的职业,他能做好自己的工作吗?),最主要是解决问题。

我在面试员工时反复提到的三点是;工作态度、发展潜力、工作能力,由前向后排序,心态最重要,大公司大家都想削尖脑袋往里挤,但名额有限,所以广大的程序员同志绝大多数都集中在二流三流四流的软件公司,这个时候更应该做好个人职业定位。以我个人的经验,新员工选择一家公司往往最看重工资待遇跟发展潜力,程序员是一种不可以混日子的职业,工作能力很重要,但不是最主要的,工作态度是最重要的,工作态度往往跟个人的思想认识还有职业所在的环境有关,我个人的体会是绝不能太过于情绪化,情绪化无论是对工作还是对个人的发展都是不利的,就是说哪怕是明天你要辞职,你今天都要把今天要做的事情认真用心做好。

看了“程序员岗位个人工作总结”的人还看了

1.程序员个人工作总结范文3篇

2.精选程序员个人工作总结

篇(4)

中图分类号:G642 文献标识码:A

目前,重庆市从政策上大力扶持软件产业,加大投入力度,而其中的一个重心就是放在软件外包产业上。基于这个前提,市场必然需要大量的软件外包人才,本学院已经完成两届对日软件外包人才培养工作,在此基础之上,时刻把握市场对于人才职业素质要求的变化,进入对日软件外包企业深入了解实际需求,制定有针对性的培养计划就具有重大意义。

1软件外包企业人才需求现状

软件外包企业面临的问题是极其缺乏合格的软件人才。学校和社会培训机构培养了大量的软件人才,但大部分不能满足企业的实际需求。

软件外包项目是开发满足用户需求、及时交付、不超过预算和无故障的软件的任务,它以质量保证为基础,包括过程、方法和工具等要素。若要成功顺利地完成软件外包项目,还必需具备软件外包团队,这支队伍要有合理的软件人才结构,即“金字塔”型:塔尖的5%是软件架构师,中、高层的35%是管理项目、技术和产品的高级软件工程师,底层的60%是软件编码人员。

然而,三个层次的人才供应都有问题。首先是在整个软件开发过程中起着重要作用的软件架构师,由于需求量较少,要求也最高,单靠国内自己力量很难培养可胜任大项目的架构师,重庆市在金融风暴来临之际,出台优厚政策,高薪从国外聘请具有跨国大型项目经验的人才。其次是金字塔底层的程序员,学校教育理论与实践的脱节使得毕业生缺乏实际动手能力,不能满足企业的需求。现在,社会涌现出一批实训教育机构,以弥补学校教育的缺失,可勉强解决人才结构的底层人才数量问题。但是这些实训教育机构缺少规范和标准,人才质量无法得到保障。

最关键的是金字塔中约占35%的中、高层工程师问题,是整个人才问题的难点,它体现着企业生产和实施项目的执行力,他们必须懂得正确地生产开发外包软件的管理方法和国际标准,不再是手工业作坊式的管理与操作。中国软件行业起步于20世纪90年代,欧美国家的软件产业已经有约50年的历史,多年的积累已经形成了对软件生产环节系统的管理和规范,有效地控制软件开发的流程。这些操作规程已被国际上软件企业普遍接受,执行多年,并且形成标准。遗憾地是国内绝大多数公司的工程师和项目经理,完全不知道这些标准的存在,有些虽然知道但也没有仔细研究、更不用说应用。不执行这些标准并不妨碍面向国内客户开发生产软件产品,但是当走向国际市场时,是不能够胜任任何外包项目的要求。

2对日软件外包人才应该具有的职业素质

对日软件外包人才应该具有很强的专业技能并接受系统的软件工程实施规范的熏陶。笔者从外包人才的两个层面进行说明。

2.1中、高层工程师层次

对于中、高层工程师层面的人才,需要使用软件工程国际人才标准来进行衡量,比如懂得国际软件工程标准CSDP(Certified Software Development Professional),该认证体系由IEEE-CS(国际电子与电器工程师学会-计算机学会)创建,是对全世界范围的软件工程师在知识领域、工作经验及职业道德等方面的资质的正式认证。虽然需要拿到相关认证书是极其困难的(到目前为止中国拿到CSDP认证的只有30多人),但是所有这个层面的工程师应该积极向这个标准看齐,CSDP国际认证的基本内涵是按照国际标准规范化地开发软件。试想,一个外包企业,如果有3~5人通过CSDP认证,何愁外包项目做不好。

2.2程序员层次

程序员层面人才(高校本科教育能够为工业界输送的软件人才层次)应该具有的职业素质是:具有较强的快速学习能力,扎实的高级数据结构和算法基础、娴熟的编码技能、良好的编码习惯、能够熟练地使用2~3种流行的开发工具,能够写出规范的项目文档,善于沟通、具有极强的团队协作精神、奉献精神和务实的作风等。

2.2.1快速学习能力

快速学习能力是软件外包程序员非常重要的一个素质。笔者与几位IT公司面试官在讨论学习能力和已有的知识储备对于应届毕业生来说哪个对于该毕业生发展更重要这个问题时,得到的一致结论是前者。原因很简单,软件外包行业是随时要保证跟上IT技术发展的步伐,而IT技术的发展变化快是当前其他任何行业都无法相比的。相关从业人员如果不能跟上技术发展变化步伐,就会失去主动。所以在繁忙的工作之余能够利用较少的时间快速学习新技术、新的架构思想就显得非常重要。

2.2.2数据结构算法基础

扎实的高级数据结构和算法基础是程序员必须掌握的基础技能,但往往也是很多包括已经在业内工作多年的程序员没有重视的一个问题。对于现在很多高级的集成开发环境以及应用框架、类库等已经将很多数据结构和算法细节隐藏以支持RAD,很多程序员已经不必再去了解这些细节就能够透明的去处理业务和UI。这种情况针对小项目没有太大问题,但对于跨国外包项目来说,在处理一些软件项目时要从全局性能的角度考虑问题,此时高水平的底层数据结构设计和高效率的算法思路就显得十分宝贵了。

2.2.3编码习惯

良好的编码习惯对于在外包团队内部工作的程序员来说是非常重要的。在规范的软件外包团队中,程序代码需要给其他程序员复审,在维护阶段还会有其他程序员进行代码维护工作。如果程序员没有良好的代码习惯,那么上述情形不管对于自己还是对于团队中的其他成员来说都是噩梦。

2.2.4重视文档的作用

在软件工程中,文档的重要性是显而易见的。然而,至今大量的国内软件项目都还是编码基本完成后再回头来补齐文档,这对于软件外包来说肯定是行不通的。软件的设计实施都需要按照文档的规范定义来严格执行。对日软件外包人才必须具备规范的项目文档编写能力。

2.2.5语言能力及精神品质

对日软件外包程序员必须要具有较强的日语口语交流技能,这样才能直接精确的理解客户的需求,完成良好的沟通。而团队协作精神是当前很多行业都要求职业人应该具备的基本素质,软件行业当然不会例外,当今的软件产品规模越来越大、架构越来越复杂,一个人是不可能完成大型软件项目的开发工作的。软件外包行业由于其特殊性,必然的面临着大量的加班压力,从业人员必须从容面对经常性的加班,这当然会从某种程度上影响从业人员的其他生活,但从全局出发,这样的牺牲是必须的、是值得的。要从思想上要求从业人员做好心理准备,能够吃苦、自愿奉献。

3如何培养具有高素质的对日软件外包人才

要使软件人才的素质达到国际标准,并能够顺利做好对日软件外包项目,首先要在中、高层工程师层面寻找出提升高级软件人才素质的切实可行的办法与途径。解决问题的方法是:直接引进软件工程国际标准与软件工程人才标准,普及与推广CSDP是迅速提升人员素质达到国际水平的一条“捷径”。这个群体一旦培养成型具有一定规模后,对于底层软件外包人员的发展壮大以及素质的全面提升都是至关重要的。

中、高层工程师层面的问题解决了,对于底层的对日软件外包程序员的从业素质培养有一定带头指导作用,但仍然需要一整套科学合理、符合各地域实际情况的培养模式。笔者结合本学院两届对日软件外包人才培养经验,以及重庆市实际情况提出一个概要的培养方案设计思路。

首先,高校应多与企业进行交流和合作,让高校能够根据企业需求适当进行教学改革,鼓励学生多参加社会实习实践,使大学生具有相应的就业能力。同时,软件外包企业应与IT职业教育和培训机构合作,将更多的应届大学生培养成IT应用型人才。因为目前学历教育更专注于学生的基本素质培养,其就业能力、工作技能的培养应由学校与职业教育机构共同完成。就本学院的经验看来,在以往传统的计算机教学模式下,学生基本上将精力投入到计算机基础理论学习中,走向社会找工作时,发现IT职场更需要的是具有一定理论基础的、较强的动手能力的实干型人才。经过两届的对日软件外包校企合作培训,已经有半数毕业生的实际动手能力能够为软件外包企业所认可。

其次,由企业与培训机构共同推动大学生IT实习实训基地建设,通过IT实训提高高校毕业生实际动手能力,并大力支持和发展大学生IT就业中介服务机构,为大学生提供专业的就业信息、职场素质、就业推介等服务。

再次,重庆位于我国的西南部地区,学习外语的大众推动力和外语培训的教学能力较之沿海发达地区有一定的差距。对日软件外包人才必须具备较好的日语交流能力,特别是对日软件外包技术专业术语的领会和表达能力是语言能力培训过程的重中之重。特别缺乏既熟悉日语教学,又具备一定软件开发经验的人员作为对日软件外包日语培训师。

目前,我国教育现状更多还是应试教育,这样培养出来的人才从一开始在团队协作方面就有一定的欠缺。在高校教育的过程中,应该有意识的去培养学生的团队协作精神,激发学生对团队的奉献热情。

4总结

本文分析了重庆市软件外包企业人才需求现状,归纳了对日软件外包人才应该具有的职业素质,概要的提出了对日软件外包人才培养方案设计思路。我们相信重庆市的软件外包产业必将走向美好的明天!

参考文献:

[1] 刘绍坚. 中国承接国际软件外包的现状、模式及发展对策研究[J]. 国际贸易,2007(6):27-32.

[2] 李岳云. 国际服务外包趋势与我国服务外包的发展[J]. 江苏对外经贸论坛,2007(3):25-30.

[3] 赵桂玉. 中国软件外包业发展的障碍及解决措施[J]. 现代企业,2006(6):65-66.

[4] 刘先雨. 大连软件外包产业集群发展探讨[J]. 现代商贸工业,2008(10):121-122.

Research on Cultivating Professional Quality of Software Outsourcing towards Japan

WU Yu, YANG Hao

篇(5)

中图分类号:G642 文献标识码:A

“高级语言程序设计”是计算机软件相关专业中很重要的职业技能课,是一门理论性、实践性和实用性都很强的课程。通过教学,不仅要让学生掌握软件开发的有关理论,更重要的是培养学生的实战技能和职业素质,使学生一毕业就能够在软件公司找到合适的岗位并能够胜任。这在以培养应用型人才为目标的高职院校更为明显。笔者多年从事“高级语言程序设计”课程的教学及软件开发,对如何在日常教学中培养学生的职业素质有些粗浅的认识,下面以VB语言为例,从教学方法、课堂教学设计方面进行深入讨论。

1程序员应具有的职业素质

(1) 与人协作能力

这是程序员应该具备的最基本的,也是最重要的安身立命之本。软件项目开发往往不可能是由一个人完成的,而是由一个团队共同完成的,这就需要每个人既要会编写程序,还应该有全局意识,自己的工作要考虑与大局相一致,没有协作精神是不可想象的。

(2) 独自解决困难的能力

任何一本教科书都不可能囊括程序设计语言的所有内容,在一个具体的软件任务中肯定会遇到特定的困难,因此程序员必须具有自己解决困难的能力。一般情况下,可以通过查看微软msdn及csdn手册、网络搜索、到一些有影响力的站点同其他程序员交流来解决困难,如编程中国、编程爱好者等网站。

(3) 良好的代码编写习惯

这些习惯包括变量声明使用、变量命名简明扼要、代码标注、捕获代码异常、注重代码复用、加强测试环节等。如果在软件开发中忽略这些好的习惯,那么软件中存在的漏洞会不易发现,软件也不易于维护。

(4) 善于总结与积累素材

建立自己的资料库,把一些实用的程序代码收集起来,这些代码可以是自己编写的,也可以是网上下载下来的。并且每次完成一个研发任务,应当有目的地跟踪该程序的应用状况和用户反馈,找到不足,这样逐步提高才可以尽快成长起来,才可以在接受新任务时有的放矢。

2案例教学与项目化教学法相结合的教学过程

高职学生的程序设计课程采用案例教学法,这个观点多年来已达成共识[1]。近年来也有学者提出在程序设计语言教学中采用项目化教学法,把整个的教学内容组织成一个项目,以对项目的不断完善为线索组织教学。

笔者认为高职VB程序设计教学,应采取案例教学与项目化教学相结合的教学方法,实施“整体-局部-整体”的学习模式。在最初的日常教学中,采用案例教学法传授基本知识,案例教学可以增强学生学习的兴趣,而且因涉及新知识较少而不会让学生感到难以接受,符合先具体后抽象、由易到难的认知规律。学期末,采用项目化教学法,通过一个面向应用的小型项目,不仅能将知识点进行系统总结,还可以让学生体验到软件开发的步骤与氛围,培养工程的概念和把握全局的能力和素质。

2.1采取案例教学,注重习惯养成

案例教学时每堂课首先展示一个程序范例,该范例包括了当天要讲的新控件、新语句,然后讲解实现这一程序的基本思路,提出算法,以完成“任务”为主导。在案例教学过程中应注重:

(1) 采用“整体-局部”的教学思路,不论多么简单的一个案例,都应以系统设计为起点,以完成案例的过程为线索展开教学,把“程序设计方法”这一核心内容贯穿于教学的始终,使学生在学习过程中建立系统和全局的概念。

(2) 案例围绕“趣味性和实用性”,要培养学生的学习兴趣,案例的趣味性和实用性尤其重要,使趣味性贯穿于教学始终,这样学生一开始就能体会到课程的趣味性和实用性,进而激发学生的学习兴趣。

(3) 每个案例的设计要通盘考虑,用户的需求、功能的思想、界面的设计、容错的考虑、代码的复用、系统的测试等都必须考虑到,注意案例代码的规范化,同时要求编写规范代码。

(4) 要及时归纳、做好小结。归纳可以是一个控件使用的归纳,也可以是对一种结构、一个模块的归纳,可以使用文字概括,也可以使用图示总结,要求学生整理积累归纳总结的结果,并鼓励学生自己做好归纳。

(5) 有意识地培养学生的异向思维,如一个案例是否只有书上的一种解法,书上的解法是否是最优化等等。要求学生通过网络搜索、相互讨论的方式完善案例,辅助学生查阅多种资料来解决完善案例过程中遇到的困难[2]。

2.2实际项目开发,体验开发过程

在这一阶段,以小组合作讨论的形式展开教学,由学生独立完成项目开发,教师的任务由传授转变为指导。这种方式不仅是对所学知识的巩固总结,也能提供一个逼真的环境让学生体验程序员的工作过程。

项目任务不能太难,也不能太易。任务最好能较多地使用学生平时积累的素材,可以是一个学籍管理软件,可以是比较简单的游戏,也可以是一个实用的工资管理系统或者学生自主命题[3]。对已确定的项目任务,首先要求学生搜索网络,查找类似的源代码进行修改完善,如果搜索不到的话再进行自主创新。教师应协助学生选好搜索关键词,以便得到更恰当的结果,并指导学生从众多结果中选择自己想要的。在完成任务的过程中,本着由易到难、由简到繁的原则,将一些难题逐步分解,循序渐进地完成。小组内的学生要进行交流、讨论、沟通共同完成项目开发,小组间可通过相互测试来寻找不足,互相学习,培养学生团结合作精神,提高与人协作沟通的能力。遇到困难和未接触过的知识点,可通过查找书本、搜索网络等方式来解决,使学习的内容更多、更深、知识面更广,提高自学和解决困难的能力。

3教学设计举例-“多重窗体制作”案例

3.1 教学目标

(1) 知识目标:掌握窗体的加载(Load)、卸载(Unload)语句,学会窗体的添加、多重窗体程序的执行与保存。

(2) 能力目标:提出问题、解决问题的探索能力,通过msdn搜索资料的学习能力。

3.2教学过程

(1) 功能需求的提出

演示三重窗体操作实例,分析功能,提出功能需求

(2) 仿制体验,逐步探索

(3) 窗体的加载、卸载、显示、隐藏

尝试窗体切换,失败,引出问题:在多重窗体程序中,如何打开、关闭、显示或隐藏指定窗体?通过示范让学生跟随教师应用Load、Unload、Cls、Move、Show、Hide语句对指定窗体打开、关闭、显示或隐藏,实现第一、第二窗体的切换,探索窗体加载、卸载、显示、隐藏的方法,使学生掌握Load、Unload、Cls、Move、Show、Hide语句的应用。

3.3 探索与实践

组织学生通过小组合作完成第三窗体的添加、打开、关闭、显示或隐藏,实现各窗体之间的调用。探索Load、Unload、Cls、Move、Show、Hide语句的用法及功能,研究Show两种模式的功能特点及Load和Hide的区别。并探索多重窗体工程的保存与启动,研究多重窗体的“窗体保存”与“工程保存”特点,研究如何改变多窗体中的启动窗体。指导学生完成多重窗体完整项目的制作。

3.4总结与交流

组织全班交流编程思路与得失,着重讨论各自的编程策略、过程和对相关语句的理解,总结多重窗体制作的步骤与方法。

结束语:21世纪的教育要着眼于社会发展的实际需求和人才市场的实际需求,在程序设计教学实践中,教师要在教学方法上不断探索,努力提高学生的学习兴趣和专业素质,真正做到学以致用,使计算机程序设计课程的教学能够适应现代信息化人才培养的需要。

参考文献

[1] 周晓宏. 程序设计课程内容体系改革模式漫议[J]. 职业教育研究,2007,(5):73-74.

[2] 王方杰. VB教学方法探索[J]. 计算机教育,2007,(14):91-92.

Training Professional Quality in VB Teaching Activity

DU Shao-jie

篇(6)

程序员年终总结范文1以前在校很少自己做程序,对软件工程更是一无所知。来到公司,开始接触"大规模"(其实现在看来实习的项目其实还是很小的)软件开发,一时真的有些迷茫。比起VSS,MVC,QA,CMMI,我对JAVA,JSP,_ML的一窍不通根本不值一提。大家都不想输在"起点",所以都默契地在加班,这样一直持续了实习的两个月。

刚来的时候"始业教育"显得慢吞吞,我们还经常盘算去哪哪玩之类的。我和__(20个新生里一个南区的兄弟,软件学院的)还经常出去吃各种小吃,每到一处都尝尝本地的风味,这是他的习惯。之后开始的培训还不是很难过,JAVA,C++,ORACLE,老师们讲的很"好",可以说是非常好,好得我们没有几个人能听懂。大家开始发愁,我也是每天晚上都基本看书到10点。

"我心说得亏哥们我还练过",来之前的2月份我就自己买了一本THINKINGINJAVA,看懂看不懂怎么说也算是准备了一下JAVA。C++虽说没去上过课,但凭我的直觉我就一下看中这东西很有用,自己也看过一阵。至于ORACLE,虽然不了解,但毕竟因为佩服"云飞扬"的性格和敬业精神,咱SQL选修也不是白混的。专业倒还有点"基础",再加上咱这自学能力也不是吹的,基本维持。可等到后来的日语课就全迷糊了:本就没有语言天赋,再加上记忆严重欠缺,总是特别害怕去上日语课。不过特别喜欢那个老师说话的感觉,加上她一直对我都很好,所以还是很用心的学着。

随着培训的收尾,我们开始正式进入项目。从需求分析,概要设计到详细设计,我们一步一步的开始接触软件开发的每个细节。不了的就是每天都要记"周报",填写自己的劳动成果。因为这个我还被QA通报了好几次呢,真的很郁闷。其实现在我很感谢这种制度化的东西,某些情况下好习惯的养成是要靠强制来确保的。详细设计之后就是企盼已久的编码,我心想终于可以做点"正事"了。现在回头一看才知道,其实编码只占软件开发的整个过程劳动量的1/4左右,而且其他的环节也不是想象中的那么无足轻重。

编码我其实做的很不好,主要是因为需求分析阶段就没有认真仔细的理解需求和规格说明,加上编码时一个关键时段我回校和老同学叙旧。那阵项目经理(PM)就经常和我们说,"有问题自己想办法,不要经常问我"。PM其实是在叫我们自己酝酿,遇到难题只有"憋"一"憋"才能有真的收获。而我不在的那三天正好是大家技术/思路上的一个"跃迁",很多难题的解决方法都基本成熟,大家的编码也接近50%了,所以回来时我感觉已经掉队很多。再一个就是编码中期时机器出问题,环境搭不上了,这使我更加紧张和急躁,大大影响了我的士气。

后来利用五一其间的加班我终于赶完了自己的模块,达到了第一个里程碑。其实从发现落后到加班赶完这段经历,对我来说也具有里程碑的意义。不仅考验了我自己的能力和心理素质,也证明了我对集体的责任感和合作意识。我可以叫别人来帮我做赶上进度,但那样我会错过自己学习的机会,以后再遇到难题我还是不行;我也可以硬着头皮导致项目延期,那样我以后的日子保证不好过,而且这么做也不符合我的性格。事实证明我顶住压力独立完成任务不管是对集体还是对我个人都是一件大好事。

紧张的编码之后是单体测试,很多人都在继续编码,原来大家的编码都是没有完全做完。本是自己给自己挑毛病的过程,我们却都用来完成之前没有完成的任务,说来不禁可笑。

单体测试之后就是恶梦一样的系统测试。传说系统测试压力很大,测试组找到BUG上报后这边就得限期修改,之后提交给测试组进行下一轮的测试,回归若干次,测试结束后产品达到允许的缺陷率才可以出荷。不过由于这时已经有人要返校体检,其他人也军心涣散导致集体"早退",测试没有很正式的进行,只是简单的做了一下界面的统一和功能的检查,连性能测试都没做。不能不说是实习的一个败笔。

回想之前的工作,不到10周时间我们从学生开始转变为员工,从对公司完全陌生到有了一定的了解,不管是处世为人还是技术思想我们都有确确实实的进步。

再结合我自己来看一看。的收获就是我克服了有些自大的坏毛病,虚心的向别人学习。我知道这就是我练习与不同类型的人适应,交流的开始。技术上自不必说,我绝对学到了以前在学校一年也不一定学到的东西,这就是一个态度的问题。"态度决定一切",这句话太有道理了。

另外一点遗憾就是小孟说的,我似乎也感到自己有点"工作狂"的味道。为了拿下那些代码和BUG,我有好几周都连续加班到晚上11点,由于工作占用了时间,我连以前一直的跑步都没坚持下去。这样不是好兆头,我必须要养成合理的作息制度,不管工作怎样忙,必须不能占用自己的作息时间。还有一个就是和别人的交往。曾因为一些小事分别和老胡和哲明闹了不愉快,幸好后来都说开了,大家没计较。我一定要严谨,克制,绝对不在以后的正式工作中做这样的蠢事。

总体来说,我对实习充满了快乐的回忆,也许是因为我在大学的生活过于平淡和压抑。希望我可以延续这样的快乐,将自己带上事业的顶峰。

程序员年终总结范文2我是一名程序员,在过去的一年里,软件研发部团结协作,以及在公司这充满奋斗的环境下,我以严肃认真的工作态度和百折不饶的精神,努力的完成了公司的各项工作,在软件研发、团队协作和个人成长上也取得了一定的成绩。在公司一年的工作已经结束,特向公司总结汇报如下:

一、软件研发

根据公司的安排,项目的需要。在自身的努力、伍经理的帮组,团队的合作下,克服重重技术困难,增长了工作经验,收获丰盈:

1、asp.net开发

以前我在其他公司也做过一些开发,但是底层和架构与页面样式我都是没有涉及到的。通过这一年在本公司的的这些项目程序中的锻炼,我成长了,我学会了很多很多。

首先,面向对象语言的收获。对于当前编程的主流思想是对象,任何事物都可以用对象来表示。以前理解这些话很费解都是从表面上理解,没有从深入的体会,通过这次asp.net项目的深入,不管是数据还是外部一些条件我们都可以抽象成对象,都可以用对象来表示,具体可以用语言中的类方等。asp.net如此,c#如此java也同样如此。

其次,具备独立完成vb.net知识方面的能力。以前没有做过vb的东西,加上这次深入的做,这次涉及到的领域也非常广,常用的重要的都有涉及,并且还补充_ml,java实际操作中空白的部分。通过这一年的开发,在.net方面我能胜任这方面的工作,能独立完成这方面的工作。

再次,c#方面存在一些不足。LocALhOST通过c#这次软件的开发,也发现自己的不足,如基础知识掌握不牢,缺乏编程整体思想。这些都是需要在工作中完善和改进的。

2、数据库开发

数据库是伴随着项目以来用的最多最平凡的技术。以前对数据库只是会一些简单常用的操作,经过这一年项目的实战,对数据库的操作增加了一些丰富的经验。为以后的工作和经验的积累都奠定了坚实的基础。同时在项目中还用到了oracel与access数据库,这是我的收获。

优点:能熟练的运用数据库技术进行开发。特别是对sql数据库的操作,经过这么长时间的积累,基本上能合理的设计和新建数据库,同时在数据结构上也加强了对数据库的理解。通过项目的实践现在能熟练使用和编写多种sql语句。还掌握了一些关于数据库优化sql语句优化的方法,能进行一些简单的优化。

缺点:数据是一门比较先进的技术,并不是你会写一些sql语句,能建几个数据库你就是数据库工程师。要成为一个好的数据库管理员是要经过长时间的工作积累。针对自己的不足,在以后的工作和学习中多接触,多运用新的知识点。充实自己的经验和知识储备。

二、团队协作

上面的成功与收获,除了自身努力外,以及公司的支持。是这个团队铸造了我。我们这个团队也是因为有了我们这些拼搏协作的队员,使得它成为一个具有务实、拼搏、创新精神的团队。我与软件研发小组是一个整体,这里的团队总结也就是我在这个团队中的收获。

务实:公司下发的任务,下发的工作,件件都是用心去做的。我们这个团队中没有一个人在工作的时候做了工作以外的事情,都是实实在在的做跟工作相关对公司有益的事情。相信在伍经理的带领下现在是这样,以后同样也是这样。

拼搏:公司给的每一个任务不管它多难,如果工作没有完成我们会晚上加班,也要尽可能的完成当天的工作。如果工作实在忙,为了赶进度我们放弃周末休息时间也要尽可能的使项目提前。

创新:现在我们开始项目的时候都会进行研讨,一般都会进行一个效率和逻辑的分析与讨论,保证程序正确的前提尽可能的提高程序的效率。

互助:我们小组内只要任何一个人出现技术或其它的问题,我们都会彼此都会尽可能的去帮助他。不会因为某一个人而拖住整个项目滞后。

交流:我们在项目中会及时沟通自己的收获,特别是一些针对性的技术问题。这样可以省了很多重复研究的时间,这是一笔很可观的时间。

在交流中只要我会的,我懂的,我不会去吝啬。我会积极的去与你交流,我的团队名言“人强团则强,人弱团则削”。

三、个人成长

通过公司这快一年的锻炼与学习我真的进步了很多,不管从技术上还是做事上,都不像以前那样了。我在公司学到的懂得的使我飞速成长。

技术上:不管从语言上还是做事的逻辑上都得到了很大的的提高。现在在软件小组里面自己能独立完成一部分工作,承担自己的责任。

程序员年终总结范文3来公司担任程序员一职已一年多时间,在这一年时间里,我学到了很多东西。每个人都是在不断的总结中成长,在不断的审视中完善自己。在这半年里自己也是在总结、审视中脚踏实地地完成好本职工作,现将这半年的工作总结如下:

一、思想方面:

严格按照一个程序员应有的素养要约束自已,爱岗敬业,具有强烈的责任感和事业心,积极主动认真的学习专业知识,工作态度端正,认真负责,听从公司的安排,积极配合全友家私完善ERP系统,任劳任怨。

二、工作方面:

热爱自己的本职工作,能够正确认真的对待每一项工作,工作投入,热心为大家服务,认真遵守劳动纪律,按时上下班,有效利用工作时间,坚守岗位,需要加班完成工作按时加班加点,保证工作能按时完成。在这半年里,我本着把工作做的更好这样一个目标,开拓创新意识,积极圆满的完成了以下本职工作:

配合全友家私开发并完善SRM系统

独自开发全友家私SAP日志维护系统

三、存在不足:

公司领导以及部门领导同事的帮助和指教,使我的工作有了很大提高,当然我还存在着很多不足之处,处理问题思路简单,不够成熟,工作中容易产生急躁情绪,需要更深入学习专业知识,提高自己的工作水平。

程序员年终总结范文4这段时间,在领导和同事们的关怀和指导下,我通过不懈努力,各方面均取得一定的进步,现将我的工作情况做如下汇报:

一、通过理论学习和日常工作积累经验我的各方面有了很大的进步。

刚到公司不久,我便开始负责。NET方面的网站开发和广告平台开发和维护,刚开始的时候对我来说确实压力很大,因为各方面都还不熟悉,而且与之前的公司相比,节奏也有点快,不过我慢慢的习惯了环境,和同事相处的比较融洽,领导对我也比较关心,在公司里工作就像是在一个幸福的大家庭里一样,我很快喜欢上了这里。

我到公司不久,第一个项目是___公司网站,做这个项目的时候我遇到了几个问题,我在以前公司做的时候没有在这么短的时候完成一个项目的,在效率上提高了我的能力。做这个项目的时候我也遇到了许多以前没有遇到过的问题,我请教同事和朋友,还有借助网络一一解决了难题。

之后,我将B2B广告招商平台进行了改版,开发了___智能建站广告平台以及以后网站的维护工作。

接下来,我又做了一个比较棘手的项目——___在线咨询系统。为什么说棘手呢,因为我以前没有做过这方面的项目,而且我问遍了所有认识的朋友,搜遍了网络也没有找到如何解决的方法,之后我翻书籍,接着搜索网络。功夫不负有心人,终于我找到一个聊天室的小例子,但是功能差的太远,于是我把这个示例一点点的研究,从一点也不懂到后来慢慢看懂,从对AJA_技术一无所知到基本熟练运用。接下来我就开始自己开发,到最后终于把它开发了出来,虽然不是很完美,功能不是很强大,但是它是我辛苦的劳动结晶,我相信以后会把它开发的更强大,更完美。

二、明确岗位职能,认识个人技术能力不足。

经过三个多月的工作,虽然完成了一些项目的开发,我的技能也提高了很多,但是感觉我的技术还有待提高,所以我会在以后的工作中更加努力,努力提高自己的技术和各种不足,努力使自己成为一名称职的职员。

三、提出自己努力计划

1、学无止镜,时代的发展瞬息万变,各种学科知识日新月异。

我将坚持不懈地努力学习各种技术知识,并用于指导实践。

2、“业精于勤而荒于嬉”,在以后的工作中不断学习知识,通过多看、多学、多练来不断的提高自己的各项技能。

3、不断锻炼自己的胆识和毅力,提高自己解决实际问题的能力,并在工作过程中慢慢克服急躁情绪,积极、热情、细致地的对待每一项工作。

4、努力提高自己的日常交际能力。

时光流转间,我已到公司工作三个多月。非常感谢公司领导对我的信任,给予我体现自我、提高自我的机会。这三个多月的试用期工作经历,使我的工作能力得到了由校园步入社会后幅度的提高。

程序员年终总结范文5马上到年末了,自己也对今年做了一下总结,自己有哪些优点,有哪些还需要加强。每当我想到今年比较满意的地方,对比之前,就会有这样一个思考:如果以前的我要是知道这些该多。在这里给大家分享一下经验,让新人少走一些弯路。

做事要积极主动,态度决定一切

说这些,可能有人会觉得,这些都明白,都是大道理,只是怎么样执行的问题,下面我举一个真实的例子。

我曾经带过的两位新人,A君上班,交代给他负责的东西,是永远没有结果的,我交代给A做一个数据展现的部分,A君告诉我他不会JSP的技术,我给他推荐了一些书籍以及我曾经写过的demo,并告知不能光学,要有成果展示,可以通过这个数据展现来学习jsp技术,但是最后的结果是他下班就走,走之前没有跟我汇报任何进度,我最后只能换人做这个东西。这里我并不是推荐职场新人要加班,但是做事的态度要认真负责,新人可以对技术不懂,但是要有负责的态度,起码应该汇报一下今天的进度。

再来对比一下另一位B君,也是同样接到这个任务,首先B君懂jsp,但是他不懂JSTL,我给了他时间学习,结果B君在很短的时间内,学了JSTL并将总结发给了我,我相信这么短的时间内,他毕竟掌握的有限,但是学习了,又有总结,这种态度令我非常满意。在第二天,B君就把数据展示做出来了,而且确实是我想要的样子!不得不说,同样的事,同一水平线,不同人做的时候,态度和积极性就决定着一切,所以一个人只要工作态度好,我相信这个人的工作绝对不会差。

提问的技巧

作为一个新人来说,不懂就要问!这里我要说两点:

1、如果是单纯技术上的问题,如果可以google到的,我认为就可以自己消化掉!问的问题一定要先google,然后带着自己的想法,去问一些有经验的人,收获会更大!

举个例子:曾经的我,埋头写代码,那时候很怕上司知道自己不会这,不会那!所以拼命的掩盖自己不会的东西,自己查资料,下班了问同学,上论坛发问。但是由于逻辑和现实需求不一样,所以结果并不理想!如果那个时候,我把自己不理解的地方和上司谈,也许会很快的就能完成这个任务,而不是返工。

2、如何提问?问谁?

很多新人不知道如何提问,也不知道问谁。我的建议是,先把你要问的问题梳理好,可以有电子版或者打印版的整理,方便其他同事查看和解答。然后就是提出的问题,要让回答的人感兴趣,这样他不但会给你解答问题,还有可能将问题延伸,让你学到更多的知识。对于如何让回答的人感兴趣,就是仁者见仁,智者见智了!看个人发挥了!

对于问谁,我觉得你不了解其他同事的时候,要先问你的上司,当你了解了你的同事每个人擅长的领域之后,就应该把自己的问题归类,然后问最擅长的人。这样会事半功倍!

任务分解

不知道大家做事都是怎样一个逻辑,当年的我做事就是一团糟。当我拿到一个日志分析的任务的时候,就想着做,埋头苦干,但是自己越做,脑子越浑,完全找不到头绪。后来,上司找到我,给我做出了任务分解,我按照任务分解来做,清晰了很多。直到现在,我还保持着做任务分解的习惯。

其实做任务分解可以帮助你更深入的了解你要做的事情,任务分解包括一个事情,你需要分几个步骤去做,每个步骤要做到什么样子,什么程度,多长时间做完。几个步骤为一个里程碑。如果具体做的时候发现一个步骤的事情做起来超过了一个星期,我觉得这属于任务分解的不够细,需要将这个任务再次分解,让你的工作更透明,更有效率。可以使用一些任务分解工作,将自己的工作路线和步骤明确,要善用工具。

主动汇报 + 主动沟通

曾经的我就是埋头苦干,但是从不汇报进度,其实这样是不好的。后来我的领导找到我,问我的进度,才发现意见有所分歧,理解有差距。索性只能重新来过。

新人一定要注意这个事情,有情况,有成果,有可展示的东西就一定要及时的主动汇报这个事情的进度,做成果展示,在对事情有不理解的时候也需要主动的沟通,使之和所有参与人员的意见一致再去做,保证你做的事情的正确性和有效性。

篇(7)

文章编号:1672-5913(2010)08-0076-04

中图分类号:G642

文献标识码:A

JavaEE编程技术是我院软件技术Java开发方向的专业核心课程,它是继学生修完Java程序设计、JSP程序设计之后的一门重要课程,对培养学生在企业应用中的开发能力,培养中高级Java程序员和Java服务器端程序员起着至关重要的作用。

JavaEE是一个庞大、分支众多的技术体系,同时也是一个需要不断接受新思想、解决新问题的系统,要想在有限的学时内学好,很难做到面面俱到。同时,作为一门高职课程,JavaEE不能太理论化,而应该面向实际应用。JavaEE是服务器端技术,要解决的问题是企业级应用,企业级应用的重要表现形式是分布式系统,EJB、Web服务、JMS这些企业级系统常用的技术,其学习难度大,应用环境很复杂,这给实践教学的开展带来一定的难度。

高等职业教育的课程改革不仅仅是方法的改革,还是理念、内容、实施方法等多方面的改革,高职教育的特点应该以实践教学为主。本文以企业对人才的需求为导向,结合笔者多年的教学实践经验,按照基于工作过程的改革思路,探讨了JavaEE编程技术课程改革过程中教学内容的优化整合、学习情境的设计、教学方法和教学手段的革新等多方面的改革实践。

1 按照企业需求和成长规律优化整合教学内容

1,1课程改革源于专业的整体要求,同时必须符合企业的需求

一门课程不是孤立的存在,课程改革来源于专业的整体要求,而专业人才的培养必须符合企业需求。企业对Java程序员的岗位需求分为两类,即Java客户端程序员和Java服务器端程序员。这两类岗位所要求的知识和技能既有较大的差异,又存在紧密的联系。一方面,客户端程序是独立运行的桌面应用,一般具有丰富的图形用户界面,经常需要直接与数据库进行交互,也需要调用服务器端程序提供的服务。客户端程序员需要具有丰富的Java图形用户界面编程经验,数据库编程经验,对Java服务器端技术有一定的掌握和运用能力。另一方面,服务器端程序运行在服务器上,它为别的程序提供服务,需要程序员掌握组件的编程、应用在服务器端的主流框架。作为高职院校软件专业毕业的学生,应该能够胜任软件企业对Java程序员的不同岗位需求。

1,2明确Java主线课程教学任务的侧重划分

我院以Java为主线的核心课程有3门:Java程序设计、JSP程序设计和JavaEE编程技术。其中,Java程序设计主要培养Java客户端程序员,同时解决基础问题。JSP程序设计和JavaEE编程技术主要培养Java服务器端程序员。事实上,JSP属于lavaEE的Web组件,是JavaEE分层架构中表现层最重要的技术,同时,在使用Java技术建立Web应用时,JSP因其便于掌握和可实现快速开发的优点成为很多小型Web应用采用的技术。我们将JSP作为一门课程放在JavaEE之前,不仅符合JSP的自身体系,还可以减轻JavaEE的教学压力,平滑JavaEE的学习曲线。

1,3确立JavaEE课程的教学目标和教学内容

在理清了各课程的关系之后,我们确立了JavaEE编程技术的教学目标:学习完本课程后,学生能够独立搭建JavaEE开发环境,能够熟练进行三大组件(servlet、JSP、EJB)的编程,能够运用Singleton、DAO、MVC设计模式,能够运用Struts框架,能够实现数据访问层,能够按照不同的方案设计和实现JavaEE多层结构的企业级应用。

教学内容包括:JavaEE开发环境、在JavaEE中使用XML、Servlet组件的编程、JavaBean组件在JSP中的应用、数据库访问技术、MVC架构、Struts框架、EJB 3.0组件编程。

教学内容的重点在于JavaEE三大组件技术(JsP组件主要在“JSP程序设计”中介绍)、数据访问层、设计模式、MVC架构和Struts框架;难点在于如何运用这些技术和框架实现一个既符合JavaEE分层结构,又遵循MVC架构的企业级应用系统;能力目标在于培养具有一定理论知识,又具有较强的实际编程能力和开发能力的应用型人才。

2 基于工作过程进行课程开发与设计

2,1课程开发的思路:教学内容、工作任务、软件项目三位一体

“教学内容、工作任务、软件项目三位一体”的含义是:巧妙地将理论知识点融入到完成不同的工作任务中;工作任务不是孤立的存在,而是软件项目中的一个个局部功能;学习进度与项目进度相一致,学习内容与项目内容相一致,用完整的项目贯穿课程始终。具体而言,主要具备以下3个特色:

特色1:软件项目贯穿。选择一个综合性的项目贯穿整个课程,项目根据学习情境分成一系列局部功能,在不同的学习情境中,学生将学会实现某个(些)局部功能,当完成所有学习情境,整个项目就可以完成。

特色2:理论教学采取任务驱动教学模式。整个课程划分为不同的学习情境,每个学习情境都有若干个典型工作任务,理论教学采取任务驱动的教学模式,将相关理论知识点融入到完成不同的任务中,并布置相近似的任务在课后实验中指导学生动手完成。

特色3:实践教学采取项目导向教学法。实践教学分为两个层次,第一个层次是在理论课后的作业和实验中阅读和模仿课堂上老师给出的代码,完成近似的任务。第二个层次是项目的开发,课程安排了三次大的课程设计,随着课程内容的推进,将同一个项目分别用不同的技术和框架实现三遍。第一层次的任务是为项目作准备,是项目中的一个个局部功能,这样学生可以实现从任务到项目的平滑过渡。

改革后的课程体系完全颠覆了传统的教学模式,符合高职教学以实践为主的理念,更加有利于培养高素质的技术、技能型人才。

2,2学习情境的设计

在上述课程改革思路的指导下,我们设计开发了“学习情境、能力目标总表”,如表1所示。

3 按照高职教育理念构建教学实施模式

3,1理论教学:任务驱动

改革后的理论教学以任务引领,按照“提出任务;完成任务的思想、方法、操作:边学边做完成任务;总结规律和技巧”4个步骤实施教学。

教师在讲授某个(些)理论知识点之前,首先提出一个具体的任务要求,让学生明白需要完成一个什么样的工作任务。例如:在课程早期讲授Servlet请求 和Servlet响应时,如果从理论到理论,不仅难以理解而且枯燥乏味。那么我们不直接从理论入手,而是首先推出一个任务“创建登录系统”,要求包含一个登录页面和一个LoginServlet。其中:登录页面接收用户填写的用户名和口令,点击提交按钮之后,LoginServlet将用户名和口令以HTML的方式返回给客户端(因为不想涉及到数据库);接着,将要完成的任务演示出来,使学生看得见、摸得着,以此激起他们强烈的兴趣。教师可乘机将“Http请求和响应的格式,如何发送请求,如何提交表单数据,如何处理请求,如何生成响应”等教学内容巧妙地融入到这个任务当中,讲解实现程序的代码,演示完成任务的步骤。

为了让学生真正掌握课程内容并且能够自己动手,教师必须提出新的要求。做法是:布置一个近似的但又有所不同的任务,比如,在登录的基础上添加注册,这样,学生必须阅读和消化代码,才能够模仿和创新,通过完成任务达到掌握所学知识的目的。在此过程中,教师要及时收集学生在完成任务过程中出现的典型问题和共性问题,结合理论知识点,在课堂上进行有针对性地讲解,给出解决问题的办法。

最后,要求学生总结规律和技巧,将完成任务过程中遇到的问题及解决办法写成实验报告,督促学生及时总结实战经验,实现知识的融合和再学习。

在“任务驱动”教学法中,“任务”的设计是关键。一方面,教师必须精心设计出一个个实际任务,将教学内容巧妙地隐含到这个任务当中。另一方面,为了配合项目导向教学法,任务的设计不能脱离项目而独立存在,而要为完成项目服务。任务实际上是项目这个大要求下的一个个小局部的功能,当学生完成了一定数量的任务之后,那么切入项目的时机就成熟了。

3,2实践教学:项目贯穿+项目改写

项目导向教学法,就是教师讲解项目的要求和涉及的知识点,学生在教师的引导下,上机实现项目。学生边学习边做项目,学习内容与项目内容相一致。请注意,项目导向教学法强调学习进度与项目进度相一致,用项目贯穿整个课程,而不是到了课程的最后才开始做项目。

为了实现项目导向教学法,就要考虑课程内容、课程进度与所要实现项目的相关性。事实上,在绝大多数课程中,很难找到一个完整的能够贯穿课程始终的项目。为了解决这一难题,可以在课程中及时地引入若干个小项目,让每个小项目近可能涵盖前一阶段课程所涉及的知识点。这样一来,整个课程就由若干个小的项目贯穿,既增加了课堂教学的灵活性,又降低了项目实施的难度。

幸运的是,JavaEE项目有自己的特点,Java EE项目可以选择不同方案来实现,如不同的分层结构,在一层中可以采取不同的技术,还可以选择不同的方法实现MVC设计模式。每一种方案都有自己的特点以及学习曲线。这些因素带来的影响在项目进入开发阶段后非常显著,学生在学习中需要适应这些选择。而正是由于JavaEE项目这一特点,使得采用一个项目贯穿整个课程成为可能。

本课程选择了“在线商店”作为贯穿始终的项目,该项目采取不同的方案被实现了三次。由于课时的限制,只要求实现“在线商店”前台的登录子系统和在线订货子系统。登录子系统包括注册和登录:订货子系统部分包括浏览商品目录、查看商品详情、商品搜索、购物车、商品定购。在表1中“载体”一栏显示了项目在各个学习情境的切入情况。

本课程的实践教学还有另一个新颖之处,那就是:教师不是直接布置学生做一个项目,而是给定一个原始项目,要求学生按照指定的要求进行改造。例如,在表1中的情境6,交给学生一个采用JSP+JavaBean模式实现的登录子系统,这是一个典型的JSP应用,只有两层结构,要求学生采用基于Servlet实现MVC模式进行改造,并用DAO设计模式实现数据访问层,数据访问采用连接池技术。在情境7,给定一个采用MVC模式实现的在线订货子系统,要求学生以此为基础运用Struts框架进行改造,实现基本项目的全部功能,鼓励实现扩展功能。在最后的情境中,用EJB改造现有的购物车功能。原始项目和改造后项目的比较参见表2。

篇(8)

1计算机常用的编程语言

1.1C语言

20世纪七八十年代,C语言被开发,迄今为止这一编程语言在社会各个领域中均有较高的应用,同时在不断改进中演变成现代性的编程语言,得到了各界人士的青睐与肯定,从某种程度上可以证实C语言存在的意义与不摧的生命活力。C语言在编写进程中,最大的特征体现在无须计算机硬件或他类功能辅助就可以运行方面上。当然C语言的优点不仅在编辑环节上体现出来,还具有以下几种优势:(1)拥有优良的设计语言;(2)参照工作系统运行特征编写出有效的应用程序;(3)短小精炼;方便、语法简练、语法要求宽松、数据结构种类多样、运算符整体、功能灵活强大等特征;(4)因为数据模型是具备字符型、数组型以及构造型等属性的模型,那么就会使C语言能够为计算机软件的研发营造优良的运转环境,软件编写效率大幅度提升;(5)C语言可以直接访问物理区域,从而确保软件开发工作运行的动态性,这也是多数软件商安装C语言的原因之一。

1.2C++语言

C++语言可以被视为C语言的升级版本,C++语言最大的特征体现在囊括了C语言全部功能与优势方面上,这也促使目前C++语言在软件领域中被普及应用。C++语言适用于多变的环境,故此C++语言应用范畴不断拓展,在操作平台有广泛的应用。与C语言相比较,C++语言编写进程复杂性特征显著,学习起来具有一定难度,只有在对C++语言支持数据封装与数据隐藏、支持传承与多次应用、支持多态性等特征有认识,同时对C++语言工作原理有深刻认识上,才能确保在计算机相关软件研发的进程中,C++语言的实用价值发挥出来。在对以往实践数据解析过程中,发现C++语言为他类编程语言学习的入门学科,对C++语言编程要点有全面、娴熟掌握的基础上,软件学习者在学习与掌握他类编程语言应用要点上就更为容易了。

1.3Java语言

Java语言是继C语言之后出现的,有效地整合了C语言的全部优势,并填补了C++语言存在的不足,体现出特质性与优越性[]。概括地讲,Java语言大体上是以面向对象为主的编程语言。在语法属性方面上,Java语言与C#语言也存有显著差异性,Java语言使用package的概念将指针取而代之,导入包采用的是import语句,在Java内还存有特性的概念,以setXXXO、getXXXO为媒介进行设置。但是C#语言应用了指针概念,在unsafe状况中可以顺利地落实指针操作指令,Java语言特点在以下几方面体现出来:(1)跨平台性。即软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行;(2)面向对象。而通过使用方法来操作这个对象;(3)安全性。具体是在语言级安全性、编译时安全性、运行时安全性、可执行代码安全性四方面体现出来;(4)多线程。允许一个应用程序同时存在两个或两个以上的线程,用于支持事务并发和多任务处理:(5)简单易用。用记事本、文本编辑器等编辑软件来实现,然后将源文件进行编译,编译通过后可直接运行,通过调试则可得到想要的结果。

1.4C#语言

C#语言是一类最新的、面向对象的编程语言。它最大的特征体现在能够协助程序员迅速的编写多种以Microsoft.NET平台为基础的应用程负面上,Microsoft.NET提供了多样化的工具与服务内容,去协助程序员最大程度地开发利用计算以及通讯领域。也就是因为C#语言具备面向对象的超长规划能力,初始它转型为建设多种组件的最佳编程语言——不管面对的是高级的商业对象还是系统级的应用程序。程序员采用简单的C#语言结构,这些组件就可以开解的转型为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调整与应用。

1.5Python是一种面向对象的解释型计算机程序设计语言

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++语言对其进扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。综合以上论述的内容,对C语言、C++语言、Java语言、C#语言以及python这五种常见的编程语言各自特征、优点、应用范畴以及取得的应用成果有更为全面的认识。计算机软件开发人员应以设计目标为基点,科学的选用编程语言,进而实现提升软件开发效率的目标,在编程语言的协助下,软件开发人员工作强度得以降低。

2编程语言在计算机软件开发中的应用规则

计算机软件研发的主要目的是在现实生产生活中产生价值。在对计算机软件开发之前,相关人员为了能够选用最佳的编程语言,对不同类型编程语言的概念、特征、主要功能、工作原理,以及编程语言具体能够处理哪些问题等信息有全面性认识是基础。继而编程人员就会对一段代码的内容与编写的意义进行解析,若遇到难以理解或辨识的情况,程序员会一般就不采用该段代码或对其进行二次编写,在此书写的代码应带有通俗易懂的特征,这样才能为后续人员解析工作的开展与运行提供便利条件。比如在“parm=15”这一代码中,因为不存在声明变量的信息,那么程序员怎么判断该代码的正确性呢?在编译器没有用武之地的情况下,程序员通常是存有顾虑心理执行该语句的,故此他们只能借助解读后面代码含义的方式,才可以辨识“parm=15”确切意思。2.1整体结构通常来讲,被开发项目整体结构决定了被开发软件的功能,以及程序员选用哪种编程语言。因为计算机整个系统是由多个部分构成的,这间接的说明系统软件在开发过程中有很大的可能应用多种编程语言进行编写。而怎样在众多编程语言中将有效语言挑选出来?这是所有程序员需要面对的难题,通常情况下项目属性与功能决定所用编程语言的类型。但是对于资金投入金额相对较大的操作程序,最好选用一些静态类型的编程语言,成本较高的操作通常是指图形渲染、密码学、视频以及信号处理等。2.2最好应用自体能够娴熟使用的语言如果程序员能够娴熟的运用某一编程语言对计算机软件进行开发,那么就可以节省反复试用不同编程语言的时间,同时相关人员也能够达到对软件工程项目时间表精确估算的目标,从而确保软件开发工作结束的准时性。此外,程序员在娴熟掌握有关编程语言应用要点的情况下,还可以参照被开发项目运转需求,对语言进行适度整改与创造。比如,被研发的软件性能倾向于多次处理手工劳动时,那么程序员就可以参照现实中人工劳动量,选用简易性、敏捷性的编程语言,最好是选用那些自体就带有相应功能的编程语言进行操作。2.3充分考虑硬件环境众所周知,硬件环境是计算机软件开发目标顺利实现的前提条件,也就是说任何类型软件的开发均要有适宜的硬件环境去辅助,故此在应用编程语言对软件开发进程中应充分解析外部硬件环境。一般情况下,编程语言能够在当下版本的硬件环境下运行,但是在科学技术不断进步的时代中,硬件设备更新不断提速,那么过去适用的编程语言有很大可能不能满足当下软件发展需求了,从而使不匹配的问题衍生出来。故此,为了使软件开发的质量有所保障,在对有关程序进行设计之前应准确选择适应硬件环境运行的最佳编程语言,只有这样才能够使编写出的语句长时间、安稳的运转。此外,只有结合硬件设备环境特征选用编程语言对被开发软件程序进行编写,在对所得软件性能进行调整环节中才不会存在较大难度。由此可见,迅速对软件系统进行复原是极为必要的,动态编程语言的应用,能够使上述目标顺利达成,具体是借助和数个库相整合的方式。2.4语言的选择要考虑是否支持平台在选用编程语言对软件编写过程中,支持平台也是不可忽视的重要因素之一。比如说在浏览器内运转的程序语言,参照语言的适用性就可以有针对性的选用某些语言。支持平台可以被视为一个大型环境,全部操作行为均要紧扣平台运行模式。某些程序在研发的过程中,在程序语言格式这一因素的作用下,需产生大批量的位操作,那么在这样的形势下,程序员要分析这些位操作对软件开发进度与质量造成的影响效果,是否可以省略某些操作内容,若一定要进行这些位操作,那么就应该对编程语言类型进行科学选择,最好是位操作相对简单,以及能够供应合适数据的语言同时,此外,在一些特殊情况下,程序员应采用专业化的在的编程语言,节省时间的同时,也有效规避编程中较大的偏差。

3结束语

综合全文论述的内容,对C语言、C++语言、Java语言、C#语言以及Python五种常见计算机编程语言特征与适用范畴有更为全面的认识,同时也掌握了几种编程语言在计算机软件开发中的应用规则。总之,编程语言对软件的开发质量产生直接的影响,软件开发的项目与硬件环境又作用于程序语言。故此,选择最适编程语言是极为必要的,程序员在实践中应不断学习与总结经验,实现提升软件开发效率的目标。

参考文献

[1]王志刚,柴功昊.智能住宅计算机应用软件开发研究[J].科技视界,2015(05):153-154.

[2]李开元.探究计算机应用软件开发过程中不同编程语言的影响[J].信息化建设,2015(06):48.

[3]张彤.计算机应用软件开发中编程语言的选择研究[J].电子技术与软件工程,2015(21):57.

[4]康超.基于计算机软件开发的JAVA编程语言探讨[J].科技展望,2016,26(04):11.

[5]恽健.基于计算机应用软件开发的Java编程语言探究[J].电脑编程技巧与维护,2016(16):26-27.

篇(9)

1.准备充分,我这次找工作准备的特别不充分,可以说在第一次面试的时候都没正真意义的准备过什么,在第一周的时候基本都是打酱油,所以准备是必须的,我总结了大概有几点需要的。常见的面试题目,自己所做的项目情况,自我介绍,职业规划,离职原因。我觉得这些东西一定要用一点时间做下梳理,不然面试的情况会像我开始一样很糟糕,浪费时间也浪费一些很好的机会,我觉得应该在你想跳槽的半个月之前就要准备了,这样可以节约一个星期的时间。

2.基础知识的积累,我是.NET的方向的,所以主要说.NET方向,面试无非四大块:C#,数数据库,JS(Jquery),数据结构和算法。先说数据库,分页SQL和一些查询SQL,再就是大数据量查询的优化这基本是每个面试官都会问的,JS方面因为我不是主做前端开发,面试一般都是些DOM对象的操作和AJAX,C#的主要是一些基础知识这里就不一一举例各种面试题目,自己多做做。最难得就是面试数据结构和算法了,这也是很多程序员薄弱的地方,一般问这方面的问题的面试官都很牛逼,问这种问题的公司一般开的待遇会高很多,个人觉得问了这方面的问题的公司对程序员的综合素质要求很高。数据结构和算法这个只能靠平时工作之余多看书,多学习了。程序员这条路,学无止境。

3.项目的描述,这个是每个面试官都会问的问题,面试官最愿意听的是你的项目亮点,用到了哪些技术来解决问题。最好的做法是把你的项目的大体的框架画出来给面试官看,这样才能直观的给面试官一种你确实是做过了这个项目。你要非常流畅的给面试官讲解,有的面试官会让你拿笔在白板上做讲解,这个可以在家里面多做几次模拟。我觉得我在这方面是强项,几个让我画图讲解项目的公司都给我发出了入职通知。

4.职业规划,这个一般是在总监级别的面试官会问到,我觉得程序员在工作到3到5年的时候都应该考虑这个问题,是走项目管理还是技术到底。这个就看自己的人生规划了,我个人觉得工作不到5年的同学还是老老实实,踏踏实实的做好技术,靠这个吃饭,什么都别多想,技术才是你生存的根本。

5.待遇的谈判,任何事情都是有回旋的余地的,所有的公司都想用最低廉的价格找最优秀的员工,不要主动说自己的期望待遇,谁先说谁就会被动,你可以尝试的问贵公司这个职位大概能开出的待遇是多少?一般的人力都会给你一个范围,然后你根据实际情况来做出决定,一般在这个基础+2K的范围,比如人力MM对你说这个职位在8K左右,你可以开10K的待遇,反正这一块是非常有技巧的,我觉得的待遇只要和你跳槽的时候期望的差不多其实就行了。

篇(10)

【1两个平行世界】产品经理为什么要懂技术?

你得明白,人跟人的差距,比人跟猪的差距还大。两种不同的职业,看问题的方式那真的是天差地别。

(1)程序员的世界

程序员的世界既简单又复杂,在他们的眼里,世界的元素基本是固定的:

If和Else构建了世界

For和While是成果的复制

True和False是世界仅有的两种状态

Exception(异常)表示程序的世界不和谐因素

Function(函数)让我们专注解决问题

Class(类)抽象世界为对象

程序员们的思维基本如上,他们往往冷静、机智、思维敏捷,但往往也带来副产品,如自负(多少有一点)、较真(程序员往往不怕加班,但是痛恨多次返工、白干)、好面子(不要轻易评价程序员们的工作)。

(2)产品经理的世界

产品经理的世界,不是一个纯粹理性的世界。这个世界不只有黑和白,在黑和白中间还有无数的灰色空间。

产品经理为什么要懂技术?

产品经理的主要工作就是寻找、抓住用户需求,然后通过一定的手段做出产品满足用户需求。而需求是难以用黑白、对错两种状态来表述的。我觉得,这就是程序员的世界和产品经理的世界最根本的差异了。

一句话概括:程序员相信世界是数学构建的,0和1能够创造一切;产品经理相信世界不是纯粹理性的,人不是纯粹理性的,黑与白之间广阔的灰度空间是难以用数字表述的。

【2平行世界的统一】产品经理为什么要懂技术?

世界不是唯一的,但多个世界也不是完全孤立的,两个平行世界在某个维度下也会有交集。

(1)让需求落地,可能更加困难

产品经理的工作内容之一,就是找到不同世界的交集,然后将两个世界最强的点融合起来,聚合后发挥出巨大的能量。

产品经理想到、搜集到某个需求是一件很难的事,但是在找到需求后,如何让需求落地,可能是一件更加困难的事。统一产品经理和程序员的世界,是其中一个非常重要的步骤。

(2)如何做到统一世界呢?

第一步,产品经理要懂程序员的世界,不懂怎么做到统一?最好你就从那个纯粹理性的世界来,你自己在程序的世界生存过,你会明白程序员们思考问题的逻辑,你会很容易做到换位思考(换位思考时常被提起,但只有你做过对方的工作,你才能真正做到换位思考)。

第二步,产品经理要明白世界不只是0和1,至少目前不是(天网没有灭绝人类之前)。世界永远有很多东西是无法被解释的,不要抓狂,容忍不完美,在缺陷中才能找到需求和秘密,那是我们创造、改进用户体验的源头。

第三步,产品经理要做好沟通,说服程序员们用他们的黑和白,来做出你想要的多彩世界。沟通,是连接两个世界的绳索。每一次愉快的沟通,都会在两个世界之间连接上一段绳索,当绳索数量达到一定程度后,两个世界也就不分你我了。多鼓励,少贬低,在需求实现过程中多关注程序员的工作。

【3必知必会的技术术语(干货)】产品经理为什么要懂技术?

产品经理通过沟通来联系程序员和产品经理的世界。有效沟通的前提是你们有共同话题,他说的术语你能懂,他说的方案你能够参与讨论,并且说出专业的见解,这容易让程序员们产生共鸣,感觉你和他是同一种生物。做好了有效沟通,那么以后的工作的推进难度,起码降低80%。

下面分享一下我在跟项目期间,总结的出现频次比较多的技术术语,懂了他们,你跟程序员沟通需求时、闲聊扯蛋时,就不会觉得自己在听相声了。

1主流操作系统:Windwos(xp、7、8、10),Linux(服务器比较多),UNIX(服务器比较多),OS X(苹果出的操作系统)。

2 MAC地址:计算机的物理地址、硬件地址,它是生产厂商烧录好的,一般不能改动。

3 IP地址:用来给Internet上的电脑一个编号,方便别人找到你,容易更改。

4 HTTP:超文本传输协议,浏览器通过它,将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。

5 FTP:成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上。

6接口:顾名思义,就是两个程序之间,通过一个通道传输一些信息。

7带宽和宽带:带宽指的是你的上网时由于设备限制所能达到的最高数据流量理论值,而宽带则是一种宽泛的概念,即带宽达到512k以上的所有上网环境。

8数据结构和算法:数据结构指数据在计算机中存储存在的方式,算法就是计算机处理解决问题的计算机能理解的方法。

9 TCP/IP:要使计算机连成的网络能够互通信息,需要有一组共同遵守的网络协议,不同的计算机之间必须使用相同的网络协议才能进行通信,在Internet中TCP/IP协议是使用最为广泛的通讯协议。

篇(11)

深入研究型

这一类人的共性就是酷爱钻研技术,通常能持之以恒地研究一门技术,以达到比较高的造诣。笔者几年前的一个同学,他那时侯就一直学习SAP的技术平台,到了工作单位,不计投入,一直潜心研究SAP的技术架构,近年来风起云涌的Java和.net等技术的火热也丝毫没有让他转移方向。现在他已经身为SAP上海公司的系统架构师。拿着一份让中产阶级都羡慕的稳定薪水,他选择了一个不错的出路。

通常这类人都很执着,能刻苦深入地钻研一项技术,直到找到一个很好的位置,最终让自己的执着产生相应的价值。

综合发展型

这一类人无论在什么行业都很不显眼,他们大都集中在中层的管理岗位。经过在底层的多年打拼,逐渐积累了丰富的技术经验和项目经验,并具备了一定的管理协调能力。这类人走的是与深入研究型不同的道路,他们从宽度着手,让自己全面、综合发展。只要有恒心,并抓住机会,这类人大部分都会得到公司的部门经理或项目经理等职位。

创业进取型

笔者的前任部门经理,是一个很不甘于现状的人。他曾在Oracle做过部门经理,按理说,大型外企的中层已经是一个令很多人羡慕的位置了。他可能看到自己在这样的外企里难有上升空间,于是,毅然决定创业,利用他对行业的深入了解、极广的人脉和良好的客户关系资源,创办了一家咨询公司。现在公司已经小有名气。

这类人的特点是不甘于现状,眼光很长远,很适合创业。他们善于在工作中研究市场,着重培养自己的人脉以及客户圈,而这些都是未来创业的重要条件。

转换行业型

有些IT人员在积累多年的技术项目的经验后,会告别高薪水、高压力的工作和生活,转而追求一种相对自由的状态,比如回归学校传授经验及技术。有人说,赚多少钱不重要,重要的是生活质量和幸福度是否足够高。笔者当初的很多老师,就是曾经在企业工作、有丰富经验的IT人员,他们在职场打拼多年之后,选择了回归校园教书传道、授业解惑。

还有的人会根据自己的项目经验和技术特点,转到传统行业做一名IT部门的主管,或公务员。换行业也是不错的选择,知识业务交叉的复合型人才,也是各个企业都欢迎的紧俏人才。