现代软件工程-构建之法---第三章 练习与讨论

1.选哪一种医生?

(1).如果是我的话,我会选择C类型的医生。因为c类型的医生比较靠谱,首先他的从业经验比较丰富,遇见过很多类似的病历,对病情包括手术比较有把握,对患者可能会比较了解;还有就是他可以一边开刀一边跟别人聊天,也足以说明他对手术的态度比较轻松,给人以胸有成足的感觉。

(2).职业资格是对从事某一职业所必备的学识、技术和能力的基本要求。职业资格包括从业资格和执业资格。从业资格是指从事某一专业(工种)学识、技术和能力的起点标准。执业资格是指政府对某些责任较大,社会通用性强,关系公共利益的专业(工种)实行准入控制,是依法独立开业或从事某一特定专业(工种)学识、技术和能力的必备标准。

       我认为,职业考试和职业证书并不是衡量一个人是否可以从业上岗的唯一标准,当然职业考试和证书在一定程度上可以说明一个人具有该方面的知识和能力,但证书与上岗的关系并不是绝对的。软件工程师并不是只可以拥有正式的职业证书才可以上岗的,只要软件工程师有比较强的专业知识与能力,有职业道德操守就可以上岗就可以工作。

2.工程还是艺术

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

     我对工程的定义是:在有限资源内, 实现一个预期目标, 且尽量接近(若达不到) 或超越(若达到了)这个目标。

     我对艺术品的定义是:在无限的资源内, 把一个东西不断趋近于想象中的完美。

       我对手艺的定义是:即是用手工从事的艺术或技艺,工匠们靠着常年熟练的功夫,制作出各式各样的艺术品、器物、和装饰品。

       无论是把软件开发看作艺术、手艺、生意、工程,还是把它看成科学,主张不同的开发者都觉得自己的理由非常充分。只要去听一听这些支持各自论点的理由,你就会发现,其中许多理由都能说得通,虽然某些理由可能比另外一些理由更加充分,但总的来说,每条理由都或多或少能够成立。
       另外一项较大的分歧在于软件工艺这个名称本身。有些人完全排斥这个词。他们认为,把富于创新精神且极速变化的软件行业和传统的手工业联系起来是没有意义的。这种想法确实有道理。

       衡量艺术家:艺术即是怎么样的审视美和对美的提炼创造 这里有两层含义 所谓“艺术标准”那么相应的应该说是在特定的艺术发展史中某某流派风格的标准 因为每一个历史时期对艺术的审视角度是不一样的 但要概称为一句 那么我认为应该是:能引导人们对于美的思考和感受在深度上的某种标准。艺术不必只是单纯的服务于视网膜的,艺术可以拿来直接表达思想,传达观念。艺术不应该脱离生活,不应该高高在上,艺术本身就是生活。

       衡量创造能力:可以从这几方面衡量:1)、感知的能力。创新能力最初体现在敏锐的观察力。2)、变通的能力。不拘于定理。3)、沟通的能力。交流中出现的思想火花。4)、前瞻的能力。5)、诊断问题并找出解决方法的能力。6)、利用信息的能力。

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

       不同作品评审的要求不同,“重复字”不能作为所有作品的衡量标准。在一个程序中,代码不重复使用是不现实的事情,而在编程过程中,有些代码合理重复,对整个程序有积极作用,那它就是具有艺术性的。所以,代发复审的标准不能仅仅用这几个方面来衡量规定。

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

        一个软件工程师不能在舞台上展现他当年写的“hello world” 程序,或者是1.0 的产品的原因,个人认为是因为,软件开发虽然是一门艺术,但是它却不仅仅是一门艺术。虽然经典永远是经典,但是软件开发它自身会有一个更新迭代的过程。而且软件工程师与歌唱家并不是相同的职业,不能在同一种情况下去要求不同性质的事物会出现相同的结果,我们需要辩证的去看待这个事情。

