第一周博客作业

此作业的要求参见【https://edu.cnblogs.com/campus/nenu/2018fall/homework/2101】

1、建博客

      已建立博客https://www.cnblogs.com/qjy0330/

      已经关注老师并且加入班级。

2、博客作业——回答问题

      (1)回想一下你曾经对计算机专业的畅想

      高考之后本打算选择会计金融这些方向的,但是高考的分数有一点尴尬,在选择“鸡头”还是“凤尾”这个问题上我也纠结了很久,最后听家里的建议报考了一本,但是被调剂到了教育技术学。最初我以为这个专业的学习重心应该放在“教育”上,但是接触之后才发现更多的是对技术的要求。毕业之后仔细审视了自己,发现自己甚至没有一项拿得出手可以谋生的技术,而后决定考研。在选择专业时,因为比起背理论性较强的专业课更喜欢数学,所以放弃教育技术学而选择了计算机技术。

      本科的学习过程中,我接触到了数据结构、操作系统、数据库、C++、Java、计算机网络等一系列专业性较强的课程,但是四年下来再回顾以往,发现自己了解的甚少,掌握的更是寥寥无几。可以说本科的时候,学习的目的就是为了应付考试。一学期没怎么听课,考前一周着重看一下老师画的重点,及格就没什么问题。但是这真的是本科生学习应该有的状态吗?我想不应该是这样的。还记得刚入大学的时候,导员曾经跟我们说过,今天同坐在一个班级里的同学,用不了很长时间就会拉开很大的差距,我也是现在才能深刻地体会到这句话吧。我也一直提醒自己,要时常抬头看看自己和别人的差距,不管什么时候,只要努力就都不算晚。

      凭心而论,计算机专业是我喜欢的领域。可以通过一台小小的电脑,完成很多复杂繁琐的任务,这简直太有成就感了。我有一位同学,他的女朋友在单位整理报表,要把其中特定条件的数据整理出来并登记,在女朋友和他抱怨的时候,他就敲了一个小程序完成上述的功能,至今我还清晰记得他脸上的自豪。这也是我的目标——从“Hello World”到“Change the world”。计算机行业是当下的热门,人们的生活越来越智能化,对各种软件/设备的需求日益增加,这对我们计算机专业的学生既是机遇也是挑战。由于从业人数过多,怎样才能在众多求职者中脱颖而出呢?这将是我未来三年要思考并努力的方向。但是就我目前的知识储备来说,计算机并不是我擅长的领域,从算法到程序到软件工程,我还有很多要学习的地方。我目前还不能熟练地掌握一门语言,代码量积累得少,没有独立完成过一个项目,也不太了解项目开发的全过程,这些都是我要在以后的生活中学习并锻炼的。

      (2)考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?

      数学方面,我掌握了一些微积分和矩阵方面的知识,但是对统计、概率方面的内容还不太了解;英语方面,我单词积累量很少,能读懂一些简单学术论文,但是距离自己动手写论文还有很大一段距离;计算机专业方面,我能独立写一些前端页面,能读懂并写一些简单的C语言程序,但是对计算机组成原理、操作系统等专业课掌握得很差。成为一名合格的计算机学生,我想首先我要多读一些书,不断拓展自己的眼界,丰富自己的知识。研究生阶段,我所选择的方向是机器学习、人工智能的方向,因此想着重学习python语言。

      (3)每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 ?不同的选择有不同的努力方向。对照以上你阅读的前人们的经历,你的选择是什么?

      我的选择是工程项目。我觉得我所学的所有知识只有落实到工程项目的时候,才能检验出来自己究竟学到了什么,还欠缺什么。并且在完成项目的同时,自己不仅能检验自己掌握的知识,还能学到很多项目开发的经验,比如如何进行团队合作?组内其他成员的算法有哪些可取之处?我想这些都会成为我日后工作生活中的宝贵经验。相比其他同学,我的劣势在于缺少实际开发经验、代码量少、对语言掌握的不熟练。我的优势是有很多已经工作一段时间的同学,可以向他们请教一些实际开发过程中遇到的问题,我相信他们在工作中实践的经验可以帮助到我。所以我本学期的计划有:按时完成所有课程目标;多背单词,提高自己的词汇量,多读一些国内外的前沿的学术论文;熟练掌握python语言,保证自己的代码量;参与到团队开发项目的过程中,并且努力不拖团队的后腿;多参加导师带的讨论组,了解学姐学长研究的方向,学习并创新。

      (4)你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上? 

      上完第一节高级软件工程的课,我对杨老师的印象是严厉且有原则。我很赞同师生之间的关系能像教练与健身学员的关系,这样可以清晰地认识到自己有哪些不足,应该往哪个方向努力。希望通过这门课的学习,能对软件开发的过程有整体上的认识,能自己独立开发一个模块甚至是项目,能有底气说自己是计算机专业的学生。通过前两天对学习时间的统计,我计划每天拿出两个半小时用在这门课上,考虑到可能有一些浮动,所以一周下来的时间大约在14到18个小时这样。

