现代软件工程 第一周博客作业

时间:2021-04-01 21:54:28

个人介绍

       大家好,我是来自西安交通大学自动化专业的大四学生,很高兴能和大家在一起学习。说到优势,我觉得自己确实没有什么拿得出手的过人之处。不过不谈优势还可以谈爱好嘛,平时我比较喜欢踢球、看球。我认为足球不仅可以增强个人的勇气和斗志,它更是一项讲究纪律性和团队精神的运动。

现状、经验和计划

(1)在你一生中身体最健康,精力最旺盛的时候,能在大学全职学习和研究,这是少有的机会。请说明一下,你是怎么选择了这个专业的?

        填报志愿的时候,我是怀着献身于祖国机器人行业的心态选择的自动化专业,那时我以为钢铁生命会是这个社会的未来,不过进入大学以后,我感觉还是人工智能这个概念才是学术界和工业两界的宠儿。我不大喜欢太过抽象和虚无的东西,所以我选择了工科专业,希望能做一个身怀技术可以解决实际问题的工程师,我认为工程师就应该投身社会最热门的领域,急社会之所急,解决社会和人民提出的问题,所以我对投身到人工智能领域没什么犹豫。能获得来MSRA联培的机会,我感到十分幸运,MSRA学术氛围浓厚,而且聚焦于解决实际问题,非常符合我的学术理想。自动化专业的人通常号称软硬件兼修,文武双全,很惭愧,我个人在软硬件方面的造诣都很浅薄,尤其是自己的编程能力各方面离一个合格的IT专业毕业生差距还是蛮大的,希望能通过不断地学习尽快迎头赶上。

Skills 课前评估 课后预期
Programming: Comprehension 2 6
Programming: Design 1 4
Programming: Implementation 2 5
Programming: Communication 1 5
Programming: BigData 1 5
Personal Software Process:个人源码管理 1 6
  • 程序的理解方面,可以通过平时多读代码,仔细推敲来训练自己,用量变催生质变;
  • 程序的架构设计和实现是我最想要提高的,我觉得自己编程理念和编程习惯不太成体系,下一步计划通过阅读专业书籍和项目的实践来提高;
  • 剩下的三个能力是我认为是一个合格的科研工作者应该具备的基本技能,我希望可以通过理解概念、动手实践和向同学老师请教等途径提高。

(2)博客的心得:

 a)你为何要来上课并且认真参与

     我对这篇博客里的一部分观点深有同感,认真听讲确实是一种很了不起的能力。

     我认为能够做到始终认真听讲的人至少有以下几个优点:首先,他能全程跟随老师的思路,说明他的专注力很强;其次,能够积极参与老师的课堂活动,说明他备课认真,对待知识很尊重,对自己十分自信;最后,课上认真听讲的人最懂得利用时间,他的课下时间一定更加精彩而有意义。我觉得这种对待知识的态度和学习的习惯是我需要学习的。

      至于文章中所说的课程有用无用不是一个大学生的格局能判定的我不是特别认同,我觉得如果一门课老师不能跟学生说明白为什么要开这门课,学生们到毕业了还不知道这门课有什么用,那这门课是很可悲的,即使考到了高分,短时间内掌握了规律,这门课对我们以后的发展也不会有什么帮助。

c)在工作中,我们要引用文献,参考别人的资料,在别人工作的基础上继续开发, 这些活动和抄袭、剽窃的区别是什么?

     我认为二者的区别在于动机和结果。

     如果引用别人的文献和工作是为了支撑自己的论点,简化自己不必要的工作,并且工作的结果有所创新,并且说明了被引用人的贡献,这叫做引用;

     如果引用别人的工作是为了复制别人的工作以达到自己的目的,没有创新,没有自己的东西,就算做抄袭。

(3)未来计划

      我目前的想法是未来从事学术研究,在科研的道路上走得越远越好。因为创造新东西总比学习新东西有意思,做自己喜欢的事情总比做不得不做的事情快乐。

      相比于不从事学术研究的同学,我求学的时间要更长,会更晚一点实现经济独立;但我以后从事自己喜欢的领域的概率也会变大,事业的稳定性也会更高。

      要成为一名合格的科研工作者,我现在还差得很远,我希望在本学期能够在mentor的指导下,掌握科学研究的方法,提高自己的学术素质和工程实践水平,为以后的博士生涯打下坚实的基础。

(4)因为是非CS本科出身,我对自己的代码量和编程水平并不是十分自信,因此对软件工程这门课我是怀着敬畏和胆怯的。我希望能通过这门课了解到真正的程序员是怎样工作的,我离写出专业的代码差距还有多大,我也非常期待学习到各位同学和老师们规范高效的编程习惯和严谨科学的程序架构思想。

       我打算利用上课时间和周末时间来学习这门课程,时间长短以我能达到这门课的目标为准。

