学前端好还是后端(后端好学还是前端好学)
这里的前端指的是移动互联网领域中面对用户体验度的那个应用领域。看到很多所谓的过来人大谈阔论的描述前端如何如何的容易或者难,如何如何的火,如何如何的有前途等等之类的评价,然后得出貌似有道理的学习前端的一堆学习方法。最后让许多初学者激情澎湃,酷似怀抱什么秘籍一样...其实很多是在犯一叶障目不见泰山的错。
整天沉迷于前端知识的海洋最终深感速度跟不上、心有余而力不足、甚至无力自拔。就好像把你放入一个巨大的虚数空间的黑洞里,任凭你怎么乱打乱抓、用尽所有的力气无尽挣扎,也难以看到希望和轻松何在,心里一直不会踏实起来。
其实这就是根本原因:因为真正要学好前端,应该是并不只会前端。下面的故事其实阐述了原因:张无忌最后练会的乾坤大挪移,一般人的思维是在考虑要练会乾坤大挪移要多么多么的早出晚归,常年如一日的苦苦修炼N年,然后到了9层,最后得一灵感,学会第10层。但都忽略了如果会了九阳神功,再练乾坤大挪移,只要3个小时...
殊途同归,真正的精通前端应该是功力深厚,打通任督二脉,从而让前端顺带学会。这种功力深厚是真正的编程功底,是要牵涉到从硬件开始、汇编、C语言、C++、Linux、到数据结构和算法、甚至高等数学、线性代数、概率论这些。
并不是动不动就背诵几个枯燥而繁琐的算法去炫耀而沾沾自喜就认为是精通了编程的本质。
并不是动不动就背诵几个枯燥而繁琐的算法去炫耀而沾沾自喜就认为是精通了编程的本质。
没有学过硬件(比如画PCB电路图,学数字电子、模拟电子、单片机、ARM),没学过汇编、没深入linux操作系统和编译原理,而大谈阔论的讨论数据结构和算法是没有任何意义的(我以前就是做软硬件一体化的智能系统,从画PCB板开始,到嵌入linux内核,写驱动...)。
一个高等数学很差、线性代数摸风、概率论不知所云就去想深入数据结构也没多少意义。你顶多只是懂得数据结构的形、而不动数据结构的神。这也就是要想做编程领域的大家、必须要精通数据结构和算法、而精通数据结构和算法则必须要数学功底好的原因。学编程其实是在修行、修身养性,需要悟道......
这样来看,前端只是一个后来根据应用需求而变得很火的一个方向,这种突如其来的需求爆发就像泡沫经济一样,随时都可能爆破。所以如果把你自己的命押在这样一个定时炸弹上,你怎么能安心的起来?难道真的要等你50岁的时候被迫下岗才重新思考自己的职业选择吗?
现在来看看前端的核心是什么?
现在来看看前端的核心是什么?
前端的核心其实就是以后能修改DOM的这个东西,而JS承载了这个角色,因此js是核心。具体的说是JS操作DOM,附带操作BOM。然后为了更友好的使用、更少的去处理那些繁琐的兼容性问题(这个本来不应该有,只是各大浏览器厂商为了抢占市场而雄踞一方,就像秦始皇在统一六国之前的那种情况,所以这不是一件好事,所以应该去统一,才能真正的为用户体验所服务),才衍生出很多很多的库,如:jQuery,Anularjs等等。但只要还是JS的范畴,是在做那些事情,那就是在编程领域,虽然它们各自的库可以长得千奇百怪,但本质并没有改变。
展开全文
由此得出,你并不需要把所有前端的库都学会,也不需要只懂某个库本身的样子就算完事,而要慢慢探索它的发展渊源,以一种“修身养性”的心态去探索。
比如:jQuery的使用中,谁都很熟悉这个基本的动作:
$(function(){
$('#id').click(function (){
//自己的代码
//return false;
});
});
但有几个人在思考为什么能实现这个?也许他们会觉得没有意义,只要会使用就行了嘛,那接下来就是这样:如果其他的使用不能理解,也是顺理成章的事情了,也不要抱怨了。不懂就只能背诵,自然感到苦闷、无奈、烦躁、没兴趣就成了司空见惯的事情了。不去思考它怎么来的,就难以认识到编程是在刻画和反映世界,这其实是个恶性循环,最后导致职业生涯缩短或者自我感觉前途渺茫。
现在回到主题:真正学好前端,让前端学的轻松,其实并不是只会前端;
现在回到主题:真正学好前端,让前端学的轻松,其实并不是只会前端;
你看到别人写的库很好,使用起来很不错,但是有没有思考过如果让你写,会怎样呢?能写出那些库是因为只会前端吗?显然不是,里面至少用到了编程思想、用到数据结构和算法、用到怎么更有效的分配内存和任务分配队列栈这些合理使用等等。这些就不只是前端的东西了,而是编程领域内都会见到的东西。
所以,一个真正精通前端的人、有前途的人,是不一个只拘泥于前端本身,而是要用更多的时间应该去看非前端的东西,前端内容只是那些深入知识的应用罢了,顺带学习而已。就像乾坤大挪移是在九阳神功练成之后顺带学习的,然而却能学的更快、更深入、更应用自如。
这也就是为什么学汇编的人,更容易学C语言,学C语言的人更懂得C++的韵味,学C++的人更轻松的学JAVA和PHP。同理,学PHP的人更能学懂前端。因为都是顺带......上述编程语言我都亲身体验过,深刻感悟到其中缘由。当然这是条主线,你可以找借口说时间少,只是客观就是客观,你少这个,它就给你砍那个,就这么个道理。
这样来看,面对编程领域,其实你的时间已经很少,你根本无心去和谁比这样、比那样,那些都已经没有什么意义了,而有意义的是你找到有内功的得道高僧一起去把酒言欢、进一步提升你的编程修养......
峰回路转,导致学前端的人只学前端的原因是项目变得越来越大,很多人认为不能也不应该一个人去“搞定”而引起的。这其实是个误区,“搞定”一个完整的项目,并不是让你一个人去开发所有。诸葛亮能“搞定”每次战斗,但是他亲自去杀敌了吗?
另外,公司的发展也加速催化了你的误区,公司里为了赶进度,得要求每个人首先都关注好自己门前的雪,而忽略他人瓦上霜。导致很多开发者认为只要做好自己的分内之事就行,哪怕“幸灾乐祸”的看别人在忙碌也应该。你赢了一时,却输了一辈子。
你牺牲的是未来,未来的巨大潜能的发挥。这会反噬你的,你以后就未必能做一个合格的好员工了(即使你一开始是一个合格的好员工),因为你适应不了未来飞速发展的需求了,你没有了快速的学习力...
这是公司发展和个人发展脚步不一致而导致的。值得每个编程业内认识的思索......