网上搜一下,很多的,别太懒,比你等快得多;
程序员、软件开发人员应具备基本技能
1、项目实践
• 软件工程理论
• 质量体系:ISO9001和CMM体系
• UML基本理论
• 测试理论和测试工具使用
• 加密理论和加密方法
• 源代码控制工具使用
• 说明书编写
• 程序的安装和部署
2、专业技能
3、程序员基本素质
• 团队精神和协作能力(• 木桶理论、• 学习性组织)
• 文档习惯(• 注释、• 开发过程文档:良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。)
• 规范化,标准化的代码编写习惯(作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。• 代码编写规范• 界面设计规范)这里邵老师强调了标准未必要固定,但在一个项目组中间要有统一的标准。
• 复用性,模块化思维能力(• 用户控件 • 组件技术)
• 测试习惯(• 单元测试 • 集成测试 • 系统测试 • 稳定性测试 • 软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。)
• 学习和总结的能力(• 学习:程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。• 总结:善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况
和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。)
4、职业素质
• 交际能力
• 表达能力
• 职业素养
5、个人素质
• 信心和恒心
• 良好的个人品质
• 良好的个人习惯
• 关于质量控制和开发模板
• 项目组建设
高级程序员的基本素质:
1. 需求分析能力
对于程序员而言,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者,他们不但要理解客户需求,更多时候还要自行制定一些需求,为什么这么说呢?
2. 项目设计方法和流程处理能力
程序设计者必须能够掌握不少于两到三种的项目设计方法(比如自顶至下的设计方法,比如快速原型法等等),并能够根据项目需求和资源搭配来选择合适的设计方法进行项目的整体设计。设计方法上选择不当,就会耽误研发周期,浪费研发资源,甚至影响研发效果。
3. 复用设计和模块化分解能力
一个成熟的软件行业,在一些相关项目和系统中,不同的部件是可以随意换装的,比如微软的许多桌面软件,在很多操作模块(如打开文件,保存文件等等)都是复用的同一套功能模块,而这些接口又通过一些类库提供给了桌面应用程序开发者方便挂接,这就是复用化的模块设计明显的一个佐证。
4. 整体项目评估能力
作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的资源配置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成。评估项目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的困难,都需要大量的经验积累,换言之,这是一种不断总结的累计才
能达到的境界
5. 团队组织管理能力
首先是工作的量化,没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代码行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。
其次是对团队协作模式的调整,一般而言,程序开发的协作通常分为小组进行,小组有主程序员方式的,也有民主方式的,根据程序员之间的能力水平差距,以及根据项目研发的需求,选择合适的组队方式,并能将责权和成员的工作任务紧密结合,这样才能最大发挥组队的效率.
学电子信息工程专业的应具备什么能力?
电子信息工程专业的应具备能力:
1,电脑操作能力:了解计算机网络知识,能够解决常见故障,熟练安装操作系统和各种应用软件,熟练使用办公软件等。
2,器件识别和选型能力:掌握电阻,电容,电感,晶体管,数码管,74系列,AD/DA,运放,存储器,单片机,可编程逻辑器件等 器件的识别方法和常见用法,掌握选型的原则。
3,电路分析能力:能够读懂并分析常见的电路,掌握一定的分析方法。 4,焊接能力:熟练使用烙铁焊接常用器件。
5,仪器仪表操作能力:熟练使用万用表,示波器,信号源,稳压电源等常用仪器仪表。 6,开发工具应用能力:掌握仿真器(单片机,DSP,ARM等),下载器(CPLD/FPGA),编程器的使用方法。
7,PCB绘制能力:能够熟练使用PROTEL等软件绘制原理图和PCB。
8,基本编程能力:能够编写简单的单片机汇编语言或C语言程序,或者在VB,VC下编写简单的小软件,或者编写简单的VHDL/VerilogHDL 程序。
9,专业软件操作能力:自己安装并使用过
KeilC51,Max+Plus2,Quartus2,ADS,Matlab,EWB,SystemView,Labview,Proteus等集成开发软件或仿真软件,掌握基本的使用方法。
软件开发人员的简历项目经验怎么写?
2、你在项目组中的位置、是否能独立解决问题;
3、你的业务知识与团队合作能力等。
技术显然是最重要的,但你需要非常用心的描述整个项目的技术框架,让招聘人员知道你从对宏观上架构很熟悉,然后突出你解决的技术问题。
下面我们参考一种项目描述:
本项目采用JSP+JavaBean+Struts开发,采用了MVC模式,表现层与业务层分离,易于维护、扩展
下面是我写的一段项目描述(虚拟的):
本项目结构上分为表现层、业务层和数据访问层,层次间的依赖关系自下到上。采用的技术有Struts,Spring,Hibernate,Log4J,JDom等。其中表现层采用Struts框架开发;业务层封装业务流程,为适应业务的变更,每一业务模块均有专门的接口及实现类,利用Spring的IoC功能将实现类注入给表现层的Action;数据访问层借助于Hibernate实现,代码简洁且可适应不同的数据库。事务部分利用Spring的声明式事务管理。为提高性能,采用ServletFilter实现了缓存代理
这段项目经验描述简单的勾划出了系统的结构,也表现出你非常熟悉Struts,Spring,Hiberante这几种技术。
同时可以注意到,其中一些重要环节描述的十分简略,比如事务、缓存代理
,这其实是故意的。
面试的时候很多人都怕对方突然问一个自己没有准备的问题,往往缺乏应变能力。一方面你需要多进行专门的练习,另一方面要知道面试时你并不总是被动的,等待对方发问。
如果你给对方的只是一份普普通通的简历,里面只提到了大家都会提及的JSP,Struts,那你只好等待对方随机的问题了。但是如果你的项目经验和描述像刚才那么写,对方就很可能会问你到底是如何在Spring中应用事务、如何使用缓存代理(如果对方是技术人员的话),这时你已经变被动为主动啦当然,前提是你写的这些技术要点一定是自己掌握的,事先已经想好如何表达的!这只是一点面试技巧里面的内容。
总之写好个人简历中项目经验中项目描述也是求职方法的一种。
真心想知道软件的开发过程
软件系统的开发是按阶段进行的,一般划分为以下阶段:可行性讨论;需求分析;系统设计(概要设计、详细设计);程序开发;编码,单元测试;系统测试;系统维护。
软件开发过程中要明确各阶段的工作目标、实现该目标所必需的工作内容以及达到的标准。只有在上一个阶段的工作完成后,才能开始下一阶段的工作。
1.可行性讨论
明确系统的目的、功能和要求,了解目前所具备的开发环境和条件,论证的内容有:① 在技术能力上是否可以支持;② 在经济上效益如何;③ 在法律上是否符合要求;④ 与部门、企业的经营和发展是否吻合;⑤ 系统投入运行后的维护有无保障。
可行性讨论的目的是判定软件系统的开发有无价值。分析和讨论的内容形成“系统开发计划书”,主要内容有:
(1) 开发的目的及所期待的效果;
(2) 系统的基本设想,涉及的业务对象和范围;
(3) 开发进度表,开发组织结构;
(4) 开发、运行的费用;
(5) 预期的系统效益;
(6) 开发过程中可能遇到的问题及注意事项。
2、系统需求分析
系统需求分析是软件系统开发中最重要的一个阶段,直接决定着系统的开发质量和成败,必须明确用户的要求和应用现场环境的特点,了解系统应具有哪些功能、数据的流程和数据之间的联系。需求分析应有用户参加,到使用现场进行调研学习,软件设计人员应虚心向技术人员和使用人员请教,共同讨论解决需求问题的方法,对调查结果进行分析,明确问题的所在。需求分析的内容编写成“系统需求分析报告”。
3.系统设计
可根据系统的规模分成概要设计和详细设计两个阶段。
概要设计包括:① 划分系统模块;② 每个模块的功能确定;③ 用户使用界面概要设计;④ 输入输出数据的概要设计;⑤ 报表概要设计;⑥ 数据之间的联系、流程分析;⑦ 文件和数据库表的逻辑设计;⑧ 硬件、软件开发平台的确定;⑨ 有规律数据的规范化及数据惟一性要求。
系统的详细设计是对系统的概要设计进一步具体化,其主要工作有:① 文件和数据库的物理设计;② 输入输出记录的方案设计;③ 对各子系统的处理方式和处理内容进行细化设计;④ 编制程序设计任务书。程序说明书通常包括程序规范、功能说明、程序结构图,通常用HPIPO(Hierarchy Plus Input Process Output)图描述。
4、程序开发
根据程序设计任务书的要求,用计算机算法语言实现解题的步骤,主要工作包括:① 模块的理解和进一步划分;② 以模块为单位的逻辑设计,也就是模块内的流程图的编制;③ 编写代码,用程序设计语言编制程序;④ 进行模块内功能的测试、单元测试。
程序质量的要求包括:① 满足要求的确切功能;② 处理效率高;③ 操作方便,用户界面友好;④ 程序代码的可读性好,函数、变量标识符合规范;⑤ 扩充性、维护性好。
降低程序的复杂性也是十分重要的。系统的复杂性由模块间的接口数来衡量,一般地讲,n个模块的接口数的最大值为n(n-1)/2;若是层次结构,n个模块的接口数的最小值为n-1。为使复杂性最小,对模块的划分设计常常采用层次结构。要注意编制的程序或模块应容易理解、容易修改,模块应相互独立,对某一模块的修改应对其他模块的功能不产生影响,模块间的联系尽可能少。
5.系统测试
测试是为了发现程序中的错误,对于设计的软件,出现错误是难免的。系统测试通常由经验丰富的设计人员设计测试方案和测试样品,并写出测试过程的详细报告。系统测试是在单元测试的基础上进行的,包括:① 测试方案的设计;② 进行测试;③ 写出测试报告;④ 用户对测试结果进行评价。
6、文档资料
文档包括开发过程中的所有技术资料以及用户所需的文档,软件系统的文档一般可分为系统文档和用户文档两类。用户文档主要描述系统功能和使用方法,并不考虑这些功能是怎样实现的;系统文档描述系统设计、实现和测试等方面的内容。文档是影响软件可维护性、可用性的决定因素,有句话讲,系统编程人员的每一张纸片都要保留,所以文档的编制是软件开发过程中的一项重要工作。
系统文档包括:开发软件系统在计划、需求分析、设计、编制、调试、运行等阶段的有关文档。在对软件系统进行修改时,系统文档应同步更新,并注明修改者和修改日期,如有必要应注明修改原因,应切记过时的文档是无用的文档。
用户文档包括:① 系统功能描述;② 安装文档,说明系统安装步骤以及系统的硬件配置方法;③ 用户使用手册,说明使用软件系统方法和要求,疑难问题解答;④ 参考手册,描述可以使用的所有系统设施,解释系统出错信息的含义及解决途径。
7、系统的运行与维护
系统只有投入运行后,才能进一步对系统检验,发现潜在的问题,为了适应环境的变化和用户要求的改变,可能会对系统的功能、使用界面进行修改。要对每次发现的问题和修改内容建立系统维护文档,并使系统文档资料同步更新。
参考资料:http://www.cppblog.com/xmh79/archive/2006/02/17/3304.aspx
软件开发工作感想
软件开发工作的几点感想
一、软件开发中的角色划分
在一个软件项目从规划、论证到设计、实现的整个过程中,需要众多不同技能的人员参与,为了便于任务分工和人尽其才,在项目小组中应当设定许多角色,小组成员都拥有相应的角色,每种角色都必须具备相应的技能,同时从事相应的工作。
在整个软件工程过程中,一般可划分下面几类角色(可根据公司的规模和项目规模调整):系统研发工程师、项目经理、系统分析员、系统设计工程师、软件编码工程师、软件测试工程师、系统支持工程师等。系统研发工程师(也叫产品经理)负责软件产品的功能设计,他对市场有敏锐的洞察力和感悟力,同时对软件技术内涵有深刻的理解(不一定对语言本身非常熟悉),能够把握市场需要什么,知道什么样的需求可以通过软件实现,实现的成本有多大,他熟悉同类产品或相关产品的优势和不足。项目经理负责人员安排和项目分工,保证按期完成任务,对项目的各个阶段进行验收,对项目参与人员的工作进行考核,管理项目开发过程中的各种文档,直接对公司领导层负责,他既能处理好与客户之间的关系,又能协调好项目小组成员之间的关系。系统设计工程师负责软件产品的系统设计,包括需求分析、概要设计和详细设计(最好详细到对象的每个函数接口),他非常熟悉软件工程理论,熟悉常规的软件设计思想(例如结构化设计思想、面向对象OOP设计思想)和常用技术,包括语言、服务和组件技术(例如CORBA、COM、DCOM、JavaRMI、JAVABEAN、EJB等),能熟练使用一种CASE工具进行设计并能用规范化的文档清晰地描述出来,同时他能准确的理解软件产品的功能和知道如何实现,而且对相关语言非常熟悉,能面向特定语言完成系统的详细设计。软件编码工程师负责软件模块的编码实现,他非常熟悉相关的语言细节,熟悉软件基础理论和常用算法,熟悉常规的软件编码标准。软件测试工程师负责软件测试工作,尽量发现软件设计和编码中的缺陷,他熟悉常用的软件测试方法,能设计测试用例,能够细心地做软件测试工作。系统支持工程师负责帮助用户顺利实施软件系统,他能够编写软件使用手册、对用户进行培训,熟悉相关的软件运行环境。
在以上几种角色中,系统研发工程师、系统设计工程师和项目经理是最重要的三个角色,他们的能力和经验是项目成功的根本保证,是公司最宝贵的技术财富。
根据项目的规模不同,角色划分和设置也不仅相同,对于较大规模的项目,可能由多人担任一个角色,对于小规模的项目可能一人就担任多个角色,但是与角色相关的职能划分是不可少的。
角色划分是为了适应任务的分解和合理分工,是为了安排合适的人做合适的事,相应角色的人员必须作好相应角色的事,不能因为自己可以做另一个角色的事,就忘记了自己的主要任务。
二、软件企业的技术体系建设
软件技术是在日新月异地发展的,任何人要想熟悉所有的软件技术是不现实的,软件技术涉及到不同的层次和不同的领域,不同层次有不同层次的协议和功能,上一层次的技术是建立在下一层次的基础之上的,任何人要学习软件技术,必须明确相应的层次,要把注意力集中在本层次的功能和协议上,不要深究下一层怎么实现,这是最关键的。
不要一味的追逐新技术,软件只是一种工具,最重要的是用这个工具做什么有价值的东西,要学会以不变应万变,因为万变不离其宗。
一个好的软件工作者,最重要的是有悟性和创造力,对市场的感悟、对软件技术的感悟,把二者进行有机结合形成软件产品的创造力。
软件开发人员应该在一条技术主线上深入学习和研究,在一条主线的前提下,再研究常用的规范和技术。对于初学者,在掌握好一条主线的相关知识的基础上就可以迅速设计软件产品,而不应把面开的太广。譬如,掌握一点基础理论、一门数据库系统、一门开发工具就可以开发常用的信息管理系统。切记在同一层面上涉猎太多,学了PB,又研究VB,是毫无意义的重复。对一个公司来说,也应有一个技术主线,以及与之相关的一只开发队伍,这样才能实现软件复用和人才复用。
在一个公司中,不应鼓励技术人员都去努力学习新技术,要给每位员工一个角色定位,要求他做好相应角色的工作,为了作好工作必须拥有相应角色的技术。对于大多数人来讲,自己可能不知道该学什么好,需要公司帮他定位。任何人在不影响本角色工作的基础上可以有自己的学习计划,但不应作为公司的计划。公司根据员工人能力的变化可以及时调整其角色。
对于一个公司来说,应下大力气培养系统研发工程师和系统设计工程师,好的系统研发工程师(或称为产品经理)能保证一个软件项目甚至一个公司沿着一个正确的方向走,好的系统设计工程师能保证软件实现预定的功能。纲张则目举,有了纲,目就容易定了。有了好的系统设计,软件编码工作就很容易,单纯的软件编码工程师也容易找。如果有大量的软件高手,但是谁也做不了系统设计,这些人在一块做项目,沟通和合作都成问题,做出的软件就可想而知了。
软件是一种服务工具,它辅助人类实现管理和服务。人类工作的任何一个领域,软件都可以进入。软件应用领域非常广阔。
与其说研究软件产品如何定位,不如说是研究人类在管理和服务上的需求,哪些需求可以用软件实现、该需求的市场有多大、客户能支付的费用有多大等,都是必须研究的范围。
常规的需求,基本已经实现了,没有实现的不是因为技术达不到就是因为经费和市场的问题。因此必须去挖掘潜在的需求和把握将要扩大的需求,就是要创新。
降低软件开发成本就变相的提高了公司的利润,因此在开发软件项目的时候要仅可能的利用已有的组件和代码,构建新的产品,实现代码级复用,如果能开发通用化的软件产品,实现软件级的复用就更好了。开发大范围的通用软件比较困难,开发某个行业的通用软件相对容易些。
好的软件产品并不一定非得使用了多高深的技术,关键是在适当的时刻推出适当的产品。能把各种不同的技术融合在一起也是一个很好的卖点。
总之,对一个软件公司来说,技术、产品、管理(包括公司管理和技术管理)和市场是最重要的四个要素,作为公司的管理层要时时刻刻确保这四项要素能得到很好的管理和控制。
仅供参考哈
软件工程师怎么持续提升自己的开发技能
引言:职业生涯规划(careerplanning)简称生涯规划,又叫职业生涯设计,是指个人与组织相结合,在对一个人职业生涯的主客观条件进行测定、分析、总结的基础上,对自己的兴趣、爱好、能力、特点进行综合分析与权衡,结合时代特点,根据自己的职业倾向,确定其最佳的职业奋斗目标,并为实现这一目标做出行之有效的安排。生涯设计的目的绝不仅是帮助个人按照自己的资历条件找到一份合适的工作,达到与实现个人目标,更重要的是帮助个人真正了解自己,为自己定下事业大计,筹划未来,拟定一生的发展方向,根据主客观条件设计出合理且可行的职业生涯发展方向。 大学生首先要认识到生涯规划的重要意义,职业生涯活动将伴随我们的大半生,拥有成功的职业生涯才能实现完美人生。因此,职业生涯规划具有特别重要的意义。 第一章 认识自我 1.个人基本情况 别人说我性格偏于内向,但我认为我性格具有两面性,我喜欢安静的环境,喜欢一个人学习、看书。但有时却喜欢热闹,和朋友在一起谈天,给彼此带来快乐,我会感觉很开心。喜欢画画,喜欢运动,尤其是打乒乓球。也喜欢路游,开阔眼界,陶冶情操。我平常的生活中较少主动与陌生人交往,喜欢默默地做自己的工作,但是在熟悉的人面前也能放宽心态、活泼的姿态与别人交流。在与人相处时,待人坦诚,往往能得到他人的认可。对自己从事的工作往往能尽心投入,尽自己最大努力工作。 2.职业兴趣: 我不喜欢过太悠闲地生活,所以比较期待软件开发这一方面的工作,努力的先学好专业知识。 3.个人性格: 我有着双重性格,生活中,常常能让人见到我的笑脸,与人沟通时不仅能很好的阐述自己的观点,也能静心倾听别人的意见。我处理事比较细致,待人比较和善,很容易博得别人的好感与信任。 4.职业价值观: 我并不过于的最求物质方面的待遇,更注重自身的精神感受,所以,我若是喜欢自己的工作,就会尽心尽职的去做,而不会因为物质财富的影响以致不能尽力工作。 5.优势分析:我具有团队精神和协作能力,我是一个认真而严谨的人,勤奋而负有责任感,对待问题善于和别人交流,认准的事情很少会改变或气馁,做事深思熟虑,信守承诺并值得信赖。我依靠理智的思考来做决定,总是采取客观、合乎逻辑的步骤,不会感情用事,甚至在遇到危机时都能够表现得平静。 我谨慎而传统,重视稳定性、合理性;我善于聆听并喜欢将事情清晰而条理的安排好。我喜欢先充分收集各种信息,然后根据信息去综合考虑实际的解决方法,而不是运用理论去解决。我对细节非常敏感,有很实际的判断力,决定时能够运用精确的证据和过去的经验来支持自己的观点,并且非常系统有条不紊,对那些不这样做的人没有耐心。 6.劣势分析:我非常固执,经常沉浸于具体的细节和日常的操作中,我看问题有很强的批判性,通常持怀疑态度,我需要时常的换位思考,更广泛的收集信息,并理智的评估自己的行为带来的可能后果。我过于认真,对某些事物过于严谨和挑剔;我非常有主见,时常会将自己的观点和标准强加给别人,而且无视那些不自信的人的建议。自我感觉若能在以后多尝试和接受新颖的、有创造性的方法,就能做出更有效的决策。 自我分析小结: 每个人都有自己的长处和短处,总有一份合适自己的工作,通过充分了解自己,了解自己的兴趣和能力,对自己未来正确的进行从事行业的选择有很大的帮助,我虽然不是最优秀的,但是通过努力,一定能胜任选择的工作。 第二章 职业生涯条件分析 1.家庭环境分析: 我的家庭很一般,家里收入一般,我之前我并没有接触过与现在所学专业有关的东西,也没有特殊的家庭背景。由于家庭气氛比较和谐,让我无形中更懂得如何与人相处,这样潜移默化的让我也能更认真的对待生活、工作中的事情。我希望能踏踏实实的工作,去探索人生中的另一个领域。 2.学校环境分析: 学校是一个小社会,在这里,我们要处理很多人际关系,与周围同学相处的能力就很能体现一个人自身与他人的沟通交流能力。学校的学生来至于全国四面八方,我们能够通过对不同生活背景、不同生活习惯的人的交往来锻炼自己的与人同能力。 4.职业环境分析: 人才行情:需求大,对专业功底要求比较深,但也适合一般本科生从事。最重要的是,职业发展空间足够大 职业生涯条件分析小结: 包括各种上游设备以及通讯器材的销售。对于上游设备的销售,企业在招聘时非常看重专业背景,因此,对通信的一些基础专业课程得有比较全面的了解。对于那些想做销售的同学们,在毕业前实习争取去企业的研发部门,与市场营销的学生在销售专业知识上去竞争是不明智的,我们应该加强专业背景这一核心优势。 第三章 职业目标定位及其分解组合 1.职业目标的确定: 销售助理—销售工程师—销售经理 2.职业目标的分解与组合: 通过扎实的工作能力和努力的进取逐步提升自己。 第四章 具体执行计划 学习不仅是为了以后的工作,最重要的是它能让你终身收益。我一直坚信“活到老,学到老”的格言。无论怎样,学生最首要的任务就是学习。如果抛开学习,那么一切都无从谈起。在数字化、信息化的时代对计算机知识的掌握尤为必要。所以我对自己的大学生涯作出以下简短设计。 大学二年级: 在这一年里,既要稳抓基础,又要做好由基础课向专业课过渡的准备,并要把一些重要的高年级课程逐一浏览,以便向大三平稳过渡。大二里有两次重要的考试:英语四级和计算机等级考试。在这段时期,我们要做的就是通过获取这两张科目认证证明来充实和丰富自己的生活。 在这个时期,我们也应考虑清楚未来是否深造或就业,了解相关的应有活动,并以提高自身的基本素质为主,通过参加学生会或社团等组织,锻炼自己的各种能力,同时检验自己的知识技能;可以开始尝试兼职、社会实践活动,并要具有坚持性,最好能在课余时间后长时间从事与自己未来职业或本专业有关的工作,提高自己的责任感、主动性和受挫能力。 大二是充足的(如果我们能安排妥当),然而,有一点是很值得注意的,那就是在适当的时刻学会放弃一些次要的东西。“如果你企图无所不知,那你将一无所知。”一位哲人如是说。是的,生命的小舟载不动太多虚无的希冀和渺茫的幻想。 在大二这段时间里,我们基本上为我们日后的发展定了方向,所以大二是非常重要的。 1.认真学好专业知识和其他基础学科,坚信基础的东西一定是最重要的。注意提高自身的基本素质,通过参加各种社团等组织,锻炼自己的各科能力,同时检验自己的知识技能。 2.做一些兼职,社会实践活动,同时在课余时间从事一些与自己未来职业有关的专业类的工作,进一步提高自己的责任感、主动性。 大学三年级: 开始尝试并学习写简历、求职信,了解社会需求。搜集与本人目标工作有关的信息,并通过信息渠道尝试和已毕业的校友交流思想 。开始毕业前的申请,积极参加招聘,在实践中校验自己的知识积累。 预习或模拟面试,积极利用学校提供的条件,了解就业指导中心体统的用人公司资料信息,强化求职技巧,进行模拟面试等训练,尽可能作出较为充分准备的情况下进行演练,为自己以后找到理想的工作而努力。 扬帆中的大四: 目标:工作申请,成功就业/专心考研 终于,到了大四了,大学生活似乎已经到了尾声,这段奏鸣也迎了最后的高潮。此时的我在前三年生活的积淀中已掌握了许多,也许未必首屈一指,但也应当有所作为吧,是找工作还是考研?困惑一直缠绕着我,就目前招聘形势,就在知识成为社会主宰的那一刻,我明白:考研成为热点,研究生成为真正的人才,本科生竞争力实在不强(除非出类拔萃,当然这样的人往往会去考研),所以考研这件事必须从大一便一直记在心中,我想用我三年积累的知识、十几年不懈的努力、亲人给予的激励,优雅高昂的成为研究生(当然世事难料,也许有时不考研也是另样的机遇)。 接着,我得对前三年的准备做一个总结:首先检验自己已确立的职业目标是否明确,前三年的准备是否已充分;然后,开始毕业后工作的申请,积极参加招聘活动,在实践中校验自己的积累和准备;最后,预习或模拟面试。积极利用学校提供的条件,了解就业指导中心提供的用人公司资料信息、强化求职技巧、进行模拟面试。 大四了,也没什么可犹豫的了,我想这时候一切都应当在我们的计划中运行了 结束语: 大学生首先要认识到生涯规划的重要意义,职业生涯活动将伴随我们的大半生,拥有成功的职业生涯才能实现完美人生。因此,职业生涯规划具有特别重要的意义。 一:职业生涯规划可以发掘自我潜能,增强个人实力: 一份行之有效的职业生涯规划将会:引导你正确认识自身的个性特质、现有与潜在的资源优势,帮助你重新对自己的价值进行定位并使其持续增值;引导你对自己的综合优势与劣势进行对比分析。 二:职业生涯规划可以增强发展的目的性与计划性,提升成功的机会: 生涯发展要有计划、有目的,不可盲目地"撞大运",很多时候我们的职业生涯受挫就是由于生涯规划没有做好。好的计划是成功的开始,古语讲,凡事"预则立,不预则废"就是这个道理。 三:职业生涯规划可以提升应对竞争的能力: 做好职业生涯规划,磨刀不误砍柴工,有了清晰的认识与明确的目标之后再把求职活动付诸实践,这样的效果要好得多,也更经济、更科学
做一个成功的程序员需要具备哪些素质
程序员是一种技术工作.在IT的发展中有相当重要的地位.从底层硬件通讯协议的建立. 到数据传输层的处理.到操作系统的建设.到数据库平台的建设.一直到应用层上各种数 据营销平台的搭建.程序员在里面都扮演着举足轻重的角色并为IT事业的发展做出了巨大 的贡献.
中国有很多精于编码的人.但是中国软件行业.尤其是网络应用开发方面误区很大.很难形成有规模的软件开发力量和产品能力.不但比美国差距甚远.和印度相比也是颇有不 如.这些问题不是在于中国程序员的智商和工作努力状况.也不是在于国家和民间对开发 的投入程度.而是很大程度上.有一些对技术.对程序开发.对项目设计方面的思想误 区.这些误区.导致了软件行业的产品化能力不足.缺乏规模化和大型复用系统研发能 力.可以说.改变认识误区.是解决软件行业小作坊模式和个体英雄模式所带来的局限性 的重要工作.
中国有很多小朋友.他们18.9岁或21.2岁.通过自学也写了不少代码.他们有的代码写的很漂亮.一些技术细节相当出众.也很有钻研精神.但是他们被一些错误的认识和观点左右.缺乏对系统.对程序的整体理解能力.这些人.一个网上的朋友说得很好.他们实际 上只是一些Coding fans.压根没有资格称为程序员.但是据我所知.不少小网络公司的 CTO就是这样的coding fans.拿着吓人的工资.做着吓人的项目.项目的结局通常也很吓人.
一.程序员基本素质
作一个真正合格的程序员.或者说就是可以真正合格完成一些代码工作的程序员.应该具有的素质.
1:团队精神和协作能力
把它作为基本素质.并不是不重要.恰恰相反.这是程序员应该具备的最基本的.也是最 重要的安身立命之本.把高水平程序员说成独行侠的都是在呓语.任何个人的力量都是有 限的.即便如linus这样的天才.也需要通过组成强大的团队来创造奇迹.那些遍布全球 的为linux写核心的高手们.没有协作精神是不可想象的.独行侠可以作一些赚钱的小软 件发点小财.但是一旦进入一些大系统的研发团队.进入商业化和产品化的开发任务.缺 乏这种素质的人就完全不合格了.
2:文档习惯
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子.良好的文档是正规研发流程中 非常重要的环节.作为代码程序员.30%的工作时间写技术文档是很正常的.而作为高级 程序员和系统分析员.这个比例还要高很多.
缺乏文档.一个软件系统就缺乏生命力.在未来的查错.升级以及模块的复用时就都会遇 到极大的麻烦.
3:规范化.标准化的代码编写习惯
作为一些外国知名软件公司的规矩.代码的变量命名.代码内注释格式.甚至嵌套中行缩 进的长度和函数间的空行数字都有明确规定.良好的编写习惯.不但有助于代码的移植和 纠错.也有助于不同技术人员之间的协作.
有些coding fans叫嚣高水平程序员写的代码旁人从来看不懂.这种叫嚣只能证明他们自 己压根不配自称程序员.代码具有良好的可读性.是程序员基本的素质需求.
再看看整个linux的搭建.没有规范化和标准化的代码习惯.全球的研发协作是绝对不可 想象的.
4:需求理解能力
程序员需要理解一个模块的需求.很多小朋友写程序往往只关注一个功能需求.他们把性 能指标全部归结到硬件.操作系统和开发环境上.而忽视了本身代码的性能考虑.有人曾 经放言说写一个广告交换程序很简单.这种人从来不知道在百万甚至千万数量级的访问情 况下的性能指标是如何实现的.对于这样的程序员.你给他深蓝那套系统.他也做不出太 极链的并访能力.性能需求指标中.稳定性.并访支撑能力以及安全性都很重要.作为程 序员需要评估该模块在系统运营中所处的环境.将要受到的负荷压力以及各种潜在的危险 和恶意攻击的可能性.就这一点.一个成熟的程序员至少需要2到3年的项目研发和跟踪经 验才有可能有心得.
5:复用性.模块化思维能力
经常可以听到一些程序员有这样的抱怨.写了几年程序.变成了熟练工.每天都是重复写 一些没有任何新意的代码.这其实是中国软件人才最大浪费的地方.一些重复性工作变成 了熟练程序员的主要工作.而这些.其实是完全可以避免的.
复用性设计.模块化思维就是要程序员在完成任何一个功能模块或函数的时候.要多想一 些.不要局限在完成当前任务的简单思路上.想想看该模块是否可以脱离这个系统存在. 是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用.这样就能极大避 免重复性的开发工作.如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到 这些问题.那么程序员就不会在重复性的工作中耽误太多时间.就会有更多时间和精力投 入到创新的代码工作中去.
一些好的程序模块代码.即便是70年代写成的.拿到现在放到一些系统里面作为功能模块 都能适合的很好.而现在我看到的是.很多小公司软件一升级或改进就动辄全部代码重 写.大部分重复性工作无谓的浪费了时间和精力.
6:测试习惯
作为一些商业化正规化的开发而言.专职的测试工程师是不可少的.但是并不是说有了专 职的测试工程师程序员就可以不进行自测,软件研发作为一项工程而言.一个很重要的特 点就是问题发现的越早.解决的代价就越低.程序员在每段代码.每个子模块完成后进行 认真的测试.就可以尽量将一些潜在的问题最早的发现和解决.这样对整体系统建设的效 率和可靠性就有了最大的保证.
测试工作实际上需要考虑两方面.一方面是正常调用的测试.也就是看程序是否能在正常 调用下完成基本功能.这是最基本的测试职责.可惜在很多公司这成了唯一的测试任务. 实际上还差的远那,第二方面就是异常调用的测试.比如高压力负荷下的稳定性测试.用 户潜在的异常输入情况下的测试.整体系统局部故障情况下该模块受影响状况的测试.频 发的异常请求阻塞资源时的模块稳定测试等等.当然并不是程序员要对自己的每段代码都 需要进行这种完整测试.但是程序员必须清醒认识自己的代码任务在整体项目中的地位和 各种性能需求.有针对性的进行相关测试并尽早发现和解决问题.当然这需要上面提到的 需求理解能力.
7:学习和总结的能力
程序员是人才很容易被淘汰.很容易落伍的职业.因为一种技术可能仅仅在三两年内具有 领先性.程序员如果想安身立命.就必须不断跟进新的技术.学习新的技能.
善于学习.对于任何职业而言.都是前进所必需的动力.对于程序员.这种要求就更加高 了.
但是学习也要找对目标.一些小coding fans们.他们也津津乐道于他们的学习能力.一 会学会了asp.一会儿学会了php.一会儿学会了jsp.他们把这个作为炫耀的资本.盲目 的追逐一些肤浅的.表面的东西和名词.做网络程序不懂通讯传输协议.做应用程序不懂 中断向量处理.这样的技术人员.不管掌握了多少所谓的新语言.永远不会有质的提 高.
善于总结.也是学习能力的一种体现.每次完成一个研发任务.完成一段代码.都应当有 目的的跟踪该程序的应用状况和用户反馈.随时总结.找到自己的不足.这样逐步提高. 一个程序员才可能成长起来.
一个不具备成长性的程序员.即便眼前看是个高手.建议也不要选用.因为他落伍的时候 马上就到了.
具备以上全部素质的人.应当说是够格的程序员了.请注意以上的各种素质都不是由IQ决 定的.也不是大学某些课本里可以学习到的.需要的仅仅是程序员对自己工作的认识.是一种意识上的问题.
转载请注明出处51数据库 » 软件开发应有的能力 软件开发人员应具有的素质
朕定当大射天下