Web开发学习之路是否有尽头

在Web开发的道路上,每当心力交瘁深感学海无涯时,我就会安慰自己:坚持,总有一天我会打通任督二脉(前端+后端)

事实上,这不是一篇我的心得,而仅仅是把我自己的这个问题摆出来,希望通过文字帮助梳理下。
写和想有很大的不同,写出来后自己先读一遍,就好像新的想法跟自己对话,想法碰撞出新的思路,修改重新写,确实是一个帮助”深层次“思考、思考到底的好方法。
下面的文字都是删改N次后留下的最终的想法,相信后期回头来看时还会有不同的见解。

自从踏入互联网开发的道路(since 2013.3), 浩瀚,日新月异的开源技术让我这个有着学习计划强迫症的小白经常陷入这样的梦靥:计划多,实施少,学不完..

今天早上看了开源中国上的一篇博文你是否应该成为一名全栈工程师?

其中作者给了这样的建议:

如果想要向着全栈工程师的方向迈进,你应该掌握很多知识与技能,并且熟悉上面提到的各种组件。
此外,还要提升自己的个人沟通技能,这样才能管理并与 前端与后端开发者实现较好的协作。
好消息是未来对于每一类Web开发者来说都是光明的,无论是前端、后端,还是全栈。
要坚持学习一切有价值的东西;掌握新的框架、语言与平台;并且与开发者同事及最终用户保持高效的沟通。
在这种情况下,无论世界发生什么变化,你都会始终立于不败之地。

OK, 学不完的互联网技术是毋庸置疑的了,那我应该怎么做?

个人项目/团队项目 - 项目定位

程序员圈里经常讨论的”全栈工程师“,在我看来,首先要有个前提条件,”为什么“要做全栈?

  • (个人)纯粹为了学习实践互联网[最流行的新技术],那这个”全栈工程师“真的很难,要付出很大的时间和精力才跟得上这”潮流“, 基础技能List:

    • Linux/Git/Pip/Npm/Composer…
    • Apache/Nginx
    • Mysql/MongoDb/Redis..
    • PHP/Python/NodeJS
    • Javascript/jQuery/ExpressJS/AngularJS/ReactJs…
    • HTML/HTML5
    • CSS/CSS3/SAAS
    • 浏览器开发工具与调试器
  • (个人)为了实现某个项目(假设只是个网站),那很容易,根据项目类型和你自己的技能情况确定架构,定”一个栈“即可

    • LAMP+Bootstrap 重后端轻前端
      • Linux/Git/Pip/Composer…
      • Apache/Nginx
      • Mysql
      • PHP/Python
      • 一天入门Bootstrap库
    • MEAN+ThinkPHP 重前端轻后端
      • Linux/Git/Pip/Npm…
      • MongoDb/Redis..
      • NodeJS/PHP
      • Javascript/jQuery/ExpressJS/AngularJS/ReactJs…
      • HTML/HTML5
      • CSS/CSS3/SAAS
      • 浏览器开发工具与调试器
      • 一天入门ThinkPHP框架
  • (团队)就是一个商业化的成熟项目,前后端都很重
    • 前端工程师[深入]挖掘最潮流的前端工具和库,对前端高性能负责;根据自身项目业务搭建自己的前端框架
      • 笔者能力有限,就不列清单了
    • 后端工程师[深入]研究高并发大流量以及数据性能,对后端高性能负责;根据自身项目业务搭建自己的后端框架
      • 笔者能力有限,就不列清单了

注意,上面列出的都是”基础技能“List,要是商业化的大型项目,清单长度和技能深度都要翻个番;
当然,大型项目中,每个工程师每天做的工作其实都只是项目中的一块业务,比如支付,那他还要去研究各个支付渠道的api

因此,要搞清楚自己目前的工作状况、项目状况、业务状况,给自己在团队/项目中定好位。

OK,我目前的定位是…

如果定不出来,每天的学习列表都完不成,那就理所当然了
因为你的目标是凌乱的,一会想实现自己的某个想法,一会想着公司的某块业务,一会想着朋友让帮忙做的网站..

前端?后端?全栈? – 技能定位

技能定位,能在很大程度上砍掉学习清单上的一部分(我认为是小于50%的)

比如定位了前端,就不要去过多深究Nginx,PHP..

反之定位了后端,就不要去深究AngulaJS,Backbone..

定位全栈…

我也说说全栈工程师

全栈工程师的流行,在我的认知里,主要有以下几方面促进因素:

  • NodeJS生态的流行让一部分前端工程师(尤其是后端通过掌握了Node转前端)自然定位自己为全栈
  • Bootstrap等非常强大的前端UI库让后端工程师很容易搭建起一个Web系统
  • 目前互联网创业风行,大多数创业公司在初期项目开发阶段,都会希望有一个全栈开发工程师坐镇以节约人力成本

前后端的分家,很大程度上我认为是因为“前端”分了出去,并在当今用户体验至上的环境中占着跟”后端”同等重要的地位。但另一方面,随着日新月异的技术发展,随着运维复杂度的提升,服务与框架都拥有自身的特性, 一个人很难掌握所有的技能。
有几年经验的前端,或者后端,从某一方面讲,都可以自称“全栈”,但从更严格的方面,很少有人能真正做到”与时俱进“的”全栈“

还记得最开始带我入门的一个后端开发跟我说过:样式/特效都没必要研究,别人一个wget就都拿到了,专心搞后端吧。
那是13年初,前端应该还没有特别火,不像现在各种招聘H5,H5,H5…所以,可以理解,当时后端会鄙视前端。但是现在,你还敢吗?
前端工程师无论在就业难度还是薪资方面,都压了后端一点点。。

说道鄙视“前端”,还有一种“伪前端“现象:在前端工程师人才缺口大的情况下,许多美工UI/刚毕业参加了培训班的,直接应聘做了”前端“; 不懂linux,不懂node,不懂sass的前端,说实话在二线城市如武汉,真的一抓一大把。

扯了这么多,如果还是要定位”全栈“(专指下面这一种),那就要做好每天增加3个小时学习时间的准备吧。。。

  • (个人)纯粹为了学习实践互联网[最流行的新技术],那这个”全栈工程师“真的很难,要付出很大的时间和精力才跟得上这”潮流“, 基础技能List:

OK,我目前的定位是:别折腾,做一个安安静静的美后端吧..

坚定不移的几个原则

这几年的教训,我想也是宝贵的,在今后更是要坚定不移的遵循:

  • think your own way, 程序员还是要有自己的编程思想
  • write more, 好的作家都不会惜字如金吧
  • run code up, 而不仅仅是敲出来
  • show me your project, 实践实践再实践,没有什么方式比参与一个具体的项目更能检验学习的有效性
  • resolve it now, 遇到问题现在就解决!不能拖!不能拖!不能拖!

学习的任何语言/框架/库,都要有一个”project”为载体;

无论是因为想要GET这个技能而想出的一个Project,还是因为有一个IDEA而去学习支撑Project的各种技能,都是OK的。

欢迎光临笔者的新博客:www.ganiks.me

写在最后

好久没写自己的想法,写这区区几百字居然花了我3个小时。其中多次想要写武汉光谷的互联网发展以及程序员是否应该做外包这样的话题,下次吧。