“程序员是应该坚守阵地?还是追求全栈?广和深如何平衡?”这是前几天一个小伙伴加我微信好友,向我提问的一个内容。我相信很多小伙伴也有这样的迷惑,所以开个视频回答一下。
我先给出结论,结论就是“当你把一件有价值的事情做到卓越以后,就可以考虑更深更牛的事情了。但注意的是,前提是已经把事情作到很卓越了。”
从小伙伴的提问,引出的思考
有了结论后,我们再通过三个维度,来说明这件事。
至于到底是坚守阵地?还是追求全栈?也要因人而异,也和每个公司发展有联系。但我在这里给你三个我的思考维度,帮助你理清现状,从而最终帮助你得到结论。
一、程序员也是技术人,我们卖艺不卖身,根据变化灵活改变。
第一个思考维度:“程序员也是技术人,我们卖艺不卖身,根据变化灵活改变。”
说白了程序员是以技术为驱动发展的职业,所以很多人就会把技术看的很重。技术虽然重要,但技术只是实现自身价值和获取幸福生活的工具。千万不要迷恋某种技术,否则,当技术革新时,它都懒得和你说一声再见。
拿我自己举例,我刚开始工作时作PHP开发的,那时候是2005年,所以你会PHP已经很牛了,可以找到不错的工作。但随着技术和公司的发展,我又把Java变成了我吃饭的工具。后来人们越来越看重交互效果,我又熬夜苦读学习前端。目前专精前端也有5、6年的时间了。
时代是变化的,所以你也要跟着变化。公司是变化的,所以你也要跟着变化。技术是变化的,所以你更应该跟着变化。
但任何时候,业界都需要在某个领域专研的很深的人,而不是需要什么都懂一点,实际什么都稀松的人(目前我接触的全栈开发者,几乎都属于什么都会,但什么技术基本都稀松平常)。所以如果你的技术公司用的到,还是主流技术,把这项技术玩精熟绝不是什么坏处。
浅尝辄止不是什么好习惯。
当你精熟后,你也需要关注其他的和你目前技术相关的技术,多了解一些就多一些机会。其实如果你精通了一个编程技术后,对一个新技术也会很快上手,并迅速达到熟练程度。
正如前面我说的“程序员卖艺不卖身,没必要把全部生命都奉献给一个编程语言或者技术。”技术是不断变化的,一切都是为了自己和家人活得更好,一定要把工作和生活区分开来。生活要忠贞,技术要灵活,这样才能在这个越来越卷的程序世界里独善其身。人往高处走,水往低处流,不要固步自封。
第二个思考 维度:市场需求决定技术,而不是技术决定工作。
第二个思考维度(或者叫做原则):市场需求决定技术,而不是技术决定工作。
我在面试中真的见过认死理的人,信奉努力必有结果,如果前面有一堵墙,磕得头破血流把墙撞倒也要迈过去。比如我们公司前年刚出Flutter的时候,公司非常重视,决定成立Flutter小组。但是市场上会Flutter的人寥寥无几,于是公司决定招聘前端新人,转Flutter。这样新人在实习期间可以充分学习Flutter技术,也留出充裕的时间融入团队,一举两得。简单说就是新人入职后实习和学习新技术同时进行。
在这个计划进行时,觉遇到过太多的前端程序员,不愿意放弃自己的领域,从而拒绝了比普通程序员薪资高的“带薪学习机会”。但留下来的人,学到了新技术,并且现在前端也作的都非常好。
很多刚刚进入IT界的程序员都是技术驱动的,什么技术有意思就去学什么技术。但是你最总要赚钱吃饭,养家糊口。所以要学会站在公司的角度思考问题,你会发现这个世界其实不是以技术为驱动的。公司考虑的是资源分配,也就是人力资源如何分配到需要人能解决的问题上。
简单说公司首先要的是解决问题,然后根据问题再确定需要什么技能,最后才会招聘对等技能的人。所以如果公司让你去学习新技术,你对公司也比较认可,就去转行学习。这不是对技术的不忠,而是聪明人的选择。
不要埋头只作技术,关注公司需要什么,市场需要什么。当然,真正厉害的人能够在没有市场的地方去创造市场,就如同“卖洗发水给和尚”的故事一样,以一种没想过的方式利用自己的技术创造价值。我身边的同事是有达到这种境界的,但我不行,还在学习当中。
第三个思考维度:程序技术转变作增量,而不是清零
第三个思考维度叫做 在现有技术上作增量,培养技术复利思维,跟随技术成长
我现在从事前端,所以我拿前端举例。前端作的就是界面,英文叫做view
。作为一个前端人的任务就是展示、展示用户可见的部分。
那我们完成这个任务,需要精通HTML、CSS和JS技术。千辛万苦页面作完了,加载的时候比较慢,我们要学习优化技术。终于优化好了,要上线了,发现工程文件太多。于是我们又要学习打包工具(gulp、webpack),还要学习包管理工具(yarn和npm)。
刚觉的自己技术牛X了,又开始流行三大框架Vue、React、Angular。终于学会了新框架做出了更加完美的效果后。发现后端又不给力,开始自己用Node技术和对应的框架学后端。
开始作后端,又发现数据库mysql有瓶颈,开始学Redis。终于前后端都没问题了,又为了节省维护和硬件采购成本,开始学运维Linux和Docker。
终于成了公司的技术大牛,老板又让你带新人。你又要学管理………持续学习、持续学习、持续学习。
这是我的学习步骤,说这么多,其实我想说的是,有时候你的技术坚守,只是冰山一角,入门简单,深入太难,到达公司大牛就是难上加难,
当你沉下心来,潜入海底,看见整个冰山时,也许你就不在考虑是坚守阵地?还是追求全栈?在现在使用的技术上作增量,不断学习新技术。而不是今天作前端开发,过一年后作后端开发,前端所有的知识就都不管了。就算你要从前端转变为后端,也要成为一个精通前端的后端开发者。这样你的竞争力就大大提高了。
技术作增量,培养复利思维,才能在这个技术世界走的更快更远。
三个思维模式 让你驰骋IT沙场
我作了14年程序了,技术转变了很多次,做过php、net、java、python和前端。以上时我对“程序员是坚守阵地?还是追求全栈?”这个问题的思考。
我们复盘一下:
- 第一个思维模式是:程序员也是技术人,我们卖艺不卖身,根据变化灵活改变。
- 第二个思维模式是:市场需求决定技术,而不是技术决定工作。
- 第三个思维模式是:程序技术转变作增量,培养技术复利思维,而不是清零。
喝口水……升华文章。
人生从来都不是一路坦途,更不会一成不变。接受变化,升级更新技术是每个程序员必须要作的事情。
我今年受到了很多挫折,生病住院、高速车祸、投资失败………但就是对技术不断的学习和求变,让我虽有财物损失,但根基毫发无损。因为你的知识没有人可以轻易取走,一旦拥有陪伴终身。希望你也能接受这个世界和技术的变化,在互联网的浪潮中快意厮杀。
中国已经从中国制造
转变成了中国智造
,程序员作出了不可否认的卓越贡献。我希望能通过微不足道的分享,帮助新手程序员成长。