导读:如何成为一名全栈工程师?需要具备哪些技术积累?成为全栈工程师有哪些好处?希望本文能为期望成为全栈工程师的同学提供一点帮助,和同学们一起分享交流。

作为开发者,我们不过度区分服务端 server 客户端 client,我们是 web developer,从事 web 开发,多去理解技术和实践落地。

成为全栈工程师的道路

成为全栈工程师说不上难也说不上容易,其中技术积累占了很大一部分:

1. 紧跟前沿

掌握足够多的输入。

关注海外社区新消息发布,业界的新产品新技术,学会高质量的获取信息,坚持做和习惯做。

2. 注重学习 & 不断实践

有属于自己的思考和严谨的产出。

掌握高效学习方法,比如我们最近在做 K8s 容器集群相关的事情,需要理解底层设计和做集群调度,需要学习 Golang,新技术的学习过程:

  • 投资一个好的 IDE,例如 Webstorm、Goland、IntelliJ IDEA 等,坚持使用。

  • 认准官方文档,坚持学习。

  • API 手册查看,不断熟悉和记忆。

  • 写学习总结,形成良性循环:定义功能 -> 代码设计 -> 完成功能 -> 重构优化 -> 优化代码设计 -> 完成 -> 重构 -> 完整掌握。

总结:实践贵在坚持,面对新的未知的领域,也要迎难而上。

3. 重视基础知识 & 多做总结

理解清楚,事半功倍。

例如作为 Web Developer:

  • 必备知识:语言基础,Web 应用的基础,熟悉 Linux 运行环境,网络传输过程 HTTP 协议,TCP 协议。

  • 进阶知识:熟悉浏览器请求过程,Web Server 端口监听原理,数据库原理,浏览器请求原理,应用程序安全通信 TLS 协议,数据加密解密方案,数据签名方案。

  • 架构层面:应用分层模式,数据模型定义模式,微服务划分思路,系统设计模式。

4. 作为无线团队:收益最大的和最投资的部分

把这些最常见的问题背后的原理理解清楚,就能独立解决绝大多数问题,提升全链路研发效率,和各个岗位的人沟通无障碍,协作无阻力。

要做一件事情,出什么方案最合适,什么角色来做最适合,采用什么样的技术架构更合适:

  • 语言是最基础的:HTML / CSS / Javascript / ECMAScript / Typescript / Node.js / Golang / Java 等。

  • 网络协议层 HTTP 协议,DNS,7 层 / 4 层负载均衡,这里会涉及到服务端,前端,SRE,网络安全等各个岗位的基础知识。

  • 框架层原理和细节:应用框架 React/Koa/Spring,数据库框架,安全组件。

  • 结合公司技术体系衍生的框架层约定和业务框架:阿里/蚂蚁中间件。

  • 工程化 :CI/CD 持续集成,自动化测试,代码构建发布过程。

  • 基础设施 IaaS:私有云、混合云、公有云;AWS、阿里云等。

对团队带来的价值:

  • 由于无线的特点:会遇到的问题 HTTP 协议相关的占比很大,端上的性能优化,网路异常处理,前后端交互的基本过程。线下调试遇到时能快速定位和修复,线上遇到问题时,能第一时间做出快速的决策。

  • 不是所有问题都是靠经验可以弥补的,人在很多时候会重复犯错,就怕遇到重复的问题还是找不到根因,所以需要从源头上解决,还是要掌握全栈基础知识。

总结:

  • 基础知识理解清楚,在使用上层的技术,例如各种框架和运维体系时,可以快速看到使用的技术背后的本质是什么。

  • 能减少犯错几率,做更多正确的决策。

5. 全栈技术体系实践

三人行必有我师,向身边的人学习。

举个身边的例子:在做登录鉴权用户体系,先把系统设计好,数据模型设计,接口设计,最后是实现,最重要也有价值的部分是前期的设计阶段。最后分别用 Node.js、Java、Golang 实现了一遍,不同语言和框架间的实现都是类似的,功能的移植非常快,可以并行进行。

而设计出好的代码需要的先决条件,也是和前面的基础部分的掌握完全匹配的,基础越好,设计得也越好。

总结:

  • 优秀的设计不仅做出的系统可靠,设计得也简单清晰易懂。

  • 写的时候没有负担,维护的时候也没有高昂成本。

6. 避免陷阱

全栈不代表降低要求,全栈是为了提升开发效率,如果质量差,不好维护,反而降低了团队效率。

  • 避免只是多涉猎,而缺少实战,看过不等于会运用。

  • 能写全栈不代表写出的代码能上生产环境,避免给自己下意识地降低要求,写出的代码质量不过关就违背了全栈的初衷。

成为全栈工程师的好处

1. 掌握前后端服务端全链路知识体系和核心知识点

  • 提高研发效率,提升解决问题能力,提高排查问题效率,可以快速侦破问题,及时处理问题。

2. 能理解不同岗位同学的诉求

  • 后端同学:能理解为什么前端同学会对接口字段提出很高要求,期望后端提供的接口按照开源社区的标准来定义(好的接口是自说明的,不用过多的文档,遵循业界 API 设计规范,使用接口符合人的直觉,接口字段稳定)。

  • 前端同学:能理解为什么后端同学不愿意轻易写特殊逻辑判断(一套模型已经定义得很优雅了,加个特殊分支就破坏了代码的一致性)。

  • 研发同学:能理解为什么运维同学不愿意轻易给运维权限(底层运维一旦操作不当,做成的破坏力太大,需要深厚的技术积累)。

知识面不全面的反例

