怎样成为全栈工程师(Full Stack Developer)?
保留所有版权,请引用而不是转载本文(原文地址 https://yeecode.top/blog/36/ )。
看到很多答案都是采用意淫大法,揣测全栈工程师是怎样的。
当然,很多思路也都是对的。
我就不采用意淫大法了,用自己的实际经历介绍下如何成为全栈工程师。并且介绍成长路上和成为全栈工程师之后要注意的事情。
开始了,小板凳搬好。
本回答一共分为下面几个部分:
1、Web前端
2、后端
3、客户端
----------小节
4、算法
5、运维与脚本
----------小节
6、其他可有可无
7、现在在干吗
8、最后也是最重要的一点
人没在美国,也没坐飞机。
为了说明一切都是真实的,不是意淫的,我会配上作品图。
作品会涉及到页面,如果有人说丑(尤其是我的页面设计部分,因为是真丑),请将其转化为点赞抒发出来!!!当做对我勇气的鼓励,谢谢。
1、 前端
我是从前端入手开始编程的。不,确切说是页面设计。
是的,我最开始接触互联网开发的身份是:页面设计师。就是设计和绘制网页。
那时,我大一。
一天,我有了一个想法:做一个校车查询系统。
那时候,我们学校六七个小区包围了省会。做实验、或者进城等,校车成了最好的途径。然而,学校网站提供的校车是个表是一个表格……巨难使用!
你想想,当你太阳底下背着书包,用Nokia 6300的小屏幕(2010年,有个Nokia 6300就不错了)一边心疼流量(10元10M?贵的很)进入学校网站,曲曲折折找到那个表格,多麻烦!
于是,我要做一个校车查询应用。
设计出来下面的图:
然后,会PS只是第一步。前端开发我也会,三下五除二写出了前端页面。
完美。
但是还有一个问题,应用场景!
用户在查询校车时,往往是在路上。10年左右,流量那么贵,让大家访问这么漂亮(额,漂亮么?十年前的审美真是奇怪呢!)的界面浪费流量,而且那时的手机一般屏幕小,使用起来不方便。
所以,我用WAP协议(上古协议?)写了一个手机版的。
每次查询不到5k,四舍五入就是不需要流量。
对了,后来我不做页面了,也不做前端了。因为我觉着我审美太差,不合适。而且审美这东西又很难通过努力弥补。
所以,没必要真的完全全栈,每个人都有自己的短板。
2、后端
光写了前端没有用啊,得有后端支持啊!
不要怕,PHP是世界上最好的语言,世界上所有的网站都运行在Apache上。其他网站就不配叫网站!
PHP大法好,学起来。
于是后端就有了啊。
然后我就把它挂到了学校网站的服务器上(我是网站技术部门的成员),然后发了个QQ空间装逼。
然后,就被疯狂转发。
历史最高访问几千独立访客每天。
对的,我在里面加了CNZZ的访问统计代码。
那几天,我那个激动啊!!!
所以,到这里,至少前后端通了。
3、客户端
但是!万一用户5K都不想用呢?
或者,网络不好呢?
再说了,校车信息表一般是一个学期更新一次,直接下载下来,用户一直用多好啊。
于是,搞个客户端。
不会没关系,学啊。
Android,搞起啊。
于是有了:
它的优点是:
- 使用内置数据库存储信息,没有网络也能查询,有网络则会校验数据后判断是不是要更新
- 根据GPS信息自动判断你的出发校区
- 根据你的历史记录,自动判断你的目的校区
当然,那些自动判断逻辑都很弱智的,没什么AI算法。
小节
好,这个时候告一段落,我们总结下。
其实,从前端到后端到客户端,我就在做一件事情:校车查询。就这一个最简单的事情,一直做。
除了说到的这些,还有数据库、应用部署、访问统计、应用发布等等。只要盯着一件事情从头到尾做下来,都会涉及到。
所以,如果要想成为全栈工程师,你可以选择一个有意义的事情,一直做。有以下几个好处:
- 做一个实在的东西出来,有成就感。我看到QQ空间都在转发我的网页我就特别有成就感,有动力。
- 有连贯性。前后都在做一个事情,你会意识到之前做的哪些地方可以改进,这样很有连贯性,利于进步。
好了,接下来进入新的阶段。
本来那个阶段应该是:IOS客户端。
可是,我穷,没有iPhone和Mac。而且,我保研了,要去其他学校做毕设。
于是,我开始搞……算法……
4、 算法
算法很好玩。
不过我可能没那么适合,至少和我们实验室的刘博相比。
刘博之人博闻强识,有过目不忘之术。听闻一次,便可记生人之星座爱好家乡诸类。而又善推理,常执一笔于白板急速推演,或矩阵或方程,每当吾辈称赞,则摇手羞涩曰“嗨,这有什么难的。”更甚之,其外语极佳,桌角常堆一尺论文,皆为所阅。常见其手执一笔,畅然读阅,其速若母语。吾每羡之,皆叹不能及。
然后,我后来就去某度实习了。在凤巢,就是广告算法的比较核心的部门,做广告推荐算法。
所以,算法,我也算是略知一二。至少基本的机器学习算法,都能推导。
不过那时候,就特别好奇隔壁组是怎么把我们组给出的算法给工程化的(这里是伏笔!)。然后总感觉自己是个螺丝钉。
最后,还是选择离开了某度。
5、 运维与脚本
其实在搞算法时,就经常接触Linux脚本。
因为系统的数据量极大,使用Java或者Python的效率太低,所以很多的前期处理会使用Shell进行。所以,还算了解。
然后,工作初期还真就做了底层的偏运维的部分工作。当然不是运维,是应用工程化发布部署等工作(接伏笔)。在这里,我还真就清楚地知道了算法结果是怎么工程化的。
而且,其实最近我还真在给AI项目做工程化方案。看,解答了当年的疑惑。
期间各种Shell\lua\PowerShell……都搞了一些。比较底层了。
小节
做到这,大家可以看到,我做了很多算法的工作,又做了工程化的工作。相当于,最软的和最硬的都做了。
一般人说的全栈,可能都触及不到这些,或者触及的比较少。
6、其他可有可无
然后其实我还做了一些其他可由可无的工作。一般不涉及这些工作也算是全栈工程师。
所以,我属于超全栈的。
例如,我做过强电的继电器。还考取了注册电气工程师。
做过弱电的电路设计。
下图是我做的一个收集空间中射频能量并供给传感器采集信息并通过Zigbee向外发送的电路板。
当然,程序也是自己写的。
应该够硬了吧。
不过这是题外话,做全栈工程师应该不需要搞这些。
7、现在在干吗
现在是软件架构师。
设计软件架构,外加Java开发。我始终坚持原则:
虽然会页面,但是绝不能对组里页面小伙伴指手画脚。
虽然会前端,但是绝不能对组里前端小伙伴指手画脚。
虽然会后端,但是绝不能对组里后端小伙伴指手画脚。
以上很重要。上一张同事的杯子。
全栈是为了更好的协作,而不是让你一个人做完所有。也没有一个人能做完所有。
所以,杯子上说的很对。
另外,虽然全栈很好!但是不建议大家一直全栈下去,要在找到自己的兴趣点之后做深!否则精力是不够的!
啥都会啥都不精,是会被淘汰的!
这一点也很重要。
好多年前公司组织全栈工程师培训,我还负责过前端培训。但是逐渐就不怎么做前端了。
我现在就是专注架构和后端,负责架构设计,协调开发。偶尔也自己做做开源项目,都是后端。
让我一个人做一个网站出来也行,可我的前端真的已经很菜了啊……
还有,我们组每个人都很牛,也很全栈!
全栈很好,也很累,希望大家有心理准备。
8、最后也是最重要的一点
不论是你全栈工程师还是什么工程师
永远记住!
身体最重要。
我,健身7年,从未间断。
最近身体素质分一直100,在公交车上常被认为是健身教练(主要因为胸大)。
身体,才是持续进步的基础。
可以访问个人知乎阅读更多文章:易哥(https://www.zhihu.com/people/yeecode),欢迎关注。