构建之法-读书交流_第1页
构建之法-读书交流_第2页
构建之法-读书交流_第3页
构建之法-读书交流_第4页
构建之法-读书交流_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程师的成长读书交流1PPT模板下载: 行业PPT模板: 节日PPT模板: PPT素材下载:PPT背景图片: PPT图表下载: 优秀PPT下载: PPT教程: Word教程: Excel教程: 资料下载: PPT课件下载: 范文下载: 试卷下载: 教案下载: PPT论坛: CONTENTSNever put off what you can do today until tomorrowPART ONE 个人能力的衡量与发展.PART TWO职业发展.PART THREE 技能的反面.21个人能力的衡量与发展3软件=程序+软件工程软件工程包括了开发、运营、维护软件的过程中的很多技术、做法、

2、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫”软件开发流程“,软件开发流程的目的是为了提供软件开发、运营、维护的效率,以及提高用户满意度、软件的可靠性和可维护性。软件工程软件企业=软件+商业模式把每个人的工作有序的组织起来,就是团队的流程。每个人的工作质量直接影响最终软件的质量。那么,软件工程师如何衡量、证明自己的能力?NBA球员的数据统计?搬砖?4初级软件工程师的成长具体知识掌握,动手能力积累软件开发相关的知识,提升技术技能自我管理能力、表达交流能力、合作能力、按质按量完成任务的执行力提升职业技能比较虚,什么是好的软件设计思想?对通用的软件设计思想和软件工程思想的理解如游戏

3、、医疗、金融或公安积累问题领域的知识和经验行胜于言,实际的工作成果,是最重要的评价标准实际成果5软件开发工作量和质量的衡量 项目/任务多大?说明项目大小一般使用代码行数(Line Of Code,LOC)来表示;也可以用功能点(Function Point)来表示。 花了多少时间?可使用小时、天、月年表示。一组人所花费的时间可以用(人数*时间)来表示,如10个人*月。 质量如何?交付的代码有多少缺陷?交付有两个定义:在代码完成时,交付给测试人员;在软件最终发布时,交付给客户。 是否按时交付看似简单,其实也有讲究。在团队工作中,稳定、一致的交付时间是衡量一个员工能力的重要方面6团队对个人的期望有

4、效地和其他团队人员交流,从大的技术方向,到看似微小的问题。1、交流就像上面说的“按时交付”。2、说到做到团队要完成任务,很多方面的事情,是否能接受不同的任务并高质量完成?3、接受工作全力以赴地参加,而不是游离于团队之外。4、全力投入团队即使个人能力很强也不可以认为自己不受流程约束。5、按团队流程工作做好准备工作。6、准备成熟的团队成员必须从事实和数据触发,按流程理性的。7、理性的工作72软件工程师的职业发展Action speak louder than words.8职业成长-公司版本微软软件工程师职业等级等级要求SDE(初级软件开发工程师)入门。在学校学到一些技能,尚未在实践中充分锻炼。S

5、DE(中级软件开发工程师)独立。可以写别人交给你的任何东西,不明白时知道去问谁。SeniorSDE(高级软件开发工程师)小组领导。影响212名工程师,或是行政领导;或技术带头人。PricipalSDE(首席软件开发工程师)团队领导。影响10人以上的大团队,成为影响团队成败的关键人。更高职位有:ParterSDE、Distinguished Engineer、Technical Fellow影响力扩大到整个机构,甚至整个业界。9职业成长-自我评估说说CRUD 并不是每个软件工程师都有强烈的愿望或机遇去做最先进、最创新、最具有风险的项目。绝大多数软件工程师都不是技术天才,但即使一般的工程师,做一般

6、的信息系统,就是业界说“CRUD”数据库系统,也需要一些核心技术和许多扩展的知识。 工程师应该在实际工作中不断学习不断成长,根据自己的情况选择在哪个方面追求“专而精”,在哪几个方面达到“知道就好”的水平。10职业成长-自我评估基本需求基本技术扩展技术进一步扩展把数据放到数据库中满足增删改查的需求有网页满足一般用户的查询需求能不断实现新的功能软件团队能按时高质量完成任务要有一定的安全性能满足业务的需求关系数据库模型,数据挖掘,商业智能用户心理,用户交互在不同设备不同场景应用改进软件工具,或构建新的语言提高效率软件团队的绩效评估,团队发展密码学,各种病毒的工作原理对业务领域有深入了解,能洞察行业发

