从软件工程专业思考到的大前端技术栈-问答篇

时隔我的万字长文 《从软件工程专业思考到的大前端技术栈-详情篇》 在 GitChat 上发布一周后,于 2017 年 8 月 3 日晚上举行了与订阅者互动的线上交流环节。

惊喜的是,这场 Chat 最终有 215 人预订。折合每人 4.9 元的参与费,这里不妨说出来,最终 GitChat 平台支付了我 754.11 元的稿费,并支付了我的推荐人 @余博伦 200+ 元的推荐费——着实在酷热的暑期留校学习中送了一把雪中炭。如果你也想发布一篇文章,让大家付费收听的话,不妨联系我作为你的推荐人,一起积极投身于知识付费时代的潮流中~。

通过最终的微信群交流后,主持人整理的原文是 《韩亦乐:大前端技术栈从软件工程角度实战解析》,我在这里稍加补充,再次推送到我的公众号之中,分享出来,也欢迎指教。

从软件工程专业思考到的大前端技术栈-问答篇_第1张图片

原文序:2017 年 8 月 3 日,周四晚 8 点 30 分,freeCodeCamp 西安前端社区组织者,校内互联网实验室前端开发成员韩亦乐带来了主题为《从软件工程角度看大前端技术栈-详情篇》的交流。以下是主持人 hrshy 整理的问题精华,记录了作者和读者间问答的精彩片段。


内容提要:

  • 如何确保自己在理论和实践方面达到一致的?你做了哪些前端相关的项目,哪些感受比较深刻?
  • 你花了多久掌握这些知识的?
  • 我是非科班,想转行做前端开发。我的问题是,前端涉及的知识很多,需要学习到什么样的程度才可以去找第一份前端相关的工作?
  • 一个人在开发,写的东西总是在不断的重复,希望可以得到提升,但是不知道自己的代码哪里需要升级,哪里需要改进?
  • 前端开发的发展前景如何?如何应对快速更新的前端框架?由于前端知识太过丰富,有时候不知道从何学起该怎么办?
  • 有哪些比较好的javascript和angularjs开源项目?
  • 如何参考官方api开发项目?
  • ajax请求与websocket哪一个更好?
  • 刚入行不久, 能讲一讲requirjs和seajs这些模块化开发还有掌握的必要吗?
  • 想问一下,在工作完一个项目,或者学习了某个技术点后,如何更清晰地从中获得反馈,然后找到下一个关注点?我做完一个项目都会做总结,但是,我并知道我的技术在同行中到达了什么程度,哪些东西应该重点关注从而塑造成自己的核心竞争力?
  • 想要掌握所有的这些知识肯定不是短时间可以做到的,并且在学习基础知识的同时,新的技术和知识也在不停地出现,那么要如何做才能够消除知识焦虑,保持清醒不断学习提升自己?

问:如何确保自己在理论和实践方面达到一致的?你做了哪些前端相关的项目,哪些感受比较深刻?

答: 在这里,允许我把“理论”与“实践”相关联于“广度”与“深度”,从这场活动的文章可以看出我所涉及到的知识面比较广,但实话说,我的深度还不足以匹配广度。
对于确保理论和实践方面的一致,我倾向于将文章最后在软技能层面所说的那八个字作为学习指引——“刻意练习”和“持续改进”,可以感悟一下这八个字。
我上学期期末用一个月多的时间,和两个服务端同学共同参与了中国软件杯竞赛项目之——基于微信公众平台的图书借阅系统。很遗憾的是,最终被全国范围内的团队竞争下去了,这个项目让我感受深刻。我在这次项目之后写了相关总结文章可以看看,里面有我知道我没进决赛前的所有感悟。《“消失”的这俩个月里,我的前端项目如何从零开始》。


问:你花了多久掌握这些知识的?