真实的反例:全栈有助于减少低级错误的出现。

这里的例子都是实际存在过的,过程中我们可以发现:这些都不是什么高深的问题,这些都是由于知识面不全面才发生问题:

  • 应用服务上线,服务器配置 nginx 代理线上 CDN,返回 502 了,开发和 SRE 一起排查下来是没有开公网访问权限(原因:应用 owner 不熟悉网络知识和运维体系,没有和 SRE 打好配合)。

  • 前端域名和后端域名不同,浏览器请求失败,因为有跨域问题(原因:不熟悉 HTTP 协议中的 header 运用)。

  • 后端接口名字设计有歧义,不规范,不满足 RESTful API 规范(原因:不熟悉基于 HTTP 协议的规范,本质上是 HTTP 的 中 method 的运用)。

  • 其他例如 websocket 问题,前端性能优化,缓存相关等问题排查效率低(原因:绝大多数跟不熟悉 HTTP header 有关)。

最后

全栈不是认证证书,不需要有人给你做认证,当你能获得不同技术栈的同学的信任时,就是对你最大的肯定。

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

想成为全栈工程师,要做到哪几点?相关推荐

  1. 假如你想成为全栈工程师…

    让我来发挥一下剪报君的特长,下面是百度百科对[全栈工程师]的说明: 全栈工程师,也叫全端工程师,英文Full Stack developer,是指掌握多种技能,并能利用多种技能独立完成产品的人. 上面 ...

  2. 为什么越来越多的人想成为全栈工程师?

    作者 | web小二 来源 | web前端开发(web_qdkf) 前几天,有个读者跟我说,"小二,公司领导找我谈话,问我对自己的职业规划有什么想法?" 他说,"我没有忍 ...

  3. 想做全栈工程师?你要学习的还有很多。

    程序语千百种,想要学 Coding 就必须先确定你的目的是什么,有的是拿来写 App 的,有的是专写操作系统,有的则是拿来写网页的 -- 各种不同的目的都有其最适合的语言. 常见的语言如 C++.Ja ...

  4. 全栈工程师--这才是真正的从入门到跑路

    要想成为全栈工程师,莫过于,多跟紧时代步伐(丢弃旧技术),听取专家意见,多看好书,少走弯路. 对技术投以最大热情,全力开挂去学习,领悟... 转载于:https://www.cnblogs.com/F ...

  5. 全栈工程师必备技能栈,聊聊月薪2W以内都该会点啥?

    文章目录 写在前面 全栈工程师 前端技能 框架类 JQuery Bootstrap Less Ant Design AngularJS React Vue 其他框架 后端技能 PHP技术 NodeJS ...

  6. 读专栏·谈谈全栈工程师

    原文地址:http://leihuang.org/2014/12/12/read-Full-Stack-Developer/ 昨天晚上看海贼王给看睡着了(11点的左右),导致早上5点就醒了,怎么办呢, ...

  7. 全栈工程师15年经验分享:40个改变编程技能的小技巧

    白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 编程如何节省更多的时间,犯更少的错误? 最近,这样一份「心得」火了.这位名叫Kesk Noren的软件工程师在Medium上分享了一篇博文 ...

  8. 大写的服!用耳朵也能写代码?盲人程序员自学编程成为全栈工程师

    作者 | 年素清 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 蔡勇斌幼年失明,靠着顽强的毅力和不服输的精神自学编程,成为了一名全栈工程师.作为一名盲人,为了让全中国的其他盲 ...

  9. 云巴创始人张虎:一个优秀的软件工程师必然是全栈工程师

    张虎,云巴 (yunba.io) 创始人兼CEO,致力于为开发者提供优质云后端服务.他有十几年的软件研发经验,精通嵌入式系统.服务器端架构.虚拟化等.张虎曾就职于华为.Oracle,他是Oracle ...

最新文章

  1. 微擎删除分类无法删除解决-select in效率低解决办法
  2. 浅析丨AI安防产品发展现状与趋势分析
  3. 【OH】Oracle软件安装需要的软件包(官方文档)
  4. 华测服务器进不去系统,华测rtk单点到固定怎么操作步骤
  5. 基于RBF简单的matlab手写识别
  6. TF2 keras Tensoboard学习总结
  7. 字符串的模式匹配方法
  8. Pycharm在创建py文件时, 如何自动添加文件头注释?
  9. 有关风向及风向处理的笔记
  10. HTML编程怎么设置字体,html怎么设置字体
  11. Hyperf初体验-JsonRpc的使用
  12. 机器学习:AI数据集划分(训练集、验证集、测试集)
  13. list保存到scv
  14. 关于一个App调起另一个App
  15. Python语法概念基础
  16. 智能优化算法:白鲸优化算法-附代码
  17. 一、线性模型----Lasso、Ridge回归及正则化的初步理解
  18. could not connect to server: Connection timed out (Ox0000274C/10060)ls the server running on host “
  19. 咱们500万条数据测试一下,如何合理使用索引加速?
  20. Nginx配置信息损毁又无备份时如何恢复

热门文章

  1. 20、DELETE:删除数据
  2. Acwing第 23 场周赛【完结】
  3. leetcode:242 : 有效的字母异位词
  4. sql 199标准 连接查询
  5. 再给大家发 200 个红包!
  6. 5款强大的JVM 性能调优监控工具 !
  7. 用Java实现天天酷跑(附源码),只能用牛逼来形容了!
  8. 介绍一款贼美的Vue+Element开源后台管理UI
  9. Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装
  10. Android调用系统软件打开文件(包括apk文件)