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


想成为全栈工程师,要做到哪几点?文章插图
作为开发者 , 我们不过度区分服务端 server 客户端 client , 我们是 web developer , 从事 web 开发 , 多去理解技术和实践落地 。
成为全栈工程师的道路成为全栈工程师说不上难也说不上容易 , 其中技术积累占了很大一部分:
紧跟前沿
掌握足够多的输入 。
关注海外社区新消息发布 , 业界的新产品新技术 , 学会高质量的获取信息 , 坚持做和习惯做 。
注重学习--tt-darkmode-color: #6A737D;">有属于自己的思考和严谨的产出 。
掌握高效学习方法 , 比如我们最近在做 k8s 容器集群相关的事情 , 需要理解底层设计和做集群调度 , 需要学习 Golang , 新技术的学习过程:

  • 投资一个好的 IDE , 例如 Webstorm、Goland、IntelliJ IDEA 等 , 坚持使用 。
  • 认准官方文档 , 坚持学习 。
  • API 手册查看 , 不断熟悉和记忆 。
  • 写学习总结 , 形成良性循环:定义功能 -> 代码设计 -> 完成功能 -> 重构优化 -> 优化代码设计 -> 完成 -> 重构 -> 完整掌握 。
总结:实践贵在坚持 , 面对新的未知的领域 , 也要迎难而上 。
重视基础知识--tt-darkmode-color: #6A737D;">理解清楚 , 事半功倍 。
例如作为 Web Developer:
  • 必备知识:语言基础 , Web 应用的基础 , 熟悉 Linux 运行环境 , 网络传输过程 HTTP 协议 , TCP 协议 。
  • 进阶知识:熟悉浏览器请求过程 , Web Server 端口监听原理 , 数据库原理 , 浏览器请求原理 , 应用程序安全通信 TLS 协议 , 数据加密解密方案 , 数据签名方案 。
  • 架构层面:应用分层模式 , 数据模型定义模式 , 微服务划分思路 , 系统设计模式 。
作为无线团队:收益最大的和最值得投资的部分
把这些最常见的问题背后的原理理解清楚 , 就能独立解决绝大多数问题 , 提升全链路研发效率 , 和各个岗位的人沟通无障碍 , 协作无阻力 。
要做一件事情 , 出什么方案最合适 , 什么角色来做最适合 , 采用什么样的技术架构更合适:
  • 语言是最基础的:HTML/CSS/Javascript/ECMAScript/Typescript/Node.js/Golang/Java 等 。
  • 网络协议层 HTTP 协议 , DNS , 7层/4层负载均衡 , 这里会涉及到服务端 , 前端 , SRE , 网络安全等各个岗位的基础知识 。
  • 框架层原理和细节:应用框架 React/Koa/Spring , 数据库框架 , 安全组件 。
  • 结合公司技术体系衍生的框架层约定和业务框架:阿里/蚂蚁中间件 。
  • 工程化 :CI/CD 持续集成 , 自动化测试 , 代码构建发布过程 。
  • 基础设施 IaaS:私有云、混合云、公有云 。 AWS、阿里云等 。
对团队带来的价值:
  • 由于无线的特点:会遇到的问题 HTTP 协议相关的占比很大 , 端上的性能优化 , 网路异常处理 , 前后端交互的基本过程 。 线下调试遇到时能快速定位和修复 , 线上遇到问题时 , 能第一时间做出快速的决策 。
  • 不是所有问题都是靠经验可以弥补的 , 人在很多时候会重复犯错 , 就怕遇到重复的问题还是找不到根因 , 所以需要从源头上解决 , 还是要掌握全栈基础知识 。
总结:
  • 基础知识理解清楚 , 在使用上层的技术 , 例如各种框架和运维体系时 , 可以快速看到使用的技术背后的本质是什么 。
  • 能减少犯错几率 , 做更多正确的决策 。
全栈技术体系实践
三人行必有我师 , 向身边的人学习 。
举个我现实中身边的人例子:在做登录鉴权用户体系 , 先把系统设计好 , 数据模型设计 , 接口设计 , 最后是实现 , 最重要也有价值的部分是前期的设计阶段 。 最后分别用 Node.js、Java、Golang 实现了一遍 , 不同语言和框架间的实现都是类似的 , 功能的移植非常快 , 可以并行进行 。