我是学计算机专业的, 在刚大学的时候, 还不知道什么是全栈, 反正什么都学. 我大学关于编程学的课 程有 c, 汇编, Linux,JavaSE, 嵌入式等;
我一直对 c++ 很憧憬, 觉得学 c++ 都大神, 在大三的时候, 要三选一: c++ ,c#,,Java. 不过我报课的时 候网速不行, 没报上 c++, 报上了 java. 那时候 c++ 很抢手, 不过上课一段时间后有人就后悔了, 转了 Java 或者 C#. 我当时也是了解 Java 入门简单, 以后工作也好找, 就安安心心的学 Java 了. 当时是 2012 年 !
大学生活总是过得很快, 很充实. 除了要学的编程课程, 我还看一些培训的课程. 对于新手的我, 开始 是看一些基础的视频: 如 html,CSS3, JS,jQuery,Java,Javaweb,MySQL,tomcat. 老师也会让我们
自由找几个同学组成一个小组, 我一般都是小组长, 负责基本全部的开发任务, 现在想起来, 当时确实 很难, 虽然当时的一个 bug 对于现在的我来说可能不算什么, 分分钟就搞定, 但在当时可能要弄两天.
第一个小项目: 盆栽商场, 就一个网页页面, 没啥逻辑, 加入购物车这样的功能都没有, 更没有付款云 云了.
第二个小项目: 聊天室, 这个算是很好的了, 有服务端, 有客户端, 用 swing 组件写的桌面应用, 后来 代码上传到了百度文档, 毕业后几年了, 还有人找到我, 问聊天室代码的问题. 服务端使用的 socket 链接, 一个服务端可以链接多个客户端, 能实现多人同时聊天, 像一个群一样, 做工很简单.
第三个小项目: 上传下载, 我当时的目标就是把上传下载做成一个 jar 包, 供其它项目调用, 做出来是功 能非常简陋, 啥设计模式, 接口编程思想, 都浮云. 只能上传成功到服务器, 下载文件到本地.
第四个小项目: 手机通讯录, 手机 App 端的, 可以填写手机号码, 生日什么的, 以我当时代码编程的水平 , 我肯定不会写, 我是根据网上的项目视频教学, 自己一行一行敲出来的.
大学的其他项目, 可能都想不起来的, 就这几个印象最深. 亲历亲为, 很好的锻炼了我的编程能力. 在 此, 想对还在学校的同学们说一句话: 代码真的是敲出来的!
大学毕业了, 全栈这词好像从那时刚刚流行, 我自我感觉良好, 至少比我同学他们的编程能力高, 反正 我是这么认为的. 不过最后我同学他们都找到工作了, 我还没有 (好打脸).
我的前两家公司都是小公司. 第一家是在上海做了几个项目被外派到了安徽黄山. 黄山有最著名的一棵 树: 迎客松, 我爬上去看了它两次.
在黄山, 做了几个项目, 当时用的项目框架: Struts,Spring,Hibernate; 使用 MySQL 数据库, struts1 和 struts2 视频教学都看过, 自己搭过框架, 都是很基础级别的, 配置都是网上找. 后来替换 到新一点的 Java 框架: Spring,SpringMVC,Hibernate; 前端也使用了 easyUI,Bootstrap,layui. 自己也看过 Less 和 Sass 的视频.(好像现在还有 stylus, 技术真是层出不穷, 学无止境啊.) 关于 Node.JS 我也看过简单的文档教程, 自己能搞简单的服务请求什么的.
那些项目对于现在的我来说, 只能说是巩固了看视频学习到的知识. 没啥技术含量, 基础倒是打的很牢 , 不过底层的源码, 设计模式, 思想编程等也都是浮云.
后来又辞职来到上海, 那时是在 17 年, 公司是创业型公司. 用 Node.JS 开发的后端, iOS,Android 前端, Spring,SpringMVC,Mybatis 框架的后端管理平台. 我负责后端管理平台.
创业型公司需要的是全才, 不会的要立马学. 在此我以下技术得到了很好的提升:
Linux 基本命令和各种软件的安装 (菜鸟级别的): 和很多菜鸟一样, 我开始弄服务器系统的时候, 都 是 Windows 服务器的 tomcat. 用的是阿里云买的服务器 (现在想想是真的菜). 后来弄 Linux 系统, 先是使 用各种连接工具 (目前我用的是 winSCP+Putty), 学习各种基本命令, 找各种日志, 排查各种出错. 最 难的就是安装, 因为版本问题导致的出错概率太大了.
nginx(域名的配置): 以前也用过 tomcat 直接配置过域名, 后来知道 nginx 也可以用就学这个, 技能总 是不断迭代更新. nginx 的 conf 配置基本都是 copy 来的, 各种参数基本都是默认. https 证书除了买, 还 可以用 Let's Encrypt 免费申请 (安装 Let's Encrypt 可以让你遇到各种坑: python 版本, nginx ssl 连接 , 文件权限等)
Node.JS(JS 后端服务):NPM install 是最难的命令, 各种版本问题, 模块报错 (java 的 maven 就很好, 能自动下载模块, 定制各种版本, 如 springboot 相关的 jar 能控制默认相关 jar 的版本).
MySQL(备份, 主从配置): 以前觉得能写 sql, 访问数据库, CRUD, 万事大吉. 不过真正要自己考虑项目 的高可用, 高并发, 高性能, 分布式, 负载均衡的时候, CRUD 显得不值一提. MySQL 的存储文件, InnoDB 索引, B+Tree 算法, 执行计划优化. 哎, 太复杂了.
Redis(数据缓存):Redis 安装简单, 但是运行起来后, 不懂配置的话, 会遇到各种坑. 最简单的一个 : 要不要序列化. 我们有个 20G 的应用服务器因为序列化问题, 导致磁盘爆满, 程序都 GG 了. 集群也是一 个挑战.
jetty(java 部署, 和 tomcat 类似): 四个字: 简单实用.
SVN(版本控制, 还有 Git 等):SVN 的安装, 分配账户, 这些还算比较简单, Git 也是自学的, 如何注册申请 也都是按照博客教程来的
vue(前端框架): 说起 vue, 我最先知道的是 AngularJS, 那时还不叫 angular. 现在还有 react, 真正的三 足鼎立啊. 不过其他两个我没学. 学 vue 还是一个 UI 的哥们启蒙的. 这个 UI 哥们是搞 PS, 设计师. 他说想转前端, 一直在学习这方面的东西. 公司正好要做一个单页应用, 他就弄了一个, 发给我, 我帮部署, 迭代什么的, 看了两天就学会里面的语法了, 真是比 JS,jQuery 写起来舒服多了, 页面渲染更轻松. 后 来又弄 elementUI,iview, 感觉都超容易!
到此时, 也就是 18 年 10 月份. 我的技术体系相信大家已经有所了解. 再有几天就 2020 年了, 这段时间我 又学会了什么技术, 提高了什么能力, 请大家继续往下看!
下面我们来谈一谈全栈:
全栈英文的词叫做: Full Stack Developer.
当我说我会前端框架 vue, 会前端 elementUI, 会后端 java 框架, 会后端 Linux 部署, 大家都说你是 "全栈" 吧!(我心想, 我要是全栈, 我工资咋正低!)
对于这一年多来我的编程能力带给的体会, 我更喜欢这句话: 全栈不是说把自己的能力堆上去, 而是你 要把自己强势的东西给它赋能出去, 让别人具有全栈的能力.
一个政府项目: 全国个个省, 市, 县都用, 还有一些特殊机构. 这样的项目全国很多, 比如报税系统, 全国人员系统. 想想都头大, 全国各个地方的警察每天查人员要访问多少次? 怎么保证系统不蹦? 如果项目交你来做, 你能接下吗?
我为啥要举这个示例呢, 就是想说, 自己的能力可以在我们要做的项目里面最高可以担任什么角色.
比如我这种前端后端框架都会, 部署上线也可以. 但是如果老板把项目交给, 我可能会拒绝, 因为我还 没学会团队管理 (虽然现在正在在方面努力). 如果你编程的时候需求改了 10 次 8 次的, 不光开发编程头疼, 项目经理会更头疼. 谁不想自己的项目更稳定, 交付安全可靠的产品. 团队管理在项目开发中占了 很大的比重.
那么此时全栈能起到什么作用呢? 那就是前后端业务需求沟通 0 成本. 不光是写代码, 解决 bug 也是. 有时候出了个 bug, 前端可能推给后端访问 500, 后端说前端传参有问题, 最后花费很多时间才能解决.
这时有人可能说, 全栈前后端都会, 但是他没我学的精, 没我专研的深. 我觉得会的广, 真和会的深没有太大关系. 举个简单的例子: 高中分文科理科, 难道文科理科一起学, 学霸们还会偏科不成? 国家现在的高中教育也是在慢慢推行文科理科合并吧!
所以, 全栈只是比普通的前端或者后端多了一些技能而已, 仅此而已.(测试人员可能心里不舒服了, 为啥没说测试? 在我理解, 没 bug 要啥测试!)
虽然如此, 但我还是提倡大家都来搞全栈. 全栈的好处:
显得更像大佬: 懂得多, 解决问题快, 能搞各种技术, 能独立写各种应用, 教会各种新人.
学习东西快: 理解能力强, 各种编程语言都大同小异, 触类旁通. 能快速学习各种插件, 障碍非常小.
项目全局: 理解业务能力更强, 实现业务代码更快, 知道技术边界, 参与项目深度更深, 技术规范统一 .
bug 解决快: 能迅速找到 bug 原因, 判断 bug 类别 (后台服务, 前端, 服务器等), 并且 bug 出现概率低.
为此, 我这一年多一值在提高技术技能的深度:
java : 集合源码, 多线程, JVM 虚拟机
spring: 看控制反转的实现原理, AOP; 代理的实现, 作用等等
springboot : 注解驱动, 组件内置配置
springCloud : 不仅仅是大框架, 运行原理, 服务概念都要学
docker: 镜像, K8s
微服务注册: Zookeeper
SQL 性能调优: 执行计划,
算法 : 排序, 查询, 各种树等等吧, 反转很多要学的!
全栈目前来看就是技术会的多, 因此以后的发展方向: 高级技术经理, 项目需求经理;(等等经理都能做, 有技术咱就是牛!) 两个方向发展基
本都没障碍 (键盘突然蹦出: 葬爱, 难道注定没女朋友?)
创业也是首选: 学习能力强. 技术开发更轻松. 可以自己接私活, 自己兼职创业搞项目.
最后附上论语的开篇:
子曰:"
学而时习之, 不亦说乎?
有朋自远方来, 不亦乐乎?
人不知而不愠, 不亦君子乎?"(相信大家是不是很多人都不认识" 愠 " 是啥了: yun4 怨恨)
来源: https://www.cnblogs.com/yysbolg/p/12111610.html