2017高级软件工程第1次作业
第一部分:结缘计算机
1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?
说起来也是阴差阳错,高考填志愿的时候考虑的是当时最火的3个专业:机械、土木、电气。只知道哎呀这个专业好,有前途但却丝毫没有考虑自己是否喜欢这个专业。然后前三个志愿都没录上,第四个就是计算机,当时填的时候完全是瞎填的,因为我根本没想到前三个都录不上这种情况。其实说瞎填只是说我当时对计算机专业的认识有着严重的误区,以为搞计算机就跟电脑城里配电脑的一样或者跟黑客一样,熟悉各种硬件配置什么的。结果完全跟自己想的不一样……
当时入学的时候,我还是对计算机有着浓厚的兴趣,因为感觉当黑客好厉害啊。我要学如何去黑别人电脑,这就是我当时的目标吧。至少,我入门的时候还是有目标的。当然和这些博主比,我觉得我还是有差距的。他们都是有着惊人的意志力,以及自己对自己职业规划的独立思考能力。我认为决定一个人能走多远的是一个人的品质、心态、性格这些从小到大潜移默化形成的东西而不是能力。所以,这些博主们的经验都很值得我们学习。博客G[1]的作者这句话我很喜欢:
人是这个世界最伟大的动物,原因在于,从生理上,我们其实相差不大,每个人都大同小异。但是,精神上,性格上千差万别,每一个人都生来具有无限的潜能。每一个希望不断改善自己,希望不断前进的灵魂都是伟大的。
2.计算机是你喜欢的领域吗?是你擅长的领域吗?
喜欢,确实喜欢。我这个人喜欢学以致用,用自己学到的东西,来解决自己生活中遇到的问题,这种感觉我很享受。擅长?我觉得兴趣是最好的老师,有了兴趣自然会努力去学,而这个世界上大部分的事情还没到拼智商的地步,所以努力了自然有回报,然后慢慢的积累就变成了擅长。所以我觉得我有兴趣,就一定会变得擅长。
3.你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?
我觉得我热爱这个专业,我的热爱可能跟我的性格有关系,我心里存不下事,我不喜欢问题,所以遇到问题我肯定第一时间解决,这也是跟计算机行业的特性相契合的。比如说,我改不完这个BUG是不会睡觉的。还有就是,我愿意为代码牺牲休息时间,包括节假日。我现在打开电脑,唯二的娱乐活动就是看视频、听歌。在我眼里,电脑是我的工具,而不是我的玩具。以上就是我的计算机的热爱。
第二部分:在计算机系学习
1.你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。
槽点还是蛮多的,说一个我最不能忍受的地方。很多同学,连基础的电脑硬件知识都不知道,买电脑经常被奸商坑。虽然,我们很多人都不是搞硬件的,但是连如何选择自己使用的工具都不知道,这要是放在别的工科行业真的是很荒唐的一件事。买个电脑回来马上装360、腾讯、百度全家桶,打开电脑后盖,连里面的元件连显卡都认不出来。虽然说可能学校也没开相应的课程,讲组成原理还停留在386的时代。但是作为一个科班的学生,连一点想了解自己工具的意识都没有,我觉得这是需要我们反思的。
我理想的大学教育应该是紧跟着技术、理论的发展,少一些考试,多一些实践类型的大作业,我指的不是那种学生成绩管理系统这样的大作业……而是能解决自己生活中的问题、有自己的创意这样的大作业。并且能经常安排高年级的同学来解答同学们学习中的问题。学校给的就是什么考试都是笔试、天天做学生成绩管理系统这样的大作业、让外面的培训机构来给我们讲10年前的技术,然后鼓励去上培训班。我觉得想做到国外会很难。因为我们的学生才来大学都会觉得,终于可以放松了,并且缺乏自主学习的能力。
2.迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。
到目前为止,大概有个2W行左右。做过的最复杂的项目,我现在觉得做过的项目在技术上都不复杂。大二的时候做过一个卖小龙虾的微信公众平台,这个项目复杂在开发这个项目的师兄做到一半就去实习了,老师就让我接手,但是当时什么都不会就直接硬着头皮做了,真的是什么都不会。。。。php、html、js、mysql、微信平台的API这些都不会,大概花了2个星期做了最简单的入门。然后就开始看项目代码,那个师兄的用的不是mvc的设计思想而是那种Php嵌入html的方式,会web开发的同学知道这意味着什么……真的是噩梦,看代码非常痛苦,改起来也很痛苦。印象最深的是当时为了修复微信支付的bug熬了2个通宵,看了鹅厂的代码、文档让我见识到了什么是规范吧。也算是为我打开了新世界的大门。结果这个项目正好赶上饿了么、美团抢市场的时候,最后甲方做不下去了,项目也就停止维护了,本来用mvc都已经重写了一半了,后来老师又让我去武大遥感的一位老师那里帮忙写js做数据可视化,就不了了之了。
3.科班出身和北大青鸟有什么区别?
我觉得最根本的在于基本功,虽然说我当时并没有意识到数据结构这种课有什么用,但是随着代码数量的上升,总会遇到一些问题需要数据结构来解决的,这个是躲不过的。而科班的学生说句难听的话,没吃过猪肉也见过猪跑,就算大学四年学的都还给老师了,最起码也还能记得概念的名称,知道怎么解决问题,我可以谷歌、看书来把知识补回来。而北大青鸟不会教这些基础课,更注重实践经验,但一味的追求实践经验也不是好事。这跟练功一样,你想练绝世武功,没有扎实的基本功很容易走火入魔。
4.速成的培训班和打基础的大学教育还有mooc之间有区别吗?
有些东西需要积累,无法速成。我当时想做web全栈,但是发现东西太多怎么办?着急没有用,着急只会搞的什么都学不精。有些经验,需要你自己经历了你才懂为什么要这么做,才能真正的理解精髓。而别人告诉你的经验却还是别人的。比如我当时看学长的php混合html的写法,我后来才真真切切的体会到了mvc的好处。而本科和mooc却是一个脚印一个脚印的走,短时间内看似培训班效率高,但从长远来说,培训班还是有相当大的短板,而这些短板都是要用时间来补上的。特别是现在很多培训机构看着深度学习很火就开设这类课程,但是我个人觉得,这个方向的门槛之高,别说数学基础,没有扎实的英文阅读水平连门都入不了。所以我很赞同博客E[2]的作者说的那样:
我觉得一个正常的程序员,是不应该去参加培训的。更何况,培训真的没有什么用。 多半都是想走捷径,不劳而获。 而若要好好走好职业道路。 在走出大学校门的那一刻,应该学会自我成长,自我完善。
5.学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
当然有,我觉得很正常。因为人总是需要去撞墙才会成长。我记得当时老师不停的强调有多重要,可是呢以当时的视野根本不知道有多重要,唯一对这两门课的重要性的认识就是老师说考研要考这门课。确实,当时的计算机对我来说就是win32应用程序,黑框框,写个计算器。那时候确实用不到线代和概率,但是我现在不后悔,因为我以现在的视角能看到自己成长的轨迹我觉得这是一件很有意思的事情。因为我现在从事计算机视觉/深度学习方面的工作,线代是我天天都在打交道的东西,好在去年考研一年我把知识都补回来了。其他学科,我目前从事的工作暂时没用上,但是我知道有些东西是躲不过的必将是我成长路上必须攻克的难关,而这一切都是还之前欠的债。出来混,迟早是要还的。
第三部分:未来规划
1.对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
我的梦想就是进BAT,这真是梦想。就是因为这我才选择考研,因为一个双非学校的本科学历想进BAT太难了。我目前从事的方向很难,天天跟数学英语打交道。这也是我一直以来想干的事情,因为我本科从事的是web开发,门槛低,可替代性强,想成长成很难替代的角色需要太长的周期并且这个行业天花板比较矮。这是我的拙见,大家不要见笑。目前就是踏踏实实学知识,同时注重综合能力的培养,多尝试之前没尝试的东西。都说计算机这个行业吃青春饭,说实话我对自己35岁以后要干嘛也很迷茫,不知道什么适合自己。但是看了博客L[3]的大佬给的建议:
把自己对待遇和职位的那个目标放在心里,踏踏实实做好今天的事,炼好自己的内功,注重经验的积累和总结,等待一个能让你量变引发质变的机会,用你的能力抓住它不要放手,你会发现你的路就在前方,通往这条路的门不知不觉已经开了。功到自然成,水到渠成。
还是脚踏实地吧,想那么遥远的事情没有什么用。
2.实习经验究竟有多重要?你准备如何积累实习经验?你希望在企业内实习还是在实验室做项目?
实习经验能丰富自己的简历,开阔自己的视野,让自己见识到业界的工作环境,也能为自己找到喜欢的工作方式。听说我们实验室不让实习,所以这个问题我还不知道怎么办,如果可能的话肯定是想到企业内实习的。
第四部分:课程期望
1.你对这门课的期望是什么?你打算平均每周拿出多少个小时用在这门课上?你愿意为了一个你感兴趣的项目、或得到实战锻炼而付出更多时间和精力(包括熬夜)吗?
因为我本科就是软工的,所以我这门课程的重点在于实践而不是长篇累牍的经验式的知识。我希望能多一点新的东西,就像这个markdown一样,之前想学但是觉得没有学以致用的机会所以就索性没学。我比较喜欢这种在课堂上学到新技术,一边学一边用。熬夜是肯定愿意的,程序员是一种把咖啡转化成代码的神奇动物。
[1]https://news.cnblogs.com/n/531362/
[2] https://www.cnblogs.com/geniusalex/p/4928713.html
[3] http://coolshell.cn/articles/4561.html
分析软件
Games(游戏)
游戏这个东西我觉得是刚需,因为中国学生的娱乐活动太少,而确实大部分游戏用户都是学生。现在基本上没有不付费的游戏,虽然有的宣称免费,但是往往比付费更花钱。现在游戏的生命周期往往取决于游戏模式,比如LOL这类的生命周期往往很长,因为你想在游戏中取得成就感需要花费很多努力,且开黑能带来很强烈的快感。但是像星际争霸2这种需要花费的努力太长,门槛太高对新手不友好。从事游戏开发的薪水确实很高,但是往往伴随着疯狂的加班,不停的迭代,维护。收获往往伴随着巨大的付出。
Mobile App (手机应用)
说起第一款使用的那肯定是QQ了,QQ可以说伴随着我们这一代人的成长。应用的盈利方式就是以友好的交互方式、新颖的创意来让用户产生依赖。比如QQ可以充值各种服务,微信这种虽然不赚钱,但是他相当于一个平台,有了大量的用户是绝对不愁盈利的。从事这类开发也很辛苦,但是比游戏行业要强,因为游戏会随时突然死亡,而一个让用户依赖的APP就算不火也是百足之虫死而不僵。
现在APP市场需要的不是技术而是能解决市场痛点的创意,比如共享单车。这个东西确实解决了广大学生群体在面积巨大的校园里出行的困难。以及庞大的资本注入来抢占市场,还是那句话让用户产生依赖,同样的共享单车,那用户选的肯定是优惠力度最大、使用体验更好的。
Operating System(操作系统)
操作系统带来的影响是潜移默化的,你使用之初可能感觉不到它的好处,但是你换另外一款的时候你就各种不适应,比如很多人买mac第一件事就是装win。我觉得操作系统目前不存在竞争,因为有能力做操作系统的公司这个世界上就3家,微软苹果谷歌。就算是谷歌苹果想撼动win在工业界的地位估计也不大可能,因为代价太大也没有必要。这个世界可以没有谷歌苹果但是不能没有微软,否则,举个极端的例子,如果win明天消失,大家可能连钱都取不了。有人说win是旁门左道,正统应该是继承了unix血统的mac os x。确实从这个角度来说,win确实是旁门左道,因为win放弃了计算机最初的形态,用图形化界面的方式降低了学习计算机的成本,让全世界人民以很低的学习门槛使用计算机,给计算机界带来了一场革命,微软绝对比苹果谷歌都要伟大。而mac本来就是生产力工具,注意是工具而不是玩具。我承认在mac下写代码很舒服,效率很高,用户体验更好,但是苹果太贵了……谷歌在手机界混的风生水起,安卓确实也是一款伟大的操作系统。所以,这三家的用户市场基本上没有什么太大的交集,也不存在你死我活的竞争。