软件工程开篇自我介绍

介绍自己

大家好,这里是18年的ASE课程我的第一篇个人博客。
想想自己的技能,我觉得自己在唱歌方面还不错~我觉得兴趣是最好的老师,同时还要保持好奇心敢于尝试。唱歌的话,我身边很多人只听歌但从来都“不好意思”或者“不去尝试”去唱,而我是听到好听的歌就会一直循环,并且特别喜欢“唱”出来,因为你不唱的话怎么知道自己唱的不好呢?

现状、经验和计划

选专业经历

根据高中的时候喜欢的一些科目,比如数学,自己不擅长或者不喜欢的科目,比如英语或者生物这些,大概确定了选专业的范围。之前完全没有接触过计算机,当时对选计算机专业的认知就是写个App,感觉很酷的样子,一种直觉自己会喜欢这个专业,就选了...算是排除法+好奇心吧,如果让我说出确切的理由,好像也没有一个确定的答案。并且因为是在英才学院,可以随便转专业,也没有考虑太多,经过一个学期的学习,感觉自己的确挺喜欢和适合的,也就没转...

技能认知和期望

下面是对自己比较看重/薄弱的技能的自我评价以及期望

技能(skill) 目前水平 期望课后水平
C++ 2~3 6
代码规范和质量 2 6
Programming Design 2 6
BigData 2 6
cutting edge technology 1 6

我将从下面几个方面来提高自己上述技能

  • 提高自己的代码量,多写多练
  • 阅读优秀开源代码或者代码规范,学习别人的代码设计/风格,怎么优雅写代码
  • 多查阅关于处理BigData技能的资料
  • 学习一下julia
  • 写可维护的项目,项目的复杂度高了就能锻炼自己的代码设计能力了吧QAQ

关于学习的一些看法

关于 我为什么要来认真上课并参与, 我觉得除了文中提到的在课堂上跟着老师的思路能更快学习这一点之外,还有老师比我们懂得更多,更有一种“全局观”,他能把知识在体系中融汇贯通,而我们自己去学习很容易只能窥得局部的知识,老师的这种”点播“往往比自己看的更深刻。其次,我来学习是因为我有需求,从老师这里获得知识的需求,这门课获得学分的需求等等。

大学体验到的师生关系 的话,我觉得是文中的“教练和学员的关系”,学生想要学好知识,老师有一套系统来教会学生知识,学生遇到问题去请教老师,老师是很愿意去解答的,但是如果自己的主动性不够高的话,相应从老师得到的反馈和建议也会变少,那么就缺少了交流。另外在大学里,我还体会到了另一种师生关系“狱警/犯人”,一些老师会抽察挨个点名,而一些学生只是想获得学分,为了学分不得不在教室坐着,不过这样的老师也是少数,并且在课程开始前也会说明他的要求,学生无法接受可以退课。 我期望的师生关系就是第一种,而我觉得这种关系达到好的效果需要双方都要主动起来,学生主动向老师反馈,老师主动了解学生们的情况和进度。如果老师布置的作业有些困难,我会向老师同学们请教来完成,同时这种“困难”是适当的,如果过于困难,一定要和老师反馈情况,期望双方最后达成一致的观点。

关于抄袭,我看了 这篇文章, 其中作者提到了CMU课程网站上关于抄袭的一些看法

不被允许的使用他人信息(use)的行为:
剽窃代码,包括复制、上网搜索、重新输入(注:看着别人的代码重打一遍)、窥视他人文档和代码。

哪些行为不是作弊,甚至受到鼓励?
帮助他人在如何使用各种工具方面,包括但不限于系统、网络、编译器、调试器。
帮助他人关于高层次的设计问题

所以我的理解抄袭就是用别人的成果稍加掩饰(比如改个变量名/当搬运工)当作自己的,我们在 创造 自己的成果时,如果有收到别人工作的启发或者有参考,应该在取得原作者同意的情况下并注明,这也是对他人的尊重。

未来和规划

