java程序员试用期个人工作总结范文一
领导您好,来咱们公司已经两个月,在紧张的工作与学习中,感觉时间过得很快。转眼到了试用期结束的时侯了。我在这两个月的工作中,从技术层面,到与项目组的融合度契合度,这两方面上讲都有了一定的提高。这与公司的各位领导,同人的支持与帮助分不开。在这里说一声:谢谢您!
在两个月工作中,初期熟悉公司技术,钻研项目业务,配合项目组完成阶段性的任务。
从主要职责具体上讲:
1.负责时代项目的模块编码工作,完成功能应符合设计的功能及性能要求,符合部门相关规范;
在时代项目组基本完成了公告管理模块,与部分特配单模块,正在进行主界面菜单的完善与更新;
在地质调查局项目组,完成了审批与全文搜索功能,与修洪海经理共同完成远程数据库同步更新功能,与贾俊奎经理完成了CMS站点远程实时更新功能;
所完成功能符合设计的功能与性能要求,符合规范;
2.负责对所分配模块的单元测试,同时应配合测试人员进行系统集成测试
所作模块完成时,先做测试,然后提交组内测试人员集成测试,遇到错误能够及时修改。
3.协助实施人员进行系统实施,并在项目经理的组织下进行问题的修改;
还没有实施任务;
4.负责编写相关模块的开发文档,文档应符合部门的开发文档规范;
能够根据模块编写开发文档,基本符合部门开发规范;
5.完成上级交办的其它工作。
能够及时完成上级交办的其他工作;
从工作要求上讲:
1.自觉遵守公司各项规章制度
认真完成工作,遵守员工守则;
2.努力学习、掌握并能熟练应用岗位相关业务知识,以饱满的工作热情、积极的工作态度投入到工作中,按要求完成岗位工作;
在工作中,做到努力学习不懂就问,及时与项目组同时之间的沟通,避免失误。工作热情高,不迟到不早退,能够按要求完成岗位工作;
3.高度的责任感和良好的团队合作精神;
在工作中敢于承担压力,有责任感。与同时之间关系融洽。共同合作完成本职工作。
4.对公司外部的工作要高度保持公司形象,对公司内部的工作要高度保持部门的良好形象;
能够做到维护公司形象,与部门形象,有主人翁意识;
5.按公司要求提交周报、完成各种公司流程。
可以按公司要求提交给上级部门周报,做事安公司流程规章制度;
6.按时提交项目阶段性成果。
基本能够及时按质按量完成项目阶段性成果;
以上是我试用期的工作总结,还有技术与能力还有很多地方需要改进,需要加强。以后会多多学习,多多提高。努力工作。为公司尽一份自己的力量!
java程序员试用期个人工作总结范文二
伴随着充实紧凑的工作生活,两个月的时间已经过去了。这一段时间里有工作上的收获,知识的丰富,经验的增长,同时也暴露出很多问题和不足。总结经验,吸取教训,本文将主要从几个方面来对工作进行总结:工作的主要内容;其中的失败和教训以及成功和经验;展望下一阶段的工作,确定自己的目标。以此作为惩前毖后的记录。
来到一个新的工作环境,最能发现自身的不足,这几个月,抱着虚心学习的态度,学习公司的开发流程,熟悉公司的企业文化,了解公司产品框架,主要技术,主动和同事沟通、学习经验,希望能更快的融入公司、融入开发团队,能够全心的投入工作。试用期期间完成的工作还十分有限,简单列了一些:掌握java开发语言和环境,由于在校学习时主要是以.net作为开发语言,所以在刚入职时通过一段时间学习并基本掌握了java开发技术。
熟悉公司开发流程,熟悉cbp产品框架。了解了核三框架的总体结构和开发流程,并能在核三的基础上进行项目开发。
参与了社保电子支付项目的开发。主要负责web端的模块开发,通过开发的过程,学习和掌握了flex界面开发,hibernate和oracle数据库
因为自己在经验上的不足,所以,在项目的开发过程中碰到开发进度慢的问题。综合起来看原因在于:
1、没有项目经验,没有经历过系统和完整的系统开发。
2、对于技术的学习和掌握还不够深入。
3、发现问题的能力不够,在自己以往的学习方式中,欠缺一种主动发现问题的能力。今后,我会多注意在这些方面的学习和积累。
这两个月的工作生活是充实且富有乐趣的,结识了很多同事和朋友,公司的氛围是非常轻松愉快的。感谢两个月来李鹏经理的关心,感谢部门同事的悉心指导,感谢公司各位同事的热心帮助,希望能在接下来的工作中能惩前毖后,总结经验,吸取教训,做到个人与公司共荣辱同进退,共同实现中地的辉煌。
java程序员试用期个人工作总结范文三
回首这一年的工作,有硕果累累的喜悦,有工作当中的艰辛,也有遇到困难和挫折时的惆怅。在项目可开发的过程中,难题一个接一个的出现,自信心不止一次的受到过打击,虽然自己早就知道,要做到符合公司的要求,做一名合格的程序员,这些是远远不够的。每天我都会不断勉励自己,好好学,以后会好的。在此同时,公司也给了我很多学习的机会,这是我对以后的编程之路又有了信心。在担任公司程序员一职已经有一年多的时间,在这一年时间里,我学到了很多东西。每个人都是在不断的总结中成长,不断的是审视中完善自己。在这一年里自己也是在总结、审视中脚踏实地完成好自己的本职工作,现将这一年的工作总结如下:
思想方面
严格按照一个程序员应有的素养来约束自己,爱岗敬业,具有强烈的责任岗和事业心,积极主动认真的学习专业知识,工作态度端正,听从公司的安排,积极配合客户完善数字化校园系统。
工作方面
热爱自己的本职工作,能够正确认真的对待每一项工作,工作投入,热心为大家服务,认真遵守劳动纪律,按时上下班,有效利用工作时间,坚守岗位,需要加班完成工作的要按时加班加点,保证工作能够按时完成。在这一年多的时间里面,我本着把工作做的更好这样一个目标,主动了解公司的开发项目流程,请教他们开发技术上的问题。
工作心得
1. 在这一年多的时间里面,我参与的都是团队合作的项目,无论是自己还是同事,我们都将就团队精神。在信任自己和他人的基础上,思想统一,行动一致,这样的团队一定会攻无不克战无不胜。我们的很多工作是一起完成的,在这个过程中,大家互相提醒和补充,大大提高了工作效率,所有的工作中沟通是最重要的,一定要把信息处理的及时,有效和清晰。
2. 每一个项目在开始着手的第一步,一定要和客户把需求沟通清除,只要了解项目的需求,才有可能真正做好一个项目。我们需要向客户提出,要求客户提供所有涉及该项目的资料,每次与客户见面都需要熟悉业务与程序的程序员随时记录需求。
3. 工作中,将任务详细化,详细到每个页面,甚至是一个页面中的图片什么时候做好,做好到什么程度,这样把工作进度有计划有方向的定下来,做事很有效率。
4. 每天的工作小结真的很重要,这让我们每天都有计划的知道自己干了什么,不是漫无目的的工作,所以我们应该养成,日记、周记、月记、年记的工作习惯。
5. 工作并不是一成不变的,也许有一天你要去其他岗位帮忙,所以同事之间的技术要相互学习,也许有一天,公司需要你发挥其他的技能帮忙,所以相互学习也是很重要的。
工作教训
在公司工作的期间,我也发现了自己离一个符合公司要求的程序员还有很多差距,主要体现在工作技能与工作经验的不够,也是我以后要在工作中不断磨练和提高自己的地方。仔细总结一下,自己在工作中主要有以下方面做的不够好:
1. 工作的条理性不够清晰,要分清主次和轻重缓急。
在开发时间很仓促的情况下,事情多了,就一定要有详细而主次分明的计划,哪 需要立即完成,哪些可以缓缓加班完成,在这方面还有很大的优化空间。
2. 对流程、业务需求不够熟悉。
在工作中,发现因为流程或业务需求的问题而不知道如何下手的情况有点多,包括错误与缺漏还有当时设计考虑不到位的地方,对于这块的控制力度显然不够,平时总是在开发,但说到底对业务很熟悉才是项目很好完成的前提。
3. 缺乏工作经验。
4. 学习的知识不够广泛。
一个项目中,涉及的技术往往有很多种,知识多了,就会灵活变通,以后我也会加强这方面的学习。
工作计划
1.
2.
3.
4.
5.
6. 要提高工作主动性,做事干脆果断,不拖泥带水。工作要注重实效、注重结果,一切工作围绕着目标完成。 要提高大局观,是否能让其他人的工作更顺畅作为衡量工作的标尺。 把握一切机会提高专业能力,加强平时知识总结工作。精细化工作方式的思考和实践。 虚心请教比我做的优秀的其他同事,向他们学习技术或经验。
其实作为一名员工,所有的地方都是需要学习的,多听、多看、多想、多做、多沟通,向每一个员工学习他们身上的优秀工作习惯,丰富的专业技能,配合着实际工作不断的进步,不论在什么环境下,我都相信这两点:
一是:三人行必有我师
软件心理学的发展史
软件心理学发展大致可分为两个阶段[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)等因素对认知活动存在较大影响。同样,在外界刺激条件下,人格特质是个体情绪动机差异的决定因素,且人格特质具有长期稳定的特点,可探索部分人格特质维度作为编程潜力的预测因子,如情绪稳定性。总之,编程能力倾向测试的未来研究应着眼于分析软件工程的任务活动特征,识别那些对编程活动有着因果关系且较为稳定的因素作为预测因子,才可能达到“潜力测试”的效果。
结束语
尽管自1987年召开首届程序开发心理学年会以来,软件心理学研究领域取得了上述的若干成果,但其总体上仍存在不足:1)目前软件心理学的研究对象主要是程序员,对软件工程中的其它角色如需求分析师、软件测试工程师、项目管理人员等研究较少。2)目前的研究主要考察个体的行为。而现代软件项目是大量人员合作完成的,个体之间的合作与交流日益重要。对编程中的合作与交流的研究是近年呈现的新热点[79]。3)软件心理学研究成果未能在软件工程中得到充分应用。如软件工程中缺乏对程序员使用的编程环境可用性的考虑,即使有少数系统考虑,也将其视为技术问题,而不是人-机系统问题。近年来软件工程学者开始意识到人的问题,开始采用编程活动模型来评价开发工具的可用性。但总体而言,软件心理学呈现与软件工程应用结合越来越紧密的趋势。将软件心理学与软件可靠性工程中各项技术相结合[80],对改进缺陷预防[22]、改善容错设计都具有重要应用价值。最后,笔者建议,进一步加强软件心理学和软件工程两大团体之间的交流,以软件工程需求为牵引,开展软件心理学基础研究,同时给出软件工程可实施的方法和技术,这将是推动软件心理学发展、实现其应用价值的根本思路。
这就是程序员的工作处境,新技术层出不穷,难度有高有低,但对于技术从业者来说,他们要比其他工种承担更大强度的自我学习以及工作压力。伴随年龄的增长,这无形中成了某种职业壁垒。“纯做技术的人做到30岁就干不动了,脑力和体力都跟不上”“某大公司的研发岗基本都通过校招解决,很少对社招开放”―你会听到不少这样的声音。
除此以外,技术分支太多对于程序员们来说也是一个考验―到底应该做“通才”还是专攻某一个领域?如果选择的方向不是市场的热点,那么这条路会不会越走越窄……此类的职业困扰也是很多程序员正在面对的。
相比前三次换工作的经历,王焕这一次明显感受到了年龄带来的影响。38岁的他曾经先后就职于知名外企和国内面向企业级市场的公司,“面试方觉得这个年纪应该已经是公司的技术骨干、相对稳定,不太会轻易出来再找工作。”王焕能感受到对方对自己的业务能力抱有的疑虑。“什么技术都懂一点,经验比较丰富,但又都钻研得不够深入”,面试方对他的这一评价王焕也表示认同。因为从做传统的单机版软件到后来面向企业服务,他所经历的几家公司在业务形式、客户群方面都不太相同,所以个人的技术能力很难得到持续、连贯的提升,“为了匹配互联网的要求自己也经历了几年很痛苦的转型期,才慢慢转过来”。另一方面,虽然求职目标是大的平台级公司但过去他并没有做过针对庞大用户群的项目,再加上稍显偏大的年龄因素以及与之相配的对薪酬的要求,在应聘时这些都不可避免地构成了减分项。
互联网招聘平台100offer针对数据库中有年龄信息的1.7万名程序员的研究显示,随着年龄增长,这些程序员接到的面试邀请数明显下降。这个趋势在他们40岁以后表现得最为明显―邀请数从“30岁至40岁”区间的平均6.6个锐减到2.7个。
客观地说,与年龄相伴而来的职业焦虑并非只有程序员这个群体才会有,很多工种都会有类似的情况。只是在这个互联网爆发的时代,技术的发展速度实在太快,处于一线的程序员感受会尤为明显。大神级别的、61岁的Java之父James Gosling都会遭遇年龄歧视也说明了这一点。
但依然有很多程序员表示乐观。小米网系统组原开发负责人、现在在做数据金融领域创业项目的韩祝鹏看到未来很多工种或将被技术取代的趋势,而程序员难以被取代,会有更好的发展前景。不管是他还是白山云科技的产品副总裁王康都认为,年龄增长能带来更广阔的视野,也有助于形成自己的方法论,对于解决技术问题帮助颇多,套用白强的话来说就是:“很多坑一定要自己亲自踩过才有感觉。”
虽然最终如愿拿到了BAT的offer,但王焕在面试过程中切实感受到了做“精”的必要性,未来他希望更聚焦于数据挖掘方向自我能力的提升,这与新工作也是相匹配的―走技术专家路线是应对的方法之一。
另外,相比只是单纯地接受公司的调配、安排或是职业规划,“现在的技术人员应该更主动积极去找到适合自己的方向或是兴趣点,这对于自身的职业生涯发展会更有利。”美世中国区合伙人曹燕萍告诉《第一财经周刊》。
通过采访在职或已经转职的程序员,《第一财经周刊》想跟你聊一聊程序员的职业困扰以及有什么好的应对办法,放大了看这些办法或许也适用于其他行业和岗位。
A
程序员正在面临哪些职业困扰?
对写代码这件事似乎兴趣有限,要坚持下去吗?
这是不少程序员在工作两三年后遇到的第一个问题。正在做互联网招聘领域创业项目的沈绍平在毕业入职华为时最开始就是做程序员,但他后来意识到自己对销售及市场的工作更感兴趣,就尽快转了方向。
一直走技术路线,还是转做管理或带团队?
做了七八年之后,随着资历的提升,程序员都会面对类似的转型诱惑。公司通常也会给予此类机会,因为后者往往意味着更高的职位、更大的薪酬提升空间,这也被看作保留技术人才的重要途径。不过也有程序员觉得自己不适合做管理,更愿意走技术专家路线。
什么都懂一点VS专长于某项技术,但它有点过时了
如果坚持在一线写代码且有10年以上的经验,可能会遇到一些业务上的问题,有的和王焕类似,有的则完全相反。比如李桢对C++兴趣浓厚,还出过相关的技术书籍,但因为C++已经属于比较老的语言,且不像其他语言那样可以快速入门,面临使用范围受限的问题,比如可选择的岗位局限于后台开发、操作引擎、游戏等领域,他的机会相对偏少。
在最开始转型到互联网公司时,王焕也因为“过时”的问题遭遇到很强烈的冲击。“和以前做软件不同,互联网的使用环境之下会要用到很多新技术,对代码的要求也完全不一样―比如需求高并发的情况下,怎么处理等。”境况逼着他从头学起,比如去开源网站上找解决方案,或是参加技术沙龙看人家遇到类似场景怎么处理等,这也是令他觉得最初转型的3至5年颇为辛苦的一个原因。
面对其他行业新人的竞争,我懂的似乎并不比他们多
技术岗位的高薪酬吸引了很多其他非计算机专业背景的人才。白强在面试时遇到过学金融的、学土木工程的,他感受到了越发激烈的竞争压力。而这也反映在了薪酬状况上。根据美世中国的数据,2016年高技术行业和互联网行业整体的薪酬增长率较2015年都有不同程度的下滑,考虑到研发工程师是这两个行业的核心岗位,可以推断其薪酬涨幅也承受压力。
想跳槽去大公司,但没有匹配的运作大项目的经验
程序员在职业生涯早期,如果跳槽时偏重薪酬的涨幅而忽视岗位内容,这些弊端在35岁之后容易暴露出来。例如,只有垂直领域或是小公司的经历,等到想去应聘大的平台型公司时才发现完全没有拿得出手的面向大规模用户人群的实战经验,这一点往往会构成一个致命的短板。
公司对技术岗位要求更长的工作时间,我匹配不了
“加班太多了”,是白强离职某大型互联网公司的原因。公司有很现实的考虑,因为技术行业的运转速度之快某种程度上直接决定了程序员的工作时间相对会更长,而年龄大的程序员因为有家庭等的考量可能难以接受持续性的高强度工作负荷,“996的工作我肯定不考虑。”李桢说。身体上的负荷也会让程序员感到力不从心,李桢最近时常会有这样的感受,经历了一整天的脑力运动,加完班回到家连话都不想说了。
投入看不到产出
韩祝鹏的观察是,很多时候程序员不能左右产品的方向―那往往是产品经理或是老板决定的,所以某种程度上他们难以看到自己的技术直接产生回报,会削弱从工作中获得的成就感。
心态也是个颇为关键的因素
相比年轻的程序员,你的心态够不够开放、对问题的钻研程度如何,都会体现在解决技术问题时有没有更创新的思路―而这些并不与年龄成正比。
职业心态也会发生改变。遇到瓶颈时,“是继续在竞争激烈的行业干下去,还是找一个轻松的活?”白强给自己设定了“45岁”的退休目标,他认为做技术做到这个年龄就差不多了,之后可以考虑做其他的事情。
B
公司对大龄程序员有怎样的期望?
王康自己也是80后,他接触过的一些应聘者年纪会比他稍长。他发现有的应聘者只知道埋头做开发,并不了解自己的产品―对于受众、产品价值一无所知;或者知识局限于某一个行业,对于其他领域表现得一无所知、缺乏好奇心,这两类求职者他都会果断放弃。
从雇主的角度来说,王康会有针对性地去考察候选者3个方面的能力。
首先,包括项目管理在内的基础知识是否扎实、是否有变通的技巧―保证公司有新项目时对方能很快胜任;第二,对整体架构的设计能力如何;第三,能不能带团队。对于年龄偏大的程序员,公司会要求他们的开发能力是相对系统和全面的。
白强在求职过程中也发现,对方通常都是以一个技术leader的标准来衡量自己是否达标。
但这并不代表程序员都要往管理路线走。在王康看来,学项目管理是为了全面提升个人解决问题的技巧,“因为很多问题不是一个人能解决的,而是要依靠一个团队的能力。”
任何公司都期待员工能有合理的投入产出比。同样是写代码,如果你能写得更快且更简洁、优美,那也能成为你区别于新手程序员的核心竞争力。
C
给予程序员的职场建议
选择好自己专攻的方向
如果把技术比喻成一棵枝繁叶茂的大树,那么在一定年龄之后,找到自己擅长且有发展前景的方向就好比寻找这棵大树上的某一个分支。
不妨借鉴一下过来人的经验。王康分享了自己选择云分发(CDN)的原因,他当时有3份offer在手,其中CDN的待遇是最低的,但他观察后发现,首先在当时,国内相关领域尚处于起步期,蕴含着巨大机会;其次,这是一个随着客户规模的发展就能驱动自我发展的行业,“只要用我的产品的这10个公司的规模在增长,哪怕我不拓展其他客户,都能受这10个公司的带动而不断发展。”他形容这是个“无比美妙”的行业,所以哪怕是小公司他也愿意一头扎进去。
韩祝鹏同样做过类似的职业选择。从最开始做桌面端程序到转向服务器后端的开发,再到聚焦于数据领域,他看到很多问题本质是数据的问题,选择数据这个方向有长期稳定的价值。“这几年前端开发很火,但对于年龄大的程序员却并不是一个理想的方向,因为从长远看,价值不在这个方面。”
所以对于程序员来说,尽可能在职业发展早期就确定下发展方向,可以避免时间上的浪费。
以开放的心态,尽可能拓展自己的视野
这反映的是对行业内外知识的自我学习能力。王康曾遇到过大规模分发的问题,一位同事所选择的一个新的开源项目令他印象深刻。“因为他一直在关注海外解决类似问题的动态,看看有什么新鲜产品,关键时候冷门的东西就派上用场了。”在王康看来,更广阔的视野带来的是更多的解决问题的手法,这是年龄增长带来的一个加分项。
“技术的工作并不是今天做好了明天就能继续做好,它要求你不断进步。”王康认为对于一些人来说这意味着挑战,对另外一些人这正是这份工作有魅力之处。两者的区别,在于从业者本身对行业是否有足够的热情。如果觉得热情并不足以支撑自己去探索这个行业未知的新奇点,转行也不失为一种选择。
形成、输出自己的方法论
学会归纳、总结某一类型问题的解决手法是大龄程序员提升竞争力最为关键的办法。表面上看,他们需要不断地去适配新技术,但王康觉得只要明白进化的原理,学起来并不会那么辛苦。
发展长项的同时,尽力弥补自己的短板
关键词:对日软件外包;职业素质;CSDP
中图分类号: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
(1. Institute of Computer Science, Chongqing Three Gorges University, Wanzhou 404000, China; 2. Institute of Computer Science, Chengdu University of Technology, Leshan 614000, China)
Abstract: Chongqing will be great efforts to support the development of software outsourcing industry, and has introduced a large number of supportive policies, but the city's software outsourcing professionals have a wide gap with coastal areas related to professional quality. The lack of language ability of employees are also seriously constrained the development of the industry. Response to the aforementioned questions, this article examined software outsourcing company’s requirements for the quality of manpower, summarizes our institute’s two years training experience of software outsourcing towards Japan, combined with actual situation of Chongqing, proposed training program design ideas.
程序员试用期工作总结及转正申请范文一
光阴如梭,半年的工作转瞬即将成为历史,伴随着新年钟声的临近,我们依依惜别硕果累累的20XX年,满怀热情的迎来即将到来的20XX年。在这年终之际,现对来公司5个月的时间里所作的工作汇报如下:
1、正义erp项目的编码工作。从了解新疆正义项目的背景、及计划安排,熟悉正义公司制度及业务流程,再到熟悉新能开发模式,之后我根据需求调研报告,从基本的数据库创建,到编码,完成了销售部、生产部、采购部、质检部四个模块的基本单据的制单、审核、选单、查询、打印等系列的编码工作;完成了正义项目的模块测试及流程测试。
通过这段时间的努力,使我个人的耐心、细心程度及对工作的合理安排得到了锻炼,学会了在繁忙之中找条理,危难之中找希望。同时自己也有一些不足之处,一些细节地方技术上还不太成熟,还需加以学习与钻研。
2、、正义erp项目的实施工作。从十一月初开始进行正义项目的实施,每天早起赶在企业上班前赶到企业进行erp的实施。实施期间主要是软件的安装实施及对企业的erp系统的使用人员进行软件使用培训;纪录客户使用过程中出现的问题,晚上下班后加班加点将每天的小错误及客户变更修改完毕。
通过这项工作,使我原本欠缺的业务能力得到了很大的提高,并学到了很多与客户交流的技巧及业务上的知识,更加明晰了erp系统的流程。但离一个成功程序开发人员的标准还差得很远,在今后工作中,定会多多注意,加以改善。
3、帮助和使用手册文档的编写。帮助的编写使我熟悉了dreameweaver和fireworks的使用,为后期的oa开发也奠定一定的基础,使用说明的编写,使我更加加深了项目开发的整体思路与技术要点,总结了前期开发和实施中碰到的问题,并又一次的对软件整体进行了测试,对暴露出的小bug进行了最后的修改。
4、利用工作之余的休息时间加强学习。平时注意收集有关pb方面的资料文件,提高自己的处理新问题和解决新问题的能力,并加强学习java及oa方面的知识(现转为学习.net),为后期的工作打好基础。
以上为本人粗略的个人工作小结,请领导审阅,如工作上有不到之处,请领导不吝指出,以便本人及时改正,从而能更好地工作。
展望临近的20XX年,我会更加努力、工作上认真负责,再接再厉,更上一层楼。相信自己会完成新的任务,能迎接新的挑战。
程序员试用期工作总结及转正申请范文二
来公司担任程序员一职已一年多时间,在这一年时间里,我学到了很多东西。每个人都是在不断的总结中成长,在不断的审视中完善自己。在这半年里自己也是在总结、审视中脚踏实地地完成好本职工作,现将这半年的工作总结如下:
一、 思想方面:
严格按照一个程序员应有的素养要约束自已,爱岗敬业,具有强烈的责任感和事业心,积极主动认真的学习专业知识,工作态度端正,认真负责,听从公司的安排,积极配合全友家私完善 ERP 系统,任劳任怨。
二、 工作方面:
热爱自己的本职工作,能够正确认真的对待每一项工作,工作投入,热心为大家服务,认真遵守劳动纪律,按时上下班,有效利用工作时间,坚守岗位,需要加班完成工作按时加班加点,保证工作能按时完成。在这半年里,我本着把工作做的更好这样一个目标,开拓创新意识,积极圆满的完成了以下本职工作:
配合全友家私开发并完善 SRM 系统
独自开发全友家私 SAP 日志维护系统
三、 存在不足:
一公司领导以及部门领导同事的帮助和指教,使我的工作有了很大提高,当然我还存在着很多不足之处,处理问题思路简单,不够成熟,工作中容易产生急躁情绪,需要更深入学习专业知识,提高自己的工作水平。
程序员试用期工作总结及转正申请范文三
伴随着充实紧凑的工作生活,两个月的时间已经过去了。这一段时间里有工作上的收获,知识的丰富,经验的增长,同时也暴露出很多问题和不足。总结经验,吸取教训,本文将主要从几个方面来对工作进行总结:工作的主要内容;其中的失败和教训以及成功和经验;展望下一阶段的工作,确定自己的目标。以此作为惩前毖后的记录。
1. 工作的主要内容
在这两个月的工作中,我的总体任务是协助苏薇做好武警黄金部队矿业权管理系统的后期测试,编码,修改,文档编写的工作,分解开来之后,我主要做了三件事:1.编写矿业权系统的各类文档;2.矿业权系统的编码及bug勘误工作;3.矿业权系统的测试工作。下面依照时间来对我的工作进行介绍。
初踏入职场,进入专业的软件制造公司,对我,一个没有接触过标准软件制作过程的新人来说,起步就是一个很大的难题。若直接做开发,则业务不熟练,代码不规范,弊大于利;若仅做学习,则不能跟上项目的步伐,不能以最快的速度融入工作中去。
在我还在忐忑自己到底要做什么工作的时候,任务已经下达了,首先进行矿业权系统的测试工作。这样的好处在于能够在测试的过程中,了解项目的整体布局,了解项目中的业务逻辑,了解项目中尚未完成的工作并以此作为下个阶段的工作目标。至此,入职工作顺利起步。
在对矿业权系统进行测试之后,暴露了系统的诸多问题,测试过程中发现矿权系统没有进行输入限定,为了解决这个问题需要对整个系统的数据进行整理,我的下一个任务就是编写矿业权系统的数据需求文档。在编写该文档的过程中,对矿权系统进行了更深入的了解,为之后的bug勘误工作奠定了一定的基础。
完成了矿业权系统的数据需求文档的编写之后,新的任务是对整个矿权的输入数据进行输入限定,在任务开始之处是极为困难的,幸而得到了同事们的帮助才得以顺利完成任务。任务虽然完成,但是对输入限定实现方法的一知半解以及任务完成过程中的不仔细,为之后发生的问题也埋下了苦果。
在对矿业权系统添加输入限定完成之后,进入了解决程序小问题的阶段,对矿权系统进行细微的缝补工作。这段时间是学习多于工作的,不同的问题督促我要每天和百度亲密接触数百次,又要劳烦诸位在百忙中的同事抽出时间来给我帮忙。虽然辛苦一点,但收获却是满满。
完成了系统的修补之后,我们的程序送到了四惠进行第一轮测试,在测试的一周里,我主要是补充网络编程的基础知识。
第一轮测试结果出来之后,我们项目组开始了紧张的第一轮矿业权系统bug勘误工作。拿到bug列表之后,发现有一小半错误皆是因我而起,输入限定问题很多,我也主动承担了输入限定部分的bug勘误工作。
第一轮bug勘误工作完成后,进行了第一轮了回归测试,测试结果已然不尽人意,仍然存在大量的问题需要修改,而且很多问题还是因我而起,输入限定仍然存在大量问题,再一次进行修改之后,我们的程序送到了十五所进行所检。
在进行所检之余,我又接到了新的任务,完成矿权系统的概要设计以及详细设计文档的编写。这两份文档已于9月2号编写完毕。
现阶段我的任务是根据所检的bug列表,对矿权系统进行回归测试。
2. 工作中失败的教训以及成功的经验
对于失败的教训要吸取,成功的经验要进行总结。我对成功的定义是:在保证质量的前提下完成既定的计划或目标就是成功。其他的所有结果都是失败。
成功的经验:
1) 敢于接受任务并想尽一切办法完成
入职两个月最大的收获就是敢于接受任务并想尽办法完成,每一个任务对于初入职场的我都是一个挑战,如何保质保量完成任务是最基本的要求。这两月最大的成功在于没有一次任务是拖沓的,每次都尽最大努力完成了任务。
2) 勇于承担错误,正视自身的问题
在这两个月的工作中可谓是错误不断,从文档的错别字这种小问题到矿权系统bug修改不正确导致崩溃这种大错误,暴露出来了很多的问题,我秉承着有错即改,下不为例的思想,正视自己的错误并积极改正,因此这也算是一个成功。
失败的教训:
1) 重视每一个细节,不要忽视小问题
在最初进行矿业权系统数据需求文档的编写的过程中,对某些页面的数据在数据库中没有存储的情况没有加以重视,在后期进行数据限定的时候,还要重新修改数据需求文档,造成了不必要的时间浪费。从这个事情上得到教训就是不要放过任何一个小问题,这个小问题可能导致之后的大问题。
2) 进行重复工作也不能大意
在对矿权系统进行输入限定的方法熟悉之后,都是重复性的工作,给每个页面,每个字段进行输入控制语句的添加,在进行了数个页面之后,出现了有的页面没有添加完整,或者提示语句不正确的情况,在后续的bug勘误中出现了大量此类问题,浪费了大量的时间和精力修改。从这个事情上得到的教训就是工作不能大意,重复性的工作更要完成好。一般重复性的工作第一次做不好,后续检查修改是非常浪费时间的。
3) 考虑问题要严谨
在对矿权系统bug勘误的过程中,对输入限定条件的判断出了问题,我想当然的按照我的主观思路对数据进行了限定,而在回归测试的时候出了问题,这些都是考虑不严谨的后果。这个事情的教训就是考虑不严谨直接导致问题推倒重来,影响了工作效率,而且很容易埋下隐患。
4) 注重用户体验
在矿权系统bug勘误的过程中,修改最多的在于坐标系统的提示语句,因为坐标系统不仅要求数据必须填入,而且每一个数据都有严格的格式限定,因此每一个错误提示的弹出都要本着如何让用户知道哪里错了为原则进行设置。在最初的限定里面,语句粗糙,弹出语句不明确,造成了用户使用的不方便,还得重新进行改造。这个问题的教训是一定要从用户的角度出发考虑问题,注重用户体验从简单的提示语句做起。
3. 展望下一阶段的工作
下一阶段短期内我们的工作主要针对矿权系统的使用的数据库变更来对我们的系统进行修改。我的工作任务主要是学习oracle数据库和sql数据库的使用上的区别,做好从sql数据库向oracel数据库的迁移工作。
一、软件开发项目的人员组织形式及存在问题
(一)软件开发项目的人员组织形式由于软件开发人员个人素质与能力各不相同,因此,要对软件开发人员进行合理分工,充分发挥每个人的特长。同时,软件开发的组织结构应与软件项目开发模式、软件产品结构相对应,使软件开发方法、工具与人相统一,降低软件开发过程中,管理与质量控制的复杂性。可以按照树形结构对软件开发人员进行组织。树的根是软件项目经理和项目总技术负责人,可由一个人或一个小组担任。树的结点是程序员小组。为了便于项目管理,树的结点每层不超过7个,并在此基础上尽量降低树的层数。程序员小组可以按主程序员进行组织,由主程序员负责小组全部技术活动的规划、协调和审查。小组其他成员,如后备工程师,是主程序员的助手,必要时可以代替主程序员领导小组工作,以保持工作的连续性。程序员小组之间和小组内的程序员之间的任务界面必须清楚,并尽量简化。如微软公司的编程人员共分为5个等级,最高等级只有5人,WindowsNT,Windows2000操作系统的核心开发队伍只有10人左右。内核程序由核心人物亲自编写,而提供软件开发工具的队伍则多达2000人,编写各种程序模块的编程人员也有1000多人。
(二)存在问题1.人员流动性过大,人才结构不合理调查显示,软件管理人员平均年龄为33.3岁,普通软件员工的平均年龄为28.4岁,65%以上的受调查人员具备大学本科以上学历。由此可见,软件项目从业人员以高学历的年轻人为主。这就意味着,一方面,这些人有更强的学习创新能力,另一方面,也可能存在个人约束力差、眼高手低等不稳定因素,一些自认出色的从业人员对公司稍有不满就会离公司而去,造成项目人员流动频繁。再加上高级研发人员缺乏,一般编程人员过剩,更不利于员工培养和人力资源维护。2.绩效评估不合理许多软件项目缺少完整、系统的绩效管理机制,比如,对个人绩效评估的实践、考核结果大多只为评价员工工作态度提供参考,最终绩效考核变成员工出勤记录。软件项目缺乏绩效考核,不能充分反映出项目成员的付出,有一些项目虽然对项目的投入和项目进度进行绩效评估,但没有和激励机制结合在一起,这时,有无绩效评估结果一样,同样不利于团队建设和人员稳固性的增强。3.培训不足由于培训方式落后和培训管理手段不成熟等原因,软件项目一般对成员培训较少。项目成员认为在项目组中没有机会学到更多东西,无法提高自己的能力,导致软件项目人员流动频繁。而由于人员流动频繁,项目更不愿意为员工培训投入时间和金钱,当需要人时就直接聘用,由此形成恶性循环。
二、软件开发项目人力资源管理的有效策略
(一)招聘策略招聘是控制人力资源质量的第一步,也是人力资源建设和开发的重要步骤,是吸引优秀、适合人才的重要途径,作好招聘工作是保证人员质量的重要环节。项目组配合公司人力资源管理部门,积极参与筛选简历和面试评审环节的工作,根据项目需求挑选简历和设计面试考核问题。与往常面试题目相比较,根据项目需求的不同,在招聘面试过程中,适当增加对某方面能力的考核。不能达到能力要求的面试者,不予以录用。
(二)培训策略1.新员工培训新员工培训的具体内容包括:公司测试标准与规范,公司质量手册、程序文件,公司测试业务、人员、公司整体、各部门介绍,公司各项规章制度,公司办公与测试环境配置,测试基本理论、测试流程与测试案例(测试方案、测试计划、测试报告、缺陷报告等),工作流程、工作表格、测试文档的标准模板等。所有参与培训的人员要在培训后的入职考试中取得优异成绩,考试合格率要达到100%。2.内部技术培训由于各部门承担的测试项目类型不同,对员工技能要求也不同,因此,毎年各部门、各项目组也会根据自身需求,组织与测试项目相关的内部技术培训。
(三)激励策略在绩效考核基础上,项目组分析、评估现有人力资源能力、状态,提出人员结构调整建议,制订并完善人力资源管理制度、流程、规范,并组织实施与监督。作为激励员工的一种方式,项目组高度重视员工的职业生涯规划,一方面,使员工不必担心项目结束后丢掉工作,另一方面,职业生涯规划能充分调动员工的积极性和主动性,并有效实现员工个人发展和企业发展的高度结合,对员工的职业发展有很大意义。要让员工懂得职业生涯规划对他们意义,只有员工明白了其重要性,就会积极主动地认真执行职业生涯规划。除此之外,还要定期召开会议,对项目组进行阶段性总结,组织策划一些有利于团队建设的娱乐活动,丰富员工生活,增强彼此间的信任,从而构建和谐向上的集体。
关键词:高级语言;职业素质;教学设计
中图分类号: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
(Dept. of Computer Binzhou Vocational College,Shandong 256624 China)
Abstract:How to train professional quality in daily teaching, and make the graduates enough to be a programmer, it’s an important subject to all of computer teachers in vocational college。According by the experiments of teaching and software development, analysizes the professional quality of a programmer, discusses the teaching course, and gives an example of teaching design.
关键词:课程改革;学习情境;任务驱动;项目导向
文章编号: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。
通过对现有系统的改造,学生的知识和认识水平不断提高,阅读程序的能力得到训练,这也能帮助学生体会到各种技术和框架的应用特点。学生给出了很好的评价:“这是一个比较新颖的实验方式。以往的实训是自己或者以小组的方式开发一个小型项目,但这次是给了项目要求以另外一种方式改造该项目,这给了我们一种全新的思维方式。以前开发总有很强的依赖性,就是没开始做的时候总想着到网上去淘一个类似的系统,稍加修饰,便可以上交。改造项目就缩小了搜索范围,所以我必须先要完全读懂原项目的代码,然后再深层次理解Struts的特点,最后才能动手”。
4 结语
注:本文为网友上传,不代表本站观点,与本站立场无关。