现代软件工程 -- 第一周 -- 介绍自己

1.自我介绍

hello,大家好,一直以来都想写博客来提升自己,但是比较懒,所以迟迟不想去开通博客。更重要的是,我总是喜欢放大问题,总要等到一个天气晴朗、风和日丽、心情大好的时候,穿上一身'正装'、打扮成大人模样,非常正式的去开通一下博客,写一些技术流的东西。可是这样的时机我并没有等到。可能大家已经觉得这有点拖延症,是的,没错,每次都会清醒地认识到自己有拖延症,但还那样拖着。但好在自己好胜心比较重,别人要是做了什么事,我要知道了,那我就会奋起直追,一周。两周,一年,两年的去超越,但同时也有可能和别人一样去堕落。再剖析一下自己,我有个室友,在考研,他很是下血本,考研班考研资料各种备齐,人也很勤奋,家人也支持读博,可是他的报考志愿是专硕,主要的原因是因为他认为他可能考不上学硕,放大了好多困难。这就是我一直以来回避的一个问题,居安思危,我并不知道这是不是好事,我有时候会刻意把某件事说的很难,以至于我把事情完成了没有什么成就感,完不成倒是挺会安慰自己的。最后再说一个,我一直以为自己自学能力很强,直到现在我才明白,还是好胜心的事,必须有人比我自学能力强,还不能强太多,他能自学一件事我就能。最后,值得一提的是,自从学会了游泳,除了体测前后一周,每周都会去游泳,这件事我希望一直坚持下去,最好也能坚持
学英语。

2. 现状、经验和计划

2.1技能

我是西安交通大学自动化系的,因为我们学校买了matlab版权,课程作业一贯以matlab为主,但我还是比较喜欢c/c++/c#/python,我就简单说一下我目前的水平,课后想要达到的水平,以及怎么做,怎么做呢,想归想,还要结合一下老师的课程作业吧。

skill 课前评估(0-9) 课后想要达到的水平(0-9)
Programming Overall / 对编程的整体理解 3 8
Programming Comprehension(程序理解)如何理解已有程序,通过阅读,分析、 debug 3 9
Programming:Design(架构设计、模块化设计、接口设计) 2 8
Programming:Performance(效能分析与改进) 2 8
Programming:communication(线程之间/进程之间/不同平台的进城之间) 0 6
Programming:BigData(处理大数据) 1 6
Personal Software Process (个人软件过程):个人源码管理(TFS/GitHub) 1 5
Personal Software Process (个人软件过程):估计,记录工作量,并逐步提高 1 5

看似列了7项很贪多,但是前两项是可以在后面五个的基础上无形中完成的,而最后两个是需要注意的,以前不进行源码管理,现在注意这一点,提高起来应该不是很难。可能因为我没有进行过代码管理与记录工作,难度估计的不足。需要提高的就是架构,模块设计,线程与大数据处理,我觉得这里结合具体例子来进行是最好不过的了。当然需要学习理论的时候,也要去学,但是我看书容易发呆。如果有个视频讲解,那么我还是会认认真真听老师讲的,毕竟花了心思做的问题。所以总的来说就是结合具体例子,直白点就是作业,任务要完成,并且涉及这方面,就好好去做。不然提高了我也不知道为啥要提高这个能力,纵然技多不压身,但是大数据,信息爆炸时代,时刻有个滤波器总没有错。

2.2 阅读一些博客的心得

大学生上课为什么一定要认真听讲?
前言:真的是除了农村才知道,城里的人真会玩。像我们这些生在农村,长在农村的,考上大学就已经很不容易了,如此来之不易的机会,上课怎么会不听讲。再者说了,也许是我们高中的老师有点养生,我感觉大学的老师都贼厉害。

读完大学生上课为什么一定要认真听讲?我有个疑问就是这个和娄老师的学生的头脑是容器还是火把?有点矛盾啊,娄老师大致的意思是下面这句名言:

古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把。」

上课不就是一个塞知识的过程吗,好多东西都是而被强心灌输的。(幸好我对这些话不敏感,一直觉得学生听课,写作业,考试很正常。也因此大学过的有些遗憾)回到正题,为什么会有这样的感觉呢?这个是上课的初衷吗?娄老师的意思是不是,而且为了扭转这个局面,他在尽心的进行教学改革,利用上课,一点一点的给大脑输送火星,为的就是点燃那个火把,让大脑燃烧起来。他可不想我们依旧是原生态,一个任由随机事件随机冲击产生随机结果的状态。

