把技术学习周期拉长,这将会呈现出类似股票的技术面趋势变化。我回顾了从我初学编程到现在已对它大概有所了解的整个过程,希望从中发现技术跃升的规律,以此为作为对未来方向思考的基础。
吸引期。高三时,我会经常被手机上的Python编程课的广告吸引,这些试听课里面的炫酷代码界面和实现效果所吸引(比如一个黑客帝国代码雨的界面,网上随时都可以找到现成的代码)。编程似乎能像黑客一样控制电脑、自动化操作,这种炫酷感和神秘感持续吸引着我。到现在为止,这也是我一直能持续投入技术学习的关键驱动力。
懵懂入门期。大一刚接触电脑的我,对一切充满新鲜感。我从Python和前端三件套HTML/CSS/JS入手,虽然只学了基础的语法,但却迈出了第一步。参加ACM迎新赛后,我就开始进行C的学习,慢慢转向CPP和基础算法,而这个学习过程一直持续了大学整整四年。
工程能力探索期。大一下我便在学长的推荐下购买了4年的腾讯云服务器,之后就开始了nginx网站搭建,个人博客搭建等工程。同时我也玩过一段时间的Nonebot框架,在服务器上搭建QQ机器人,放在各种群聊里面,然后收集各种API,在群里面自定义各种有意思的操作。在大二担任计协会长时,我也自然用到了相关的工程开发能力,在疫情时候搭建了一个OJ网站,用来社团的线上比赛活动。
AI技术探索期。在大二的时候就参加了某个类似于项目的小组,里面其实是用深度学习去做一些目标检测的内容。在这个阶段,我了解了深度学习对应的知识,对一些基础的Pytorch代码实现也有了实践。由于大三又要准备保研,我疯狂补充了ML和DL的知识内容,算是对整个基础知识体系有了更深的理解。
行业应用期。保研之后,当时的职业规划比较简单,就是进企业做开发,目标就是C++ / Python / Go / Rust之类的后端开发,于是补充学习了对应的语言知识,又看过mit的操作系统课,看过三维重建的内容。之后偶然的一次实习投递,又让我转向了自动驾驶方面的学习。
研究期。研一确定方向时,我完整学习了LLM的原理和代码实践。整个研究生前半程,从方向选择,到不断代码修改&迭代&重构,到做出初步的效果,整个过程很艰难。之后就是跑了上千个实验,然后形成论文&润色修改,最终投稿。期间做了涉及多模态和对比学习的工作,补充了大量的科研经验和知识。投稿之后又学习了大量业界可能用到的知识,如强化学习等。
从整个过程来看,我每个阶段主要看的内容都在变化,难道是说我始终没找到自己的目标方向吗?我感觉并不是这样的,每个阶段学习的东西都在变并不是因为迷茫,而是因为每个阶段所处的位置不同、视野不同、需求不同。方向并不是一开始就出现的,它需要不断地被构建。随着能力的增长,能选择的范围越来越大,在众多已经尝试过的领域里面,才能更容易找到更适合自己的东西。