前言


前端架构师, 听起来就是个很高大上的 Title, 每个初入行的前端工程师在面试时, 被问到你未来的方向是什么? 我们或许都会很顺口的回答, "嗯, 朝着架构方向走吧...", 那这个像是顺口溜的答案背后, 从身体到思维, 我们究竟经历了什么样的转变呢? 嗯.., 让我努力回忆下, 从头开始, 向各位分享这种奇妙的转变过程.

当我第一次看到架构这个词, 是在旧的翻了毛边的编程书上, 而此时对于我来说, 架构仅仅是一个词, 两个汉字和一堆概念. 而第一次我自己说出这个词, 是在14年, 那时转行写代码刚满1年, 对一个码农来说, 1年经验很浅, 无论是从思考还是手感, 都谈不上有太多积累, 但是当对面的面试官, 问道: " 你未来有什么发展方向? ", 我还是不假思索的说出了 : "朝架构发展吧... ", "你觉得什么是架构? ", " ... "

这次的面试时间很长, 长到我已经忘记了, 我是怎么回答, 什么是架构这个问题, 但是从我说出架构这个词开始, 对架构的思索的种子, 就在我脑海中种下了, 每当坐地铁, 闲下来, 蹲坑的时候, 我都会想起这个问题. 虽然我经常思考, 但这个问题在我脑海中依然是一堆问号. 如果要给整个转变划分个阶段的话, 我想这个阶段可以称为 [ 架构思维的萌芽 ]

架构思维的萌芽


每一种思维模式都会有一个思维的起点, 如果把架构看成是一种思维模式运作的结果, 那我们在思考架构的时候, 其实是启动了一种思维模式, 通过在这种思维模式下不断的思考, 我们的大脑会不断建立起各种联系, 这种联系会将你所有的知识, 经验串联起来, 最终得到一种快速的思维通路, 你越思考, 理解得就越深刻, 架构就逐渐在你脑海里清晰起来, 这一切自然有一个起点, 那就是架构思维的萌芽

各种碎片时间下不断对架构的思考, 巩固了架构思维在我大脑中的地位, 促使我开始从架构的角度去看待问题, 需求和代码, 代码的世界是一种依靠逻辑维护的奇妙世界, 随着世界的膨胀, 各种逻辑变得难以维护, 最终整个世界崩塌, 但当我加入一点架构之后, 世界的结构开始清晰起来, 慢慢的我开始看到逻辑背后的联系, 代码背后的那些隐藏的轮廓. 在这个世界里, 没有完美的架构, 自然也没有银弹, 不管如何调整, 维护, 设计和变更, 我们最终都会迎来这个世界的消亡, 但是一个有架构的世界, 即便是消亡也是有序的.

第一次尝试加入架构, 是在那次面试失败之后, 我手上有一个 SPA 的项目, 那时候 angular1.0 还没有发布, backbone 还在大行其道, 我依靠对架构的一点理解, 尝试自己去构建一个有序的代码世界, 结果显而易见的失败了, 因为我的知识和经验储备不足做出一个有效的架构, 但是这一次尝试让我明白了架构的重要性, 相对于 jQuery 时代的面条代码, 将代码合理分层显然能让这个世界显得更有序些. 无论是 MVC, MVW, MVVM, MVP, 都是对开发 GUI 应用如何更好的设计代码的一种尝试.

事实上, 在这个阶段, 我对架构的理解比起最初的时候更混乱了, 设计模式, 框架, 架构, 这些词在某一时刻互相混淆在一起, 傻傻分不清, 而有时候, 我会陷入究竟如何区分他们的困境中, 为了解决这个问题, 我阅读了一些书籍, 进行了更深入的思考, 我发现光靠这三个概念, 是不够的, 为了走出这个困境, 我发现必须引入新的工具, 这个工具叫上下文, 也叫语境. 而这个阶段应当称为 [ 架构思维的混沌 ]

架构思维的混沌