先说大学生上课为什么一定要认真听讲?里面几句经典的话。

  • 你在大学里面认为那个老师是水货,这个故事的另外一个版本是,你走上社会以后,你认为你的领导没水平,但是更真实的版本是,你没有水平。

  • 大学其实是专治青春期各种不服的地方。

  • 我觉得很幸运的一点是,中国大学专业的课程体系尽管有不足之处,但是幸好还是过来人设置的,而不是由学生自主设置的。如果让学生根据自己的意见设置课程,那真的完蛋了。

  • 大学生在大学需要练习的一个本事是,给你一门课程,你学到你能力范围内的最好,也许这未必会是全局的最好,但是至少是突破你自己能力般的好,因为有时候人和人的差距的确很大。

  • 有很多人上完了大学,思考方式还是那种“原生态”的模式。所谓的原生态就没有经过系统刻意地训练,没有经过斧正,而是任由随机事件随机冲击产生随机结果的状态。

  • 当你没有能力始终如一地跟着老师走完一堂课不走神不分心,多年以后你会发现一篇超过2000的文字你竟然看不完跟不上没耐心。

读完这些话就是知道了,第一点,大学是座围墙,将我们保护了起来,虽然专治青春期各种不服,但是有给了你改变的机会。它不因为你这周没好好听课,没好好写代码等彻底否定你,开除你。相反只要你肯改变,每一秒都是一个转折点。治的各种不服只是为了走出围墙少碰一点钉子罢了。不要说什么不与世俗同流合污,人之所以为人,因为人是一切社会关系的总和,人不可能脱离社会,脱离关系而存在。我们终有一天要步入社会。第二点,遇到不顺心的人与事,要有一种“宠辱不惊,闲看庭前花开花落.去留无意,漫随天外云卷云舒”,什么意思呢,凡事看开,老师怎么讲老师的事,我们怎么做那是我们的事。

接下来说师生关系

说到这我一般情况情况下会选C: 向老师和同学请教,花更多时间,把作业全部完成。因为作为学生需要做好本职工作,但是有时候要是遇到常年请假或者念ppt都是20hz以下的,课我会去上,也会尽力去听,但是我课下也会找一下慕课作为主战场。应该说是视情况而定吧,该给的面子还是要给的,不能面面俱到的时候,那就只有考前和同学讨论,认认真真做作业啦。这里举一个我的自动控制原理老师杜行检老师,他就是就类似于教练和教员的关系,课前让我们看他们课题组录制的mooc,很短,10几分钟。上课的时候,边讲边提问,有时候会留一些思考题,下节课让同学来讲,有时候简单的课程也会请学生上去讲。看到这里,许多人可能会觉得老师有点不负责了吧,其实不是的,每次学生上去讲,他都要认认真真听,要纠正,要讨论。课后作业的反馈更及时,他亲自阅卷,每个题每一步错在哪里,你怎么错的都会标注。画图题,用尺子去量,1mm的误差都不行。完了会讲一下某个题错了比较多,多少个人错了,错在了那?谁的答案和上课和切合,谁的想法很独特,谁很认真都点出来。最后来个总复习,全程没有划重点,但是这门课我学下来,感触良深。自动控制原理先讲分析,后讲设计,分析方法有什么什么,设计思路出发点有什么什么。所以他是以为园丁,但没有不去修剪病梅;他是餐厅老板,竭尽全力服务学生,时常梦到自己上课迟到,跑错教室。他是保姆,随时抛出问题,等待着你的思考,你要问他考啥,那就是白搭。但是遗憾的是,更多的老师是路人甲。

最后说下引用与抄袭
看了邹老师的一篇微博About Cheating and Plagiarism这个案例,真心觉得不管以前怎么样,以后还是不要抄袭为好。我曾近一度认为任何事情都要独立去做,以至于高数作业我写了一个月完成了一次总结(其他同学30min-2小时不等),c语言的杨辉三角我编了8个小时(其余同学8道题4个小时都完成了),但是被告知闭门造车不好。信息爆炸的时代难免要去搜集一些资料,站在巨人的肩膀上,于是问题来了,什么时候是引用,什么时候是抄袭。在我看来,抄了被人博客,用了别人源码自己看都不看直接提交,author都不改一下,实验报告名字都不改的直接交上去的,比如数值分析课上我的实验报告被提交了10几次,就是抄袭。
link

凡是讲究实事求是,干什么事独立思考,自己写完了对比别人的改一改,要是要公布,给别人说一声,加个标注引用了别人的。如果第一步是需要调研,那么之后文章参考文献就要出现一下,如果是写博客要用到别的,回复问一下,然后附上原文链接,做到有理有据就是引用。如果一声不吭的窃取了劳动成果多少都是抄袭。

