现代软件工程 第一周

介绍自己,建博客

大家好,我是潘杰,来自中国科大数学学院,是计算数学专业的学生,现在在MSRA的IG组实习。

我比较喜欢各种音乐,喜欢去音乐节和Livehouse,现在尤其喜欢hiphop和张悬的歌。之前也喜欢看书,有兴趣的书都会看,现在读书的时间越来越少了,看书的时间大多都用来看电影。大学在合肥经常会觉得很无聊,周末就一个人看电影,三年大概看了150+。杨德昌说过,电影发明之后人类的生命至少延长了三倍,对此我很认同,我在电影中看到了很多触动人心的真实或者虚构的世界。每次去其他城市,如果有好的博物馆和艺术馆,我都会去看展览,有时候会独自在里面待一天。我心中一个好的城市一定要有很好的博物馆,比如北京和巴黎,这样它基本也会具有良好的城市文化氛围,才适合长久舒适的生活。其实无论看书听音乐,还是看电影和逛博物馆,都是适合一个人去做,人多的时候难免喧闹。

我喜欢认识不同文化背景的人,和不同的人相处,听别人的经历和观点能让自己少一些狭隘和闭塞,听他们的故事是一种很有趣的事情。所以我不喜欢在一个地方生活太久的时间,希望可以经常换环境,这样能接触新的圈子,不至于让生活一成不变。

我一直都比较喜欢数学,曾经学过很多年的数学竞赛,尤其是初高中花费了大量精力,周末和寒暑假都在学数学,最后结果还不错,进了CMO。本科在科大数院很幸运认识了许多良师益友,学习了很多的数学课。

现状、经验和计划

1.

在你一生中身体最健康,精力最旺盛的时候,能在大学全职学习和研究,这是少有的机会。请说明一下,你是怎么选择了这个专业的?离成为一个合格的 IT专业毕业生,在专业知识、技能、能力上还差距哪些?

选择计算机图形学,是因为大一听完科大刘利刚老师的报告后我感觉这正是自己所喜欢的学科。

之后在科大GCL实验室与EPFL的LGG实验室学习了两年,觉得比较喜欢图形学,想继续做下去。

本科学习数学的原因:1.数院前两年半的数学课质量很高,收获很大 2.学数学感觉心里面充实和愉悦 3.大一结束后没有想清楚是否转计院 4.我所在的图形学实验室氛围很好

距离一个合格的IT专业学生,还差很多,本科70%以上的时间都在学数学,CS知识严重薄弱。

技能 目前水平 希望课程结束后的水平 如何完成目标
程序理解 4 6 多实践,多请教其他同学
代码质量 3 5 多实践和练习
处理大数据 3 5 持续多学习
效能分析和改进 3 6 阅读相关的资料和方法
个人源码管理(Github) 2 5 需要坚持

2.

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

来上课的原因:1.之前一直听闻邹欣老师授课高屋建瓴水平极高,想和老师多学习 

                         2.自己没有学习过软工课程,也不了解软件工程,想要提高能力

                         3.提高自己专心做事情的能力

(b)你在大学中体验到了哪种师生关系,你希望这门课是什么师生关系?如果老师布置的作业对你来说有些困难, 你会怎么样:

本科时候师生关系大多数为:Stranger / Stranger 或 Prison Guard / Prisoner ,有少数Retailer / customer。

我所认知的理想关系也是Coach / Trainee。如果老师的课程较难,同时也是我所喜欢和想要掌握的,我会尽量达到C: 向老师和同学请教,花更多时间,把作业全部完成。

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

无论完成课程作业还是科研,代码和文档都不能抄袭别人。关于引用和抄袭的区别,我认同祁琳峰同学的观点。

3.几年后,你可以做学术研究、做软件项目、做其他专业的工作,做公务员,出国深造,回家继承家族企业...  ,不同的选择有不同的努力方向, 你今天是怎么为将来准备的?

如果phD期间比较顺利,会考虑毕业后继续research,想去欧洲或北美做postdoc,这样也能游历不同的城市。如果考虑薪酬方面,直接国内找一个CV或CG相关的工作会更好。现阶段就是想要多补一补CS相关的技能。

4.你在这门课的计划是什么?参考一些学校的教学(美国本科,中国软件工程本科1,美国大学软件专业),你对这个课程有什么期待?你打算怎样度过这个课程?你想当助教么?

我计划通过这门课系统的学习软件工程,掌握这门课需要的各种技能。我想尽可能多花时间和精力来完成这门课作业,做出自己所满意的项目。

你目前的代码量是多少(列出语言和代码量,精确到100行)? 为了有资格入职一流的软件公司/互联网/人工智能公司,需要多少代码量?从事高校教学科研工作呢?

语言 代码量 来源
C 8000 课程作业:C语言,数据结构,算法基础,偏微分方程数值解,数值代数
C++ 4000 1.课程作业:计算机图形学,数值代数  2.今年的暑研项目
Matlab 4000 1.课程作业:数值分析,数学建模 2.一些小的科研项目 

Python

1000 1.课程作业:人工智能原理 2.一些小的科研项目

这个代码量距离入职或科研,都相差弗远

你打算平均每周拿出多少个小时用在这门课上(时间包括上课时间)?

每周20+小时,如果还不够就周末多刷夜吧

如果你在前面说过,你在前两年浪费了很多时间,现在要发奋赶上,请问你打算:

