截止时间: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
- 计算机是你喜欢的领域吗?是你擅长的领域吗?
- 你对计算机的热爱是怎样的?仅仅是口头的吗?
第二部分:学习生活
推荐博客:博客M,博客C,博客B,博客D,博客H,博客E,博客F
- 你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?
- 迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。
- 科班出身和北大青鸟有什么区别?
- 速成的培训班和打基础的大学教育还有mooc之间有区别吗?
- 学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的专业有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
第三部分:未来规划
- 你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
- 你对于实现自己的梦想已经做了或者计划做什么样的准备?
第四部分:课程期望
- 你对这门课的期望是什么?你打算平均每周拿出多少个小时用在这门课上?你愿意为了一个你感兴趣的项目、或得到实战锻炼而付出更多时间和精力(包括熬夜)吗?
随笔示例
博客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(工具软件),选取三种软件,请分析它们各自的特点。
这些软件的开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户的现金么?还是别的?
你个人第一次用此类软件是什么时候,你当时多大,具体在什么学校读几年级,老师是谁,同桌叫啥?软件是如何到你手里的?例如:邮购,下载,互相拷贝,从应用商店购买,…….
我们知道有些软件是收费的,有些是“免费” 的, 那么,软件公司为何会给你免费使用这个软件呢? 写这个软件的工程师们,他们的工资如果不从你(用户)这里来, 从哪里来呢? 目前你们当地的软件工程师的工资大约是多少,请给出尽量详细的分析,精确到年收入多少万元人民币。
你是如何学会用这软件的?它给你什么好处,坏处? 这些软件是如何处理 bug 的? 如何更新新版本的? 你估计软件团队更新一个主要版本花了多少 人月? 请写上人月的定义. 如果你们宿舍(或者你和另外三四个同学)要做同样水平的软件,请估计你们需要多少时间?
同一类型的软件之间是如何竞争的?你现在还用它么,你为何选择这个产品,而不是它的竞争对手?
5年后, 这种软件运行的硬件会有什么变化, 软件再过 5 年还会存在么,为什么?
列举你在使用上述软件的时候观察到的 “特殊”现象,它们和硬件有什么不同? 这些能说明软件的某些本质特性么?