2.3个人规划

谈到个人规划,以前觉得本科出来就业就可以。大学三年过去了,在大学的环境下,总感觉博士总有独当一面的能力,加之大学是座围墙,想邹欣老师说的 在你一生中身体最健康,精力最旺盛的时候,能在大学全职学习和研究,这是少有的机会 。至少我现在还有选择读博的权利和最好的环境,所以我还是想做学术研究,偏向工程方向的更好。我的优势那必然是坚持与不放弃,在农村呆了将近20年,大学的苦我觉得真的不苦。但是我的眼界依旧没有放开,快速学习的本领不够强,没有做到博闻强识。我对本学期的规划是学好英语口语,认真对待编程。怎么认真学呢,报了班,天天跟着练,编程自然是尽快从matlab的舒适区走出来。

2.4课程期待

美国视界(1):第一流的本科教学课堂该是什么样?展示了美国常青藤本科大学生的自律,老师的用心良苦,助教的极度负责以及中美教育的差别。一个填鸭式教育,一个启发式教育。一个雷声大,雨点小,一个时常狂风骤雨。也许是中国呆久了,不想走出舒适圈,但是自由、开发、烧脑的课,我愿意去参加。

软件工程资料 - 优秀的大学怎么教程序开发和软件工程课美国的大学教育和中国的区别很大,是对实践的重视的重视程度,还有老师,助教,学生三者妙不可言的关系。

本科生的软工实践课程总结就是虽然放开了手脚,自由与自主气氛浓厚,不免还是被一些身边经验所局限,幸好博主是个大神,挽回大局的能力很强。列举一下对我有警告的话:

  • 作为新手PM,一定要做好需求分析!一定要做好需求分析!一定要做好需求分析!
  • 告诉所有同学,编程差没关系,照样能拿高分。这是【软件工程】实践课!这是【软件工程】实践课!这是【软件工程】实践课!不是【高级程序语言】实践课!也不是【软件开发】实践课!
  • 对大一的自己: 照着高中定好的大学规划走就对了。虽然编程会差点,但是以目前的情况来看,总体还算不错。

因为我就从来不关心需求分析,调试靠经验,编程给自己用,在结对编程现代软件工程 作业 文本文件中英语单词的频率一度追求编程,最后一课才恍然大悟,重点是效能分析,效能分析,效能分析。而且我自认为自己的编程能力不足以应付这门课,现在看来,有些欣慰。

这门课我自然是希望时间多一点,让我熟练一门编程语言,python或者c#,其他工具像管理代码的github,强大易用的原型设计与协同工具墨刀,移植一些认知服务啊熟悉一下就好。助教,自然是很想当,为啥,自己写完,再看看别人的,自己心中是喜是悲,不言而喻。最重要的是,我看到了助教是多么的重要,这个role很有挑战性,不仅这门课,其他科我也想当,督促自己与他人一起进步。

目前的代码量

语言 代码量 还需要
c# 0 10000+
c++ 600 10000+
python 1000 10000+
c 6000 5000+
matlab 9500 1000+

因为我在西安,课业不是很重,每周自然保持30小时花在这门课上,结对编程的时候,几乎是一天12小时,一周7天,总计2周。去了MSRA,之后,一般周六周天会给这门课,周内以看书为主,因为晚上还要练口语。这门课和以前其他课花一样多的时间,因为以前的课我就很认真呀,每天课前预习,课后复习,积极做作业。现在感觉有点后悔,因为这样下来,和考前突击是一样的,平常认真那样,有些老师并不领情。有时间也可以多参加一些科研。

你计划在本课程结束时,完成2000+的代码码量,每周应完成多少是情况而定,不过每周最少也得个200行吧!(200行不是指有效代码量,是个大致的数)

2.5带灯前行,借鉴前人

读了大佬的成长史与如何进入微软亚研院第一感觉就是此人大神,而且很谦虚,很好学,同时又有忧患意识。虽然我是联培生,但比起这位大神,我真的感到要是能和他一个课题组,绝对进步蹭蹭的。说一下感想,博主起步早,眼界比较好,英语绝对托福120,这一点我无法相提并论。不过这也给了我一个警示,我的编程和英语这两个基本功还没有好到一定程序,路漫漫其修远兮。另一个就是个人素质,博主大神虽然说的轻松,但我读起来是十分沉重的,可以读出他的自律与热情,兴趣与坚持。这里又想起郑南宁院士给我们上课说的一句话:“要想成功,兴趣与坚持去做很重要。”,我本沧海一粟,渺小的很,进步的空间还很大。

