- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程师的能力及发展
?介绍:??个人软件流程,?
职业发展,
个人绩效的衡量和提高,?
软件开发是科学,?工程,?手艺,?或是艺术
?
软件工程,?它包括了什么呢?
软件工程包括了开发,运营,?维护软件的过程中有很多技术,?做法,?习惯,?和思想。软件工程把这些相关的技术和过程统一到一个体系中,?叫?“软件开发流程”,软件开发流程的目的是为了提高软件开发,?运营,?维护的效率,以及用户满意度,?可靠性,和软件的可维护性。
?
软件开发流程不光指团队的流程,??软件团队是由个人组成的。在团队的大流程中,?是每一个具体的个人在做开发,测试,用户界面设计,管理,交流等工作。因此,?个人在软件团队中也有个人的流程。
?
个人的劳动成果有序地组织起来,?就是团队的流程。这里说的“有序”,?并不是“无争论”,??在大部分成功的软件团队模型中,??各个角色(开发,?测试,?项目管理等)考虑问题的出发点是有区别的,?不同意见的冲突在所难免,?一个好的团队流程能把冲突的积极方面?(各自尽力把自己的工作做好,说服别人)?释放出来,而避免消极方面?(因为冲突而产生的消极,抵触情绪等)。?
?
我们用足球作一个比喻:??足球中有没有个人流程???当然有,??职业球队对于运动员有很严格的要求:?例如:
体能,?技术,?意识,?斗志
具体技术有传接,盘带,射门,?定位球,?跑位,?等。一些特定的角色(守门员)还有独特的技术要求。
?
足球的团队有没有流程??当然有:
阵型,?配合,?临场应变
?
足球队有不少?“阵型” (442, 433, 451和它们的各种变体,?等等)?和打法?(南美,欧洲,技术,力量,?小快灵,?抢逼围,?两翼齐飞,??全攻全守,?等等).?
尽管有这么多理论,??足球的每一次盘带,?传球,??跑动,?射门,扑救,都是单个运动员完成的。??如果单个运动员的技术,?体能不行,?无论是什么阵型用处都不大,有些阵型反而会起反作用,??例如,?让体力弱的球队去打全攻全守。
软件也是这样
软件系统的绝大部分模块都是由个人开发或维护的。在软件工程的术语中,?我们把这些单个的成员叫做Individual Contributor (IC).
IC?在团队中的流程是怎么样的呢??我们以开发人员为例:
????????理解问题或任务
????????提出多种解决办法并估计工作量
????????其中包括寻找以前的解决方案,因为很多工作是重复性的?–?例如实现某些类似的web页面。
????????与相关角色交流解决问题的提案,?决定最终方案
????????执行,?把想法变成实际中能工作的代码
????????修复缺陷,??对结果负责
每个人的工作质量直接影响最终软件的质量。
如果你是病人,?你希望你的医生是下面的那一种呢?
a)??刚刚在书上看到你的病例,?开刀的过程中非常认真严谨,?时不时还要停下来翻书看看…
b)??富有创新意识,?开刀时突然想到一个新技术,?新的刀法,??然后马上在你身上试验…
c)??已经处理过很多类似的病例,?可以一边给你开刀,?一边和护士聊天说昨天晚上放的 《非诚勿扰》的花絮…
d)??此医生无正式文凭或医院,?但是号称有秘方,?可治百病。
e) 还有这一类, 给你开刀到一半的时候, 出去玩去了, 快下班的时候, 他们匆匆赶回来, 胡搞一气, 给你再缝好, 打了很多麻药,就把你送出了院, 说“治好了”!
?
事实上,?很多软件项目就是用?a) b)?这样的方法搞出来的。当然也有一些人走?d)?这条路。 e) 这一种可以在很多大学生软件大作业上看到例子。?
如果我可以选择,?我要选?c)?那样的医生。
?
软件工程师的成长
一个游戏玩家,?如何成长呢????在游戏中,?可以打怪,?挖宝,?买装备,?完成任务,?买卡换积分,??等等。。。
?
那一个刚入行的初级软件工程师如何成长呢???我认为成长有下面几种:
1.???????知识:??对具体技术的掌握,?动手能力
例如:?对Java, C/C++/C#,?诊断/提高效能的技术,??对device driver, kernel debugger?的掌握;对于某一开发平台的掌握。
2.???????经验:?对问题领域的知识和经验的积累?(例如:?对于医疗行业的了解,?对于金融行业的了解)。
?
第一点和第二点,?也可以比较容易地检测出来。随着经验的增长,?一个工程师可以掌握更广泛,更深入的技术和问题领域的知识。
?
3.???????通用的软件设计思想,??软件工程思想的提高
这一方面就比较虚,什么是好的软件设计思想,?什么是好的软件工程思想??一个工程师开了博客,?转发了很多别人的文章,?这算有思想么??另一个工程师坚持任何设计都要画?UML?图,?这算有思想么?
?
文档评论(0)