1.  选哪一种医生?

作为一个软件工程师, 你觉得自己表现如何? 有没有这样的体会:

看书的时候觉得“技止此耳”,开发项目的时候才觉得实际情况和书上讲的都有一些出入,一些重要的细节书上没有提。我们很多人是边看Asp.net的书, 边开发Asp.net 的项目,这相当于一边看医学书一边动手术……

如果你是病人,你希望你的医生是下面的哪一种呢?

a)     刚刚在书上看到你的病例, 开刀的过程中非常认真严谨, 时不时还要停下来翻书看看……

b)    富有创新意识, 开刀时突然想到一个新技术、 新的刀法,  然后马上在你身上试验……

c)     已经处理过很多类似的病例, 可以一边给你开刀, 一边和护士聊天说昨天晚上的 《非诚勿扰》花絮……

d)    此医生无正式文凭或正式医院的认证, 但是号称有秘方, 可治百病。

事实上,很多软件项目就是用 a)或者 b) 这样的方法搞出来的。当然也有一些人走 d) 这条路。

讨论: ① 你要选哪种类型的医生?② 医生、药剂师、律师和很多行业都有职业考试和职业证书,软件工程师需要有正式的职业证书才能上岗么? 请参考Steve McConnell 的观点[i]。

2.  工程还是艺术

软件开发是一门工程(Engineering),  是一门艺术(Art),还是一门手艺(Craftmanship)? 你如何衡量艺术家? 如何衡量创造能力?

如果是一门工程, 那工程师要守规矩; 如果是一门艺术, 那艺术家要创新。

  • 写诗歌最多的人是谁?
  • 最有创造力的诗人是谁?

一些最有影响力的作家,他们的作品都非常少,甚至只有一本,例如:

  • 《飘》 (Gone with the Wind) 作者 Margaret Mitchell[ii]
  • 《红楼梦》,作者曹雪芹(这一本据说都没写完!)

另外,优秀的作品往往并不符合所有“好”的标准。例如,找出下面这首词中重复的字:

念奴娇 · 赤壁怀古  - 苏轼     大江东去,浪淘尽,   千古风流人物。   故垒西边,人道是,三国周郎赤壁。   乱石崩云,惊涛裂岸,卷起千堆雪。   江山如画,一时多少豪杰。   遥想公谨当年,小乔初嫁了。   羽扇纶巾,谈笑间,樯橹灰飞烟灭。   故国神游,多情应笑我,早生华发。   人生如梦,一樽还酹江月。

出现了三遍的字有: 江,人;   出现了两遍的字有: 国,生,千,故,如。这符合“好词”的标准么?

南宋人俞文豹评价道:

   今人看人文字,未论其大体如何,先且指点重字。

软件设计工程师们在做代码复审的时候,是看“重复字”的多少, 还是程序的艺术性?

这个问题的另一个侧面是,在中国,一个成名的歌唱家往往出现在各种场合,演唱她当年成名的作品,观众们往往显得百听不厌。一个软件工程师就不能这样,在舞台上展现他当年写的“hello world” 程序,或者是1.0 的产品。为啥有这样的区别呢?

3.  绞刑架和职业发展

移山公司的人力资源总监给同学们做了职业发展的演讲,大意是随着软件工具和软件工程理论的发展,开发软件将会越来越容易,软件企业的水平都是CMMi4级以上。软件白领的生活指日可待,金领也不是梦,大家前途无可限量,学软件工程的同学越来越多,就是明证。大家纷纷鼓掌。最后他分享了一个故事:

两个劫匪在亡命的路上看到一副绞刑架,劫匪小弟说,大哥,如果这世界上没有绞刑架,咱们的职业就好干多了。大哥说:你真笨!如果没有了它,这世上做劫匪的人怕是太多,我俩恐怕竞争不过同行,早就饿死了!

请同学们思考这个故事对个人及软件业发展的启示。

4.  案例

程序员小飞原计划三天完成某个任务,现在是第三天的下午,他马上就可以做完。但是在实现功能的过程中, 他越来越意识到自己原来设计中的弱点,他应该采取另一个办法,才能避免后面集成阶段的额外工作。但是他如果现在就改弦更张,那势必要影响自己原来估计的准确性,并且会花费额外的时间,这样他的老板,同事也许会因此看不起他。如果他按部就班地按既定设计完成,最后整个团队还要花更多时间在后续集成上,但那就不是他个人的问题了。怎么办?

5.  成长和代码量的关系