(5)我选读了《达内,青鸟!你们使多少花朵误入歧途!》这篇文章,读完之后我感到很高兴。《构建之法》16章也提到,一般民众乃至技术人员都不喜欢新东西,我辛辛苦苦地考上大学,学习了两年数学和编程基础,才摸到编程的大门,培训学院几个月的时间就能让一群小白达到和我一样的水准,我对这种创新教学深感不安。我很庆幸这种创新方式不那么奏效,并不会让我长久的努力变得可笑,同时我也对自己的专业基础更加有信心,更能沉下心来打磨自己的工程能力。

 

提有质量的问题

问题一:P45 第3章

那么,初级软件工程师如何成长呢?我认为有以下几种成长:

……

3.对通用的软件设计思想和软件工程思想的理解

      我对软件设计思想以及软件工程思想的概念并不是特别清楚,也不太明白怎样通过学习好的思想来提高自己。第5章“团队和流程”中提到的像瀑布模型、RUP等开发流程算不算是软件工程思想呢,第11章提到的分析设计方法算是软件设计思想吗?我读完后感觉不同的开发流程、设计方法适用的工程场景是不同的,最适合项目的流程似乎更符合“更好的思想”这个概念。那么通用一词又如何理解?如果是指放之四海而皆准的设计思想,我觉得似乎有点“银弹”倾向;如果是指大家常用的各类思想,不分场景和资源约束的比较两种思想的好坏,我觉得没什么意义。   而且我还觉得像Team Software Process这种开发原则也可以称之为思想,这种思想是需要我们遵守并且努力达成的目标。最后我对于怎么评价一个工程师有没有思想、境界的高与低仍然有所迷惑。

问题二:p53 第3章

3.3.1 职业发展——考级之路

      我觉得协会或是企业组织的执业资格考试一定程度上代表了行业对一个程序员的认同标准,那么这种考试是不是真正的反映了程序开发人员的基本素质呢,企业真的要求我们要有这种素质吗?除此之外,我还有别的途径可以准确地衡量自己的编程水平吗?

问题三: p94 第5章

5.2.8  爵士乐模式

……

这看上去跟“敏捷的开发模式”有点类似。

     阅读过爵士乐模式的特点,我感觉这种模式和敏捷流程的相似度几乎没有,不知道类似点在哪里。由于在网上没有搜索到应用这种模式的实例,我根据自己的理解谈谈对这两种模式的看法。从特点上来看,爵士乐演奏时没有谱子,而敏捷流程虽然讲究保持简明,但是仍然坚持 Product Backlog、Sprint Backlog、Sprint三步走的策略来更新迭代开发过程,是一种非常注重策略的流程;爵士乐没有现场指挥,成员们放飞天性,但敏捷流程是以有进取心的人为核心的团队,讲究自我管理,第六章6.3节也强调了一个好的Scrum Master对于项目成功的关键;爵士乐的模式,“架构师”吹出主题,其余人员各自发挥,最后”架构师“回应主题,而敏捷开发十分注重面对面的交流和工作进度的共享,讲究互相帮助,纪律性远超爵士乐模式。

      引用迈尔斯·戴维的对爵士乐模式的评价:

强调个性化的表达、强有力的互动,对变化的内容给予有创意的回应

     我觉得虽然都强调应对变化,爵士乐模式似乎只是发挥了成员的主观能动性,期待让平时的编曲训练风格在最终的作品中体现出来。而敏捷流程更像一个心意相通的乐队,在指挥的带领下,有效率地应付既定乐谱中变化剧烈的节奏和旋律。不知道老师认为的“类似”应该怎样理解。

问题四: p106 第5章

3.不同的团队模式如何影响团队绩效的评估?

       这个是练习与讨论的第三题,我觉得很有启发性,我由此联想到,在项目过程中,出于效率和质量的考量,项目的不同成员乐意在不同模式下工作,不计较分工和角色的互换,大家的地位是平等的,那么在这样的团队氛围中,怎么衡量项目中两个人的贡献度大小呢?如果功劳分配不合理的话,我认为会影响团队的和谐,管理层都是怎么解决这样的问题呢?

问题五: p347 第16章

       “迷思之五”中物理学家伯纳斯发明WWW协议、杰克马创建阿里的例子我认为不足以支持“领域专家没有领域外的创新者有创意”这个观点,我认为伯纳斯背靠公司,有相应领域的资深专家同事协助是他发明此协议的重要原因,行业的门外汉一天能想一百个点子,被有专业背景的同事验证可行性后做出来,这好象不足以说明伯纳斯的创新能力有多强。马云在创建阿里巴巴之前已经有了一定的电子商务运营经验,他的成功我相信和他在商界锻炼出来的敏锐洞察力和战略眼光有更大的关系,而非他善于在行业外创新的能力。


 

《构建之法》第三版 p233 “移山公司开发流程图”有一处判断框画得不太准确,判断条件没加问号,出口处缺少否定词

现代软件工程 第一周博客作业