在IT行业,技术更新迭代速度惊人。每隔数年乃至数月,都会涌现出革新性的技术或前沿框架,引领行业潮流。
比如前端开发,刚开始工作时,大部分是静态页面+JavaScript,页面上只有一些简单的交互。后来出现了Ajax技术和JQuery库。现在想起第一次使用JQuery时,觉得这就是前端库的终点。然而没过几年,兴起了MVC/MVVM框架,随之而来的就是AngularJS和EmberJS。这时,突然就觉得JQuery没那么香了。AngularJS和EmberJS还没闹明白,React又横空出世,紧接着就是Vue……
再看后端开发,早期主要使用.NET或者一些Java,但当时后端语言和框架并不被重视。更多的精力都是放在数据库上,尤其是Oracle,项目上还有DBA的角色,专门负责处理数据库的问题。那时的应用基本都是单机的。随着应用规模的扩大,性能问题逐渐显现,开始引入缓存技术(Memcached,Redis),同时,异步编程和多线程技术也开始被广泛应用。各种Web框架也如雨后春笋般不断崛起,知名的比如Spring,Django,Rails等等。
互联网应用飞速发展,单机应用开始显得笨重且难以维护和扩展。云服务,微服务,Docker成为主流,持续集成和持续部署(CI/CD)流程也被广泛采用。数据安全和隐私保护的重要性也日益增加,后端开发在安全性和认证方面的要求也越来越高。
其他IT领域也类似,随着硬件的发展和互联网累计的数据量到达一定规模之后,神经网络,深度学习和强化学习让机器学习领域飞速发展,AI真正开始走向普通人的生活中。总之,我们一直处于技术迭代的循环中。
选择通才还是专家?
在IT这样迭代如此之快的行业绝无仅有,那么,在技术的世界里,我们应该专注于一个领域还是尝试很多领域?也就是说,我们应该成为通才(拥有广泛的知识,无论有用与否)还是成为专家(致力于一个主题或一个特定的分支)呢?回答这个问题之前,首先了解一下通才和专家具体有什么不同。
通才
通才指的是那些勇于尝试、对广泛领域保持探索精神的人。在技术的广阔天地里,他们不仅精通某一专业领域,更在多个领域内拥有深厚的知识积累。这类人往往不会局限于单一的职业路径,而是倾向于在其职业生涯中跨越不同的领域,不断寻求新的挑战与成长。这样的人能够改变世界。著名的通才包括像史蒂夫·乔布斯和埃隆·马斯克这样的天才,他们擅长创新新事物。通才不仅仅是在他们感兴趣的每一件事上都表现出色,他们还能够将解决一个问题时获得的知识,其应用于不同但相关的问题上。当他们学会了某个领域的基本知识后,就会把这个知识用在之后接触的每个新领域里。这就是首席技术官的工作范围能横跨多种技术和不同领域的原因。他们会用自己多年积累的见识和经验去应对每一个新挑战,同时还会不断学些新出现的技术。通才专注于解决问题,而不是某个具体的技术。
专家
相反,专家则展现出高度的专注力。他们致力于深耕细作,在某一特定领域内稳步前行,犹如手持明灯的引路人。专家们热衷于全面掌握某一领域的所有知识,他们孜孜不倦地研究、实验与学习,以追求更高的专业造诣和更深的理解。绝大多数技术进展归功于那些在各自领域深耕细作的专家。他们专注于机器学习(ML)、网络技术(Web)、移动技术、基础设施、中间件以及其他各类技术领域的开发与优化,凭借多年累积的专业知识与经验,推动了这些领域的持续发展与创新。专家需系统掌握核心基础知识,并通过在特定领域内长期深耕,方能触及并精通该领域的高级课题。成就斐然的背后,是无可替代的辛勤努力与积累,无捷径可循,比如各种编程语言,框架的发明者,机器学习领域的各位先驱等等。各学科的重大发现与进步,很大程度上仰赖于这些领域专家的贡献与推进。软件专家长期以来运用一套稳定的技术栈,在自身领域内积累了深厚的知识,并对外部进展保持洞察。他们通过不断努力,成为了行业内的权威人士,同时积极寻求和实践创新的方法论。不过,软件专家并非要求个体局限于单一技术领域,他们也可以自由探索其他技术领域。
个人建议
我自己的感觉是通才和专家属于两个极端,作为一个普通人(包括我自己),我的选择是介于两者之间。如果对某个技术领域非常感兴趣,那么可以花时间去掌握该领域的各个方面,但不要限制自己,不要排斥接触其他相关领域。比如,在github,我们可以看到很多前端高手,前端的知识和经验已经非常丰富了,也会去学习Rust,然后用Rust来开发提高前端开发效率的工具。还有很多机器学习领域的高手,他们也会学习前端的技术,为自己的大模型制作交互界面,让更多的人能够使用大模型。选择学习什么技术的时候,有两个很重要的因素值得我们好好参考,就是兴趣和经验。兴趣虽然有助于我们缩小选择的技术领域,但最好是尝试不同的技术领域之后,再决定自己的真正的兴趣。
比如,不要因为第一个工作接触的是前端,发现前端也挺有意思,就把自己的兴趣定在前端。决定兴趣之前,多接触几种不同的领域,尝试在不同的领域做一些小工具玩玩,不同担心学了没用或者浪费时间,想想通才,任何在其他领域中学到的技能都不会浪费。其次,经验是另一个帮助我们做决定的重要因素。要成为专家,需要花上好多年的时间去积累经验。如果你已经在某个领域里干了好些年,往专家方向发展通常是个不错的选择。但是,如果你刚起步或者工作中本来就横跨了几个领域,那么,选择成为通才也许更有意义。最后,有一个忠告,千万不要仅仅因为困难就放弃成为专家,转而成为通才。因为通才一点也不比专家简单,通才不是“万事通”,更像是多个领域的专家。总之,千万不要东搞搞西弄弄,一碰到难题就怂,然后又跑去折腾别的,并且自我安慰“我就是兴趣广泛,更适合做个通才!”。