关于未来,因为要读直博了,所以自己几年后应该还是做学术研究吧。感觉自己对比其他的同学,NLP领域基础比较薄弱,之前也没有接触过,emmm, 优势的话,自己比较踏实?所以本学期的规划就是打好基础,多读书学点东西,因为1到2年之后就要 paper-driven了,所以希望今年和明年就是给自己做一个学习规划,还是以学习为主,在读paper的同时回来学习不懂知识,同时要打牢固代码基础。
我对这门软件工程课最大的期待就是团队项目这个部分了,之前没有做过“有意义”的软件,C++/Java代码量也在2w行左右吧应该,python就更少了,如果将来从事科研工作,有些entity linking这种要做一个系统的话,代码量应该也不能少,所以我觉得未来几年代码量应该到10万级别?看到了老师布置的几个团队项目感觉很有趣,期望能在提高代码量的同时,能学会怎么写好的代码,可维护的代码,所以基于对自己的估计,我觉得每周至少要20个小时在这门课上。在本门课结束的代码量,希望是总共完成1w左右的代码,平均每周800行代码( 虽然第一周我们bot的代码只有60行左右.... )

经验感想

阅读 关于时间管理 的这篇文章,作者在文章种这样说到

我仍然感觉时间不够用,学习的时候总感觉各种事情纷至沓来、压迫我的大脑,巴不得能并行作业同时完成若干件任务

我也是深有体会,因为自己实习的时候,第一是总感觉有各种事情耽误时间,第二是效率,明明自己每天也没有玩耍,但是一天下来回想又感觉自己做的好少,似乎患上了时间焦虑症,之前在学校的时候并没有意识到这种时间的浪费和紧迫,而在这里,你的工作是会影响到别人的工作进度的,定期要和mentor反馈,时间是真的很宝贵了,而我之前在时间规划和管理上没有任何打算。这里从原作者学习到的就是

做好短期时间规划。具体而言,要把每天把要做的事情分成A、B、C、D四类:
A——紧迫且重要;B——重要不紧迫;C——紧迫不重要;D——不重要不紧迫

还是要根据事情的轻重缓急做好时间规划,哪段时间做哪个事,还有我最近觉得写summary似乎能稍稍缓解/加剧我的时间焦虑.....(缓解是觉得自己还是干了点事情 焦虑是感觉自己做的好慢) 还有一点就是对于不会的地方,请教mentor们都会给出很好的学习资料和建议,大概就是作者所说的 “贵人指路,事半功倍”吧

阅读《构建之法》的问题

第四章两人合作结对编程这一节讲到(P79):

在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。这样,程序中的错误就会少很多,程序的初始质量会高很多,这样会省下很多以后修改、测试的时间。
结对编程是个渐进的过程,有效率的结对编程不是一天就能做到的。

如前面所说结对编程是水平较高的一方占质量决定的主导地位,实际中往往两个结对人员的编程水平/擅长方向也不同,那么弱势的一方往往被强势一方所主导,并且很有可能在拉低效率,那么此时的效率并不如分工合作高,而且有效率的结点编程需要时间,结点编程的项目一般较小,那么如果水平差异大磨合期较长的话,是不是结对编程就没有意义了?

第十章典型用户和场景中怎么定义典型用户一节(P206):

我们的软件不是为所有人服务的
我们宁可从小部分人出发,要非常明确地定义谁是我们的用户

软件在发展过程中用户需求是变化的,用户的数量和多样性也在增长,这时候我们是否应该重新定义我们的典型用户?

第十二章用户体验中A/B测试一节(P265)

用网站当前的用户做实验,万一引起巨大的反感,用户就真的流失了。

如果用户体验反馈比较准确,那么测试用户的数量要大,来源是我们的真实用户,这样就存在文中的问题,那我们怎么把这种测试的风险降低呢?

第十三章软件测试里效能测试一节(P282)

设计负载,首先要定义的什么是正常的设计负载。从需求说明出发,可得出系统正常的设计负载。例如一个购物网站,客户认为正常的设计负载是每秒钟承受20次客户请求。

我对这里定义的正常的设计负载不是很明确。以淘宝为例,在平时的时候负载不是很大,而在一些特定的时间,比如双十一等等负载急剧增大,在设计的时候是否有必要考虑这种负载?而且这种的负载是难以精确预估的。

第十六章IT行业的创新迷思七:成功的团队更能创新P(350)

颠覆性的创新会带来产品和市场的巨大风险,这些企业在的流程、价值观和文化会排斥颠覆性的创新。那些没有成功包袱的小公司反而能把颠覆性创新带到市场,挑战成熟企业的霸主地位。

基于以下的原因,我不能完全赞同这句话。我认为小公司创新难,首先小公司资源比大公司少,其次员工每天花在例行的琐事/工作上的时间多(人少),那么花在思考如何创新的时间少,再者,颠覆性的创新会带来产品和市场的巨大风险,小公司没有承受这种风险的能力,和用户基础。

原文地址:https://www.cnblogs.com/mttblog/p/9800481.html