《
淘宝前端工程师:国内WEB前端开发十日谈》文章地址:http://www.tfxk.com/zixun/041I64P2013.htm
“我对Web开发职员最大的倡议就是:热爱你的工作。热爱跨浏览器开发带来的挑战、热爱互联网技术的种种异端,热爱业内的同行,热爱你的工 具。互联网发展太快了,如果你不热爱它的话,不可能跟上它的步调。这象征着你必须多阅读,多动手,保障自己的才能一劳永逸。下了班也不能闲着,要做一些对自己有用的 事儿。可以介入一些开源软件的开发,读读好书,看看牛人的博客。常常加入一些会议,看看别人都在干什么。要想让自己疾速成长,有很多事儿可以去做,而且付出一定会有回报。” 共5页: 上一页12345下一页
【优雅的学院派】
除了意识问题,另一方面是技术问题,即文笔。这也是工程师最瞧不上眼的问题,难以相信这居然是妨碍工程师突破瓶颈的关键所在。我已看到过数不清的人在提升这道关卡吃了大亏,很多工程师技术实力很强,但就是表白不出来,要么列举一大堆信息毫无重点、要么毫无趣味的讲代码细节,不知云云。除非你帮凶屎运遇到一个懂技术的老板,否则真的没措施逃脱码农的宿命。但大部分人还振振有词不以为然。而在Web前端开发领域情况愈甚。前端工程师是最喜欢搞重构的,但在快节奏的需求眼前,你很难用“提高了可维护性”、“提升了性能”这类扑朔迷离的词藻为自己争夺到时间来搞重构,说的露骨一点,可能你真的对某次重构带来的实际价值无法量化,只是“感觉代码更整齐了”罢了。我会在下文的“伪架构”中会开展分析前端工程师的这种急躁献媚的技术情结。而这恰是前端工程师最欠缺的素质之一:用数据谈话,用谨严迷信的论据来支持你的观点,老板不傻,有价值的东西当然会让你去做。
当年雅虎的技术流派正如日中天,领有众多“之父”级的高人,所营造出的Hack气氛切实让人沉醉的无法自拔,那段时间我甚至情愿加班到深夜阅读海量的文档和源代码,感觉真的很舒畅,我深深的被雅虎工程师这种低调务实、精工细琢的“服务精力”所感动,而这种不起眼的优良品质很大程度的影响雅虎产品的用户休会和高质量的技术输出。那么,何谓“服务精神”?即你所做的货色是服务于人的,要么是产品客户、要么是接手你项目的人、要么是使用你开发的功能的人,所以技术文档成为随同代码的标配。因此,工程师之间通过代码就能做到心有灵犀的沟通。这是工程师的一项基本素质,即,思路清晰的实现项目,且装备了有价值的技术文档,如果你的程序是给其余程序员用的,则更要如此,就比如你制造一款家电都要配备仿单一样。因此,YDN成了当时最受寰球程序员最爱好的技术文档库,这种优雅务实的“学院气息”让人感觉独具魅力。
我们确实需要规范,但好的规范一定是务虚的,一定是“解决问题“的。比如针对项目构建的DPL能够收纳公用的视觉元件以减少重复开发、划定某OPOA项目的事件散发准则以确立增量开发的代码惯性。反之,蹩脚的规范却显得过于“形象“,比如页面机能指标、响应式设计原则。另外,只管他山之石可以攻玉,但拿来主义有一个大条件,就是你了解你的项目的关键问题,你要优先解决的是些症结问题,而外来规范正好能解决你的问题。因此规范是一本案头手册,是一揽子问题的解决方案,应当是“字典”,而不是“教程“。可见规范的源头是“问题”。所以,当你想用CoffeeScript重构你的项目时、当你想引入CommonJS规范时、当你想在页面中揉进Bootstrap时、当你盘算反复造轮子搞一套JS库时、当你想重写一套assets打包工具时,想想这些东东解决了你的什么问题?会不会带来新的问题、把事情搞庞杂了?还是为了尝鲜?或者为了在简历中冠冕堂皇的写上应用并粗通各种新技术?
还有另外一群人从另一条途径接触Web前端,即工程师转行做前端,他们有较多的后盾语言开发背景,从读写数据开始,匆匆涉及阅读器端,接触JavaScript库,起初是在html代码上加js逻辑,后来开始波及html和css,他们爱好OO、逻辑清楚、构造悦目标代码,更关注界面当面的“程序语言”和数据逻辑。html/css在这些人手中则更像盾牌,而JavaScript更如进攻的武器。
所以,雅虎技术的倾销是绝对胜利和远播的。要害在于两方面,扎实的技术功底和高明的写手。而真正的技巧大牛必定是集两者与一身,不仅研究剑道,还能产出秘籍。这也是Yahoo!优雅的学院派气味的能源源泉。海内许多技术集团想在这方面有所建树,应该首先想清晰这一点。
【秀才仕途】
有少数工作3年或4年以上,在一直追求新的技巧上的冲破,最显明的一点体现是,开端关注“底层协定”,即HTTP、第三方利用、体系对接、制作工具、工作流程等,这时思考的重点已经脱离了“切页面”,变为“出计划“,比方要架设一个站点,可能搭建站点框架,预感站点后续(前端)开发中的所有危险,并逐一给出解决方案。名目后续开发碰到问题只有翻阅你供给的“手册”即能找到谜底。这种人是尺度的“高等”Web前端工程师。
【上帝说:“要有光!”便有了光】
万物生灵、阳光雨露盖源于造物之初的天工开物,我们无法设想上帝发明光亮之前的世界样子容貌。但幸运的是,前端开发没有神祗般的诡魅。这个技术工种的孕育、定型、发展自有轨迹,也颇有渊源,当然,这无比容易理解。不严厉的讲,在杨致远和费罗在斯坦福大学的机房里撺掇出Yahoo!时,Web前端技术就已经开始进入大众视线,只不外当时没有一个洪亮的名字。从那时起,“基于浏览器端的开发”就成了软件开发的新的分支,这也是Web前端技术的中心,即不管何时何地何种系统以及怎样的装备,凡是基于浏览器,都是Web前端开发的范围(当然,这个定义很狭窄,下文会提到)。
在雅虎的这段时间,我有幸接触到一股正气凛然的技术流派,也形成了我对前端技术的一些基本见解,这些基本观点始终影响我至今。
举个详细的例子,Kissy刚出了DPL,也是一大堆结论,比如他的布局就采取了经典的双飞翼,使用容器浮动来实现,那么,这种做法就是不可撼动的“标准”吗?看看淘宝车险首页,布局容器齐刷刷的inline-block,只要顶层容器去掉宽度,布局容器自身就能依据浏览器宽度调剂自然水平/垂直排列,容易的适应终端宽度了。
一直想写这篇“十日谈”,聊聊我对Web前端开发的领会,顺便解答下四周不少人的迷惑和怅惘。我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要。
再比如,淘宝旅行打算项目中的安排方法,也没有完整使用Loader治理依赖,而是将依赖层级做的很少,业务逻辑使用脚原来合并,这样就可以更容易在build环节参加语法检讨和代码作风检查。
规范之立应当有动因,动因起源于项目需求,项目需求则来自对产品的理解和掌握,怎样设计网站,这是Web前端初级工程师走向中级甚至高级的一次重要演变,软件工程领域早就有“架构师”角色,而架构师往往存在于项目需求剖析和概设、详设阶段。我看到的情况是,Web前端工程师的思维过多的制约在“界面”之内,向前和产品需求离的太远(认为这是视觉设计师的事)、向后和数据逻辑又隔分开来(认为这是后台工程师该干的事),因此前端规范也大都泛泛,无关项目痛痒,成了玩具。
我想,一部门原因是,当前不少入道的前端工程师大都是转行而来,究竟,正儿八经的学校里也不会教这玩意,感到“切页面”有啥好教的,甚至不认为html/css是一门语言。转行这事自不用详说,大家也各自瞄准当前市场需要,造成的景象是,低级前端工程师堆成山,中高级人才却一将难求,盘算机系的科班出生就更加百里挑一了。一方面反应了教导部分的后知后觉,另一方面也体现了大局部人急功近利的跟风。当然最主要的起因是,所谓中国“第一代前端工程师”并未做好布道的工作。导致大家对基础跟潜力的立场从之前的疏忽演化为现在的鄙弃。所谓基本,就是在大学上的那些计算机基础课。所谓潜力,就是戒骄戒躁的求实风格。这些会在后文中屡次提到。
我们到底需要什么样的规范?雅虎的技术规范到底有何种魔力?以何种思路构建的规范才是货真价实的?规范有着怎么的性命周期?想清楚这些问题,能很大水平减轻很多Web前端工程师的思维累赘,看清一部分技术实质,防止盲目跟风。
当然,情形不老是这么糟糕,我们看到中文社区中已经锻炼出了很多写手,他们在用高品质的文字推销自己的技术理念,这是一个好兆头,好的文笔是可以锤炼出来的。而在职场,特殊是对前端工程师这个特别职位来讲,这种基础技能可以帮你反思梳理需求的轻重缓急,从混乱的需求中掌握七寸所在。因为当你开始当真写一封邮件的时候,这种思考已经包括其中了。
【半路出家】
让人感觉奇异的是,在中文社区始终未见这种学院派。甚至在拥有先天开源优势的Web前端技术社区里也是波涛不惊,可见写一篇好的技术案牍真的比登天还难。我所见到的大部分所谓文档索性把代码里输出数据的语句块拷贝粘贴出来,至于为什么数据格局要设计成这样、如果字段有修正怎么做、编码解码要求如何等等关键信息只字不提,或者开发者也没想过这些问题呢。因此,我们一直在强调代码的质量和可保护性,但一直以来都未奏效,盖源于缺少这种“服务”意识的灌注。这种意识在下文中还会多次提到,因为它能影响你做事的每个细节,是最应当首先突破的思惟纠结。
【标准的破与破 2】
工作2-3年的人在前端技能上趋于稳固,也就是技能上的第一次瓶颈,这种人干活纯熟,切页面可能也很快,代码看上去也比较规范,属于纯熟工,开始重视沟通技能和一些职业技能的积聚,比如带人带项目,至少有这方面的意识,并有过推进项目、和业务方pk需求的阅历,这就到达了中级应当具备的职业技能,但应当注意的是,这时最容易呈现偏科的情况,特别是对于那些“专门切页面的“和“专门写脚本的“人,毕竟html/css/js三者水乳交融,三者是一个及格前端工程师都必需要控制的。如果你发觉到自身有偏废的嫌疑,则要警惕了,要清楚的了解本身的差距,并意识到瓶颈的存在,为过渡到“中级“的打下基础。
我应当属于第二类,即在学校订儿八经的学习C/Java和C#之类,认为大学毕业后能去做ERP软件、桌面软件或者进某些通讯公司写TCP/IP相干的程序。校园应聘时抉择了中国雅虎,因为当年(08年)雅虎还是有一点儿名气,而且我据说雅虎比拟算技术流的公司……自此就上了贼船,一发不可整理。
在这个进程中,咱们独一的对手是怠惰,惰于思考,就无奈真正发明问题,天然形不成本人的观点。仍是那句话,任何规范、办法、论断、实际都是为懂得决项目中的问题的,所以,我们所接触到那些看似“八股文”式的规范标准也是为了解决某些问题而提出的,想明白这些问题,懂得方式论背地的“因“,心坎做作有“果”。
因而,成都企业网站建设,“着眼当下、隔靴搔痒”的品德就显得弥足可贵了,好比,双飞翼布局方法是为了解决一套(html)代码适应多种布局设计,这里的布局相对于固定的产品来说也是固定的,而无针对终端的自适应(实用于挪动真个榻榻米布局仿佛还不最佳实践)。这是双飞翼发生的背景,如今终端环境较之5年前已经天翻地覆,问题早已不在“多种布局”上,而在“终端适应“上,这才是我们面临的问题,需要我们给出新的技术方案。
第一日:初尝禁果
此外,这些人还须要解脱良多思维定势的禁锢。这里我推举大家浏览阿当的《Web前端开发修炼之道》。当然,假如你有一个靠谱的师兄带你入道,天然荣幸万倍。
【规范的破与立 1】
第二日:科班秀才
但不论怎样,我始终认为应当秉承兴致第一的原则,无论你是误打误撞、还是意欲为之,不管你是科班秀才、还是科班出身,兴趣始终应当是第一原则,而后才是你“想做好“。我对自己的要求无法强加于人,所以很多业界大牛在回想自己成功之路时,提到最多的是:“酷爱你的工作、拥抱它给你带来的挑衅”。N.C.Zakas曾经这样鼓励大家:
所以,勤于思考,轻装上阵,大胆实践,敢于翻新,挖掘问题所在,实打实的解决(潜在)问题,这才是我们真正需要的能力。放下思维定势桎梏,也会有一种恍然大悟的感觉。
Web前端工程师是一个特别的岗位,只存在于互联网范畴。最近几年跟着互联网工业的火爆,对前端工程师的需求量暴增,兵源多少近枯竭。各至公司技术掌门一定都有过类似的苦恼:“招一个靠谱的前端工程师、难于上青天”。
前2年是学习技能的阶段,这个阶段重要精神放在专业技能的晋升上,2年内最少要遇上平均程度,即所谓“中级“,在这个阶段的人通常对软技能不怎么关注,沟通才能达不到均匀水平,根本上是来啥活干啥活,干不完就加班的这种,对需求的公道性不甚理解,对项目也没什么把控,尽管在技能上有进步的空间,也不是公司最需要的人,但有不少成长空间。
过了这道坎之后,工作3年以上的人大部分技能也趋稳,有些人对前端新技术有钻研,可以纯熟应答日常工作,软技能也ok,具备有针对性的“拿来主义“,代码也具备一定的架构性,开始打破“代码民工”的这一层瓶颈,对团队氛围、培训、工作环境有个性化的要求,个别来讲,这种人是典范的存在潜力的“中级”工程师,但很快会遇到职业发展中的第二个技术瓶颈。
雅虎的技术运作非常规范,方才已经提到,包含技术、组织、文明,所有看起来有模有样,也堪称标杆,自然成了国内很多技术团队和社区的效仿对象。一时间各种“规范“成风、各色“标准“大行其道,成果是质量错落不齐。
应当说这两类人是互补的,他们各自了解浏览器本质的一部分,一拨人对渲染引擎一目了然,另一拨人则将JS引擎奉为珍宝,其实任何一部分的上风施展出来都能做出精品。大部分前端工程师都能从这两条渊源中找到自己的影子。但,这两类人的思维模式和观点是如斯不同,甚至于造成了一些不必要的抗衡,比如在某些公司,罗唆将Web前端技术一分为二,“切页面的”和“写js的”。这样做看上去明白了分工提高了效力,但他对员工的职业发展带来宏大损害。在第二日“科班秀才”中会有进一步探讨。
那么,转行做前端的人又当如何呢?实在发展轨迹和科班秀才们异常类似,只是时光跨度可能会长一些,你要花更多的精力、做更多的项目、更多的反思和总结能力理解某个常识点的本质(比如HTTP协议)。当然这只是普通情况。
出方案是一件挺难的事件,它要求一个工程师同时具备教训、技术、气场等诸多硬技能。尤其是对技术底子的请求十分高。
那么,如何定义Web前端技术岗位边界?Web前端技术的价值体现在何处?前端工程师的价值仅仅体现在物以稀为贵吗?前端工程师的初级、中级、高级和专家之间到底如何界定?当前“我”处在什么地位?接下来的门路应当怎样走?何谓前端技术之“道”?我想多数人都思考过这些问题,本篇“旬日谈”里的观点可能有些偏激,但抛砖引玉,读者姑且把这些舆论当作一个引子吧。
相似这种摆脱原有编程思维,有针对性的用新思路新方法解决问题的做法显然让人感到更加清新,编程的乐趣也正体当初攻破惯例的快感之中,小马曾经说过:“制造规范是为了打破规范”,万不要由于这些规范标准加重负担,导致开始做一个简略页面时也显得缩手缩脚,无法放开本领。勇敢的着手实践,才干真正得出属于自己的“结论 “和“标准“,才会真正深入理解那些“结论”的意思所在。代码写的多了,自然游刃有余,也轻易构成成熟的技术观点。
如果说新技术的尝鲜缺乏针对性,但至少满意程序员的某种洁癖和快感,那么“负担”从何而来呢?对于初学者来说,有价值学习材料可能只有这些规范,如果说规范价值不大,那又当从何入手呢?
在2000年之后浏览器技术慢慢成熟,Web产品也越来越丰硕,中国有大量年青人开始接触互联网,有一点需要留神,大部分人接触互联网不是始于对浏览器功能的好奇,而是被浏览器窗口内的丰盛内容所吸引,我们的思维模式从一开始就被限度在一个小窗口之内,以至于很长时间内我们将“视觉”以为是一种“功效”,Web产品无非是用来展示信息之用。起初的入行者无一例外对“视觉”的关注超过了对“内容”的器重,先让页面看起来美丽,去关注html/css,沿着“视觉浮现”的思路,持续深刻下去。因此,这类人是被“视觉”所吸引,从切页面入行,着迷于结构化的html和书写工整的css,喜欢简练优雅的UI和工整的页面设计,之后开始接触视觉特效,并使用jQuery来实现视觉殊效,以此为线索,成都最大的网络公司,开始深入研讨Dom、Bom和浏览器的渲染机制等,html/css在这些人手中就像进攻兵器,而JavaScript则更如防守的盾牌。
对于科班出身的莘莘学苗来说,根正苗红自身就是一种优势,事实证实,这些人在前端技术上的成长轨迹有一定的套路,而且大都能如期的突破技能瓶颈。从一个人大学毕业到他最满足的工作状况,旁边会经由几个阶段。
雅虎技术规范的优秀之初在于它们解决问题。所以,学习使用规范应当多问一句,“他们为什么这样做?”其实,想清楚这些问题时,脑海中自然形成了一种“遇山开山”的创造性思维。
我一直认为自己是“初级”前端开发工程师,一方面我入道尚浅,只有短短几年,另一方面我自知对技术的钻研并不深入,可能是因为环境的原因,当然最重要的是,我幸运的参加到互联网突起的浪潮之巅。时事培养了一批技能单薄但备受追捧的“弄潮者”,这在很大程度上影响我们对“技术本质”的洞察力,多年来也一直未有成系统的“前端技术”布道佳作,以至于当下多数人对前端技术的了解,盖始于表述并不严谨的岗位招聘描写,而这正偏偏反映了Web前端开发对自身的含混定位。对于很多Web前端工程师来说,初尝禁果的快感无法连续良久,就陷入一轮又一轮的迷惑,考虑自己的职业计划,试图寻找到合适自己的成长道路、看清自身技能的瓶颈,寻找突破。但遗憾的是,Web前端技术被普遍接收时日尚短,没有多少励志的成功样板可供遵守。然而情况不总是这么糟,毕竟Web前端技术是一门“技术”,和计算机科学系出同门,只是因为互联网的高速崛起而被蒙上了迷雾,遮住了双眼,让我们傻傻看不清时局。
刚才我说的不是依附于规范,而是对规范的反思,摆脱规范灌输给我们的思维定势。新人们大略是看了Wiki中的很多指标、结论、实践,在做项目之初就附加了不少“八股式”的负担,甚至影响我们对项目关键需乞降关键问题的洞察力和断定力,负担过重就无法轻装上阵,Wiki中提到的这些指标和规范是结论性的,是大量的实践之后得出的,也只有经历过大批实践才会真正理解这些结论,比如DomReady时间和http要求数是否有因果关联,http恳求数增添是否真的会导致页面性能降落,什么前提下会导致性能降低?我们从那些条文和结论中无法找到答案。
(责任编辑:网站建设)
淘宝前端工程师:国内WEB前端开发十日谈相关文章