答: 从我分享的《如何写一篇优质的博客》 的写作背景可以看出: 我从高三暑假经过一些编程方面的指引提前了解了 Web 开发的一些知识。那时在不会 JS 的情况下快速入手了 CodeIgniter 这个 PHP 框架,实践了一些对数据库的增删改查,学了学 BootStrap 框架。高三暑假的这个学习过程主要是通过观看视频来的。
第一天来大学,带了三本编程圣经书:《PHP 与 MySQL 高级程序设计》、《鸟哥的 Linux 私房菜:基础篇》、《高级 JavaScript 程序设计》。并且在一个月内加入了校内互联网实验室学习服务端编程。正式转前端是因为大一暑假参加了 ThoughtWorks 在西安的“全栈暑期特训营”(以促进女生编程为主,这里先不多说),这个对我影响很大。之后就以、微信公众号、微信群为主体进行学习、讨论、分享。简而言之,到现在这个大二暑假,我用了整整两年。


问:我是非科班,想转行做前端开发。我的问题是,前端涉及的知识很多,需要学习到什么样的程度才可以去找第一份前端相关的工作?

答:“刚开始学”“需要掌握哪些”“非科班转行”“什么程度”这几个问题有个共通性——如何从零开始,到能胜任前端工作。对于我这个还没找工作的学生(但毕竟组织过 fcc 西安社区线下编程活动认识好多新人),希望下面的一些话不至于白日谈。
参考我的 Chat 文章中“前端开发”上的”必修“内容,这里只强调一点:前端三大语言基础要牢实,其中要能从 HTML 聊到 HTML5,从 CSS 聊到 CSS3,从 JavaScript 聊到 ECMAScript。其中当然包括 DOM 操作、AJAX 操作和 JS 原生特性、组件化开发、浏览器兼容、响应式布局、单页面应用、调试方法等等基础知识点。
我从上个学期的竞赛经历中感悟到一点便是:项目驱动学习。一起多实践~至于在哪里找项目,Github 是个很不错的选择。


问:一个人在开发,写的东西总是在不断的重复,希望可以得到提升,但是不知道自己的代码哪里需要升级,哪里需要改进?

答: 这也就是——如何从“搬砖”中得到成长?
整理这个项目用到的技术栈,从中找到下次可以优化的地方。
平时接触新技术点时,做一些小 Demo 留存着随时复用。以后项目也能及时想到、快速用到这些技术点了。
刚刚群里 @虎头锤 说的“审丑”让我想到了代码审查。如果有一起学习的小伙伴的话,带上一起语音打游戏的劲远程结对编程、互相代码审查是不错的选择。据我所知很多公司也是很重视代码审查活动的。

从软件工程专业思考到的大前端技术栈-问答篇_第2张图片

从上图可见,我每次倒是习惯在写一个项目前先想想这次我能用哪些酷炫的技术,这可以看做提升之前的思想准备,虽然之后大部分技术没用上。


问:前端开发的发展前景如何?如何应对快速更新的前端框架?由于前端知识太过丰富,有时候不知道从何学起该怎么办?

答: 庆幸的是,由于IT 行业还没有被垄断、软件开发成本高等原因、程序员的工资还是很可观的。前端开发作为其中的一派,展现了该有的活力。记得余博伦说过 “前端这行真的和任何一行本质上没有什么区别。还是,一切看个人。” 也就是说:纵然现在前端领域相比其它编程领域更火热点,但迟早会平衡的。
“不知道从何学起”对自身会引发俩个角度的问题:一是技术上迟迟没有替身,这个解决方法在上面的问答里已经有所涉及;二是由此会产生知识焦虑,我也被困于此很久,现在是以“刻意联系”和“持续改进”作为指引,保证每天都有产出、每个阶段都有可以看出自己技术提升的小项目即可,千万不要成为“野心”的奴隶。


问:有哪些比较好的 Javascript 和 AngularJS 开源项目?