3、绞刑架和职业发展

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

       这个寓言故事对于个人,是鼓励个人要不怕困难勇敢进取。有了困难,才能拦阻与淘汰掉一切不如我们的同行竞争者。有时候,阻碍对于个人而言不是仇敌,而是恩人。

       对于软件业的发展来说,首先这个故事中的绞刑架到底是指什么,是代表软件工程理论规范,还是软件开发过程中的困难。有了软件开发理论规范的约束,会使软件开发的标准语流程变得正规,规范的程序员可以得到更好的发展,软件的质量达到一个更好的提升,对于同行的竞争力变大。同样,有了困难,才能促进我们的发展。

4、案例

       个人认为小飞应该更改设计,向老板、同事解释、承认自己的错误,主动承担责任。因为一个项目的开发首先是团队合作,然后才是个人技术的展示。要将团队利益放在首位,从大局出发来考虑事情。

5、成长和代码量的关系

       程序员Norris发现了一个基本常数,提出了程序员瓶颈这样的概念。通过阅读这段文字,我个人的体会为程序员的水平与代码量之间并不是一个线性的关系。可以说,代码量的积累对工程师的水平的提高一定有关系,并且工程师的水平的提高一定有代码量积累的参与。就好比量变是质变的必要准备,质变是量变的必然结果,质变不仅可以完成量变,而且为新的量变开辟道路,并且总的量变中有部分质变,质变中有量变的特征。所以工程师的水平与代码量的关系应该与质变和量变一样,是一种阶梯式的前进与螺旋式的上升的关系。

6、学什么、怎么学,核心竞争力是什么?

(1)、有效的学习方法:

    1)、掌握学习方法:多看书、多看技术博客、多上网搜、多问社会上的人;2)、每日目标:程序员是个技术活儿,光靠脑子也是不行的,不要连续几天不动手编码,因此要给自己定下目标,什么时间内完成什么样的规模的工程;3)、工具:要有自己的个人网站;要有github账号等;要有技术博客CSDN、51CTO、eoe等;4)、学会以一反三,一体多解;5)、多思考,多总结,少说假大空的话;6)、定下长远目标。

(2)、我认为打字快不一定写程序快。打字只是一种单纯的体力活动或者技巧,打字的速度是可以通过练习去提高的;而写程序是一种创造活动,写程序需要程序员去动脑筋思考程序的写法。

(3)、语言:对于服务端开发来说,Java、PHP或者Python都是不错的。前端来说,Web前端也可以。

       编辑器: 编辑器Sublime Text 2的评分最高,随着最新版本的发布,随着跨平台特性,速度和使用的提升,Sublime Text 2将越来越受大家欢迎。

(4)、我们这个行业的核心竞争力是什么?

       我认为有以下4点:沟通能力;学习能力;全局眼光和行业洞察力;创新能力。

7、各式各样的工程师

       我认为,就算一个人的身体存在缺陷,但这些仍然无法阻止他成为一名合格甚至是优秀的工程师。打败你的从来都不是事情有多么困难,而是你自己退缩的想法,只要你想去做,你会努力克服很多外在的因素和客观不利的条件,就像这位盲人工程师一样,虽然他失去了视力,但是他仍可以去做编程工作,而且一做就是十几年。

8、对于职业梯子的思考

       职业梯含义:它是决定组织内部人员晋升的不同条件,方式和程序的政策组合。

       职业梯的宽度:要求员工在多个职能部分,多个工作环境轮换工作的职业梯为宽职业梯,它适应对员工高度综合能力的要求,否则只要求员工具备有限专业经验和能力的需要。

       职业梯的速度:根据员工能力和成绩的不同,职业梯设置可以有快慢之分。

9、自知之明

       并非所有人都拥有自知之明,大多数人拥有无知的自信,并且知识越少,越容易高估自己。我在刚学习C语言时也有过类似现象,认为自己对某个知识点了解的已经很透彻了,但是到应用的时候还是会出错误。

          

     

 

猜你喜欢

转载自www.cnblogs.com/boxianxian/p/9193780.html