1.回想对计算机/软件工程的畅想
(1)考研时你是如何做出选择计算机/软件工程专业的决定的?
- 简要概括两点:
- 自身兴趣所在;
- 顺应时代发展。
- 具体展开如下:
从高考填报志愿说起。和许多找不到自己兴趣所在的考生一样,在家人朋友以及自以为是的分析下,结合当时的全省排名,填报了母校的石油工程专业,相对来说是高分低报,所以很顺利地被录取了。进入大学以后的第一个学期,必修课表里有一门程序设计,这门课程的标签是通识教育课,实现语言是C。这是一门让我感到惊叹的课程,因为它让我看到日常应用的计算机上五花八门的功能是如何实现的,而且,只要水平够高,我可以自己动手来实现。也许是因为专业原因,周围的很多同学并不喜欢这门课甚至反感,而我却十分喜欢通过编程完成作业、解决问题带给我的成就感。整个大一的所有课程中投入时间最多的,就是这门程序设计了。不仅如此,我还尽可能地把其他课程中遇到的问题,交给编程来解决,比如大学物理实验的数据处理。转眼到大二,学校有转专业的政策,但是由于自己不够勇敢决绝和其他一些因素与转入软件工程专业失之交臂,这也是本科四年中非常后悔的一件事。石油工程是一门综合性学科,其专业课的支撑涉及到物理、化学、机械、力学、热学和计算机等等。随着接触学科的增多和在学习中对自身的评估,我逐渐地确认计算机技术是我的兴趣所在。并且在日常的生活和学习中,深切地感受到了当今时代对计算机的依赖,并认为深入地学习计算机技术是十分有必要的。因此在决定读研,即再次面临换专业机遇时,我坚定地选择了跨专业攻读软件工程的硕士学位。
(2)你认为本科阶段所学的知识是否符合你对计算机/软件工程专业的期待,为什么?
由于本科阶段的专业并非计算机类,所以从学校开设的课程角度出发,其并未满足我对计算机/软件工程的期待;但若从在课堂外自学的角度出发,我还是有收获的。
对计算机知识的学习,主要是源于自学。除了学校开设程序设计(C)和VB外,在可支配的时间里,我主要通过网络公开课和图书馆资源自学了数据结构、计算机组成原理、操作系统、计算机网络、算法、Java和C++。在申请毕业设计项目时,我找到了当时学院软件中心的一位教授,他给我提供了一个通过数据挖掘预测压裂井产油量的项目,在接下来的三个月里我通过自学python语言和机器学习,按时完成了毕业设计。通过自学,我学会了不少计算机知识并积累了实践经验,但在此过程中,我越发感受到了这个专业的博大精深,若想成为一名优秀的程序员甚至是架构师,需要学习的内容仍有很多。
(3)你觉得计算机/软件工程是你喜欢的领域吗,它是你擅长的领域吗?
由于本科所涉及的领域较为多和杂,综合各领域的学习体验和自我评估,我认为计算机/软件工程是我喜欢的领域。但是就目前来说,这不是我擅长的领域,在自学计算机知识的过程中,我就已经发现了自身积淀之浅薄,所要学习和掌握的有很多。当看完汪老师分享的文章之后,看到该领域尖端人才的成长历程和水平高度,更加感觉到自己的渺小。但是,我会努力积累,通过学习不断地缩小和他们的差距。希望自己在若干年后回答这个问题时,能够自信的说:“计算机/软件工程不仅是我喜欢的领域,而且是我擅长的领域”。
2.即将开始研究生生涯,对照前人们走过的路和描述未来发展,现在的你
(1)自我感觉你已经具备的专业知识、技能、能力有哪些?
- 掌握的编程语言:Java、C、C++、VB、python;
- 有较强的英语阅读能力和良好的听写能力;
- 掌握的专业基础知识:程序设计、逻辑电路、算法、数据结构、计算机组成原理、操作系统、计算机网络;
- 开发经历:基于Anaconda应用python做数据挖掘,通过构建模型,对油田压裂井的历史数据进行学习,实现对新井产量的预测。
(2)离成为一个合格的计算机专业硕士毕业生,在专业知识、技能、能力上还差距哪些?
- 开发实战经历太少;
- 理论知识积淀不够;
- 编程能力不够强;
- 文献阅读能力不够强。
3.对照以上你阅读的前人们的经历,你毕业的选择是什么?
关于毕业后的选择,我目前尚未有明确的答案。若在学术上有所造诣,也许会选择读博;若在学习中培养出了有良好的开发能力,也许会选择工作。这个问题的答案,需要在经历成长中的各种事件后,对自己认真负责地评估才能够给出最适合自己的答案。
(1)在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
劣势是很明显的,作为一名半路出家的软工学生,我的实战经验、知识储备和编程能力逊色于专业里的许多同学。
到过年时,我学到winfrom了,然后过完年继续回学校学习,过了一个年,又忘记了一部分,然后就开始学习数据库,学习三大范式,数据库本来我是感觉挺简单的,也学得会,但是开始学函数,学子查询,学游标时,我又蒙了,后来我也明白,这个东西需要看多方面的资料,需要在使用中慢慢感悟,死劲看,死劲想是无法明白的。这个时候还要学习IO操作类TextReader,TextWrite,StringReader,StringWrite,SteamReader,SteamWrite;文件操作类File ,Directory,FileInfo DirectoryInfo;XML操作XmlDocument,XmlNode等;还有序列化特性还有其他特性学习;这个时候我非常搞不明白特性这个东西,我感觉它很丑陋,后来慢慢明白它就是个标记,要给一个类加上点额外信息,不用特性用什么呢?就顺理成章了。
-- 引用自《.net程序员工作两年总结》
这是汪老师分享的文章之一,看到这篇时的感触特别深,因为作者年轻时的状况和我着实相仿,都是半路转行搞软件。虽然我没有学过winfrom,但是作者描述的历程和其中滋味我非常能够理解。我想,通过这个例子来说明跨专业学生的劣势是非常合适的。
优势方面,起初并没有想到什么优势。但仔细想想,自己本科所学的广而杂的知识在某些时候兴许能提供一些不一样的思路。当开发的软件与之前所学领域相关时,也许能对产品做出较为重要的改善。
(2)针对你的选择,你给自己的研究生生涯的规划安排是什么?
- 首先是学好每一门专业课;
- 做好导师安排的科研工作;
- 认真地做一次专业实习,为评估自己做铺垫;
- 认真地读透几本业内著作。
我读书涉猎很广,很多东西我都能大概知道怎么回事,但是就是学得不深刻,所以即使当时花了很多力气,需要的时候还要花大功夫重头捡起。所以我的教训就是,与其两个半瓶水,不如一个满瓶水。这个道理用在读书上就是说,一本好书读两次要胜过两本好书各读一次。要是大学能重新来过一次,我会少读一些书,多读透一些书,这可能是我觉得当年猛读书的唯一遗憾。
-- 引用自《徐宥:掉进读书的兔子洞》
这方面我和这位作者很像,很多东西大概知道怎么回事,但却只学了皮毛。正如作者说的那样:“即使当时花了很多力气,需要的时候还要花大功夫重头捡起”。因此,在研究生阶段我要改正这个坏习惯,宁愿少读书,也要读透书。
4.你愿意为了一个你感兴趣的、或得到实战锻炼的项目熬夜吗?你想脱离小菜鸟的level吗?如何评价上一届同学说的“和队友一起熬夜打代码是个不错的体验,或许还可以一起吃夜宵!”
我愿意为一个感兴趣的、能得到实战锻炼的项目熬夜,这能带给我能力的提高和巨大的成就感。
上一届同学说的“和队友一起熬夜打代码是个不错的体验,或许还可以一起吃夜宵!”我非常认同,因为和团队里的小伙伴一起战斗着实是个很好的体验,还有夜宵相伴当然是好上加好。
但是谈到“熬夜”自然避不开“注意身体”一类的话。曾经一度不以为然,而随着经历的增多和年龄的增长,着实感觉到身体健康确确实实应该摆在第一位。所以熬夜当适度,健康很重要。
5.针对上述问题(2)、(3)、(4),你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上,以达成你的期待以及你在(2)或(3)或(4)上的目标?
我希望通过这门夯实我软件工程的基础,并通过作业丰富我的实战经历,为我成为一名合格的软件工程毕业生打基础。我打算每周拿出10-15个小时用在这门课上来达成期待以及在(2)或(3)或(4)上的目标。