7、展的趋势数据库技术(关系数据库的基本原理和操作)网页技术ASP PHP,数据库绑定及控件编程语言和开发工具(JAVA、C#、Python)每日构建,版本管理,单元测试,项目管理数据库安全,网站安全对业务领域有基本的了解大容量数据库操作、并行、备份用户界面设计,不同浏览器支持程序效能分析,软件重用,面向对象的理论需求分析,敏捷开发等高级软件开发技术计算机网络与数据通讯,操作系统、数据加密进一步了解业务领域知识11职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之规。1.保持高标准,不要受制于破窗理论(broken windows theory)。当你看到不靠谱的设计、糟糕的代码、过时

8、的文档和测试用例的时候,不要想 “既然别人的代码已经这样了,我的代码也可以随便一点啦。” a) 从来没听说过; b) 我就是这样随便过来的; c) 如果有明确要求,我可以做好。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好2. 主动解决问题。当看到不靠谱的设计,糟糕的代码的时候,不要想“可能别人会来管这个事情” ,或者“我下个月发一个邮件让大家讨论一下”。要主动地把问题给解决了。a) 不懂啥是靠谱的设计; b) 随便应付一下即可; c) 如果有明确要求,我可以做好。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好3. 经常给自己充电,身体训练是运动员生活的一部

9、分,学习是软件工程师职业的伴侣。每半年就要了解和学习一些新的相关技术。通过定期分享(面对面的分享,写技术博客等)来确保自己真正掌握了新技术。a) 从来不看书; b) 看了就忘; c) 有时分享。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好12职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之规。4. DRY (Dont Repeat Yourself)别重复。在一个系统中,每一个知识点都应该有一个无异议的、正规的表现形式。a) 从来没听说过; b) 听说过,但是认为意思不大; c) 这要讲场合。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好5.

10、 消除不相关模块之间的影响,在设计模块的时候,要让它们目标明确并单一,能独立存在,没有不明确的外部依赖。a) 从来没听说过; b) 出了问题再说吧; c) 想做,但是不知道怎么衡量效果。 d)能够在多种语言和架构中做到 e) 不但主动做, 还会影响同事一起做好6. 通过快速原型来学习,快速原型的目的是学习,它的价值不在于代码,而在于你通过快速原型学到了什么。a) 从来没听说过; b) 把原型直接用于产品,不然就浪费了; c) 不用原型,一直在产品中直接改。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好7. 设计要接近问题领域,在设计的时候,要接近你目标用户的语言和环境。 a)

11、 从来没听说过; b) 按我的想法设计,用户以后会适应的; c) 大概同意,但是怎么接近用户呢? d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好13职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之规。8. 估计任务所花费的时间,避免意外。在开始工作的时候,要做出时间和潜在影响的估计,并通告相关人士,避免最后关头意外发生。工作中要告知可能的时间变化,事后要总结。a) 做完了,就知道花费了,不用事先估计; b)大概估一下,不必在意时间 c) 如果有明确要求,我可以做好。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好9. 图形界面的工具有它的长处,但是

12、不要忘了命令行工具也可以发挥很高的效率,特别是可以用脚本构建各种组合命令的时候。a) 一直用鼠标和GUI; b) 到时候问牛人; c) 正在学习命令行工具。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好10. 有很多代码编辑器,请把其中一个用得非常熟练。让编辑器可以实现自己的定制,可以用脚本驱动,用起来得心应手。 a) 只用老师教的一个; b) 随意; c) 没有任何定制。 d)会定制,并且分享给其他人 e)还会学习和使用各种编辑器的扩展。11. 理解常用的设计模式,并知道择机而用。设计模式不错,更重要的是知道它的目的是什么,什么时候用,什么时候不用。a) 从来没听说过; b

13、) 模式没用; c) 每写100行程序,我就尽量用一个模式。 d)有实际使用的经验 e) 能用具体代码说明模式的利弊14职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之规。12. 代码版本管理工具是你代码的保障,重要的代码一定要有代码版本管理。 a) 从来没听说过; b) 用QQ,u盘即可; c) 领导要求才用。 d)经常用 e) 不但主动做, 还会影响同事一起做好13. 在debug的时候,不要惊慌,想想导致问题的原因可能在哪里。一步一步地找到原因。要在实践中运用工具,善于分析日志(log),从中找到bug。同时,在自己的代码里面加 log. a) 从来没听说过; b) 只会p

14、rintf; c) 加log 太麻烦,我的代码不会有bug 的。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好14. 重要的接口要用形式化的“合同”来规定。用文档和断言、自动化测试等工具来保证代码的确按照合同来做事,不多也不少。使用断言 (assertion) 或者其他技术来验证代码中的假设,你认为不可能发生的事情在现实世界中往往会发生。 a) 从来没听说过; b) 太麻烦,不用; c) 想用,但没有时间。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好15. 只在异常的情况下才使用异常 (Exception), 不加判断地过多使用异常,会降低代码的效率和可维

15、护性。记住不要用异常来传递正常的信息。a) 从来没听说过; b)抓住所有异常 c) 如果有明确要求,我可以做好。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好15职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之规。16. 善始善终。如果某个函数申请了空间或其他资源,这个函数负责释放这些资源。a) 从来没听说过; b) 随缘; c) 有时这样做。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好17. 当你的软件有多种技术结合在一起的时候,要采用松耦合的配置模式,而不是要把所有代码都混到一起。 a) 从来没听说过; b) 没有实践的机会; c) 代码