3. 提有质量的问题

  1. P92 看到图5-8,5-9,5-10那些瀑布模型的流程图

对于那些瀑布模型的流程图,内心是认同的,也觉得有道理。可以一般的实践过程中,用户分析很重要,是很重要,但是如果对于一个在校大学生,这个用户合不合格,真不真实确实是个问题。也许这个用户就是老师作业中的一个角色,亦或者说就是自己,即使每个流程图把用户分析放到第一步,没有实战过,不挨老师的几次批评,还是不知道用户分析的重要性。这里是不是可以先把这一步去掉以提问的方式说最开始缺少了哪一步?或者其他手段来表达出这个重要的理念?就是怎么让我知道真的真的知道没有需求分析,一切都是白搭展现出来,让我们以后一见到用户就觉得用户需求很重要

  1. 第六章 敏捷流程
  • P102 6.1 敏捷开发的原则,第五点,以有进取心的人为项目核心,充分信任他们。
  • P102-103 6.2敏捷的流程中有提到了同伴每天都会开例会
  • P104 有提到了燃尽图
  • P109 6.3 敏捷的团队 提到Scrum Master不是招呼大家开开会,记录每个人的进度而已,而是要在两种语境中自由切换相当于像个项目经理
  • P115 表6-2敏捷的适用范围要求有资深程序员带队
    这里强调了这个Scrum Master的能力,进取心与责任心,。但是这样的工作量其实很大,而敏捷流程的开发周期很短,我们会不会想到“结对编程”,如果有两个资历,责任心,进取心差不多的程序员,能不能他两扮演领航员与驾驶员,一人两周,轮流当驾驶员。驾驶员需要统领大局,他得到的信息与发现的问题最多,也最操心这件事,还要完善燃尽图,照顾进度;领航员虽然在领航,但是也在天天开例会,不会说出现对项目不熟的情况。两周后驾驶员去解决那两周来难啃的骨头与一些测试,并担任起领航员的角色。之前的领航员称为驾驶员,又开始一波敏捷,因为例会天天开,之前的问题领航员心里有底,不会出现返工之类的情况。
  1. 第八章 需求分析 P144 获取用户需求 —用户调查,

这里提到了如何获取“用户需求的东西”,这里我P147页微软公司隐藏单向玻璃窗背后观察目标用户的举动的实验很感兴趣,因为其他的什么调查问卷,深入面谈,以前都试过,最终都是是失败告终,因为即使用心做好了自己,也没法左右别人。但是微软的这个例子,这个是很好,但是能不能让用户先站在后面,让技术人员演示一遍,然后用户在开始操作。因为我们知道,其实很多东西都是有教程的,而且3min左右的视频教程越来越流行,如果看了教程还找不对,那必然是值得去改,但是找一个本来没什么心情,又不熟悉的人来做这件事,背后的我们自然着急。就像是给老一辈用有道词典查英语,其实他对有些概念比如发音,词根,英语有对应的汉语这些概念只是知道,拿到一个单词他并不会去点击那个发大镜的图标来搜索,顺便看看例句,词组和词根。

  1. 第12章用户体验

这里围绕用户讲了很多,很实用。同时我在想一个问题,用户体验,是非要直接来源于用户吗?双11的体验来自于美国的”黑色星期五”;滴滴起初良好的用户体验多多少少借鉴了Uber;百度也有google的影子。很多东西他们他们中国化一下就可以获得很好的用户需求,当然有人会问,中国化不就牵扯到了用户需求吗?是没错,因为这多少是间接性的,对用户需求获取的一点点补充。于是呐,我们可以间接地分析成功与失败的案例,在别人的体验上改进一下就可以达到很好的用户体验,只有在直接获取用户的体验上'小改'。

  1. 第16章 16.2 创新时机

我看了黄金点游戏,有个问题: 这个是博弈的思想吧。 我查了下,博弈和创新是并列关系,不存在包含与被包含的关系,那么以这个例子说明创新时机的时候,我一直在想这个是一直在博弈,只不过是先验信息越来越多。再者如果按创新的时机来理解,创新一小步就会赢得大部分人,创新太多想法就会搁置,那么我是该将创新一次进行到底呢,下次在从另一角度突破?还是将我的创新分成一小块一小块,实现一部分就发布,抢占先机?

posted @ 2018-11-15 16:57  石恩升  阅读(377)  评论(2编辑  收藏  举报