3、博客作业——读《构建之法》后的思考

      (1)关于作者提出的在项目团队的Alpha和Beta阶段之间,要安排一个转组的活动的这种观点我有一些疑问。团队合作首先要做到相互信任且目标一致动力一致。就像老师课上举出的鲁宾逊与星期五的故事,如果在一个团队中,每个人都心存会不会中途被转到其他组的疑虑,能否能保证软件开发的质量呢?模拟人才流动造成的影响我们可以选择其他的方式,比如我们可以练习拿前人的编程软件来进行进一步地开发和优化。

      (2)关于第六章敏捷开发原则中第六点:“无论团队内外,面对面的交流始终是最有效的沟通方式”,我有一些不同看法:面对面地沟通确实直接且高效,但作者说得过于绝对。我们要考虑到软件开发过程中所能遇到的各种问题,从而选择最适合团队的沟通方式。而且,如果在时间和空间上有不可抗的因素以致不能面对面沟通的情况下,是否别的替代方式(视频、音频对话)才更有效呢?

      (3)关于第八章第五小节中,利用制造惊喜来提高用户满意度的做法,我有几点疑惑。首先,是否应该主动为用户制造惊喜呢?想到顾客之前,为他们提供一些惊喜无疑是提高产品竞争力的一项有效做法,但是像本书开头为儿子写四则运算程序的程序员,确实是给了用户群体(教师与学校)以惊喜。甚至用户都未曾想过要应用软件进行教学,程序员已经把惊喜摆在面前了。但是之后如何面对用户的日益增长的需求呢?其次,文章中说这些功能一旦出现(尽管质量不是太好),就能给用户满意度带来正面的帮助。作为项目的开发者,在明知道质量不太好的情况下,要发布这一项惊喜吗?再则,如何保证我们所准备的惊喜在客户眼中也确实需要呢?

      (4)关于书中第十章第一节中关于典型用户的定义里第三小点是这样描述的“代表的客户在市场上的比例和重要性(比例大不等同于重要性高,如付费的用户比例较少,但是影响大,所以更重要)”。对于作者的这个观点我有一些疑惑。极端一点来说,假如一个产品付费人数只占到了千分之一,我们更应该考虑付费用户的需求还是更多数人的需求呢。就像QQ软件,在QQ上冲会员的人数应该远不如普通用户的数量多,但是对于QQ典型用户的定义是否更侧重于会员用户呢?

      (5)关于书中第十六章迷思之五:要成为领域的专家,才能创新。作者列举了一些成功的创新者在领域之外取得创新成功的案例引发了我的一些思考。确实在现实生活中有很多在自己专业之外的成功创新,但是我想这些创新都是基于量的积累才达到了质的飞跃,创新者提出的想法是凭空想象出来的吗?还是经过了一些调查学习研究?如果不经过深入了解提出的想法是否能为社会环境所接受?而且我认为只有把想法付诸实践真正做出一些可见的事物才叫做创新,这样的创新过程,“专家”是不可或缺的。

 

4、博客作业——我有什么能力超过身边百分之90以上的人

      看到这个问题之后,真的是思考了很久。我感觉自己属于半吊子类型,感兴趣的事情很多,但是做到优秀的很少。比如小时候看别人弹钢琴觉得气质很好,就报了钢琴班,学会了第一首曲子之后就去上学了,后来也没有进一步学习。看别人弹吉他觉得很帅,又报了吉他班,目前的水平也就是看看谱子,会一些简单的和弦。可能这么看,我的行动力比较好吧,想到了什么就去做。行动力的培养大概是从我小时候父母就对我的各种决定都比较支持,就包括考研对学校专业的选择也都是自己决定的。但是反过来说又有点讨厌自己这种三分钟热度的状态。希望以后对自己喜欢的事情付出更多时间,完成得更好。

       

5、博客作业——采访本课程往届同学

  • 当时的项目有多少用户,给用户多少价值? 现在还有人用吗?
  • 这个项目能否给我们团队继续开发,源代码/文档还有么?
  • 项目开发有什么经验和教训
  • 对学好软件工程有什么建议

回答:

  • 就上学期软件工程科所做基于JAVA游戏项目进行介绍吧,该项目在后期成型后基本可以保证50人左右上手玩过(身边同学),游戏项目给用户的价值就在于闲暇时的娱乐,现在应该是没有人用了(博客园里有链接,想玩的可以尝试)。
  • 可以给你们继续开发,源代码和文档都在我博客园里有。但是我觉得开发别的人东西还不如自己编一个,改别人的代码很麻烦。
  • 项目开发要从前期调研,然后构建框架,设想要实现的所有功能,然后根据现有实力进行增删,毕竟能不能实现要看你的动手能力(项目组内得有技术实力的成员)。
  • 认真对待这门课程,对于老师布置的作业尽力尝试先自己去完成(善于利用身边的各种资源),如果有不会的可以请教他人,不要去尝试敷衍对待。

