如何成为全栈工程师
互联网的时代,链接了全球各地的网民,不仅拉近了你我之间的距离,也提高了很多行业的运作效率,这些效率的提升很大程度上就是因为形形色色的互联网软件,这些软件的背后就是那一波想改变世界的“程序员”。
现代软件的复杂度已经不是单单写几个网页,做几个小桌面软件能比的了,虽然互联网进入中国也不过20多年,但是我们的生活因为互联网而发生了彻底的变化,2000年初风靡一时的三大门户网站,让我们获取资讯不用再看报纸了;阿里的淘宝,让我们足不出户就能买到东西;盛大和腾迅的游戏,让我们的业余生活更有趣。来到了2010年初,移动互联网开始爆发。新浪微博,今日头条的诞生,让我们获取资讯更加快捷了,滑滑手指就能掌握时事热点;微信支付,支付宝让我们不需要再携带现金去shopping,按按手指就能付钱。一部手机搞定一切,这都是互联网科技的力量。
扯得有点远,言归正传。现代软件的复杂度越来越高,因为功能更强大了,所以对程序员的要求也越来越高。目前来看,纯写前端或后端的程序员迟早会被淘汰,企业越来越需求多面手,学习能力出色,沟通能力强,技术面广的程序员,向一门精,多门通的全栈工程师发展是必然趋势。接下来我们来探讨一下成为一个全栈程序员需要哪些技能?
前端
html+css+javascript,前端基础三剑客,入门简单,要玩得6也得下功夫
比如html5新特性视频audio,video,网页实时通信websocket,绘图canvas,webgl,svg,本地存储localstorage等
css布局 div+css布局,flex流式布局,响应式布局
javascript的那些升级版es6~es8,微软更推出了Typescript,可以用强类型的方式写脚本语言,而且可以混写,编译成javascript
node.js可以的合并后端请求,渲染,打包本地的样式和脚本文件等
现在和未来大有可为的WebAssembly
后端
基本要求:掌握分布式系统原理,对存储,计算,消息队列,集群管理中的一项或多项有深入理解和认识
语言: CC++,php,java,.net,golang,python 任选一个深入即可
计算方面:Spark,MapReduce,Storm,OLAP 任选一个深入即可
存储方面:HDFS,RocksDB,LevelDB,MySQL,Kafka 任选一个深入即可
集群管理:YARN,Mesos 任选一个深入即可
人工智能:caffe和tensorflow框架任选一个吧,老实说人工智能和数学关系更近一点
手机端
Android/iOS 任选一个,各种UI绘图,多线程,本地数据库sqlite,知道如何对接API
运维
这边强烈推荐Ansible,配置简单,功能强大,同时部署上百台服务器不是问题
调试能力
网络方面:
http协议,tcp协议懂得原理和相关抓包工具
http协议,windows上有fiddler,mac上有charles
tcp协议推荐wireshark,tcpdump命令
系统方面
windows有windbg
linux有gdb
这两个工具主要调试一些程序非正常崩溃的问题,如果玩得好,基本解决99%的问题,已经是大牛级
最后总结一下,不管是钻研哪个方向,基础特别重要,基础就像武侠片里的内功一样,天龙八部里乔峰用最普通的长拳都能击败各路英雄,就是因为内力深厚。学好编程最需要重视的还是那几门核心基础课程,数据结构和算法,操作系统原理,网络编程,编译原理,英语和数学是基础中的基础。
- 扫码关注“火龙果编程”公众号,早日成为编程大神
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。