1. 回顾过去近3年的学习经历
1.1 报考计算机专业是否出于喜欢
当初报考计算机专业的时候,可以说是完全出于喜欢计算机的缘故。
我记得第一次接触计算机的时候,是在幼儿园的时候,当时老爸的单位里有好几台电脑,它们用着现在看来性能羸弱的老款赛扬和奔腾处理器,运行着以灰色为主色调的Windows 2000和bug百出的Windows me操作系统,甚至还有一台机箱横躺着被显示器压在上面的老古董。当时的我还只会玩着最早期的 《极品飞车》 之类的游戏(然而事实上完全就是在瞎开瞎撞)。
后来到了小学,家里开始有了属于我们自己的电脑。当大部分同学才刚刚开始接触计算机的时候,我已经从当时比较流行的游戏诸如 《红色警戒》 和 《侠盗猎车手:罪恶都市》 中毕业了。可能是得益于较早接触电脑的原因,在学校开设信息技术课程,开始教我们简单的诸如开关机、画图等简单的操作时,我就明显觉得这些东西略微简单和无趣了。
当许多同龄的小朋友开始沉迷各种单机游戏,再到早期的网络游戏时,我也不怎么对这些游戏感兴趣了,总想着“电脑”这个东西,究竟还能做些别的什么?
可能是察觉到了这一点,老爸在用家里电脑办公的时候,开始有意无意地让我在旁边看他写写Word文档之类的。也正是因为这样,慢慢的我的兴趣彻底的从又从网上下到了什么好玩的游戏,转移到了电脑还能干什么其他厉害的事情上去。
后来的初高中,我接下了在班里管理电教多媒体设备的工作,也开始一点点的捣鼓其他的“研究”。比如嫌初中班里的电脑用的Windows XP又难看又慢,尝试着给他安装了Windows 7(虽然最后导致屏幕书写笔的驱动装不上);比如尝试破解高中班里电脑的Shadow Defenders软件(虽然最后被学校管电教的老师训了一通)……
但是到了报志愿前,我却有点犹豫了,当时的网络上到处都充斥着诸如
程序员吃青春饭
虽然工资高,但是IT领域的人才太饱和了
等等这样的论调,以至于我当时考虑了从英语到电子类的好多个备选方案,但最终还是因为一直喜欢计算机的原因,每个学校的第一专业我都填报了计算机科学与技术专业。
1.2 是否后悔报考计算机专业
不后悔,从目前来看,通过这几年的学习,和对计算机领域进一步的了解,我感觉虽然计算机行业是有点所谓的从业人员饱和和吃青春饭,但是哪个其他行业又不是如此呢?更何况虽然从业人员饱和,但是人才并不是;虽然码农吃青春饭,但是从事计算加行业也并不是一定和一直都是当程序员的。
只要通过自己的努力,让自己成为稀缺的技术人才,就能避免这些问题
而且,从事计算机领域的工作很酷,不是么?
所以我不后悔当初的选择。
1.3 目前最喜欢的领域
高中的时候虽然我已经捣鼓出来了不少电脑使用、修理等方面的“骚操作”,但是那时候的我对计算机科学领域有什么新的科研并不甚了解。
当时为了学英语,我买过几本时代周刊杂志回来读,当时看到了一篇文章,叫 Brain Builder: Creating the world's smartest artificial mind 的文章,这是时代周刊对人工智能和机器学习专家Andrew Ng(吴恩达)的专访,吴恩达在里面讲述了人工智能领域目前达到了什么样的地步,机器学习又是如何工作的。
吴恩达在专访中说:
I've always thought you can make computers more intelligent, free us up from a lot of the more routine work, and then we can spend our time on more worthy pursuits.
Artificial intelligence is the key to dominating the next wave of Internet bussinesses.
这篇文章给了我极大的兴趣,也为我打开了新世界的大门。
所以我目前比较感兴趣领域是机器学习和人工智能。
2. 总结现在已掌握的知识
2.1 具备哪些专业知识和能力
-
专业知识方面
- 通过学校开设的课程
- 对C/C++程序设计语言的语法等特性有较为清晰的理解
- 基础和一般难度的算法的理解
- 基本、常用的数据结构
- 较为熟练地掌握数字逻辑,数字和模拟电路的知识
- 计算机组成原理和操作系统的基本原理与知识
- 8051为主的单片机系统的开发知识
- 数据库系统和SQL语言相关知识
- 通过自学
- 对Java, Python和C#,以及WPF框架和UWP应用有所了解
- 对Android应用的开发知识有所了解
- 通过学校开设的课程
-
专业能力方面
- 使用C/C++语言设计并编写简单,中等和较为复杂的程序
- 使用C#编写简单的WPF应用
- 使用Python和Java编写简单的应用
- 较为熟练地使用简单、基础或中等难度的算法
- 在编写程序时能较为熟练地使用常用的的数据结构
- 简单和一般难度的数字电路系统的设计
- 以8051系列单片机为平台设计并开发单片机系统及其应用
- 使用SQL Server和Oracle Database的基础功能,并较为熟练地使用SQL语句进行数据库系统的查询和简单管理
- 较为熟练地使用IDE和编辑器
- 具有简单的Linux命令行的操作能力
2.2 作为软件工程师是否合格?有何欠缺?
从目前我所掌握的相关知识和具备的能力来看,作为一名软件工程师肯定是不合格的。
主要的问题和欠缺有
- 软件开发相关的能力不足
- 对复杂程序的调试、测试能力不足
- 还没有掌握诸如内核调试器等高级工具的使用方法
- 使用的开发工具较为单一,不具备熟练使用多种开发工具的能力
- 有限的团队开发能力
- 目前为止只在 操作系统课程设计 里进行过唯一的一次团队开发,但是效果并不理想
- 团队协调和配合能力较差
- 缺乏有效的团队沟通方法
- 软件开发相关领域的知识了解不足
- 很少使用UML图等开发工具
- 对商业软件、大型软件的开发方法和流程没有了解
- 对软件设计开发时遇到的软件应用领域的相关知识不足
- 没有进行过实际应用软件的开发,因此对商业软件实际应用的领域缺乏了解和经验
- 没有需求分析等的经验
- 缺少软件开发领域的实际性的成果
- 迄今为止编写的程序大多是为了完成课程作业和课程设计,也有部分是个人兴趣使然,没有太大的实际应用价值
3. 畅想未来
3.1 是否准备继续从事计算机行业
是的,我仍然准备继续从事计算机行业。
这篇博客中提到的陈梓瀚(vczh, 又叫轮子哥),我在进入大学开始就有所关注,我家的亲戚里也有在杭州和深圳从事计算机行业的工作。根据我对轮子哥的这么长时间的关注,对他从华南理工到微软亚洲研究院,再到西雅图微软总部的经历和我从事计算机行业的表舅、表哥的交流沟通,我觉得计算机行业仍然一直吸引着我,并且我也有信心能在计算机行业里有所作为。
所以我打算继续从事计算机行业的工作。
3.2 相比其他专业同学的优势
我个人认为,计算机行业相对于其他专业同学的主要优势大概有:
- 在可以预见的近未来,随着人类社会和生产力的进步、发展,计算机行业作为一种低投入(主要指能耗等指标)高产出的产业,将越来越靠近中心和支柱产业,在社会生产力中承担越来越重要的角色。因此从事计算机行业的我们,能接触到高新技术、核心产业的机会就越多,做出有用的成果的可能性也更高,获得更多回报的概率也很大。
- 在可以预见的近未来,各行各业都不可避免需要计算机领域的知识、能力和计算机产业的产品。从事计算机行业,能帮助我们更快的适应各行各业的需求,灵活的发展自身的职业或研究生涯,甚至有可能也能在金融/产业危机爆发时更少地遭受损失或更快地恢复。
3.3 近未来的职业规划
计算机行业是一个飞速发展,日新月异的产业,在这样的背景下进行职业规划有一定的难度。
总的来说,相比在企业作为软件工程师,需求分析师,乃至项目经理等参与到计算机软件等项目的开发工作中去,对我来说的吸引力,相比进入国有或企业的研究机构略小一些。因为我一直比较喜欢研究和捣腾新奇的东西。
但是目前看来,没有软件开发的经历,在计算机行业直接从事研究地难度不小,也面临很多的挑战,所以软件开发地职业经验也是必不可少的。而且相比较国有的和大学的研究机构,我更倾向于如微软亚洲研究院之类的企业研究机构(虽然说自己想进微软亚研院有点自不量力的感觉)。
因此我初步的打算是,先作为软件工程师进行几年的开发,试着慢慢积累经验,随时了解和学习行业内最新的知识和技术,然后慢慢的尝试向研究领域转型,争取能进入大型企业的研究机构,从事研究,钻研计算机行业最新的"tech frontiers"。