6、博客作业——代码量的问题

      我在本科的时候只参与过两个项目前端的开发,再就是考研的时候跟着课程敲了一些代码,但都是不系统的、零散的。采访过已经入职的同学,我认为一个计算机专业的学生至少要达到1w行代码才算是入门,如果想入职软件公司,代码量应该要在2w-3w行。我计划在本课程结束时代码量达到6000行,平均每周300行。在编程方面,我要学习锻炼的地方还有很多,不仅是代码量的累积,还有写代码的思路,对程序设计流程的把握等等。希望通过研一各个课程地学习,我能在上述方面有所提高。

7、阅读材料写心得

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

      今天读了杨老师推荐的博文“大学生上课为什么一定要认真听讲”,感触颇深。

      我认为作者的想法是长期从事教学工作总结出来的,他认为大学生上课认真听讲是一种能力更是一种强者所具备的优势。我感觉从我个人经验来说,上课认真听讲这个从小教育到大的“命题”,看似简单实则不易。因为我们不仅要全神贯注一整节课的时间,还要时刻紧跟老师的思路,去思考、去计算,这其实是一种能力。试问自己,有没有为自己的懒惰和分心找过理由呢?我想是有的。但是经过时间的沉淀就会发现,当时的种种理由都是你不如身边人优秀的症结所在。记得原来看过一个美国的文章,说智商从一定程度上影响学习进度,原因就是上课是否能跟得上老师的思路。我们都知道,高中老师讲的内容就会有所扩展,有些内容老师会说不要求必须掌握,但是可以了解了解,这时候有些所谓智商高的同学就可以跟上老师的思路,去理解老师推荐但是并不要求的内容,而那些没有全神贯注听讲或者说没有及时跟上老师思路的同学,就会认真贯彻老师所说的“没有要求掌握”这句话,不去掌握。这说明有很多的内容,是需要我们跟上老师的思路,需要我们去认真听讲,需要我们去全神贯注。

      另外作者所说的不要质疑老师讲课的内容与能力。我认为老师之所以叫老师,一个很大的原因是因为他足够“老”,这里的老不单单是指年龄上的老,而是经验上的“老”,他们拥有更广的眼界,更多的认知,更深层次的理解,我们虽然是研究生,名义上是高层次的学术学生,但是我们和老师比起来,还真的是小巫见大巫,不要说老师授课内容不足以让你学习,就是老师拿生活经验来告诉我们,也应是一种无价的财富。我们虽然可以有自己的见解,但是我们更应该要理性的去了解老师所教授的内容,我相信任何一个老师都有足够的资格站在讲台上去教授我们知识。

      我认为去上课并且认真参与不仅是对老师的尊重,更是对自己的负责。引用梁启超的一句话吧:“人生须知负责任的苦处,才能知道尽责任的乐趣”。希望在未来的学习生活中我能培养自己认真听讲以及全神贯注的能力,体会对自己人生尽责任的乐趣。

(2)你在大学体验到了哪种师生关系?

      文章开篇列举了一些大学目前比较常见的师生关系,回想对照自己的大学生活,有很多模式存在在我身边。相对应Prison Guard / Prisoner (狱警 / 犯人)模式,遇到严厉的“狱警”老师,所谓严厉,重点体现在监考的巡视频率以及对作弊行为的容忍程度。至于课上,很少有一些“必须完成”的课程目标以及相对应的奖惩机制。所以课程结束后的效果可想而知,确实考试前一周学生们都在努力背题,但这种记忆是短时的,未经消化的,现在已经丝毫回忆不起来任一个知识点了。还有的课程在课程结束后会要求学生们对本课程做出一些评价,这是我比较讨厌的形式主义。评价对教师今后的课程安排会有影响吗?每个学生的评价是基于何种标准的呢?按照学生所希望的方向真的能保证课程的质量吗?但是这种Retailer / customer (餐馆/食客)的模式还存在于很多大学中,也许这种模式也有一些可取之处?(起码看起来似乎学生也有一些相应的权力来约束老师)。另外还有一些比较佛系的老师,不仅上课不点名,对课程的安排也很随意,甚至会放出其在各个国家游玩的照片。可能目前更为学生接受的是亦师亦友的师生关系吧,师生之间能做到相对真诚地沟通,但是这种关系往往相对于教书反而更能在育人方面得到更好的效果。所以如何做才能使学生收获最大化呢?作者基于这个角度出发提出了  Coach / Trainee (健身教练 / 健身学员) 的关系,并在下文提出很多教学手段。

      首先作为教练,需要具备怎样的资历?要在哪些方面为学员提供什么样的指导和帮助?其次作为学员,我们应该明确自己的目标。为谁而学?用怎样的状态学?期望达到怎样的效果?在双方都有充分的准备来共同完成这门课的时候,我想结果是相当可观的。并且未必相安无事才是好的模式,我们需要辩证地学习,有思考地学习而不是一味地盲目接收知识,合理地讨论更能激发双方的灵感,锻炼我们的思维。这就是所谓的教学相长吧。

      结合本门课程来说,第一节课结束之后就已经有心里准备即将接受的压力。看了作者提出的《现代软件工程》的教学方案怎么样全面锻炼学生对于软件工程的认知,大致有了一些学习的方向。期待在课程结束的时候自己会有一些质的变化。

原文地址:https://www.cnblogs.com/qjy0330/p/9636901.html