1.自我介绍
大家好,我叫冉礼豪,科大计算机学院的大四学生.将于十月中旬入职MSRA邹老师组实习.
我爱好十分不广泛,除了Rap, Music, 篮球之外很少有喜欢的东西.希望可以在和各位优秀的同学相处中多多发掘自己的兴趣和潜力.
2.现状,经验和计划
在你一生中身体最健康,精力最旺盛的时候,能在大学全职学习和研究,这是少有的机会。请说明一下,你是怎么选择了这个专业的?
计算机科学是当前研究的热门,同时也是真正有可能改变未来的学科.如果说个人想要趁年轻,精力最旺盛的时候,做一些十分有影响力的工作,那我觉不妨从计算机科学开始,上手快,起点低,而且潜力无穷.稍一努力,就可以获得巨大的成就感.
离成为一个合格的 IT专业毕业生,在专业知识、技能、能力上还差距哪些?
Skills | 目前水平 | 理想水平 | 提高方式 |
Programming: Design | 4 | 8 | 多练习,多阅读开源代码,学习设计模式 |
Programming: Test | 2 | 7 | 在日常代码编写过程中,注意插入单元测试,学习测试思维 |
Programming: Performance | 3 | 7 | 有意识地学习并使用优秀的算法,有意识地对每个项目做performance评估 |
Programming: Debug | 5 | 8 | 注意积累记录每一个debug的小技巧,对一些有趣的bug做记录 |
Programming: Comprehension | 5 | 7 | 多多阅读开源代码,并在有条件是对部分加以复现 |
Programming: ML | 4 | 6 | 阅读Paper,课外参考书,博客 |
你为何要来上课并且认真参与?
我希望可以和更优秀的人在一起学习并收获,提高自己的能力.自己虽然是科班的学生,但经过大学三年后还有很多地方做的不足,距离一名合格的工程师或者研究者还差距甚远,希望可以好好利用这次机会,收获一波经验,提高一下等级.
心得
师生关系
在科大的时候,大部分时候还是和同学相处,和老师的相处并不多,上课也是传统的模式,老师讲,学生听.除了极少数极其负责的老师外,大多数老师的态度都是"我认真讲,能不能听懂是你的事情."
在这门课我更希望体会到一种不一样的师生关系.师生之间可以有更多的机会交流沟通,可以结合自己多年的工作经验,不仅仅答疑,还要真正做到传道授业解惑.
对抄袭的看法
我觉得在日常的课程训练中,一定不能把成绩作为自己追求的目标,如果这样的话,很容易就会产生抄写别人作业的年头,要本着提升自己能力的目的,能自己完成的就自己完成,如果想学习更先进的方法,可以自己先做一遍,然后再阅读别人的代码.
但是在实际的学术研究和工业生产当中,我们要学会在别人的成果基础上进行提升,能站在巨人的肩膀上,何必重新造轮子呢?但一定要注意相关法律
将来的打算
我的计划是出国读研,然后尽早进入工业界,学习先进技术,创造自己的价值.有的同学可能会选择直接读PhD,有的同学可能会选择继承家族财产...
如果我有企业可以继承当然好啊,哈哈哈哈哈...
但是大多数人还是要靠自己一步步爬到行业顶峰的.
相比那些直接读PhD的同学,我觉得几年下来,我可能会积累一笔工作经验,积累一笔财产(功利但现实),少了一个PhD学位和研究经验.
课程计划
目前我的代码量,C/C++: 10000, Python: 6500, Java: 1200
可以看到,目前的代码量还是少得可怜,所以我对这门课最大的期望首先是可以做一些大的项目来提高自己的代码能力,然后等码力上去了,便可以追求更高层次的目标,比如,完善项目中的算法,设计更好的数据结构等等.
具体的计划,要看入职后的安排来制定...
经验教训
之前读过轮子哥vczh,对自己职业生涯开始的总结.
首先不得不说,兴趣是老师确实是真理,如果对一件事情十分感兴趣,便就会乐意去投入精力,很容易就能取得他人无法轻易达到的高度,轮子哥便是这样,从高中就开始写编译器,大学就尝试自己创造语言,这些行动的动机都源于兴趣.
除此之外,也要注意前进的节奏,走的步子大容易扯着蛋,刚学会C语言的小白,就上手几十万行的大项目,那么最终得到的除了挫败感外别无他物.掌握自己的进步节奏,一步一个脚印地前进,才可以走得更扎实.
阅读<<构建之法>>,问题
软件工程师的职业发展(P56)
这里作者引用Emanuel的例子,来回应对于事业选择的疑问.但是我觉得,强如Emanuel,又有什么事情做不成呢,但绝大多数人都是普通人,错过了四十岁之前职业生涯的上升窗口,一生就很难再取得成就了,我不是想否认终身学习的重要性,终身固然重要,但是我觉得对于大多人来说,尽早发现自己的兴趣,发现自己愿意付出一生的事业,然后尽早为之奋斗也许有更高的成功概率.
PM(P193)
Project Manager固然十分重要,担负了与客户沟通,统筹分配任务,把握项目的核心价值等任务.但如何看待目前业界很多PM并没有技术背景的现象?没有技术背景可以很好的分工吗?PM如何避免提出一些根本实现不了的需求?如何避免外行指导内行.
UI(P259)
作为软件直接与客户接触的窗口,UI十分重要.但在设计UI的时候,如何协调设计师和程序员的分工?是设计师提出需求,程序员给予实现,还是另有一套更为复杂的机制?
两人合作(P69)
这里比较详尽地阐述了两人合作的阶段和技巧.但在面对大的项目时,更多时候是一个团队一起在做,多人合作和两人合作的主要区别在哪里?两人合作哪些技巧可以适用于多人合作?即便是一个大的团队,采取分而治之的方法,将团队分为一个个两人小组,可行吗?
代码发布(P330)
在代码发布后的维护阶段.对于出现bug后的会诊,如何决定哪些bug需要修复,哪些bug可以不修复?某些bug如果当时不修复就会立即影响用户体验,某些bug没有那么紧急,但是一旦出问题就会带来巨大的损失.如何判断bug的紧急程度?