答:好的开源项目可以多逛 Github 平台,上面的 js 项目数不胜数。Github 中的项目最新趋势、自己关注的人的最新动态等功能,能让我们更好的开拓视野。以 Github 平台的点赞量前俩名的开源项目来说,都是 js 相关的。第一名 fcc 平台我们可以看到一个完整的、基于 MEAN 架构的全栈项目如何搭建起来,还能学习其中的运营理念、公益理念。第二名 BootStrap 前端库我们可以通过了解其栅格结构等并通过定量的阅读源码来提高自己的编程实力。


问:如何参考官方 api 开发项目?

答: api 接口会用 ajax 、jsonp 等调用就好。这里应该说的是如何参考官方文档的技术点进行实战?比如 Bootstrap 官网上每一个技术点下面都有如何使用的示例代码的。


问:ajax 请求与 websocket 哪一个更好?

答:以我的能力来看,这两个技术没有直接的竞争关系。简单来说,前者进行普通网络请求,防止恶意请求服务器数据;后者主要解决了 http 前期版本中客户端需要主动联系服务端的缺点(例如 ajax 轮询),最终可以使客户端与服务端双向通信,具体使用哪一个需要根据业务场景进行选型。对于初学者来说,俩者都有所实战并了解其意义会是最好的。


问:刚入行不久, 能讲一讲 RequirJS 和 SeaJS 这些模块化开发还有掌握的必要吗?

答: 组件化开发、模块化开发,可以从很主流的前端框架 React 中看到它们的身影,为什么不去掌握呢?这可以作为提升瓶颈的重要一步 —— 尤其在 Web App 时代到来的大背景下。


问:想问一下,在工作完一个项目,或者学习了某个技术点后,如何更清晰地从中获得反馈,然后找到下一个关注点?我做完一个项目都会做总结,但是,我并知道我的技术在同行中到达了什么程度,哪些东西应该重点关注从而塑造成自己的核心竞争力?

答: 看这个:《“消失”的这俩个月里,我的前端项目如何从零开始》 。我也习惯作总结,这个习惯很不错。
“了解同行技术”可以逛社区看文章、关注/订阅一些博客、参与技术社区交流、了解技术背后每个传播者、分享者的故事。比如我的这个正在搭建中的“迷之你们”收藏夹。

从软件工程专业思考到的大前端技术栈-问答篇_第3张图片

“核心竞争力”——可以通过打造良好的 ID 体系来实现。比如我在去年所绘制的这张图。

从软件工程专业思考到的大前端技术栈-问答篇_第4张图片

@余博伦 问:想要掌握所有的这些知识肯定不是短时间可以做到的,并且在学习基础知识的同时,新的技术和知识也在不停地出现,那么要如何做才能够消除知识焦虑,保持清醒不断学习提升自己?

答: 余大上来就是问生活问心态~我最近常常在克服焦虑的路上。我时刻告诉自己:野心和产出能力、深度和广度、理论与实践,一定要平衡才有更好的发展。补充一个彩蛋,这篇 Chat 文章也将成为我接下来大三一年的填坑指南,相信也就不会有太多的知识焦虑了~。


在此感谢 异步社区 为本次活动提供的赠书《Web全栈工程师的自我修养》俩本。分别送给了 @果冻 和 @张大侠。@果冻 把关于数据库同步的问题请教了很久,让我们看到了对于“求知”的坚持;@张大侠 的问题最终被 @余博伦 回复了,回复者推荐去收听知乎大咖 @小爝 的知乎 Live,而 @小爝 的知乎 Live 每场都很贵。。送本书压压惊吧。

异步社区 是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架。

  • Hello,我是韩亦乐,现任本科软工男一枚。软件工程专业的一路学习中,我有很多感悟,也享受持续分享的过程。如果想了解更多或能及时收到我的最新文章,欢迎订阅我的个人微信号:韩亦乐。我的个人主页中,有我的订阅号二维码和 Github 主页地址;我的知乎主页 中也会坚持产出,欢迎关注。
  • 本文内部编号经由我的 Github 相关仓库统一管理;本文可能发布在多个平台但仅在上述仓库中长期维护;本文同时采用【知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议】进行许可。

你可能感兴趣的:(从软件工程专业思考到的大前端技术栈-问答篇)