时间过得很快, 在15年的时候, 我进入大厂工作, 在经历了各种信息的, 概念的轮番轰炸, 我对架构的思考开始引入上下文, 我发现有了上下文, 模式, 框架, 架构就开始变得不那么格格不入了, 在某一个上下文中, 它可以是模式, 在某一个上下文中, 它可以是框架, 模式, 框架, 架构在上下文的组合下, 开始能够被灵活使用了, 它们成了我设计和思考架构的工具箱中常用的工具. 同时期, 我开始接触 UML , 另外还包括DDD, TDD 等一些概念, 还有常用的架构模式, 像六边形架构等等, 以及多了一种新工具"边界", 但是很快我发现我陷入了另一种困境, 一些新的工具很难被应用在以 JS 为基础的前端领域, 而光依靠模式, 框架, 边界, 上下文设计出来的架构很难进一步细化, 前端架构成了空中楼阁, 无法落地. 我尝试生硬的怼, 但最终是徒劳的, 看起来这一阶段变得更痛苦了, 没错, 就像一个埋头走了三千里, 原本以为是终点, 但抬头发现依然是一望无际的痛苦. 或许前端不存在"架构"? 不愿意接受这种答案的我, 开始进入下一阶段, 我称为 [ 架构思维的成型 ]

架构思维的成型


这里本没有路, 走的人多了就成了路, 软件工程从建筑领域搬来诸多概念, 例如架构, 回顾历史, 从四人帮整理出设计模式开始, 软件开发经历了巨大的变革, 即便是 UML 都在持续发展, 但其实在这个领域内一直有一块没有被覆盖到的角落, 那就是前端, JavaScript 从一种玩具语言发展到如今的 Web 开发中的"汇编语言", 变化巨大, 但在架构上的思考其实并不多, 从 Facebook 提出的 Flux 架构, 前端开始脱离历史的影响, 我们发现, 不是前端没有架构, 而是还没我们被创造出来.

大厂技术上的束缚, 迫使我离开寻找新的平台, 这个世界在快速变革, 但不是所有平台都能适应这种变革, 也不是所有平台能发挥出每个人的能力, 作为工程师, 我们不光为钱, 也为一点点情怀, 改变世界, 即使一点点.

17年, 我离开大厂, 加入一家准上市公司负责前端架构的工作, 翻了翻拉勾, 前端架构师开始进入我们的视野, 虽然比起传统意义上的架构师, 岗位还很少, 但是欣慰的已经不是那么凤毛麟角, 前端规模化的增长, 对架构师的需求开始反推企业改善现有的团队架构, 引入架构师更好的解决问题. 这个阶段, 思考架构开始变得不这么磕磕碰碰, 充足的知识和经验储备, 让我开始建立起自己的架构思维, 得益于对 Flux 架构的应用, 我发现很多前端领域的问题可以用一个环来解决, 我称之为"环形架构", 或者"流水线架构",把同一纬度的数据放在一个环中去处理, 前端复杂的数据流可以被很好的隔离和管理.

就如本文开头提到的, 我所看到的这个代码的世界, 开始有了层次, 有了架构, 开始有方法去解决混沌和无序, 而我想这其实也仅仅是架构师生涯的开始, 后面的阶段应该叫 [ 架构师思维的发展 ]了吧.

把简书上的冷饭放到掘金上来炒一炒, 看看能热乎不 :<>

