如何成为合格的软件工程师

一个成功的软件开发团队里,首先要确保团队里的成员是合格的软件工程师。那么该如何成为一名合格的软件工程师呢?这是我们要考虑和学习的。为此,我们需要先了解一些基本概念和技术。

既然是一个开发团队,那么绝大部分的软件都是由多人合作完成的,大家的工作相互有依赖关系。所以需要单元测试来保证整个开发过程各个模块的正确性,单元测试可以保证自己负责的模块功能定义尽量正确,模块内部的改变不会影响其他模块,而且模块的质量能够得到稳定的、量化的保证。书上介绍了一种用VSTS写单元测试的代码:

[TestMethod()]

public void ConstructorTest()

{

String userEmail=”[email protected]”;

User target=new User(userEmail);

Assert.IsTrue(target!=null);

}

从这个代码中,可以看出创建单元测试函数的主要步骤:1.设置数据(一个假象的正确的email地址)2.使用被测试类型的功能(用email地址来创建一个user类的实体)3.比较实际结果和预期的结果(Assert.IsTrue(target!=null);)。知道了如何创建单元测试函数,那么该如何判定段元测试的好坏呢?单元测试应该在最基本的功能/参数上验证程序的完整性;单元测试必须由最熟悉代码的人来写,即程序的作者;单元测试过后,机器状态保持不变;单元测试要快,运行时间一般为几秒钟;单元测试应该产生可重复、一致的结果;单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性;单元测试就应该覆盖所有代码路径;单元测试应该集成到自动测试的框架中;单元测试必须和产品代码一起保存和维护。

在单元测试的基础上,就可以建立关于这一模块的回归测试,回归即倒退、退化、退步的意思。在实践中,在一个项目的最后稳定阶段,所有人都要参加全面的测试工作,把所有以前发现并修复的bug找出来,一个一个验证,以此证明所有已经修复过的bug的确得到了修复,并且没有在最后一个版本中“复发”,这就是一个大规模的、全面的“回归测试”。

每个程序员都梦想着自己的程序跑得又快又好,那么就需要效能分析工具,有两种分析方法,第一种是抽样,就是当程序运行时,visual studio 时不时看一看这个程序运行在哪一个函数内,并记录下来。第二种方法是代码注入,将检测的代码加入到每一个函数中,这样程序的一举一动都被记录在案,程序的各个效能数据都可以被精确地测量。一般的来说就是先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析。

软件工程包括了开发、运营、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营、维护的效率,以及提升用户满意度、软件的可靠性和可维护性。软件开发流行不光指团队的流程,因为软件软对是由个人组成的。在团队的大流程中,是每一个具体的个人在做开发、测试、用户界面设计、管理、交流等工作。因此,个人在团队中也有独立的流程,个人能力在整个团队中的作用是很大的。要想成为一名职业的软件工程师,首先是要考级,获得相应公司和行业的认证。在不同的阶段学习不同的技术,在学校里,学一些入门的技能,等到开始实践时,可以写别人交给你的任何东西,不明白时区问别人,渐渐地开始成为小组领导,开始学习领导能力,派发任务工作。

所以,要想成为一名合格的软件工程师,要学习、要走的路还很长很长,我们如今还仅仅停留在入门阶段,而入门阶段是基础,能为以后打好坚实的基础,只有入门时候的各种语言学扎实了,以后才能写好程序。

时间: 2024-10-02 19:45:31

如何成为合格的软件工程师的相关文章

读书笔记二(合格的软件工程师)

在上个学期的编程学习中,我们能够编写一些简单的信息系统,能够对简单的信息管理系统以及ATM机的简单模拟,相信这个时候的大多数人都认为自己至少已经是一个合格的 软件工程师了,但是在阅读了<构建之法>第二章--<个人技术流程>之后,我发现能够完成程序是远远不够的,我们还需要单元测试,效能分析等,同时还需要一个正确的开发 流程. 第一,我们在开发时需要进行单元测试,这是为了让我们负责的模块的质量能够得到更加稳定的,量化的保证,让我们能够更加方便的融入整个软件开发团队,让团队的其他团 员能

