前言:中文期刊网精心挑选了程序员培训总结范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
程序员培训总结范文1
软件心理学的发展史
软件心理学发展大致可分为两个阶段[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)等因素对认知活动存在较大影响。同样,在外界刺激条件下,人格特质是个体情绪动机差异的决定因素,且人格特质具有长期稳定的特点,可探索部分人格特质维度作为编程潜力的预测因子,如情绪稳定性。总之,编程能力倾向测试的未来研究应着眼于分析软件工程的任务活动特征,识别那些对编程活动有着因果关系且较为稳定的因素作为预测因子,才可能达到“潜力测试”的效果。
结束语
程序员培训总结范文2
技术
我在学校里学的是电气自动化,程序基础仅限于c基础课程的一些知识,后来由vb、html转向asp,在asp上花费了不少时间,对asp比较熟悉,后来由于公司业务需要,将开发平台转向,开始对不是很感冒,以为就是asp的一点扩展(那时还不知道三层架构,数据数据访问全在页面里——!),后来招来几个北大青鸟的过来终于意识到的强大之处,经过个人的努力已经逐步掌握了,现在层次上只能讲个人觉得是入门而已,原因是多方面的,待会儿会讲到。
相信从面向过程转向面向对象的同学都有一种感觉:面向对象开始真的有点别扭,涉及到属性,尤其是类之间的各种关系,那时老想用面向过程传递参数多方面啊。于是老在想对象这种东西,从概念中跳中来,以自己的方式去理解才逐渐体会到页面对象的精华来,分层次展现、分级别访问、封装对象之间各种关系逐渐真正理解了,尤其是对象之间的关系,如对象a与对象b两者之间的关系,有些需要完全公开,有些需要隐藏,有些需要通过第三方传递,有些需要给自己的下级可见,有些需要让下级去完成具体操作——这不是现实的实际模型吗?应该这么理解,面向对象来源于现实,它不是一种凭空空想出来的理论,这些对象之间的关系可以将其还原为父子、夫妻、领导下属、同事、朋友之间的关系。相比之下,页面过程往往像是一股脑全部推给用户使用,其中的数据与数据访问方法层次不清晰,在模拟现实上它与面向对象相比更易于入门理解,实质上难于准确直接地表述。
面向对象上另一方面是它的设计模式,在之前的面向过程中对这个设计模式并没有清晰地提出来,面向过程优秀的代码要求高内聚低耦合,从个人的理解上,这仅是对软件开发方法“技”上理论总结;设计模式是达到了“道”的层次,因为它从更大的方向、更抽象的层次来去表述具体的代码模块之间的关系,可以认为设计模式是完全从实际的应用来不断总结得来的经验,之间并没有这种术语,但相信前人肯定也使用到这种思想,它从实际应用于来,当然要应用于实际工作中,认真思考不断总结每个人都会有自己的“设计模式”,可以借鉴前人的思想来去提升自己,不可去为“设计模式”而设计模式。
具体到的实现模型中,真正理解它的机制与方法也就不难理解,记住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人最没有正确的自我定位的一个称谓,试想一个人连自己都看不起自己的职业,他能做好自己的工作吗?),最主要是解决问题。
程序员培训总结范文3
总结主要写一下重点的工作内容,取得的成绩,以及不足得出结论,下面就让小编带你去看看程序员季度个人总结报告范文3篇,希望能帮助到大家!
程序员季度总结报告1
我是一名程序员,在过去的一年里,软件研发部团结协作,以及在公司这充满奋斗的环境下,我以严肃认真的工作态度和百折不饶的精神,努力的完成了公司的各项工作,在软件研发、团队协作和个人成长上也取得了一定的成绩。在公司一年的工作已经结束,特向公司总结汇报如下:
一、软件研发
根据公司的安排,项目的需要。在自身的努力、伍经理的帮组,团队的合作下,克服重重技术困难,增长了工作经验,收获丰盈:
1、asp开发
以前我在其他公司也做过一些开发,但是底层和架构与页面样式我都是没有涉及到的。通过这一年在本公司的的这些项目程序中的锻炼,我成长了,我学会了很多很多。
首先,面向对象语言的收获。对于当前编程的主流思想是对象,任何事物都可以用对象来表示。以前理解这些话很费解都是从表面上理解,没有从中的体会,通过这次asp项目的开发,不管是数据还是外部一些条件我们都可以抽象成对象,都可以用对象来表示,具体可以用语言中的类方等。asp如此,c#如此java也同样如此。
其次,具备独立完成vb知识方面的能力。以前没有做过vb的东西,加上这次asp的做,这次涉及到的领域也非常广,常用的重要的都有涉及,并且还补充__ml,java实际操作中空白的部分。通过这一年的开发,我能胜任这方面的工作,能独立完成这方面的工作。
再次,c#方面存在一些不足。LocALhOST通过c#这次软件的开发,也发现自己的不足,如基础知识掌握不牢,缺乏编程整体思想。这些都是需要在工作中完善和改进的。
2、数据库开发
数据库是伴随着项目以来用的最多最平凡的技术。以前对数据库只是会一些简单常用的操作,经过这一年项目的实战,对数据库的操作增加了一些丰富的经验。为以后的工作和经验的积累都奠定了坚实的基础。同时在项目中还用到了oracel与access数据库,这是我的收获。
优点:
能熟练的运用数据库技术进行开发。特别是对sql数据库的操作,经过这么长时间的积累,基本上能合理的设计和新建数据库,同时在数据结构上也加强了对数据库的理解。通过项目的实践现在能熟练使用和编写多种sql语句。还掌握了一些关于数据库优化sql语句优化的方法,能进行一些简单的优化。
缺点:
数据是一门比较先进的技术,并不是你会写一些sql语句,能建几个数据库你就是数据库工程师。要成为一个好的数据库管理员是要经过长时间的工作积累。针对自己的不足,在以后的工作和学习中多接触,多运用新的知识点。充实自己的经验和知识储备。
二、团队协作
上面的成功与收获,除了自身努力外,以及公司的支持。是这个团队铸造了我。我们这个团队也是因为有了我们这些拼搏协作的队员,使得它成为一个具有务实、拼搏、创新精神的团队。我与软件研发小组是一个整体,这里的团队总结也就是我在这个团队中的收获。
务实:公司下发的任务,下发的工作,件件都是用心去做的。我们这个团队中没有一个人在工作的时候做了工作以外的事情,都是实实在在的做跟工作相关对公司有益的事情。相信在伍经理的带领下现在是这样,以后同样也是这样。
拼搏:公司给的每一个任务不管它多难,如果工作没有完成我们会晚上加班,也要尽可能的完成当天的工作。如果工作实在忙,为了赶进度我们放弃周末休息时间也要尽可能的使项目提前。
创新:现在我们开始项目的时候都会进行研讨,一般都会进行一个效率和逻辑的分析与讨论,保证程序正确的前提尽可能的提高程序的效率。
互助:我们小组内只要任何一个人出现技术或其它的问题,我们都会彼此都会尽可能的去帮助他。不会因为某一个人而拖住整个项目滞后。
交流:我们在项目中会及时沟通自己的收获,特别是一些针对性的技术问题。这样可以省了很多重复研究的时间,这是一笔很可观的时间。
在交流中只要我会的,我懂的,我不会去吝啬。我会积极的去与你交流,我的团队名言“人强团则强,人弱团则削”。
三、个人成长
通过公司这快一年的锻炼与学习我真的进步了很多,不管从技术上还是做事上,都不像以前那样了。我在公司学到的懂得的使我飞速成长。
技术上:不管从语言上还是做事的逻辑上都得到了很大的的提高。现在在软件小组里面自己能独立完成一部分工作,承担自己的责任。
程序员季度总结报告2
光阴如梭,一年的工作转瞬即将成为历史,伴随着新年钟声的临近,我们依依惜别硕果累累的过去,满怀热情的迎来即将到来的新的一年。在这年终之际,现对来公司一年的时间里所作的工作总结如下:
一、____项目的编码工作
从了解____项目的背景、及计划安排,熟悉____公司制度及业务流程,再到熟悉新能开发模式,之后我根据需求调研报告,从基本的数据库创建,到编码,完成了销售部、生产部、采购部、质检部四个模块的基本单据的制单、审核、选单、查询、打印等系列的编码工作;完成了____项目的模块测试及流程测试。
通过这段时间的努力,使我个人的耐心、细心程度及对工作的合理安排得到了锻炼,学会了在繁忙之中找条理,危难之中找希望。同时自己也有一些不足之处,一些细节地方技术上还不太成熟,还需加以学习与钻研。
二、erp项目的实施工作
从__月初开始进行____项目的实施,每天早起赶在企业上班前赶到企业进行erp的实施。实施期间主要是软件的安装实施及对企业的erp系统的使用人员进行软件使用培训;纪录客户使用过程中出现的问题,晚上下班后加班加点将每天的小错误及客户变更修改完毕。通过这项工作,使我原本欠缺的业务能力得到了很大的提高,并学到了很多与客户交流的技巧及业务上的知识,更加明晰了erp系统的流程。但离一个成功程序开发人员的标准还差得很远,在今后工作中,定会多多注意,加以改善。
三、帮助和使用手册文档的编写
帮助的编写使我熟悉了____的使用,为后期的oa开发也奠定一定的基础,使用说明的编写,使我更加加深了项目开发的整体思路与技术要点,总结了前期开发和实施中碰到的问题,并又一次的对软件整体进行了测试,对暴露出的小bug进行了最后的修改。
四、利用工作之余的休息时间加强学习
注意收集有关____方面的资料文件,提高自己的处理新问题和解决新问题的能力,并加强学习java及oa方面的知识,为后期的工作打好基础。
展望临近的新一年,我会更加努力、工作上认真负责,再接再厉,更上一层楼。相信自己会完成新的任务,能迎接新的'挑战。
程序员季度总结报告3
在过去的一年中,我担任公司开发部的一名程序员,主要从事着____项目的开发工作,这一年来我低调努力工作着,不求闪亮显眼和光芒四射,只为平静和淡定;这一年中所做的成绩如下:
一、独立开发方面
____项目中本人独立负责开发会计处的三个子系统:会计人员信用查询系统。记账机构信用查询系统。会计人员网上报备系统。这三个子系统上线后,方便了社会各界查验会计人员的真实信息、方便了查询合法的记账机构信息,以及方便了各单位对会计人员的报备。
二、团队开发方面
餐饮行业项目,在团队开发项目中直接参与了____餐饮有限公司总部的信息综合管理平台项目,主要负责的系统有:房屋租赁合同管理系统。短信收发管理系统。会员管理系统。基础信息管理系统和人事管理系统的部分功能模块。系统应用后,____在管理全国各门店房屋租赁合同上,一定程度上提高了管理效率,并且及时有效提供了相应预警信息;短信收发系统方便了总部及时传递各项信息;会员系统更好的管理全国各门店的会员信息;人事系统在管理中减少工作量等。
三、项目管理方面
金融行业项目,我参与了____银行____分行,企业转账管理系统中的部分模块开发。本系统方便了企业快速实现大量和复杂的转账工作。____项目正在负责和开发的是住房货币化补贴网上申报审核系统。本项目采用了新技术,使界面更加大方美观,很大程度上改善人机交互平台的效果。
四、总结不足
程序员培训总结范文4
关键词:软件开发;编程规范
中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)26-6409-02
Studying on Code for Programming Standardization
HE Cheng-ju1, GUO Wei2
(1.Nanning Municipal Public Security Bureau, Nanning 530022 China;2.Nanning City Personnel Testing Management Office, Nanning 530022, China)
Abstract: There are something to focus on when using c# language programming, according to author's many years experience on software developing, this paper mentions several points need to concentrate on when programming and gives a way to resolve the problems base on practical examples.
Key words: software developing; programme criterion
随着软件行业的日益发展,C#作为软件开发语言中的后起之秀,在软件开发领域中的地位日益提高。目前,已成为面向对象开发中仅次于JAVA和C++的开发语言。本文探讨了运用C#语言开发软件中需要注意的编程事项,包括变量命名规则、方法格式、语句长度等方面需要注意的细节。
1 我们对软件开发有一定的认识
经历过大大小小的成功,也经历过不少的失败。对于软件编程,只有在有一定的编程水平和经验积累的情况下,才能写出质量较高的代码。一部完善的软件规范可以对程序员的工作起到事半功倍的作用,因此,需要有一套较为完善的软件编程规范来对程序员的编程行为进行约束。
那么,对于代码规范都需要注意哪些方面呢?
1.1 同一项目组中,需要统一的编程规范
在软件规模和大小不断扩大的今天,个人单打独斗完成一个软件编码工作的情况已经越来越少,更多的软件开发需要以团队合作的形式完成。这样就需要在项目开发之前,制定出一套相应的规范,方便程序员之间进行交流,在一个程序员离开项目组后,新加入项目组的程序员能够很快接手工作,进行新的功能开发。
在编程规范的制定当中,倘若项目组中之前从未制定编程规范,那么可以考虑以网上较为成熟的代码规范基础,结合核心程序员的编程习惯,制定出项目组的编程规范。这样既保证了核心程序员不至于因为编程规范的大规模变动而影响工作效率,也对新加入项目组对员工以及新入职的员工起到了良好的规范作用。如果项目组公司已有编程规范,那么则需要对新入职及新加入项目组的员工进行培训,以让新员工尽快将编程规范运用到工作中,在编写代码的过程中熟悉和掌握编程规范。
1.2 命名规则
变量、方法名、类名及接口名称的命名必须清晰明了,能够让人很快知道该变量的含义,避免容易被主观解释和难懂的名称。类似x、y、a1、b1这样的命名方式,不能让人很快理解该对象的含义,应尽可能使用于短循环索引中。
在变量命名时,必须采用英文名称命名变量。推荐在类属性中不要包含类名,例如Color.blackColor,应该命名为Color.black。
在类名、枚举类型、枚举值、事件、接口、只读静态字、接口、方法、命名空间、属性中应使用Pascal大小写规则,对于方法参数、方法变量应采用Camel规则。
在大小写规则中在,对于C#语言最重要的两个规则是Pascal和Camel规则。Pascal大小写规则的含义是“将标识符的首字母和后面连接的每个单词的首字母都大写”,例如,GetColor();Camel大小写规则的含义是“标识符的首字母小写,而每个后面连接的单词的首字母都大写”,例如blackColor。这样方便开发人员理解变量及类名的含义。
对于ASP页面中的ASP控件,命名时采用控件名简写+英文描述的方式进行命名,采用Camel规则进行命名,英文描述首字母大写,这样便于区分控件类型,提高代码的可阅读性。
1.3 代码格式
在同一项目中,代码的编写格式需统一,每行代码的开头统一缩进四个空格,代码需要垂直对齐左大括号和右大括号,格式如下:
If (x == 0)
{Response.Write("必须输入用户编号!");}
不允许以下格式出现:
If (x == 0) {
Response.Write("必须输入用户编号!");}
对于if、while这些控制软件流程的语句,必须跟随大括号,这样不易产生混乱。同时,大括号需要另起一行,不能与语句并行。
由于一般开发人员所用的电脑显示器尺寸为17寸4:3比例的显示器,分辨率为1280*1024像素,因此每行代码列宽大约控制在110个字符左右,这样既基本满足了Visual Studio开发软件的布局宽度,又满足了17寸显示器在显示上的需要。在代码超出规定列宽后,请在逗号后换行或者这操作符前换行。
为了区分代码块,方法与方法、类与类,以及方法中的逻辑块之间、类的属性与属性之间、属性与方法之间需要增加空行,以方便程序员阅读和熟悉代码,在发现Bug的时候,也能很快定位到相应代码处进行修改。
方法中的关键词和左括号、等号与变量以及赋值结果都必须以空格隔开,方法中的每个参数除了以逗号隔开外,必须在逗号后添加一个空格。。在Visual Studio运用较为熟练的情况下,完成方法里的最后一条语句之后,删除方法的右大括号,然后自己添加一次,所有必须的空格均可由Visual Studio2008/2010自动添加。上述方法同样适用于为ASP页面编写的JavaScript函数。
对于方法而言,每个方法最好仅仅完成一项功能。若对代码进行分层,每层代码必须仅仅完成一种类型的功能。这样的架构不仅满足了面向对象编程中抽象和封装的概念,也提升了代码的可阅读性。每行最多只有一条语句,超过一条语句会让代码显得不美观。对于方法中代码的行数,如果是按照某些大公司的要求,每个方法体中代码行数不要超过40行,但是对于 C#编程,尤其对于新入职的员工,很难达到这一要求,那么也应尽量控制代码的行数,以尽量简洁和高效率的代码完成功能的编写。
对于新人而言,在编写代码中很容易犯的一个错误是将别人写的代码移植到自己的代码中时,会将与实现功能不相关的代码一起拷贝到自己的文件中,甚至会由于执行不相干的功能而降低后台文件运行的效率。那么,必须在代码移植之后,仔细检查一遍代码,若是不必要的功能,需要尽可能的精简掉,以免影响代码效率。
1.4 代码分层
在软件规模不断扩大,开发工作日益加重,尤其是以JAVA、为代表的网络编程发展不断加快,技术手段日新月异的今天,软件代码分层的重要性不断体现。软件架构分层不仅提高了代码的可读性和优雅型,更是大大提高了代码执行效率。
目前,网站开发通用的MVC(Model、View、Controller)架构就是一个很好的分层架构例子。在此基础上,通过对Controller层的进一步细化,可将该层分解为页面控件控制层(主要是JavaScript函数)、后台逻辑层、数据库访问层、数据模型层等架构,在这其中,页面控件控制层控制前台页面的样式,通过WebService调用后台逻辑层的运行结果。后台逻辑层通过调用数据库访问层的代码,获得从数据模型层中返回的操作数据库结果。这样的分层结果,使得每一层次的代码只能调用自己下一层次的方法获得返回结果,层层调用,层次分明,大大提升了代码的效率和可读性。
1.5 代码注释
代码注释是软件编程中一个非常重要的问题。程序员在编写代码的过程中,如果能多花半分钟编写代码注释,在后续开发中将大大提高代码的可读性和可重用性。
例如,如下一段代码:
if ( 1 == 1 )
{statement;}
相对于初学者或者新加入项目组的程序员来说,对于“1 == 1”这个判断条件的理解就会产生歧义,但是如果在if语句后加上注释,如下所示:
if ( 1 == 1 )// always true
通过注释语句,明显可以知道,该判断条件的意思是每次该语句的判断结果均为true,每次程序运行至此都将进入该判断语句下的方法体中。
如果是初学者,在不熟悉代码注释格式的情况下,可以考虑采用Visual Studio的Visual Assist X插件来统一注释的格式。在日常开发工作中,对该插件的注释功能应用较多,但是其他功能相对使用较少。该插件可以自行编辑注释的格式,也可以对注释及代码拼写进行校正。该插件也可以对Visual Studio的编程界面进行更改,让程序员在工作的时候更为舒适。
1.6 代码优化
对于 C#网页编程,代码效率的高低主要体现在循环语句和分支判断语句的使用上,尤其体现在数据库操作和DLL文件的引用调度上。良好的编程规范,能够大大提高代码的运行效率。
对于循环语句,需要减少一切不必要的循环操作。当页面逻辑完成必要的循环操作后,如果还未达到循环体语句规定的循环次数时,为了减少不必要的服务器资源消耗,提高页面反应速度,必须跳出循环。对于分支判断语句,例如if()...else if()...else...以及switch ()...case “xxx”:...,需要将命中次数较多的条件放在判断语句序列的前列,命中次数较少的判断语句放在判断序列的末尾。以
上的编程规范在网站访问量较少的时候体现不明显,但是当网站的访问用户达到一定数目之后,将会对服务器负载产生较大影响。
在完成一套软件的开发之后,如果有时间,必须反复不断的对源代码进行重新阅读和检查,在检查过程中可以不断发现源代码中可以优化的部分。提高了软件效率的同时,也提高了自己的编程水平,积累了更多的经验,一举两得。
2 结论
总之,上述几点是我们对于软件代码规范中的一些小小的看法。对于编程来说,需要不断地在实践中总结经验,时刻将编程规范运用于软件开发中,通过实践,不断提高自己的编程水平,养成良好的编程习惯,提升代码的运行效率,增强代码的优雅性。
参考文献:
[1] 石晓宁.C/C++风格软件的编程规范与稳健性探讨[J].雷达科学与技术,2005(6):346-349.
[2] 刘洋.编程规范与交流能力是国际化嵌入式软件人才基本素质[J].电子设计技术,2008(5):143.
程序员培训总结范文5
撰写人:___________
日
期:___________
xx年程序员个人工作总结
转眼这一年又将过去,尽管受到金融危机的影响,但我们部门,我们小组却是相当辛苦的一年,就感觉从年头马不停蹄地忙到了年尾。业务开发,技术能力以下总结下这一年中工作的情况。
【门禁系统】
年初办公室来安装了门禁系统,我也折腾了几个来回。主要是新的门禁系统跟我们旧的打卡系统的共存问题。我建议门禁系统仅仅使用它的门禁功能,不使用他附带的考勤功能,以免产生系统移植等额外开发开销问题。幸亏我记录了老的考勤系统的引脚接线,门禁系统的安装者没有接好老的考勤系统的接线,导致老的考勤系统无法使用。几经联系往复终于让两个系统能够共存,顺利正常的使用。
【视频设备】
随后日方提供了Web会议系统,为软件园开TV会议提供了方便,不用来回奔袭了。Web会议需要的硬件的采购任务交给了我。经过精挑细选选购了价廉物美的设备。在Web会议的调试上也费了周折,起初的几次应该是由于设置原因导致跟日方的联络中回音过大,影响会议效果。在不懈努力之下,终于现在勉勉强强还算过的去,效果还行。
【数据库讲解】
期间有幸给学生们讲过一次数据库的安装课程。把常用到的sql
server数据库的安装,以及oracle的安装作了演示和简单讲解。在讲授的过程自己也有些许领悟。
【xx软件站】
心里最大的一块石头要算xx软件站了。这个任务可以算是上一年的计划,一直都没有得以实施,在xx老师的敦促下决定一定要把这个网站弄出来。一方面现在服务器的资料越来越多,资料都比较分散。新人装机没有一个指导很难找到要装的东西在哪里。老人装软件等也很难找,非常有必要有这么一个导航,至少是个方便的列表告诉大家急需的软件在哪里。经过一段时间的奋斗,这个网站终于“犹抱琵琶半遮面”.虽然比不上什么花哨功能强劲的大站点,至少对于这个网站我也倾吾所学,运用flash,Dreamweaver,ps等技巧灌注心血弄起来了。应该给大家带了些许方便,在之后的一些系统更新,xx的软件更新我都及时在了这个内部使用的网站上。期间也感谢xx老师常带来一些有用实用的软件资料。
【新人培训】
今年的新人培训我依然是培训的担当者,感受颇多,有自己的感受,也有对新人的想法。总体说来是很累的,一方面我担当一块的培训由早年的一周延长到两周,时间内容都增加了。并且放弃了很多休息时间来关心下新人。自我觉得应该是讲的比以往都详细。于是感慨来了,新人是公司的后备力量,我们培训的责任更加重大。新人很注重第一感觉,倘若教的不对,错了,很容易这错误的信息便先入为主。我最大的感觉是,有的知识点讲过了,解释过了,举例子了,演示了,好了,问了都说懂了。立即过一会儿再来问下马上又说不会了。汗。我觉得两方面都要总结,新人自身要总结牢记,熟记技术点精髓自身要非常努力。另一方面我们培训者,可能也要注意方式,方法,讲解技巧。有的东西我们是有经验的,用起来写起来都曾经有过感官的体验,但是新人不一样,新人没有经历过这些,一味的填鸭,他们忘的很快。他们需要时间积累,我们在他们入门的时候还要多点关心,多多指导,纠正他们的错误。我体验到了,给新人一定要多讲几遍,讲一遍是绝对不行的!且最好讲授之间要自己总结些典型的例子,让新人看一看。
另外年尾也曾去xx院作过两天review的支持吧,感觉自己也要与时俱进啊。
【服务器配置】
今年我依然是部门这里的服务器总负责。自从服务器越来越多,测试用的,数据的,功能的等等服务器越来越多。对服务器的统筹管理尤为重要。服务器一出问题,好了大家手头的工作全部都会中断。重中之重啊!服务器多,管理维护也带来压力,所以在讨论研究之后,各组的服务器由各小组出人维护负责,我总负责及担当本组的服务器维护更新备份任务。一年来相安无事。对于日方要求更新的软件环境等,我都第一时间常常加班加点先自己试点是否成功,成功了则制作教程,在软件站上,之后全员公告。最有印象的是大夏天超热的一个周6,日我一人在办公室由于没有空调,汗流雨下,索性赤膊上阵。Zc裸衣斗服务器!
【上网权限】
今年对网络加强了管理,特别对外网的访问进行了一系列的措施。我觉得效果还是有的,杜绝了员工上班时间上无关紧要网站,提高了工作效率。我对上网权限的管理进行了实施。对谁要开通网络,进行文档化地登记,定时开通关闭,做好记录。
【申请服务器资料】
以上说到服务器越来越多,但是总的来说服务器多归多,也都有相应的用处。
程序员培训总结范文6
关键词:offshore;软件测试;软件质量
1 日本软件开发流程
要想在对日软件外包方面有大的发展,必须深入的了解日本的文化,真正的理解日本软件的开发流程。日本软件开发流程分为需求分析、基本设计、详细设计、编码、单体测试、结合测试、系统测试、系统导入、运用与维护等步骤。
1.1 需求分析
需求分析是软件开发的第一步,必须和最终客户进行接触,了解客户的需求,在熟知客户业务流程的基础上对客户进行需求进行定义。本阶段工作基本由日方担当。
1.2 基本设计
基本设计人员需要和客户进行反复沟通来确定系统的具体功能,包括系统的各个画面输入输出的设计,数据库设计。本阶段一般由日方担当。
1.3 详细设计
是编码之前的最后设计阶段,是为实现基本设计各个功能而进行的画面,模块及逻辑等的详细设计。基本上程序员可以根据详细设计完成编码。本阶段一般由中方担当,也有些项目由日方担当。
1.4 编码
程序员根据详细设计书进行程序的编写。在编码过程中,为了增加程序的可读性及可维护性,需要适当的增加日文注释。本阶段一般由中方担当。
1.5 单体测试
单体测试又称为白盒测试,是编码完成后,对每个模块或者画面,检测是否符合设计书所要求的功能的测试。该阶段需要先根据详细设计书的功能做成单体测试式样书。测试者需要严格按照测试式样书来检测程序是否完成了系统需要的功能以及是否有错误。本阶段一般由中方完成。
1.6 结合测试
结合测试又称为IT或者黑盒测试。是单体测试完成后,把各个功能模块,画面结合起来进行的测试。使用业务数据来检测各个模块,画面之间是否能够正常运行,功能是否实现。本阶段一般由中方担当,也有些项目由日方担当。
1.7 系统测试
系统测试也称为ST,是将已经完成的软件,作为整个计算机系统的一个元素,与计算机硬件,外设,数据等元素结合在一起,在模拟实际的运行环境下,对系统的一系列测试。主要用来验证软件是否与需求定义不符,以及功能和性能是否满足要求。本阶段一般由日方担当。
1.8 系统导入
系统导入是系统开发及测试完成后,做成系统导入文档交付给客户或实际到客户现场对客户进行系统导入及培训。
1.9 运用与维护
对客户实际使用过程中出现的问题进行对应。
2 问题及对策
2.1 加强日语学习
对日软件外包公司最需要的是日语。开发人员对日方提供的设计资料的理解程度直接影响着开发进度和质量。良好的日文读写能力起到了至关重要的作用。
2.2 加强交流
由于需求分析和基本设计由日方担当,正确理解日方的设计思想非常重要。由于在理解上分歧和偏差,导致开发不断变更不少见。加强双方交流能有效减少分歧。
2.3 加强文档管理
日本软件业极为重视文档。把每个细枝末节都要以文档的形式记录。软件业发达的印度,文档管理也相当完备。
日本软件公司对文档管理有自己的特点,但大体上相差不大。例如质问票,由中方发给日方的。当设计书内容不清晰时,通过质问票中写出疑问点发给日方,然后由日方回答,里面有对疑问的详细解释。另一种就是指摘,由日方发给中方的。和其他软件公司一样,日本人把程序中比较明显的问题叫做bug,而一些模棱两可或理解有差异的问题他们叫做指摘,不算作bug。
一般来说,任何外包软件企业都会采用一些专门管理工具来管理相应的文档,例如SVN等。
2.4 加强测试
对于日本外包来说,测试是其中非常重要的组成部分,测试的好坏直接影响软件的质量。尤其是日本人,对软件质量的要求非常高,这就更加凸显了测试的重要性。为了提高测试质量,首先要根据设计书做成完整的测试式样书及测试用例,保证case的全覆盖及针对性,保证测试的结果和预期的结果完全一致。其次要不断的进行回归测试。开发人员对应bug后的代码要执行回归测试,保证此次修改的代码不会影响其他的功能。
[参考文献]
[1]国家服务外包人力资源研究院.软件外包概论.l清华大学出版社,2012年1月.