让我觉得我应该再写一篇文章站在全栈工程师的理由是,一本书《浮现式设计》和一个单词Re-Practise。
似乎这是一个新的思考,尽管在那之前我已经写了一篇《全栈工程师的思考》,只是事隔半年之后,我又有了一些新的感触。这半年来,除了增长了一些软技能,如沟通、表达 、英语,以及一点点的技术提升之外,并没有什么太大的变化。
每天我们似乎都在重复前一天的工作,生活似乎就像是一潭死水,日复一日地添加新功能,修复旧Bug。让我们觉得生活过于无聊的原因,怕是因为现有的项目已经很稳定,不会有太大的变化 ——不会有关键人员的离职,不会产生大的bug。
所以自然而然地,我们就不需要更多的技能能帮助我们成长。
个人的全栈
从个人的角度来说全栈似乎没有多大实际意义。以我的角度来说,我之所以选择全栈这条路线,不仅仅因为只研究一个东西太枯燥无聊——即使我可以成为这领域的大牛,更何况我对成为大牛一点兴趣都没有。并且我可以站在一个新的高度来看世界。
说到这里我突然就会有一种疑惑——你一直往某一个领域钻,只是因为你的工作需要吧!
这就变成了一个更有意思的话题,如果你并不是真正喜欢这个领域,那么你会对这个领域作出怎样的贡献?仅仅是让大家知道你对这个领域了解比较深?
而且还有一点特别有意思的是,你现在觉得你会为之奋斗许久的技术栈,并非是你的真爱。因为你还没有机会好好看看这个世界,这个世界到底是怎样的,到底会有怎样有意思的人、事。只是因为你过去熟悉这个领域,你就选择了这个领域。你听从了别人的片面之词就做了一个决定,而并没有自己好好地去做一个尝试。
记得还在学校的时候,我曾经花了很多时间去绕过Java语言——用Python、JavaScript来完成大部分的想法(不是计算机相关专业)。等到了工作,我发现让我受益最大的语言是Java——因为Java是一门很完备的语言。我从Java上并没有学到一些特别有用的东西,但是我从其相关的书籍上学习到了太多的东西。几乎所有的和软件工程相关的书籍,都以Java作为示例,当然还有一些C++。Python、JavaScript则是可以满足我的创造欲。
对了,是不是又想到了木桶效应。木桶效应还有很扯淡的一点是,只考虑到了板子的长度,而没有考虑到容器的大小。
如果你有更多的板子,你所能容纳的水量就是多。相似的,如果你有更多的技术栈,那么你的容量也就更大的。并且当你开始提升某一个长板时,剩下的长板也可以很容易提升。
全栈的优势无非就是学习能力和思维能力,同时带来更广阔的视野。
团队的全栈
在一个大型的互联网公司,这种全栈一点意义都没有。他们并不需要你有着良好的代码能力、架构能力,又或者是全局思考的能力。你只需要把你手头的那一点点技术细节完美实现即可,要知道0.1%的性能提升,可能会带来几百万刀的效益。相比于这样精分职责的团队,你只需要好好精通手上的技术栈即可,要知道那可是好几十个0.1%。
团队里面的人会拥有相同的技术栈,讨论着相同的知识。尽管存在能力上的差异,但是如果一个人员离职,由于其岗位所带来的价值,也会带来相似能力的人员。对于大的互联网公司来说,不会存在太多的问题。
然而作为一个小的团队来说,这个问题就变得很严重,在有时似乎是难以承受的。这似乎也就是结对编程得以在国外流行开来的原因,尽管结对编程会增加编程时间,也会在一定程度上减少Bug的数量。而事实上,结对编程带来的优点并非是这样的,而是分享业务知识。
这就意味着在一个敏捷团队里,你不得不全栈。看上去似乎有点被逼无奈的样子,但是实际上大型互联网公司也是如此,你不得不成为专家。
而事实上,大部分的人都不会只在一个领域里工作。