软件工程师的工作就是写代码,相关专业的练习也是以阅读代码,写代码为主,那么代码量和工程师的水平是线性的关系么?

这个问题有人还研究过:

  http://www.techug.com/norris-numbers (翻译)

  http://www.teamten.com/lawrence/writings/norris-numbers.html (原文)

当代码是在2,000行以下,程序员可以用 “写了再改” 的蛮干方法,并且靠记忆力搞定一个程序,但是, 如果你的代码规模达到20,000行,你要用结构化编程(类,模块,API,细节隐藏,面向对象的其它方法,等)来保证程序不变成一团乱麻。  如果代码规模再大一个数量级, 20万,200万呢?

6. 成长和公司的关系

绝大部分的工程师都在某一个企业工作,工程师的成长也和企业的兴衰有很大关系。企业兴旺,工程师也是与有荣焉,很多人觉得是自己的功劳,理所应当提薪升职;企业衰落,很多工程师未必觉得是自己的问题(我的代码很好的,都是经理,市场,老大的问题!); 企业最后要裁员,很多人为了一些补偿和企业产生纠纷。

几个例子:

http://weibo.com/1620213837/BgSGLhdAe

http://www.csdn.net/article/2014-09-29/2821931

http://www.csdn.net/article/2014-10-01/2821945

那么,软件工程师在企业中是劳动密集型的工人么,还是有独创性的专业人士? 他们对软件企业的成败负多大的责任?
7. 对职业梯子 (career ladder) 的思考:
从初学到精通(找到工作)的几个阶段,真遗憾,它不是匀速上升的:
http://blog.jobbole.com/93320/
职业发展的梯子,有什么优缺点:https://blog.usejournal.com/the-software-engineering-job-ladder-4bf70b4c24f3
8. 自知之明
我们经常看到一些IT 专业的同学,同事,或者专家对一些事情进行评论,并且表现得头头是道,他们真的懂多少,他们有自知之明么? 你在刚学习某个语言或技术的时候,是否也有这种现象?
http://www.guokr.com/article/439517/
类似的文章有:
http://stock.jrj.com.cn/2018/11/29101425420269.shtml   或者搜索 “愚昧之巅 开悟之坡”

邓宁·克鲁格心理效应,又称达克效应(Dunning-Kruger effect),简单说就是一种认知偏差,在某些领域能力欠缺的人总有一种虚幻的自我优越感,认为自己比真实情况更加了解并擅长这一领域的事情;但随着知识的完善,他们会意识到自己的不足,通过不断学习,逐步达到真正意义上的优秀。

9. 同学们在上这门课的时候,都是大二,大三, 你的困难和迷茫,别人一定有过。请看看别人怎么学习的,有些是科班,有些是野路子,有些成功,有些失败。 请读完下面所有博客 (读完这些博客你不吃亏,你也不上当!),谈谈自己的感想,你现在的条件比他们如何? 你对计算机的热爱仅仅是口头的么? IT 专业的技术道路, 职业道路,社会道路怎么计划呢?
http://www.cnblogs.com/xiaozhi_5638/p/4485805.html
http://www.cnblogs.com/blog470130547/p/4222870.html   
http://www.cnblogs.com/unruledboy/p/DevCareer.html 
http://coolshell.cn/articles/4561.htmlhttp://blog.csdn.net/haoel/article/details/1688104
http://book.douban.com/subject/4006425/discussion/22802960/       
http://www.cnblogs.com/freeflying/p/4796369.html
http://www.cnblogs.com/geniusvczh/archive/2011/12/16/2290808.html 
http://book.douban.com/subject/4006425/discussion/22803733/
http://lucida.me/blog/on-mobile-developing-3/   
http://www.jianshu.com/p/67a0cf352986  (光口头上说 “热爱” 是远远不够的 )
http://www.cnblogs.com/geniusalex/p/4928713.html (速成的培训班和打基础的大学教育有区别么)
http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html
http://www.cnblogs.com/Tpf386/p/4798437.html 很多同学看不起大学老师按部就班地教课,他们心想,我看视频也能学会的,为何要来听课?请看这个学生学习的经历。

[i]      Professional Software Development, ISBN 0-321-19367-9 作者:Steve McConnell, 出版社:Addison-Wesley

[ii]      参见:http://en.wikipedia.org/wiki/Margaret_Mitchell

