1.首先我们要有这么一个意识,就是只要从事编程,不管你选择什么方向,web 前端、Android、iOS 还是后端开发,一些编程基础是通的。比如数据结构、算法、存储、网络等等,不管你选择什么编程语言,在最初的时候大多数都是从 C 语言开始学习,C 语言基本上是我们编程的启蒙语言了,没错,我从编程白痴最初也是从 C 语言开始学起的,之后一些计算机方面的基础后面都有花时间去补习。
所以,不要觉得选择了一个方向,就妄想着会用那些 SDK,会用一些 API 就够了,远远不够!
从编程基础来说,移动开发与 web 前端没多大区别。
2.编程门槛
有人说了,既然编程基础都是通的,那么学习任一个方向就没什么区别了?
并不是,上面说了一些编程基础是必须的,但是并不意味着这些知识在最初就必须掌握才能去学习编程,很多时候可以先入行,后面再慢慢补,俗话说:师傅领进门,修行靠个人!但是很多人往往连进门都还没进门,因为编程这个行业相对其他领域来说,门槛还是蛮高的,尤其对那些自学编程的人来说,大部分人还没开始就放弃了,门槛还是很重要的。
个人认为,后端门槛大于前端,这个大家应该能理解,后端涉及到服务器、大数据、算法、并发等,稍有差池影响的可是几百万几千万用户,这个不管是对基础还是对经验都是有较高要求,而前端则不,前端重视UI交互与效果,通常很少涉及到复杂的业务逻辑,假设某个版本出问题了,最多影响的是更新这个版本的用户而已,开发也大多是从用户角度去出发的,更贴近用户。
目前来说这里的前端其实包括移动端和 web 前端。移动端面向手机,web 前端面向浏览器,只不过现在再也不是单纯的面向 PC 端浏览器了,还包括手机浏览器。从门槛角度来说,我认为移动端门槛比 web 前端门槛要高。且听我说明原因:
做移动开发的知道最初学习的时候是不是要折腾一堆东西,搭建开发环境,下载 SDK,配置环境变量,学会使用 IDE 等,还要学相对应的编程语言,学完编程语言再学对应的 api,配稍微差点的电脑甚至都跑不起来,光搭建开发环境这步就让不少人失去了耐心与兴趣。
而 web 前端哪有这么复杂,直接一个 txt 就可以上手写 HTML 了,何况 HTML 很简单,学习来毫不费劲,一开始学点简单的 javascript 也没多大压力,电脑只要有浏览器就可以直接运行看效果,而且浏览器自带调试工具,没有那么多讲究,几年前的电脑都可以拿来做 web 前端开发,所以,我认为 web 前端的门槛要比移动开发门槛要低。
从编程门槛来说,web 前端比移动开发占优!
但是门槛也只是让你更快入门而已,web 前端想要做好,依然需要下不少苦功夫,web 前端必备技能 html、css、javascript 想要学好同样不会那么容易,需要不断的学习与实践才能掌握的炉火纯青,何况当下 web 前端也需要懂点后端知识的,因为大部分 web 前端是依赖后端框架的,除非你是做纯静态的页面。也就是说,想要在领域内做的出色,任何方向都不轻松!
3.市场热度
其实在微信小程序没推出之前,web 前端已经慢慢有需求变大的趋势。主要是 web 前端基于微信、微博的营销推广是不二之选,另一方面各种跨平台框架如 React Native、weex 的推出更刺激了 web 前端的需求,之前 web 前端如果是不温不火,那么近期我认为市场热度与薪资水平基本跟移动开发差不多,只不过微信小程序的推出,毫无疑问,起码看起来 web 前端要更火了。
但是为什么说是「看起来」呢?因为微信小程序也是刚推出,虽说机会很大,但是不确定性同样很大。另外,微信小程序刚推出之后,我司就学习并且做了 demo 出来,发现微信小程序有个非常大的限制,就是不支持 WebView,不支持 WebView 这点对 web 前端影响很大,也就意味着你一个再有能力的再牛逼的 web 前端都很难在微信内部玩出花样,大家都是用一样的 SDK,遵循微信的规范来进行开发,所以我认为微信小程序对技术的要求没有那么高了,很多有点经验的程序员都能学会,如果缺乏程序员的创业公司我相信可能会选择外包,所以,我认为微信小程序决定的不是技术,起决定性因素的可能是你的产品,起码目前来看是这样的。
所以,市场热度来说似乎 web 前端更火了,但是我还是那个观点,对原生开发有冲击,尤其是一些初学者,企业要求会更高,但是我认为对原生开发的影响不是那么大,我们姑且可以把他看做新增了一个除 Android、iOS 以外的一个新的平台而已。
4.总结
综上,web 前端的门槛比移动开发更低,未来的市场热度也比移动开发更高,但是编程的基础与编程语言是相通的。我对你们的建议概括下来如下:
1. 如果你是还未入行,打算自学编程的同学,那么我推荐你学习 web 前端,学习微信小程序,因为入门更简单些,而且小程序刚推出,可以缩小下跟那些老鸟们的差距,但是想学好一样不容易。
2. 如果你已经在学习 Android 或者 iOS 一段时间了,甚至已经有点工作经验的人,那么我建议你一门心思继续把现在的学好,不要受任何影响,任何时候,任何市场,对优秀的人才都是抢手的,你被冲击或者被影响只能说明你学的不够好,能力不达标。
3. 如果你对某一方向感兴趣,比如 web 前端跟移动开发都接触了解过,但是对某一个很感兴趣,那么我强烈建议跟随你的兴趣,不用担心市场、专业不符等其他客观条件,掌握好一门技能最多是工作而已,大部分人都是这样的,但是你如果把兴趣变成工作,这将是你的生活。一旦把兴趣变成工作,你将充满斗志,比别人更投入,毫无疑问,只要坚持下去,你肯定会进步更快,在领域内更容易取得成果!
最后,编程语言是互通的,学会一门语言再学习另一门技术会非常容易,所以重要的是你必须要先掌握一门技能,假如未来真的受到冲击,不用任何人提醒,你自己会第一时间去变通并且适应,相信我,这是人的本能。而很多时候兴趣才是决定你能走多远的决定因素,如果你的工作能是你的兴趣所在,这难道不是每个人最期待的工作么?
你们肯定会问我现在的工作是不是我最期待的工作?too young,我最期待的工作其实是:不工作!