16、都在一起比较好管理。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好18. 把常用模块的功能打造成独立的服务,通过良好的界面 (API) 来调用不同的服务。a) 从来没听说过; b)拷贝代码过来用也可以 c) 如果有明确要求,我可以做好。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好19. 在设计中考虑对并行的支持,这样你的API 设计会比较容易扩展。a) 从来没听说过; b) 并行不会出错的; c) 任何代码都应支持并行。 d)考虑在适当的层次支持并行 e) 不但主动做, 还会影响同事一起做好16职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之

17、规。20. 在设计中把展现模块 (View) 和实体模块 (Model) 分开,这样你的设计会更有灵活性。 a) 代码都在一起比较好改; b) 随缘啦; c) 没搞清楚啥是V,啥是M。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好21. 重视算法的效率,在开始写之前就要估计好算法的效率是哪一个数量级上的(big-O)。a) 从来没听说过; b) 我的数据量不大,无所谓; c) 不会有效率问题的,现在CPU 都快了。 d)主动测试程序效率,以验证估算 e) 不但主动做, 还会影响同事一起做好22. 在实际的运行场景中测试你的算法,不要停留在数学分析层面。有时候一个小小的实际因素

18、 (是否支持大小写敏感的排序,数据是否支持多语言)会导致算法效率的巨大变化。a) 从来没听说过; b)想用,但不知道工具 c) 主要靠肉眼观察算法效率。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好23. 经常重构代码,同时注意要解决问题的根源。a) 从来没听说过; b) 任何修改都可以叫重构; c) 每天应该重构两次。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好17职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之规。24. 在开始设计的时候就要考虑如何测试 ,如果代码出了问题,有log 来辅助debug 么? 尽早测试,经常测试,争取实现自

19、动化测试,争取每一个构建的版本都能有某些自动测试。a) 从来没听说过; b) 我的代码不会出问题的; c) 项目没有安排时间,我也没有提这事。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好25. 代码生成工具可以生成一堆一堆的代码,在正式使用它们之前,要确保你能理解它们,并且必要的时候能debug 这些代码。a) 从来没听说过; b) 从来不看那些代码; c) 那些代码没有bug。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好26. 和一个实际的用户一起使用软件,获得第一手反馈。 a) 从来没听说过; b) 用户太蠢,不值得听反馈; c) 想做但是没有机会。

20、 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好27. 在自动测试的时候,要有意引地入bug,来保证自动测试的确能捕获这些错误。a) 没听说过; b)不必这么麻烦; c) 如果有明确要求,我可以做好。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好18职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之规。28. 如果测试没有做完,那么开发也没有做完。a) 从来没听说过; b) 签入代码,就是做完了; c) 。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好29. 适当地追求代码覆盖率:每一行的代码都覆盖了,但是程序未必正确。要确保程序

21、覆盖了不同的程序状态和各种组合条件。a) 从来没听说过; b) 覆盖20% 就好了; c) 要覆盖至少60%。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好30. 如果团队成员碰到了一个有普遍意义的bug, 应该建立一个测试用例抓住以后将会出现的类似的bug。 a) 从来没听说过; b) 每个bug都是特殊的; c)测试用例不值得加 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好31. 测试:多走一步,多考虑一层。如果程序运行了一星期不退出,如果用户的屏幕分辨率再提高一个档次,这个程序会出什么可能的错误? a) 从来没听说过; b) 如果有问题,用户会报告的,

22、我们不用测这些; c) 如果有明确要求,我可以做好。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好19职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之规。32. (带领团队)了解用户的期望值,稍稍超出用户的期望值,让用户有惊喜。 a) 从来没听说过; b) 我们决定用户的期望; c) 如果有明确要求,我可以做好。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好33.(带领团队) 不要停留在被动地收集需求,要挖掘需求。真正的需求可能被过时的假设、对用户的误解或其他因素所遮挡。a) 从来没听说过; b) 用户不说的,我们不做; c) 如果有明确要求,

23、我可以做好。 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好34. (带领团队)把所有的术语和项目相关的名词、缩写等都放在一个地方。 a) 从来没听说过; b) 都记在我脑子里; c)大家看代码就好 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好35. (带领团队)不要依赖于某个人的手动操作,而是要把这些操作都做成有相关权限的人士都能运行的脚本。这样就不会出现因为某人休假而项目被卡住的情况。a) 从来没听说过; b) 我们没有休假的,没关系; c)出了问题再说 d) 一直主动这样做 e) 不但主动做, 还会影响同事一起做好20职业成长-自我评估人的能力和成长路径都是有多种选择,没有一定之规。36. (带领团队)要让重用变得更容易。一个软件团队要创造一种环境,让大家有轻松的心态来尝试各种想法 (例如,模块的重用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论