年前和朋友吃饭,聊到了一个问题,如果可以重新选择职业方向,你还会坚持现在的选择吗?她很坚定的告诉我虽然很累,但还是会毫不犹豫的选择学医,只是单纯因为热爱。随后她便反问我,如果你可以重新选,你会换吗?
我犹豫了,我今年 22 岁,这个月硕士毕业,很快就会加入互联网打工人的大军,这一行起薪很高,甚至是很多其他行业奋斗打拼几年都追不上的高薪,我承认我是一个世俗的人,这一行的高薪让我很满意,但我总是会想,我真的热爱它吗?
梦开始的地方
我从小就是一个很闹腾的人,属于那种上课爱搞小动作,下课爱讲话的人,为此年少时免不了被老师“请去喝茶”。中学时也曾沉迷游戏无法自拔,差点成为一个网瘾少年,好在后来幡然醒悟。虽然戒了游戏,但阴差阳错的对计算机产生了浓厚的兴趣,大学填志愿时也曾纠结过是选择计算机科学还是软件工程,现在想想倒也不那么重要了。
本硕我都是学习的软件工程,算是一条路走到黑了。很多人说软件工程和计算机科学的区别着重在后面两个字,一个是**「工程」,一个是「科学」**,软工更偏应用,计科更偏研究。这个说法没什么不对的,因为这两者的路线确实有很多交叉,没有理论指导的工程只会是无源之水、无本之木;理论研究再好不演化成工程落地那也只是空中阁楼,因此我觉得对于刚踏入或者即将踏入计算机领域的人来说不必纠结于「软件工程」还是「计算机科学」的选择。而应将重点放在对兴趣的培养上。
兴趣是最好的老师
每当有人问我为什么会喜欢计算机时,我都会告诉他,我喜欢创造(creating)的感觉。《哈利波特》是我很喜欢的一部作品,而在计算机这一个由“01 二进制”构成的世界里,我就是“霍格沃茨”的魔法师。在这里我可以指点江山、激扬文字,实现我任何天马行空的想法,仔细想想这是一件多爽的事情啊。
在《黑客与画家》一书中,作者说编程是一种技术创作,黑客就是艺术家,开发软件与画家画画、雕刻家雕刻、建筑师设计房屋并没有本质不同。他们都是在尽情的将脑海中的想法创造出来,而这就是我喜欢编程的原因。
每当我说到这的时候,都会有朋友跟我吐槽,说他们压根没有这种想法,选择这个专业纯粹是不知道选啥,或者因为这行钱多。
的确,很多人选择计算机更多是迫于无奈,我理解。但是我没办法好为人师,也没办法告诉你们怎么样对编程提起兴趣。人生是由无数个选择构成的,如果真的无感,趁早放手对彼此都好;但如果你坚定的选择了这一行,用心做下去就好了。
一万小时定律与十万行代码
Malcolm Gladwell 在他的《异类:不一样的成功启示录》书中讲到了 10000 小时法则:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1 万小时的锤炼是任何人从平凡变成超凡的必要条件”。
如果按比例计算的话,每天工作 8 个小时,一周工作 5 天,那么成为一个领域的专家至少需要 5 年的时间。
也有人说,从初学者成长为一名合格的程序员,需要 10 万行代码的积累,那么从你开始学习编程到现在,你写了多少行代码呢?
当然了,写代码的行数和程序员的能力没有太直接的关系,代码数只是编程能力的一个体现,不能以偏概全。而且不同的岗位代码能力数量差异非常大,一万小时定律与十万行代码更多是想要告诉人们想要学好编程,实践是万万不可缺少的。
熟悉我的朋友都知道,我在现实生活中的兴趣爱好并不多,除了摄影可能就是看书喝咖啡了。但是我在二进制的世界中爱好广十分广泛,移动 App、桌面应用、爬虫、Vue/React、Java Web、Python Web、AI、容器、分布式等等我都或多或少接触过并实践过,可能会有人觉得你完了这么多东西都没有一个精通的没什么用。的确,这里面的东西我没有一个敢保证我是精通的,但是六年的校园时光你不广撒网,多涉猎新奇的东西,难不成等以后工作了,每天 996 了再去涉猎新东西?
而且,在涉猎新玩意的同时,我的实践能力得到了质的飞跃,有了很多前置知识之后,再接触一些新东西时往往都会有“哦~,这玩意不是和那 xxx 差不多吗!”的感觉,很多东西都会「触类旁通」,上手新东西自然会越来越快。
所以,赶紧行动起来,现在就去。不要找任何借口!
动手去做,Just do it!
做东西是最好的学习方法。
无论是软件工程还是计算机科学,都被划分到了**「工学」**的领域,而工学最重要的就是实践。上面我说了一万小时定律和十万行代码的理论,相信很多人都会问应该怎么去学习计算机领域那些专业课的知识,怎么去提高自己。毕竟很多人觉得《计算机网络》、《操作系统》、《计算机组成原理》这些课学了没什么用,还非常枯燥,我当时也是这么认为的,好在我一位老师曾回答过这个问题,他对此的看法是:
本科阶段不要先花大量的时间去啃一本厚厚的上百元的专业书,而应该先去做一个相关的可以迭代的项目,这样才是更好的学习方式。在项目中锻炼,遇到了问题,难点,然后针对性的进行知识学习,效率也是最高的。另外学了以后不能活用的知识实际上都很容易被遗忘,而课程的学习能够帮助你了解概括,了解全貌,可以更准确的找到相关的知识进行学习,这样经过实践学习后你会发现那种大部头的书实际上已经被啃掉了不少,再回头去啃厚书的时候,你会比一开始就啃要获益多得多!
对这个观点我深有体会。本科有一段时间我对制作 App 非常感兴趣,便抱着郭霖大神的《第一行代码》反复钻研学习,后来机缘巧合和两个朋友制作了一个校园应用《果核》,那是我们仨的第一个作品。在制作这个小玩意的过程中遇到了很多很多的问题,爬虫方面的、计算机网络方面的、操作系统里的多线程等。
在解决这些问题的过程中,不光涨了经验值,对这些枯燥的知识点的理解也加深了。再之后,为了方便苹果用户使用,我们又学习了微信小程序的制作。Flutter 横空出世后,我又用 Flutter 重构了整个 App 使其可以跨平台运行,这一过程中加深了对设计模式的理解。虽然从现在的角度看,整个过程非常粗糙,无论是代码编写还是后来的推广运营,我们都是以一个萌新的身份在探索,但也正是那段经历造就了现在的我们。
再到后来,每学习一个新的东西时,我都会想着用这些知识点搞一些小玩意,学习 Electron 时做了「MediaPub」,学习神经网络时参考论文整了一个「图像风格迁移」的小程序,还拿他做了本科的毕设,直到现在还有人在公众号后台留言要代码。
说这么多,其实想表达的观点就是,你在做东西的过程中会知道你该学习哪些知识,这是比直接读枯燥的编程书籍认识和掌握知识更有效的途径。
更多的探索
我时常会思考自己的核心竞争力到底是什么,毕竟从事这一行的人越来越多,总有人年轻着,也总有人被后浪拍死在沙滩上。很惭愧,我至今仍在寻找,这么些年也一直在探索着。
我是一个爱分享的人,无论是在生活中还是技术上。微博、即刻、朋友圈都有我活跃的身影,我会发一些搞笑段子,也会发发自己觉得拍的比较好的照片,当然有时候也会时不时阴阳怪气的 diss 某些事情,大概率未来几年我可能还是这样。
技术上,我自己运营着一个微信公众号,同时我的文章也会发布在掘金、简书、知乎等平台上,虽然已经坚持了几年,但和那些大 V 相比,我的数据简直可以用惨不忍睹来形容。时至今日我的粉丝数也只有 3200 人,单篇文章的阅读量也只有 300 左右,我知道这和我的佛系更新是脱不了干系的,虽然我一直秉着追求质量而非数量的原则,但是当看到我的文章被人转载后的阅读量是我的数十倍时你说不羡慕那肯定是假的。
如今的公众号圈子同质化太严重了,要么是放些笔记上去,要么就是各种吊打面试官。说实话,我是真的懒得写这些东西,我觉得这些内容只要有第一个大佬总结好了,后面的人再怎么写也不会差到哪去,这就跟论文降重似的,翻来覆去就这些文字。公众号的老粉们都知道我很少写这些(当然之前也走过很多弯路),我更多是希望多分析生活中所反映出这个领域里的一些有趣的、好玩的点,并用通俗的语言表达出其原理、使用感想。我觉得学习是没有 KPI 的,唯有不断的去接受新的事物,才会更好的成长。
除去自己写文章之外,我之前也会翻译一些英文文章。自从大一过了四六级后,之后也没想到要刷分,所以基本上都不怎么接触英语了,读研期间多少要阅读些英文文献,干脆就参与了掘金的翻译计划翻译了一些文章。说来惭愧,原本给自己定的目标是翻译 40 篇文章,结果到现在也只翻译了 23 篇,上一篇还是去年年底的时候翻译的。当然了,这一切都是因为自己在忙着毕设和论文(疯狂给自己找理由),相信等这段时间结束后一切都会步入正轨的。
抛开图文,在视频制作方面,最近我也在考虑我可以做什么类型的,之前有试水过制作一些视频,但都不是很满意,之后我也会积极的去尝试,也希望到时候各位老粉们可以支持一下。
前路漫漫
上面说了那么多说到底还是以一个学生的身份在回顾过去这几年,去年我在淘宝实习了三个月,初步感受到了所谓大厂的福报,随后就又回来学校享受生活了。下个月再去淘宝,就真的是以一个打工人的身份去闯荡阿里这个江湖了。前路漫漫,鬼知道我能在那江湖中混成什么模样。有句话说,别人会关心你飞的高不高,而我却只关系你飞的累不累,毕竟如果你飞的高又不累的话那可就太气人了。
前路漫漫,愿出走半生,归来仍是少年。
最后
以上就是本篇文章的全部内容了,之前就说会找个时间来聊一聊我学习编程的这些年,但一直忙着毕业的相关事宜,现在总算是空下来有时间把欠下的文章补上了,这一篇既是我学习编程的心路历程,也是这十八载学生时代结束时做的一个小总结。所以,回到一开始的那个问题,如果可以重新选择职业,我会换吗?
不会!