软件工程2017第1次作业

截止时间:2017-12-17 23:00

以下内容参考武汉大学软件工程课程的博客

作业说明:

  • 1中要求建立自己的技术博客。
  • 阅读2.1博客索引部分的全部博客内容 (特别注明暂时不读的除外)。针对2.2回答问题3分析软件中的问题完成一篇随笔。博客随笔排版要求请参见 http://www.cnblogs.com/ChildishChange/p/7282849.html
  • 同时我们也希望能通过这次博客作业让你建立这样一个印象:作业不是交上去就完了,而是一个活着的文档,会有各种评论和修改。
  • 本次作业须独立完成。总分为10分,评分规则如下:
    • 迟交得0分,以随笔提交时间为准。迟交2周以上倒扣10分。
    • 言之有物,按照提示的模板来写 (7分)
    • 能回答助教与老师的点评,并改进 (3分)

1、建立博客,登记信息

建立个人技术博客,在博客园cnblogs.com上注册开设博客。请修改默认头像。
github创建账号,以后提交代码要同时给出github链接。

2、阅读和思考

首先阅读课本《构建之法》第1章,以及

2.1 博客索引

<前言>为什么要读/写博客

"他山之石,可以攻玉”

“以人为鉴,可以明得失”

“你在学校里的困难和迷茫,别人一定有过”

希望通过阅读这些博客与撰写自己的博客,你能够有以下一点或多点收获:

  • 了解到别人的成功和失败,从经历相同的人身上获得经验、警示或者心理上的支持
  • 吸收前人的经验解答自己曾经有过的疑惑
  • 提出新的疑问
  • 坚定自己下一步的发展或为自己的进一步发展给出新的可能性

总结起来就是:
读别人的故事,扩大自己的眼界;结合他人的经历与观点对自己进行一个回顾式的剖析,而且最终能够怀着希望继续前行。

OK,现在切入正题......

研一的同学们,你们觉得在大学里,到教室来听课有意思么?请看:你为何要来上课并且认真参与

你在学校里的困难和迷茫,别人一定有过。请看看别人怎么学习的,有些是科班,有些是野路子,有些成功,有些失败。请阅读完“一、1”中的题目,有选择地阅读下方的博客或者整个读完 (读这些博客你不吃亏,你也不上当!)

一流的大学:

N. 你也可以把你的课堂生活过得像这样(第一流的本科教学课堂该是什么样?)

O. 美国读研期间的一些计算机课程作业(和你上过的专业课有什么不同?)

new:你在大学中体验到了哪种师生关系 (你希望在这门课中采用哪种师生关系?)

new:世界一流大学怎么教软件工程 (这种方式是你喜欢的吗?)

科班出身:

A. https://book.douban.com/subject/4006425/discussion/22803733/

(把每天把要做的事情分成ABCD四类:A-紧迫且重要;B-重要不紧迫;C-紧迫不重要;D-不重要不紧迫。你是否有类似的习惯?)

B. https://book.douban.com/subject/4006425/discussion/22803961/

(你是否也觉得自己是科班,但没学懂计算机?)

C. https://book.douban.com/subject/4006425/discussion/22802960/

(把每天胡思乱想的东西记在一个笔记本上,作为思维快照,并常常翻回去自省,看看过去和现在的变化。这样的习惯呢?)

以上三篇来自《IT小小鸟的故事》https://book.douban.com/subject/4006425/

D. https://www.cnblogs.com/xiaozhi_5638/p/4485805.html

(偏科生自学摸索的道路。实习经验对应届生重要吗?)

E. https://www.cnblogs.com/geniusalex/p/4928713.html

(速成的培训班和打基础的大学教育有区别么,你是否对大学的基础学科存在的必要性有疑问?)

非科班出身:

F. http://www.cnblogs.com/Tpf386/p/4798437.html

(很多同学看不起大学老师按部就班地教课,他们心想,我看视频也能学会的,为何要来听课?请看这个学生学习的经历)

G. https://news.cnblogs.com/n/531362/

(半路出家,认真学习,对自己狠心,不断在实践中进步)

H. https://www.cnblogs.com/freeflying/p/4796369.html

(文科生转编程与他对大学教育的批判)

大佬的博客:

I. https://www.cnblogs.com/unruledboy/p/DevCareer.html

(技术栈和大佬的爆栈之旅)

J. https://www.cnblogs.com/unruledboy/p/DevLif.html

(大佬在职场中的摸爬滚打)

K. http://blog.csdn.net/haoel/article/details/1688104

(大佬给出的职业规划建议)

L. http://coolshell.cn/articles/4561.html

(热情、能力、选择)

M. https://www.cnblogs.com/geniusvczh/archive/2011/12/16/2290808.html