《构建之法》---软件工程师的成长&amp;两人合作

本周学习了<构建之法>第三.四章的内容. PSP对软件开发的工作质量的衡量简单指标为:项目/任务有多大.花多少时间.质量如何.是否按时交付共4个因素.而要成为一名合格的软件工程师,要对上述4个因素尽量在用户需求上做到尽善尽美. 软件工程师的职业发展有: 职业发展---考级之路 计算机等级考试 (http://sk.neea.edu.cn/jsjdj/index.jsp) 全国计算机技术与软件专业技术资格考试 (http://www.rkb.gov.cn/  ) 职业成长---Steve McC

一位软件工程师的6年总结

一位软件工程师的6年总结 一位软件工程师的6年总结http://www.jsjbbs.cn/thread-3001-1-1.html(出处: http://www.jsjbbs.cn/) “又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位:想想自己也曾经意气风发.踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标.本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方

一位软件工程师的7年总结

1.分享第一条经验:“学历代表过去.能力代表现在.学习力代表未来.”其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这 个道理有些体会吧.但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2.一定要确定自己的发展方向,并为此目的制定可行的计划.不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”.因为,这样的观点会通过 你的潜意识去暗示你的行为无所事事.碌碌无为.一直做技术,将来成为专家级人

《构建之法—现代软件工程》读书笔记之 — 软件工程师的成长

只有对软件工程有更清晰的了解,才能知道努力的方向,才能成为一个合格的软件工程师,邹欣老师用这一节的内容带我们走近软件工程师的世界.那么,一个合格的软件工程师到底是怎样的标准,为了达到标准,又需要我们怎样做呢? 首先,我们应该了解软件工程到底包括了什么? 软件工程包括了开发.运营.维护软件过程中的很多技术.做法.习惯和思想.软件工程把这些相关的技术和过程统一到一个体系中,叫"软件开发流程",软件开发流程的目的是为了提高软件开发.运营.维护的效率,以及提升用户的满意度.软件的可靠性和可维护

一位软件工程师的7年总结 [转]

原文出处:http://www.oschina.net/discuss/thread/500 1.分享第一条经验:“学历代表过去.能力代表现在.学习力代表未来.”其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这 个道理有些体会吧.但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2.一定要确定自己的发展方向,并为此目的制定可行的计划.不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”.因

vc++视频教程 软件工程师培训课程 VC知识库大讲堂

下载地址: http://www.enginedx.com/78/m299/ <C/C++软件工程师实战能力集训大纲>的现实意义在哪里?]         1.作为一个C/C++软件工程师,需要掌握的东西真是挺多的:        2.纵观目前中国的C/C++ 人才队伍,能满足以上能力要求的,只在少数.很多用人企业感叹,社招的人员能力参差不齐.普遍现象是他们只对其中的某一小部分内容有一个熟练的掌握,而对大部分的内容一知半解,甚至一无所知.这也是直接导致国内软件业开发实力普遍不强的最重要的原因.

JAVA软件工程师应该具备的技能有哪些?

前言:有朋友问我:学历和能力哪个重要?我个人觉得能力大于学历,没有能力哪来的学历,学历只是证明能力的一方面.为此在能力方面畅谈java软件工程师必备的能力.作为一名合格的java工程师,不仅需要学历,更重要要有扎实的能力(技能)功力. 1.编程语言能力. 作为一名专业的软件工程师,应该能够熟练掌握JAVA语言,并且能够深入理解OOP.OOA.OOD等编程思想.精通一门编程语言能为以后的软件开发打下坚实的基础. 2.编码能力. 这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序

第三章 软件工程师的成长

3.1 个人能力的衡量与发展 软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.在团队的大流程中,是每个具体的个人在做开发.测试.用户界面设计.管理.交流等工作.因此个人在团队中也有独立的流程. 以开发人员为例,流程如下: *通过交流.实验.快速原型等方法,理解问题.需求或任务 *提出多种解决办法并估计工作量 *其中包括寻找以前的解决方案,因为很多工作是重复性的 *与相关角色交流解决问题的提案,决定一个可行的方案 *执行,把想法变成实际中能工作的代码,同时验证方案的可