现代软件工程 第三章 【软件工程师的成长】练习与讨论相关推荐

  1. 构建之法第三章软件工程师的成长

    1.现在的我以及我的同学们都还不能够被称之为软件工程师,在各个方面我们都有很多的不足,与那些计算机大佬相比我们也就是大菜鸟,所以我会朝着自己的目标努力. ①我会选择C,但是我希望无论他的技术有多么娴熟 ...

  2. 软件工程读书笔记(四)——软件工程师的成长

    昨天依靠一罐红牛撑了一天,在零点到来前五分钟commit了最终代码.脑袋昏沉地走出实验室,去肥西路的蒸小皖吃了一碗牛肉面,在凌晨一点之前,把自己扔到了床上,当然少不了敲开宿舍楼下的门的时候宿管阿姨的一 ...

  3. 构建之法---初识篇(软件工程师的成长和两人合作)

    这周主要看的是第三章和第四章:软件工程师的成长和两人合作,首先衔接上一次的第二章的内容,继续了解如何成为一个合格的软件工程师,当我们真正成为一个合格的软件工程师的时候,我们就应该进行团队合作了,首先从 ...

  4. 【软件体系结构】考点总结 第三章 软件体系结构风格 XJU

    软件体系结构 第三章 软件体系结构风格 前言   本文为XJU本科期间博主根据 <软件体系结构原理.方法与实践>第二版所作的期末考点总结,因为是课堂重点总结,所以有些重要知识点没有涵盖还请 ...

  5. 第三章 软件构造过程与配置管理

    第三章 软件构造过程与配置管理 第三章 软件构造过程与配置管理 Software Development Lifecycle(SDLC)软件开发生命周期 From 0 to 1 从无到有 From 1 ...

  6. 《软件质量保证与测试》学习笔记【第三章 软件测试过程所需技能】

    目录 第三章 软件测试过程所需技能(软件测试计划书) 前言 3.1软件测试计划 1.软件测试计划书的定义 2.软件测试计划的作用 3.如何制定软件测试计划 4.IEEE测试计划模板 第三章 软件测试过 ...

  7. 现代软件工程第三章练习与讨论(补)

    一.现在的我不能够被称之为软件工程师,因为无论是我的技术知识还是理论知识,距离软件工程师还差一定的距离.我会认清我自己,朝着自己的理想奋斗. ①假如我是一名病人的话说,我会选择医生c,但是假如是选择软 ...

  8. 软件工程的先驱 女软件工程师Margaret Hamilton

    谷歌用独特方式纪念登月功臣.女软件工程师Margaret Hamilton 据外媒报道,就在人们在阿波罗11号50周年之际回忆和谈论该次太空任务的一些故事的时候,来自谷歌的软件工程师们认为,有一个特别 ...

  9. 软件工程-第2章 软件生存周期与软件过程

    文章目录 软件工程 第二章 软件生存周期与软件过程 ==2.1 软件生存周期== 2.2 传统软件过程 1.瀑布模型 2.快速原型模型 3.软件演化模型 4.形式化方法模型 5.净室模型 2.3 面向 ...

最新文章

  1. 图像拼接--Coarse-to-fine Seam Estimation for Image Stitching
  2. [Gitlab]使用Webhook实现前端项目自动发布
  3. MySQL - Found option without preceding group in config file
  4. james-2.3.2中的配置
  5. 这三个Offer,你怎么选?
  6. 【转载】飞鸽传书2013官方下载
  7. [工程测量]工程测量个人期中复习笔记
  8. php study 直接显示代码_《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12
  9. 【Flink】HttpClient 报错 I/O SocketException caught when processing request to Connection Reset
  10. TCP协议无边界的问题
  11. 对接接口文档_产品经理所理解的接口
  12. MySQL 时间函数
  13. Oracle 密码过期
  14. 三维绘图plot3命令ezplot3命令三维网格命令mesh命令
  15. AI-统计学习(11)-改进的迭代算法及拟牛顿法
  16. java jcifs ntlm_Java 使用NTLM身份验证使用soap服务
  17. 自动焊锡机加锡时的注意事项
  18. Android 毕业设计高仿抖音(视频类App)(内附源码)
  19. 单片机STC89C52RC实现矩阵键盘(汇编语言版)
  20. 通达信交易接口api_股票量化交易-获取数据的两种方法

热门文章

  1. Nginx正向与反向代理
  2. centos 7 Hadoop2.7.4完全分布式搭建(一)
  3. Network Request Failed
  4. 【SpringCloud】Netflix源码解析之Ribbon:负载均衡策略的定义和实现
  5. 关于样式表setStyleSheet
  6. HDU 5600(瞎搞)
  7. centos下apache安装
  8. 2014-01-01
  9. VHDL 语法小点(1)
  10. 从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程