我觉得前两年也没有浪费太多时间...大多数数学课都很值得上,只不过一些计算数学的专业课内容过于陈旧或老师讲得太差了,应该把那些课从培养方案里面删掉。

我现在想要赶上其他人,要一直努力,直到达到目标为止。

你计划在本课程结束时,完成多少代码量?每周应完成多少代码量?

学期总高代码量5000+行,每周高质量的代码500+行

5.你现在的道路很多前人曾经走过,他们有什么经验教训?请从博客末尾的文章列表任选一些阅读,针对其中一篇发表感想。

 我读了陈梓瀚(vzch)的博文,文章回顾了他一路学习编程的经历。之前我有在知乎上看过他的回答,这篇博客和他在知乎上的风格是很相似的,诸如“高考数学选择题在发卷后不许动笔的10分钟内就被我全部心算出答案,而且全对了”之类的话语出现了很多...抛开这点不谈,他有很多值得学习的地方:

(a).“如果要快速提高自己的编程水平的话,你必须总是去做一些你做得出来,但是难度大到只要再难一点点你就做不出来的事情。再这么坚持好些年之后,肯定会进入高手的行列。”要给自己不断地创造一些足够困难但是又有办法完成的挑战,这样才可以总是让自己保持着一个快速前进的状态。就是要避免自己一直沉浸在舒适区,要不断推到学习区。

(b).“设计模式的存在就是为了抵御需求变更”一段好的代码是具备好的维护性,在后续被别人继续开发中,不会出现混乱不堪以至于要重写,因此代码的架构一定要好。

(c).“在程序员的生涯里面,最重要的就是保持对编程的热情,不要被生活的琐事所磨灭。其次是要给自己不断地创造一些足够困难但是又有办法完成的挑战,这样才可以总是让自己保持着一个快速前进的状态。”

提有质量的问题, 给认真的反馈

请快速阅读《构建之法》全书,发布随笔1篇,要求列出5个问题,可以是读后不理解的,或者读后反对的。注明是哪一章哪一节。要有观点、有证据或分析。要求篇幅长到能把观点表述清楚。 

1.给任课老师和助教的建议(第9页)第五条:模拟实战,用客观数据来评分。

这一节提到:为了客观的评分,把学生作业当做比赛,比博客的阅读量,比下载量等等。

这样其实也是在考核学生的推广宣传能力,产品的创新思路,是否投合市场客户需求。我觉得虽然考察内容更加综合宽泛,但可能会带来作业目的的偏差。因为有些产品虽然质量很高,但是并不是迎合市场的,下载量难免会一般。而有些CV方面的APP,比如变脸自动美颜,往往很受欢迎。

2.第六章 敏捷流程(第120页)

冲刺阶段,外部需求的改变将留待冲刺结束后再讨论,同时每天要开例会依次报告。

我的疑惑在于:第一,如果外部需求是必要且重要的,那么不理会他们的需求,即使做完项目也需要重新再做,这样是不是只会浪费更多的时间?第二,如何可以保证每天例会的高效性,这一点老师在122页有很详细的叙述了,但我还有建议:就是不同成员需要提出自己对于项目新的思考想法,而不是仅仅汇报工作进度。思想上互相沟通,开会会更有价值。

3.第八章 需求分析(第173页)

关于四种划分:杀手功能外围功能,必要需求辅助需求, 以及因此划分出的四个象限。

这里我也想讨论微信与QQ直接的比较(这个问题我自己从高三就想了很久,同时我也读过祁琳峰的博客),谈谈我的看法。首先,我觉得腾讯推出微信的目的不是想要替代QQ,而是去占有QQ之外的人群市场,这个市场既包含陌生人社交,也包含中老年人群。微信的杀手功能在于:1.摇一摇和附近的人等功能,提供了潜在的陌生人社交。2.大量优质的公众号内容以及朋友圈分享功能,客观上说微信公众号质量远高于其他社交软件,为越来越忙碌的生活提供了好的阅读方式。3.隐私保护的非常好,朋友圈三天可见,非共同好友无法看到朋友圈评论,添加好友的方式相对QQ比较安全。4.界面简洁,易于中老年人上手。

这些杀手功能足以让微信成为最好的社交软件。至于群文件管理等方面,虽然是必要需求,但是是外围功能,对于学生来说用QQ来互补微信正好,对于公司来说往往有内部自己的特有APP。

4.第十六章 IT行业的创新(第334页)

“不但大众不喜欢创新,甚至连创新者自己都不例外,有些创新者甚至恨创新。”

关于这一点,我之前听到一种观点:做科研要学会去翻20年前的老论文,其中一些论文的思想方法很好,结合现在更加进步的手段或工具,往往能有很好的新成果。

在算法或数据库领域,创新的想法不被接受,可能是因为这种创新超过了所处时代工具的上限,还需要时间,等待技术的突破或新的社会需求。

5.第十二章 用户体验(第251页)

如果一个产品呈现的方式具有好的短期刺激的效果,同时它又有不断更新的好的内容,我觉得也能很好的生存下去。比如ins,它界面简单优雅,同时内容质量很高。

认真写反馈:为了改进教学,收集资料,老师在教学过程中会要求学生填写对课程的反馈, 你会怎么做?


我会经常讲自己的问题和困惑与老师和助教沟通,提出反馈。

原文地址:https://www.cnblogs.com/steven-jiepan/p/11485035.html