从前端工程师到前端架构师, 我们经历了什么?相关推荐

  1. 如何成为一名优秀的web前端工程师(前端攻城师)

    程序设计之道无远弗届,御晨风而返.---- 杰佛瑞 · 詹姆士 我所遇到的前端程序员分两种: 第一种一直在问:如何学习前端? 第二种总说:前端很简单,就那么一点东西. 我从没有听到有人问:如何做一名优 ...

  2. 全栈工程师通网架构师之路

    首先我们看什么是架构师?架构师应该具备哪些能力? 大家都知道很多公司都有架构师这个职位,但是我想告诉大家的是看一个人是不是架构师不是看职位,而是看他所具备的能力以及正在做的事,所以有架构师头衔的人不一 ...

  3. “页面制作人员”?“页面工程师”?“页面架构师”?滚一边去!

    随手查看我的Blog统计,发现有好多人来自蓝色理想上推荐的一篇文章叫<页面制作人员(W3C Page Builder)的修炼之道>,随后我来到作者blog,发现作者在文章中推荐了我的blo ...

  4. 如何成为一名优秀的web前端工程师(前端攻城师)?

    我所遇到的前端程序员分两种:  第一种一直在问:如何学习前端?  第二种总说:前端很简单,就那么一点东西.  我从没有听到有人问:如何做一名优秀.甚至卓越的WEB前端工程师.  何为:前端工程师?  ...

  5. 程序员职业发展路径图:从菜鸟工程师到高级架构师

    http://www.sohu.com/a/249729952_355140 踽踽独行上下求索总是痛苦,如果有良师益友陪伴点拨必能事半功倍.从新手码农到高级架构师,要经过几步?要多努力,才能成为为人倚 ...

  6. nbiot开发需要掌握什么_什么是前端工程师?前端工程师需要掌握什么技能?

    前言 前端工程师是一个出现了10年左右,而颇受重视则是最近这五六年的事情.受到重视到前端从业人员井喷,也就是这一两年而已.因为前端工程师这个职位出现得太晚,导致各大学校均没有系统的相关教学,我们所熟知 ...

  7. 月薪25K-35K|格灵研究院招聘算法工程师、Java架构师

    3D视觉工坊致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁.如果你需要我们帮助你发布实习或全职岗位,请添加微信号「CV_LAB」. 公司介绍 深圳市格灵人工智能与机 ...

  8. html5前端工程师简历,前端工程师简历自我评价填写样本

    自我评价(案例一) ?性格随和,容易相处 ?认真负责,对新技术比较敏感,自学能力强 ?有较强的上进心,未来想成为一名全栈工程师 ?热爱前端行业,经过几年的拼搏,让我变得成熟有耐心,在压力与困难面前有很 ...

  9. vivo安全工程师面试_Java 架构师——阿里和vivo面试题目汇集(转)

    阿里面试题: 1 redis集群(主从复制是怎么触发的,数据如何分配) 2 mysql分库分表(分库有什么好处) 3 安全方面 4 加密算法 5 ca证书 6 sql注入 7 还用过哪些缓存框架 8 ...

最新文章

  1. vs code编辑器
  2. 是否患有新冠肺炎? 你咳嗽一声
  3. 第一部分:基础知识(第一章)屏幕部分续
  4. 考前自学系列·计算机组成原理·查询方式/中断方式/DMA方式的适用范围及判断
  5. 海外IDC数据中心为什么要做REITs
  6. HTTP中response响应数据获取
  7. --noinput loaddata
  8. 三电平igbt死区时间计算_基于大功率三电平IGBT模块并联的参考设计
  9. PostgreSQL下安装pg_stat_statements
  10. linux7空闲内存,centos7 内存占用率高处理问题
  11. 【飞控理论】从零开始学习Kalman Filters之四:卡尔曼滤波C语言代码实现
  12. 数据挖掘:数据预处理相关概念
  13. 【NLP】NLP中各种各样的编码器
  14. python新手常犯的17个错误
  15. 多媒体视频处理工具FFmpeg的简介及安装
  16. jq UI中的dialog属性设置
  17. java实现有限自动机_Java 实现一个非确定性有限自动机(NFA)
  18. jq追加html点击事件,jq增加点击事件 Jquery为DIV添加点击事件
  19. VirtualBox虚拟机提示内存0x00000000不能为written问题
  20. DFB激光器电流温度与波长的关系

热门文章

  1. thinkphp3.2.3模糊查询搜索分页,完整实例。
  2. 三极管基极下拉电阻大小的确定方法
  3. 根据信道号计算2G,3G,4G上行和下行频率
  4. 软件工程实验:数据库设计
  5. leetcode 数组独数问题
  6. 入行3D建模有什么职业可以选择?自学能学会3dsmax吗?
  7. 解决OneNote“未安装桌面体验功能”问题
  8. dcdc模块降额设计_DCDC模块的选择
  9. 【CSS3】背景(background)属性
  10. Lifekeeper Linux