工作之余如何提高个人技术水平
之前有读者看了我个人经历,问我非计算机科班出身的该怎样入行或者工作之余怎样提升个人技术能力。今天就简单谈一下这个话题。
曾经有不下10位读者朋友在后台问过我该如何提高代码能力。当年我在学校的时候,也问过我的老师。老师的话我到现在都记得很清楚:
编程这个东西,是教不来的,你说怎么教能让学生看了就会写代码?不可能的。真正学会编程的都不是靠老师教出来的,都是自己动手实践一行行代码写出来练出来的。
技术能力的提升本身没有太多捷径或者速成的方法。归纳来说只有个人学习和工作实践中锻炼提升。个人学习最终的落脚点也一定是要回归到实践中才能真正算能力提升。
所以,当你看到像“10天入门C++”、“一个月精通Python”或者“3天入门人工智能”的宣传时,你一定要小心了。不是说这些宣传一定就是在割韭菜,但对于C++的入门和Python的精通概念的理解你一定要心里有数。我一个工作到第四年的算法工程师,天天用Python,也断不敢在简历上写精通Python。
一般来讲,搞技术的入职前两年技术水平提升会是比较快的,如果碰上非常好的技术领导,技术提升会是质变的。但后面会逐渐放慢,甚至转向管理岗后不再动手写代码。像笔者目前的状态,大多数时间都是项目管理上,再加上成家后生活上的事情变多,日常几乎没有时间写代码,这样下来技术不可能会再有提升。
好了,话不多说,本文主题是工作之余如何提升技术水平。所以我这里就把这些年个人学习的方法和习惯跟大家说说,供大家参考。
第一就是要从一开始构建个人知识体系。先要有个笔记本,不管是纸质的还是电子的。笔者用的是印象笔记,从一工作就开始用,到现在已经四年多了。好处就是可以方便构建个人知识体系,这是我之前的印象笔记的技术栈截图。
第二是在线课程。如今市面上的技术类课程多到让人眼花缭乱,但笔者日常学课程都是在 Coursera 上,不是说其他课程不好,而是 Coursera 可以褥羊毛,并且这个羊毛只有一周时间。等于说是变相的督促了自己快速学完一门课程。当然吴恩达的个人背书也是一个比较大因素。2020 年在 Coursera 上学的课程虽然不多,但也有10来门,当年我入门深度学习也正是在 Coursera 上看的吴恩达老师的 deeplearningai 深度学习专项课。另外每门课学完 Coursera 都会提供一个证书。
第三的是读技术书籍。也许有人会认为学技术看书会是一个比较低效或者笨的方法。但笨方法的好处就是一步一步会比较踏实,如果你空余时间多,花个半年时间坚持下来啃完《C++ Primer》,我相信你会比 90% 的人要强。但现在大家都比较浮躁,我就问问大家,各位做机器学习和深度学习算法的,有几个人是全程把《统计学习方法》、西瓜书《机器学习》和花书《深度学习》系统性的看完学完的?
第四是做一些数据和算法类的竞赛项目。像天池和 kaggle,大家应该都知道。也不是说大家都要像职业选手一样一定要搞个奖金啥的,但通过比赛来锻炼处理数据和应用算法的实践能力,那绝对是非常有效的。希望一起参赛交流的话,后台回复【竞赛】可以进数据竞赛交流群。
第五是搞一个个人的代码库。把日常一些常用的功能模块、小技巧或者通用处理方法用代码的方式存到个人的代码库。并不断加强这个库的可复用性。比如说你搞深度学习的,代码范式都会很固定,你根据日常经验写个可复用的分类或者检测和分割的代码模板,后面大多时候会节省很多时间。这个库你可以放到私有的 GitHub 上,或者开源出来给大家共享。
总之一句话,所有的方法最终的落脚点都是动手实践。技术学习绝对不是纸上谈兵和坐而论道,需要大量的编码实践才能真正达到提升。