这是Minner的个人技术博客,用于记录汗水和技术感悟。
为什么要叫轻全栈?
很早很早以前,我以为自己是个“全栈”,那个时候以“什么都能自己来”感到自豪和自信。一年又一年的过去,互联网上对“全栈”这个词的讨论和解读越来越多,有越来越广义的,也有越来越狭义的。更有很多“标题党”抓住了这个词对广大技术人的吸引力,让互联网上出现了很多“为什么全栈XXX”的标题。其实“全栈”这个词本没有标准的解释,百度百科上的“全栈工程师”2014年才被创建,直到现在经历了二十多次修改,也不能将哪些技术定性为“全栈”中的必备,更不能精确要求对某项技术的掌握程度。作为探讨,我认可百度百科中对“全栈工程师”的延伸。
回想最早自己谈“全栈”这个词的时候,在意的是同时掌握多种技能可以让自身有更多的就业方向,提高个人在工作岗位上的竞争力(那时候还不了解大厂里的螺丝钉,众所周知,从效率和成本的角度考虑,创业公司对团队沟通效率和人员数量的关注程度之高。并不是创业公司不想要高质量发展,而是因为它们的首要目标是生存,最强调的是快速)。在工作多年后的现在,我的看法相比以前不一样了,或者说以前没有思考过这两个问题:一是编程开发领域各种新的技术、方法和概念层出不穷,几乎没有人能够把这些东西全部深度的掌握;二是如果能做到把任何一项具体工作都合理分配给相关领域的专职人员去做的话对整个项目更有利。
以上两点似乎成为多数公司在项目开发中的实际矛盾,但我还有另一点要单独说下:同一个人掌握多个细分领域的技能可以有效的提升全局观,他不一定要事必躬亲,他可以指挥各个领域的专职人员协同工作。如果确实这样安排,这个人的工作会偏向管理和决策。即使他可能是某些领域的专家,但他有限的时间精力很难支持他同时做好多个方向的工作。而如果他能做好决策管理,则会比把时间花在某个专职领域所取得的效益要高。可是企业主会希望他做好管理决策的同时,或者加点班,再充当一个专职人员,因为企业主不是固执的工匠,不会在意能否把某件事情的99.99%优化成99.999%,他们关注的是成本是否递减,效益是否翻倍。
我们都希望自己是“全能”的,但要掌握“ 全能 ”中的任何一项能力都是有成本的。因为学习训练需要花费时间和金钱。当我们决定了投入成本,我们就希望会有回报,当往多个方向投入了成本,如果你发现某一些方向的回报少得可怜,会不会反思其实有其他更适合自己和更值得的方向?
在这里我先抛出自己得出的几个简单的结论:
1、一个长期从事技术工作的人员,无论是在大企业还是创业团队,他的技能不可避免的会有横向的发展,包括非技术领域(大企业里混日子的除外);
2、长期以一个方向为主要工作的人员,他在这个方向会越来越专业(相对于他自己),熟能生巧嘛;
3、在某个方向到达一定深度后,一定需要更宽的知识面才能够继续深入。
根据以上简单的结论,再转变为我现在的几个看法:
1、长期从事技术工作后,大都会成为自己曾经眼里的那个“全栈”(没有必要在意外界对这个词的看法和解释);
2、“全栈demo”们应该给自己的技能发展定一个规划,这个规划可以调整但一定要有(避免低回报的投资);
3、不必过于在意对每个细分领域的熟悉程度,因为人脑记忆的特点,长期做一个方向后自然熟悉这个方向,离开一段时间后有些东西就模糊了,查字典并不可耻。提炼自己的思维方式和解决问题的综合能力更为重要。
4、接上一条,好的记忆力有助于提高效率,但保持身体的健康和发根的牢固并不是简单的事情,良好的作息只是基本条件。
5、不要刻意的追求广度,那样做的成本太大意义却有限。应该向邓小平爷爷学习,找到关键点画圈。
6、要在适合自己的方向达到足够的深度,要自信(如果每个方向都浅尝辄止,什么事也干不好)。