(大佬的成长史与如何进入微软亚研院,他的知乎:https://www.zhihu.com/people/excited-vczh/answers

补充阅读:

P. 不要轻易在简历上写我热爱编程,我热爱学习(你对计算机的热情是怎样的?)

编程人生,长篇连载(文章较长,可以暂时不看):

Q. https://www.cnblogs.com/blog470130547/category/629368.html

R. https://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html

2.2 回答问题

读完以上博客后,结合个人经历写一篇博客谈谈自己的感想(请在博客中加上原文的链接,说明想法来自哪篇博客),回答以下的必答问题并带有选择地回答其他问题。

(考虑到大家阅读博客的精力有限,这里将博客根据内容进行了简单的分类与推荐,并按照推荐排序)

第一部分:结缘计算机

推荐博客:博客I

  1. 计算机是你喜欢的领域吗?是你擅长的领域吗?
  2. 你对计算机的热爱是怎样的?仅仅是口头的吗?
第二部分:学习生活

推荐博客:博客M博客C博客B博客D博客H博客E博客F

  1. 你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?
  2. 迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。
  3. 科班出身和北大青鸟有什么区别?
  4. 速成的培训班和打基础的大学教育还有mooc之间有区别吗?
  5. 学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的专业有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
第三部分:未来规划

推荐博客:博客K博客L博客A

  1. 你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
  2. 你对于实现自己的梦想已经做了或者计划做什么样的准备?
第四部分:课程期望
  1. 你对这门课的期望是什么?你打算平均每周拿出多少个小时用在这门课上?你愿意为了一个你感兴趣的项目、或得到实战锻炼而付出更多时间和精力(包括熬夜)吗?
随笔示例

博客D[1]的作者认为“企业要的应届毕业生就是一张白纸,这些白纸吸墨能力的高低决定你能否找到好的工作,而吸墨能力高则主要是基本功扎实、自学能力强的体现,并非我一直以为的丰富的‘实习经验’。”,我对此有一个问题:实习经验对本科生是否重要?

对于这个问题:首先,我同意作者强调的“基本功扎实、自学能力强”。同时,我也经过学长了解到部分公司,如依图科技的CEO也认为:“我不需要你有什么项目经验,本科生的经验是相当有限的”。但是,大多数企业招聘时都会强调“有过xx开发经历者优先”。另外,从本科生个人发展的角度考虑:博客K[2]的作者认为“在大学的时候尽量多地进入公司参与实际工作,一方面积累工作经验,另一方面,提前认识工作和自己,以便毕业时更准确地把握自己的方

所以,实习经验确实是很有用的,不管是对于应聘还是个人的发展。但是企业招聘看重的真的是“实习经验”吗?

博客M[3]的作者就在博客中提到了他曾经完成的大小项目,并打趣地说他能进微软是因为他把这些经历写进了简历。所以综合上述观点,我认为,企业在面试时看重的并不是全实习经验,而是实践能力,实践能力自然也就包括了一开始提到的“自学能力强”等。

但是我还是有疑问:“完成一个类C文法的编译器”这样的作业的含金量有多少呢?

[1] https://www.cnblogs.com/xiaozhi_5638/p/4485805.html

[2] http://blog.csdn.net/haoel/article/details/1688104

[3] https://www.cnblogs.com/geniusvczh/archive/2011/12/16/2290808.html

其他回答示例

一篇满分随笔


3、分析软件

软件有很多种: ShrinkWrap(在包装盒子里面的软件)、Web APP ( 基于网页的软件)、Internal Software (企业或学校或某组织内部的软件)、Games(游戏)、Mobile Apps(手机应用)、Operating Systems(操作系统)、Tools(工具软件),选取三种软件,请分析它们各自的特点。

  1. 这些软件的开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户的现金么?还是别的?

  2. 你个人第一次用此类软件是什么时候,你当时多大,具体在什么学校读几年级,老师是谁,同桌叫啥?软件是如何到你手里的?例如:邮购,下载,互相拷贝,从应用商店购买,…….

  3. 我们知道有些软件是收费的,有些是“免费” 的, 那么,软件公司为何会给你免费使用这个软件呢? 写这个软件的工程师们,他们的工资如果不从你(用户)这里来, 从哪里来呢? 目前你们当地的软件工程师的工资大约是多少,请给出尽量详细的分析,精确到年收入多少万元人民币。

  4. 你是如何学会用这软件的?它给你什么好处,坏处? 这些软件是如何处理 bug 的?  如何更新新版本的?  你估计软件团队更新一个主要版本花了多少 人月? 请写上人月的定义. 如果你们宿舍(或者你和另外三四个同学)要做同样水平的软件,请估计你们需要多少时间?

  5. 同一类型的软件之间是如何竞争的?你现在还用它么,你为何选择这个产品,而不是它的竞争对手?

  6. 5年后, 这种软件运行的硬件会有什么变化, 软件再过 5 年还会存在么,为什么?

  7. 列举你在使用上述软件的时候观察到的 “特殊”现象,它们和硬件有什么不同?  这些能说明软件的某些本质特性么?

posted on 2017-12-12 20:40  何智勇_Software_Eng  阅读(262)  评论(1编辑  收藏  举报

导航