一个人被学校制度而被现实磨平了棱角说说麟角,那么如此看来学校的严格管理对于学生来说是否好


好与坏看他的发展决定将来到社会上还会再次磨平的

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

一直想写这篇“十日谈”聊聊峩对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘我不打算聊太多技术,我想通过技术的历练,得到的反思应当更重要

我┅直认为自己是“初级”前端开发工程师,一方面我入道尚浅只有短短几年,另一方面我自知对技术的钻研并不深入可能是由于环境嘚原因,当然最重要的是我幸运的参与到互联网崛起的浪潮之巅。时势造就了一批技能薄弱但备受追捧的“弄潮者”这在很大程度上影响我们对“技术本质”的洞察力,多年来也一直未有成体系的“前端技术”布道佳作以至于当下多数人对前端技术的了解,盖始于表述并不严谨的岗位招聘描述而这正恰恰反映了Web前端开发对自身的模糊定位。对于很多Web前端工程师来说初尝禁果的快感无法持续很久,僦陷入一轮又一轮的迷惘思索自己的职业规划,试图寻找到适合自己的成长道路、看清自身技能的瓶颈寻找突破。但遗憾的是Web前端技术被广泛接纳时日尚短,没有多少励志的成功样板可供遵循然而情况不总是这么糟,毕竟Web前端技术是一门“技术”和计算机科学系絀同门,只是因为互联网的高速崛起而被蒙上了迷雾遮住了双眼,让我们傻傻看不清时局

那么,如何定义Web前端技术岗位边界Web前端技術的价值体现在何处?前端工程师的价值仅仅体现在物以稀为贵吗前端工程师的初级、中级、高级和专家之间到底如何界定?当前“我”处在什么位置接下来的路子应当怎样走?何谓前端技术之“道”我想多数人都思考过这些问题,本篇“十日谈”里的观点可能有些偏激但抛砖引玉,读者权且把这些言论当作一个引子吧

【上帝说:“要有光!”便有了光】

万物生灵、阳光雨露盖源于造物之初的天笁开物,我们无法想象上帝创造光明之前的世界模样但幸运的是,前端开发没有神祗般的诡魅这个技术工种的孕育、定型、发展自有軌迹,也颇有渊源当然,这非常容易理解不严格的讲,在杨致远和费罗在斯坦福大学的机房里撺掇出Yahoo!时Web前端技术就已经开始进入公眾视野,只不过当时没有一个响亮的名字从那时起,“基于浏览器端的开发”就成了软件开发的新的分支这也是Web前端技术的核心,即鈈论何时何地何种系统以及怎样的设备但凡基于浏览器,都是Web前端开发的范畴(当然这个定义很狭隘,下文会提到)

在2000年之后浏览器技术渐渐成熟,Web产品也越来越丰富中国有大批年轻人开始接触互联网,有一点需要注意大部分人接触互联网不是始于对浏览器功能嘚好奇,而是被浏览器窗口内的丰富内容所吸引我们的思维模式从一开始就被限制在一个小窗口之内,以至于很长时间内我们将“视觉”认为是一种“功能”Web产品无非是用来展现信息之用。起初的入行者无一例外对“视觉”的关注超过了对“内容”的重视先让页面看起来漂亮,去关注html/css沿着“视觉呈现”的思路,继续深入下去因此,这类人是被“视觉”所吸引从切页面入行,着迷于结构化的html和书寫工整的css喜欢简洁优雅的UI和工整的页面设计,之后开始接触视觉特效并使用jQuery来实现视觉特效,以此为线索开始深入研究Dom、Bom和浏览器嘚渲染机制等,html/css在这些人手中就像进攻兵器而JavaScript则更如防守的盾牌。

还有另外一群人从另一条道路接触Web前端即工程师转行做前端,他们囿较多的后台语言开发背景从读写数据开始,渐渐触及浏览器端接触JavaScript库,起初是在html代码上加js逻辑后来开始涉及html和css,他们喜欢OO、逻辑清晰、结构悦目的代码更关注界面背后的“程序语言”和数据逻辑。html/css在这些人手中则更像盾牌而JavaScript更如进攻的兵器。

应当说这两类人是互补的他们各自了解浏览器本质的一部分,一拨人对渲染引擎了如指掌另一拨人则将JS引擎奉为至宝,其实任何一部分的优势发挥出来嘟能做出精品大部分前端工程师都能从这两条渊源中找到自己的影子。但这两类人的思维模式和观点是如此不同,以至于形成了一些鈈必要的对抗比如在某些公司,干脆将Web前端技术一分为二“切页面的”和“写js的”。这样做看上去明确了分工提高了效率但他对员笁的职业发展带来巨大伤害。在第二日“科班秀才”中会有进一步讨论

我应该属于第二类,即在学校正儿八经的学习C/Java和C#之类以为大学畢业后能去做ERP软件、桌面软件或者进某些通信公司写TCP/IP相关的程序。校园招聘时选择了中国雅虎因为当年(08年)雅虎还是有一点儿名气,洏且我听说雅虎比较算技术流的公司……自此就上了贼船一发不可收拾。

在雅虎的这段时间我有幸接触到一股正气凛然的技术流派,吔形成了我对前端技术的一些基本看法这些基本观点一直影响我至今。

当年雅虎的技术流派正如日中天拥有众多“之父”级的高人,所营造出的Hack氛围实在让人陶醉的无法自拔那段时间我甚至宁愿加班到深夜阅读海量的文档和源代码,感觉真的很舒服我深深的被雅虎笁程师这种低调务实、精工细琢的“服务精神”所打动,而这种不起眼的优秀品质很大程度的影响雅虎产品的用户体验和高质量的技术输絀那么,何谓“服务精神”即你所做的东西是服务于人的,要么是产品客户、要么是接手你项目的人、要么是使用你开发的功能的人所以技术文档成为伴随代码的标配。因此工程师之间通过代码就能做到心有灵犀的沟通。这是工程师的一项基本素质即,思路清晰嘚完成项目且配备了有价值的技术文档,如果你的程序是给其他程序员用的则更要如此,就好比你制造一款家电都要配备说明书一样因此,YDN成了当时最受全球程序员最喜爱的技术文档库这种优雅务实的“学院气息”让人感觉独具魅力。

让人感觉奇怪的是在中文社區始终未见这种学院派。甚至在具有先天开源优势的Web前端技术社区里也是波澜不惊可见写一篇好的技术文案真的比登天还难。我所见到嘚大部分所谓文档索性把代码里输出数据的语句块拷贝粘贴出来至于为什么数据格式要设计成这样、如果字段有修改怎么做、编码解码偠求如何等等关键信息只字不提,或者开发者也没想过这些问题呢因此,我们一直在强调代码的质量和可维护性但一直以来都未见效,盖源于缺少这种“服务”意识的灌输这种意识在下文中还会多次提到,因为它能影响你做事的每个细节是最应当首先突破的思想纠結。

除了意识问题另一方面是技术问题,即文笔这也是工程师最瞧不上眼的问题,难以置信这竟然是阻碍工程师突破瓶颈的关键所在我已看到过数不清的人在晋升这道关卡吃了大亏,很多工程师技术实力很强但就是表达不出来,要么罗列一大堆信息毫无重点、要么毫无趣味的讲代码细节不知云云。除非你走狗屎运碰到一个懂技术的老板否则真的没办法逃脱码农的宿命。但大部分人还振振有词不鉯为然而在Web前端开发领域情况更甚。前端工程师是最喜欢搞重构的但在快节奏的需求面前,你很难用“提高了可维护性”、“提升了性能”这类虚无缥缈的词藻为自己争取到时间来搞重构说的露骨一点,可能你真的对某次重构带来的实际价值无法量化只是“感觉代碼更整洁了”而已。我会在下文的“伪架构”中会展开分析前端工程师的这种浮躁献媚的技术情结而这正是前端工程师最欠缺的素质之┅:用数据说话,用严谨科学的论据来支撑你的观点老板不傻,有价值的东西当然会让你去做

当然,情况不总是这么糟糕我们看到Φ文社区中已经锻炼出了很多写手,他们在用高质量的文字推销自己的技术理念这是一个好兆头,好的文笔是可以锻炼出来的而在职場,特别是对前端工程师这个特殊职位来讲这种基本技能可以帮你反思梳理需求的轻重缓急,从凌乱的需求中把握七寸所在因为当你開始认真写一封邮件的时候,这种思考已经包含其中了

所以,雅虎技术的推销是相对成功和远播的关键在于两方面,扎实的技术功底囷高超的写手而真正的技术大牛一定是集两者与一身,不仅钻研剑道还能产出秘籍。这也是Yahoo!优雅的学院派气息的动力源泉国内很多技术团体想在这方面有所建树,应当首先想清楚这一点

雅虎的技术运作非常规范,刚才已经提到包括技术、组织、文化,一切看起来囿模有样也堪称标杆,自然成了国内很多技术团队和社区的效仿对象一时间各种“规范“成风、各色“标准“大行其道,结果是质量參差不齐

我们到底需要什么样的规范?雅虎的技术规范到底有何种魔力以何种思路构建的规范才是货真价实的?规范有着怎样的生命周期想清楚这些问题,能很大程度减轻很多Web前端工程师的思想负担看清一部分技术本质,避免盲目跟风

我们的确需要规范,但好的規范一定是务实的一定是“解决问题“的。比如针对项目构建的DPL可以收纳公用的视觉元件以减少重复开发、规定某OPOA项目的事件分发原则鉯确立增量开发的代码惯性反之,糟糕的规范却显得过于“抽象“比如页面性能指标、响应式设计原则。另外尽管他山之石可以攻玊,但拿来主义有一个大前提就是你了解你的项目的关键问题,你要优先解决的是些关键问题而外来规范正好能解决你的问题。因此規范是一本案头手册是一揽子问题的解决方案,应当是“字典”而不是“教程“。可见规范的源头是“问题”所以,当你想用CoffeeScript重构伱的项目时、当你想引入CommonJS规范时、当你想在页面中揉进Bootstrap时、当你打算重复造轮子搞一套JS库时、当你想重写一套assets打包工具时想想这些东东解决了你的什么问题?会不会带来新的问题、把事情搞复杂了还是为了尝鲜?或者为了在简历中堂而皇之的写上使用并精通各种新技术

规范之立应当有动因,动因来源于项目需求项目需求则来自对产品的理解和把握,这是Web前端初级工程师走向中级甚至高级的一次重要蛻变软件工程领域早就有“架构师”角色,而架构师往往存在于项目需求分析和概设、详设阶段我看到的情况是,Web前端工程师的思维過多的限制在“界面”之内向前和产品需求离的太远(认为这是视觉设计师的事)、向后和数据逻辑又隔离开来(认为这是后台工程师該干的事),因此前端规范也大都泛泛无关项目痛痒,成了玩具

雅虎技术规范的优秀之初在于它们解决问题。所以学习使用规范应當多问一句,“他们为什么这样做”其实,想清楚这些问题时脑海中自然形成了一种“遇山开山”的创造性思维。

如果说新技术的尝鮮缺少针对性但至少满足程序员的某种洁癖和快感,那么“负担”从何而来呢对于初学者来说,有价值学习资料可能只有这些规范洳果说规范价值不大,那又当从何入手呢

刚才我说的不是依赖于规范,而是对规范的反思摆脱规范灌输给我们所思维定势。新人们大概是看了Wiki中的很多指标、结论、实践在做项目之初就附加了不少“八股式”的负担,甚至影响我们对项目关键需求和关键问题的洞察力囷判断力负担过重就无法轻装上阵,Wiki中提到的这些指标和规范是结论性的是大量的实践之后得出的,也只有经历过大量实践才会真正悝解这些结论比如DomReady时间和http请求数是否有因果关系,http请求数增加是否真的会导致页面性能下降什么条件下会导致性能下降?我们从那些條文和结论中无法找到答案

举个具体的例子,Kissy刚刚出了DPL也是一大堆结论,比如他的布局就采用了经典的双飞翼使用容器浮动来实现,那么这种做法就是不可撼动的“标准”吗?看看淘宝车险首页布局容器齐刷刷的inline-block,只要顶层容器去掉宽度布局容器自身就能根据瀏览器宽度调整自然水平/垂直排列,轻易的适应终端宽度了

再比如,淘宝旅行计划项目中的部署方式也没有完全使用Loader管理依赖,而是將依赖层级做的很少业务逻辑使用脚本来合并,这样就可以更容易在build环节加入语法检查和代码风格检查

类似这种摆脱原有编程思维,囿针对性的用新思路新方法解决问题的做法显然让人感觉更加清爽编程的乐趣也正体现在打破常规的快感之中,小马曾经说过:“制造規范是为了打破规范”万不要因为这些规范标准加重负担,导致开始作一个简单页面时也显得缩手缩脚无法放开身手。大胆的动手实踐才能真正得出属于自己的“结论 “和“标准“,才会真正深刻理解那些“结论”的意义所在代码写的多了,自然熟能生巧也容易形成成熟的技术观点。

在这个过程中我们唯一的对手是懒惰,惰于思考就无法真正发现问题,自然形不成自己的观点还是那句话,任何规范、方法、结论、实践都是为了解决项目中的问题的所以,我们所接触到那些看似“八股文”式的规范标准也是为了解决某些问題而提出的想清楚这些问题,理解方法论背后的“因“内心自然有“果”。

因此“着眼当下、对症下药”的品质就显得弥足珍贵了,比如双飞翼布局方法是为了解决一套(html)代码适应多种布局设计,这里的布局相对于固定的产品来说也是固定的而无针对终端的自適应(适用于移动端的榻榻米布局似乎还没有最佳实践)。这是双飞翼产生的背景如今终端环境较之5年前已经翻天覆地,问题早已不在“多种布局”上而在“终端适应“上,这才是我们面临的问题需要我们给出新的技术方案。

所以勤于思考,轻装上阵大胆实践,勇于创新发掘问题所在,实打实的解决(潜在)问题这才是我们真正需要的能力。放下思维定势枷锁也会有一种豁然开朗的感觉。

Web湔端工程师是一个特别的岗位只存在于互联网领域。最近几年随着互联网产业的火爆对前端工程师的需求量暴增,兵源几近枯竭各夶公司技术掌门一定都有过类似的苦恼:“招一个靠谱的前端工程师、难于上青天”。

我想一部分原因是,当前不少入道的前端工程师夶都是转行而来毕竟,正儿八经的学校里也不会教这玩意觉得“切页面”有啥好教的,甚至不觉得html/css是一门语言转行这事自不必详说,大家也各自瞄准当前市场需求造成的现象是,初级前端工程师堆成山中高级人才却一将难求,计算机系的科班出身就更加凤毛麟角叻一方面反映了教育部门的后知后觉,另一方面也体现了大部分人急功近利的跟风当然最重要的原因是,所谓中国“第一代前端工程師”并未做好布道的工作导致大家对于基础和潜力的态度从之前的忽视演变为如今的蔑视。所谓基础就是在大学上的那些计算机基础課。所谓潜力就是戒骄戒躁的务实作风。这些会在后文中多次提到

对于科班出身的莘莘学苗来说,根正苗红本身就是一种优势事实證明,这些人在前端技术上的成长轨迹有一定的套路而且大都能如期的突破技能瓶颈。从一个人大学毕业到他最满意的工作状态中间會经过几个阶段。

前2年是学习技能的阶段这个阶段主要精力放在专业技能的提升上,2年内起码要赶上平均水平即所谓“中级“,在这個阶段的人通常对软技能不怎么关注沟通能力达不到平均水平,基本上是来啥活干啥活干不完就加班的这种,对需求的合理性不甚理解对项目也没什么把控,尽管在技能上有提高的空间也不是公司最需要的人,但有不少成长空间

工作2-3年的人在前端技能上趋于稳定,也就是技能上的第一次瓶颈这种人干活熟练,切页面可能也很快代码看上去也比较规范,属于熟练工开始注重沟通技巧和一些职業技能的积累,比如带人带项目至少有这方面的意识,并有过推动项目、和业务方pk需求的经历这就达到了中级应当具备的职业技能,泹应当注意的是这时最容易出现偏科的情况,特别是对于那些“专门切页面的“和“专门写脚本的“人毕竟html/css/js三者不分彼此,三者是一個合格前端工程师都必须要掌握的如果你觉察到自身有偏废的嫌疑,则要小心了要清楚的了解自身的差距,并意识到瓶颈的存在为過渡到“中级“的打下基础。

过了这道坎之后工作3年以上的人大部分技能也趋稳,有些人对前端新技术有钻研能够熟练应对日常工作,软技能也ok具备有针对性的“拿来主义“,代码也具有一定的架构性开始突破“代码民工”的这一层瓶颈,对团队气氛、培训、工作環境有个性化的要求一般来讲,这种人是典型的具有潜力的“中级”工程师但很快会遇到职业发展中的第二个技术瓶颈。

有少数工作3姩或4年以上在不断寻求新的技能上的突破,最明显的一点体现是开始关注“底层协议”,即HTTP、第三方应用、系统对接、制造工具、工莋流程等这时思考的重点已经脱离了“切页面”,变为“出方案“比如要架设一个站点,能够搭建站点框架预见站点后续(前端)開发中的所有风险,并一一给出解决方案项目后续开发遇到问题只要翻阅你提供的“手册”即能找到答案。这种人是标准的“高级”Web前端工程师

出方案是一件挺难的事情,它要求一个工程师同时具备经验、技术、气场等诸多硬技能尤其是对技术底子的要求非常高。

那麼转行作前端的人又当如何呢?其实发展轨迹和科班秀才们非常类似只是时间跨度可能会长一些,你要花更多的精力、作更多的项目、更多的反思和总结才能理解某个知识点的本质(比如HTTP协议)当然这只是一般情况。

此外这些人还需要摆脱很多思维定势的禁锢。这裏我推荐大家阅读阿当的《Web前端开发修炼之道》当然,如果你有一个靠谱的师兄带你入道自然幸运万倍。

但不管怎样我始终认为应當秉承兴趣第一的原则,不管你是误打误撞、还是意欲为之不管你是科班秀才、还是半路出家,兴趣始终应当是第一原则然后才是你“想做好“。我对自己的要求无法强加于人所以很多业界大牛在回顾自己成功之路时,提到最多的是:“热爱你的工作、拥抱它给你带來的挑战”N.C.Zakas曾经这样勉励大家:

“我对Web开发人员最大的建议就是:热爱你的工作。热爱跨浏览器开发带来的挑战、热爱互联网技术的种種异端热爱业内的同行,热爱你的工 具互联网发展太快了,如果你不热爱它的话不可能跟上它的步伐。这意味着你必须多阅读多動手,保证自己的才能与日俱增下了班也不能闲着,要做一些对自己有用的 事儿可以参与一些开源软件的开发,读读好书看看牛人嘚博客。经常参加一些会议看看别人都在干什么。要想让自己快速成长有很多事儿可以去做,而且付出一定会有回报“

兴趣第一,聽上去很美但现实却不总是这么酷。练就了一身本领那也要找到对口的怪物来打一打才过瘾。

自然每个人都想做出好东西,每个工程师也都渴求这样的机遇用层次分明的设计、漂亮优雅的代码、精妙的细节雕琢,做出美观、安全、实用耐用的产品不过现实是如此殘酷,以至于工程师们一直都缺乏对产品的归属感作为前端工程师,如何才能在江湖中把握住前进方向、步步走高毕竟,在职位繁杂嘚大公司缺乏人性化的工作流程影响着工程师的工作幸福感。产品从设计之初、到技术方案评审、再到实现处处充满了妥协,大部分產品都是杂交的产物人与人相互掣肘,每个人都对产品不满意……大跃进式的敏捷开发早就被证明百害无一利。但或许这就是成长嘚代价。年轻的工程师需要更多的了解需求和设计、产品经理更要懂得软件迭代规律对于前端工程师来讲更是如此,多学习交互设计和UI多了解网络协议和软件迭代模型,更能帮助前端工程师和需求方沟通、和后台的衔接、以及控制版本的迭代

说来奇怪,前端工程师不昰写html/css/js的吗搞懂那些边缘知识有什么用?《Web前端开发修炼之道》中也提到精通一行需要先精通十行。这里我来解释一下原因

作为交互設计师的下游,前端工程师学需要习设计知识是很容易理解的因为它能帮助你更准确的理解设计师的意图,在原型不完整的时候也能正確的反馈设计缺陷将问题阻挡在设计的环节,会大大减少UI bug数量比如说,设计师会给出理想状态下的容器样式却往往忽略了文字溢出折行、长连续字符、容器宽高是否适应内容尺寸变化而变化,溢出部分是作截字还是隐藏等诸多细节因为设计师不懂“边界值测试”的噵理,而这些问题往往在测试阶段才被发现所以,如果能在拿到UI设计稿时就提醒设计师补充完整这些场景自然减少测试回归次数。

另外前端工程师必须要了解网络协议,原因很简单我们作的产品运行在Web上。很多依赖域Ajax的实现只有前端工程师才会提出实现方案,产品经理不了解技术瓶颈后台工程师更不会在意客户端的用户体验,举个简单的例子:通过JS实现一个Ajax如果Ajax抓取的数据源是一个302跳转,则需要在JS程序中多做一些事情这就需要前端工程师了解一些HTTP协议。应当说这是很常见的一个场景。

那么为什么说前端工程师也要关注玳码版本控制呢?因为web开发和软件开发本质无异同样具有迭代周期,需求不是一揽子提完、一口气开发完的是有步骤的开发,因此烸次上线开发哪些功能、为后续扩展功能留足哪些接口、代码在可扩展和可维护性上应当作哪些考虑……,这些应当是每个工程师关注的倳情所谓迭代就是指这种需求的叠加,这是软件开发的常态也是web开发的常态,刚开始前端工程师总会不断抱怨没完没了的需求,代碼起初还算干净但很快就越来越乱,代码的版本管理对于Web前端工程师来说有些困难这也使得大部分前端工程师很难上档次,从这个角喥讲前端工程师是需要向后台工程师学习的,他们的开发量不比前端少维护代码的能力要超过前端工程师。另外对于刚入行的前端笁程师,心态要放对提需求是产品经理的职责所在,整理出有价值的需求是交互设计师的职责所在将需求作版本控制分步实现是前端笁程师的职责所在,前端工程师没必要去抱怨产品经理提一大堆没规律的需求而更应当去理解需求缘由,将需求提炼成UC(用例)让需求在自己手中可控制。只是多数前端工程师缺乏提炼、整理需求的能力一味的在接需求,才会搞的手忙脚乱带着情绪堆代码。

所以呮有练就了一身本领,才会更有目标的去寻找对产品的责任感和对团队的归属感不要误以为能切出漂亮的页面就是能力的提高,纯粹的寫代码每个人都差不多的要成为合格的工程师,眼界要进一步放开前端工程师能做的,不仅仅是切页面而已作一个精品项目,一定鈈乏专业的过程把控这也是大多数人最易忽略的地方。

其实除了个人需要明确努力的方向,每个人都更渴望身处一个好团队谁都不唏望有猪一样的队友。我们都很羡慕处身这样的团队可以放心的将精力放在纯粹的技术上,身边每个人都自觉的补充文档注释代码也層次清晰解偶充分重用率高,精妙的设计实现可以更快的传播bug得到的改进建议也是务实专业的,技术在这种良性互动中价值倍增我想這也算是好团队的一种境界了,这有赖于团队成员水平水涨船高不过,反观Yahoo的成长之路他们的技术积淀也是靠点滴的积累,其实他们當初的状况不比现在的我们好哪去10年的进化,才造就了Yahoo技术团队的专业性和Hack精神我们每个人才刚刚起步而已。为了积攒工作中的幸福感多付出一些是值得的。

但我猜你现在的处境一定不会太过乐观,产品乱提需求、一句话的PRD、不被重视被生硬的当作“资源“……反正,情况就是这么个情况要么你选择抱怨下去,要么想办法去改变“积极主动“是源自内心的一种坚韧品质,也是励志之本有些囚在现实中被被现实磨平了棱角说说理想,有些人却在黑暗森林中找到了方向这就是犬儒主义和英雄气概之间的差别。这自不必详说洇为这让我想起了“大长今”,这简直就是前端工程师的励志典范:“这是一个可怕的环境,足以消磨任何人的斗志和信念所有来这里的囚都变得麻木和无所作为,‘多栽轩‘恶劣的环境没有改变长今但长今却改变了‘多栽轩‘所有的人“。

如果你想做到“资深”就一萣要想清楚这一点,因为你是团队的顶梁柱(业务)也是幸福感的源头(士气)。

读到这里你不禁会问,前端领域存在“架构师”吗这个问题会在后面的“码农的宿命”中展开解释。这里先说下代码架构的一些琐事吧

什么是架构?架构是由“架”和“构”组成架,即元件构,即连接件因此,架构即是将总体分解为单元然后定义单元之间的连接方式。架构的含义源自禅宗而禅宗的基本信条則之一就是真理是无法用语言来描述的。这个基本信条有其背景即语言具有某种抽象性。而人们对这种抽象性的悟道则直接影响对事物嘚看法进而决定了对客观世界的分解方法。

而在编程语言中同样存在这种禅宗所隐喻的悖论。在面向对象的教科书中通常举一些显洏易见的例子,比如“水果”是一个类包含有苹果、桔子、香蕉等实例,“蔬菜”也是一个类包含白菜、冬瓜、茄子等实例。这两个類之间并无交集因此很容易理解。但实际项目中情况要复杂的多比如两个图书类目“文学”和“历史”,那么“明朝那些事”应当是“文学”类的实例还是“历史”类的实例呢即一旦用语言说出了某一事物,即人为的割裂了世界于是就会陷入迷途。这在程序设计领域情况更甚也是造成混乱的主要根源,也就是说如果你的程序可扩展性不好,一定是程序作者对“单元”的定义不够准确即单元的概念之间不够“正交”。而这种架构终是徒有其形根基不稳。

因此变量和类的命名才是真正考验架构功力的关键(命名是否准确清晰、单元之间是否有概念重叠或盲区),而和所谓“组合”、“继承”、“桥接”等模式化的“外表”无本质联系

实际情况是,程序员早早的就想让自己和“架构”扯上关系并自封xx架构师。在项目中应用各种模式分层、解耦方法每个项目都可以产出一套看上去很复杂的“架构图”,感觉很牛逼的样子没错,实践这些方法论总不是坏事但世界观才是方法论的基础,只有在概念上对产品模块有科学的定義方法论便自然形成了,《编程珠玑》中一再提及数据结构就是静态的算法在Web前端领域亦是如此,在页面的建模过程中定义分解维喥要比分解方法更加基础和重要。我想阿当可以在《Web前端开发修炼之道》的第二版里加上这部分内容

真正的高手用记事本就能写出高质量的代码、用cvs就能做到完美的版本控制、用字典式的分解就能做好系统架构,我想这正是剑宗一派的最高境界吧。

技术流派看上去是如此吸引人高手就像侠客一般,来去如风潇洒自如但反观自己怎么看怎么没有侠客那股范儿。尽管上文提到了一些道理了解这些尽管鈈是坏事,但缺少实践总感觉是纸上谈兵更何况,日常的工作又是枯燥无味、繁杂单调每个人都盼望更高的目标、接触新鲜技术、将噺技术运用到日常,在探索尝试之中寻找成就感这种感觉可以理解,但却缺少更深层次的思考因为越到最后越会发现一线的工作才是朂有挑战的。当然我说这话的前提是,你能如前文所说具备合格的软技能需要一些技巧让工作变得工整有序、节奏健康,这样你才能將注意力放在纯粹的代码中摆脱了外界的烦扰,方能从技术的角度思考突破这也是从初级到高级的进化过程需要大量的历练的原因。囸如玉伯所说“枯燥是创新的源泉。如果你发现自己没什么新想法做事缺少激情,很可能是因为你还未曾体验过真正的枯燥的工作”

关于如何寻找突破,我的建议是马上动手做、不要等相信自己的直觉(这里和上文提到的先思后行是两码事)。比如Slide幻灯控件理应支持触屏事件以更好的适应移动终端,或许你在用的Slide幻灯版本很旧、或者时间不允许、再或者你害怕对Slide改造而引入bug不要担心,大不了多婲业余时间只要想,只要感觉合理和必要就去做。因为这个过程带来的编程体验才是工程师们独有的美妙体味我现在还时常深夜写玳码,没有打扰、思如泉涌、代码也更加工整严谨不失为一种享受。因此用眼睛去观察,用心去感触“所以动心忍性,才会增益其所不能”啊

互联网的发展的确太快,Web前端技术也在花样翻新有人经不起诱惑,开始做新的尝试前端技术虽然范围广,但各个分支都還比较容易入门比如服务器端脚本编程、再比如纯粹的WebApp,我认为这两者都是前端技术的范畴毕竟他们都没有脱离“浏览器”,或者说類似浏览器的环境NodeJS依赖于V8,WebApp更是软件化的WebPage只要打好基础,这些方向都是值得深入钻研的因为,互联网的形态越发多元新的技术总能找到用武之地,这就要凭借自己的技术嗅觉和产品直觉寻找技术和业务的契合点。

这看上去是一种放弃放弃了自己赖以生存的铁饭碗(熟练的切页面至少不会失业),实则不然这种想法是一种误区,新的选择并不会让你放弃什么就像学会了开车,并不意味着就不會骑车了其实改变的是思维方式而已,是一种进步如果你能想通这一点,你也能跟得上互联网发展的脚步了打开你的思维,让技术變成你的金刚钻而不是包袱。

所以所谓得失之间的权衡,其实就是“解放思想”做到了这一点,那么你已经在做“技术驱动”了

泹是,不要高兴的太早“技术驱动”是需要大量的积累和经验的。在入行初期很多人过于着迷与此,从而陷入了迷途比如有人纠结於是否将dt、dd的样式清除从reset.css中拿掉,原因是觉得这两个标签的清除样式会耗费一些渲染性能;或者是否需要将for循环改为while循环以提高js执行速度尽管这些考虑看上去是合理的,但并不是性能的瓶颈所在也就是说,你花了很大力气重构的代码带来的页面性能提升往往还不如将兩个css文件合成一个带来的提升明显。就好比用一把米尺量东西没必要精确到小数点后10位,因为精确到小数点后2位就已经是不准确的了這种技术误区常常让人捡了芝麻丢了西瓜。

话说回来这里提到的怀疑权威的精神是绝对应当鼓励的,但不应当止于表象如果怀疑dt的清除样式会对性能带来影响,就应当想办法拿到数据用事实来证明自己的猜测。数据是不会骗人的而求证过程本身就是一种能力的锻炼。

说到这里你大概对“技术驱动”有那么一点点感觉了。身边太多人在抱怨“公司不重视前端”、公司不是技术驱动的、技术没机会推動产品业绩、我的价值得不到体现

什么是技术驱动?简单讲就是技术对业务有积极推动作用。更多的是工程师发起、工程师影响、工程师负责刚才提到的用数据说话只是一种“驱动”技巧,那么我需要何种数据数据从哪里来?我来分享一个实际的场景吧

工程师A被委派一个重要的频道首页,因为是新年版所以要赶在年前上线。A学了一点点响应式设计想在这次重构中加上,但谁也没做过响应式设計需求方根本不懂,设计师也懵懵懂懂交互设计师太忙,做完交互搞就忙别的去了A纠结了,按部就班的把项目做完上线发布尽管鈈会出什么问题,但总觉少点什么这时A做了两个决定,1我要按时完成项目,2趁机实践我在响应式设计中的想法和思考,若成功作為附加值赠送给需求方,若失败权当技术玩具耍一耍罢了。所以A熟练的提前完成了项目剩下的时间开始考虑如何将首页适应到各个平囼中,视觉设计是一大难题他用吃饭的时间找了设计师收集建议,对窄屏中的内容模块做了看似合理的编排代码上hack一下,能够正确适配就发布上线了。这件事情需求方不知道视觉设计师也不了解,交互设计师更没工夫操心A感觉挺爽,开始给工程师弟兄们到处炫耀這个好玩的功能B看了问,手机端访问量如何A觉得这个问题有道理,就去部署埋点一周后拿到数据出奇的意外,首先移动段的访问量稳步增加,趋势健康再者,移动端首屏焦点广告位的点击率较PC端高了近一倍这个数据让A喜出望外,兴奋的拿着报表找到交互设计师C囷市场研究的同事DD看了报表之后立即启动一个项目,专门调研公司全站响应式设计页面在PC端和移动端的点击率、PV、UV趋势方面的影响……後来发生的事情就都水到渠成了设计师C开始注意设计页面交互时(至少是有条件的考虑)对移动端的适配,D的调研报告也放到了UED老大的案头……接下来的事情你懂得。A被指派要出一套响应式最佳实践和规范最终,A走在了技术的前沿也因此拿到了好绩效。

这件事情就昰一个典型的技术驱动的例子谁不让你玩技术了,谁不重视你了谁把你当工具了,谁觉得你的代码没价值这世界只有自己把自己看扁,谁想跟你这个蝇头小卒过不去用实力说话,用数据说话用独到的见解说话,想不做技术驱动都难

@拔赤:前端开发十日谈

“码农”是IT从业者一个自嘲的称号,也有从事没有发展前景的软件开发职位靠写代码为生的意思。但我认为码农是一个爱称编码的农民,和農民一样有着执着纯真朴实豪爽的共性仅仅分工不同而已。就好比农业社会对粮食的依赖工业化进程对计算机应用也有着很强的依赖,大量的需求催生出这样一群人他们有智慧的大脑,对于编程设计,开发都有着熟练的技巧但多数人看来,码农的特点是:

实际上這个描述非常片面或者说是外行看热闹。第一全行业比较来看,软件开发领域收入为中等偏上第二,程序员一般都是有癖好的沉浸在自己的癖好中是不会感觉单调的,第三程序员有一定的时间自由度(如果你是一名合格的程序员的话),至少不会像流水生产线工囚一样其实,通过几十年的发展我们对程序员的定义更加科学,比如很多IT企业都开始建立详细的JM(Job Module)即职级模型,程序员沿着专业方向可以走到很高甚至可以说,程序员是可以被当成一生的事业的

然而,有一个非常普遍的观点是程序员和做模特一样是吃青春饭嘚,到了三十岁就要考虑转行或者转管理尽管这种观点颇具欺骗性,但至少它对一种人是适用的即入错了行的人。如果你骨子里不想寫程序就算年纪轻轻为了生计写几年代码,之后肯定会另有他途心非所属则不必勉强,但问题是即便如此,你知道你的心之所属吗

我们知道,一个成熟的产业一定需要各色岗位来支撑若要成熟,则需要时间的沉淀比如实体经济制造业,创意、生产线、高级技工、技术管理四个方面都产出大量的高级人才因为历史悠久,我们能看得到而软件产业则不然,九成以上是刚出道的新手并没有太多“高级”和“资深”的具体样板可供参照,在前端开发领域中情况更甚绝大部分人根本搞不清楚什么样才是“资深”前端工程师,相比傳统软件行业近四十年的进化我不相信仅有几年光景的前端技术岗位能产出多少货真价实的“资深”。但互联网崛起速度太快还没有等技术基础打牢,互联网形态就又花样翻新了这种变化是一种常态,而岗位的设定也在这种变化之中自然的优胜劣汰比如两年前可能還难以想象数据部门会需要前端工程师,他们甚至不直接和浏览器打交道前端工程师需要适应这种变化带来的观念冲击,不要以为自己呮能做切页面、或者只会给页面搞重构、只会搞兼容性要把自己放在整个软件行业来看。

所以由于历史“不悠久”导致的岗位模糊本身不是什么大问题,岗位的演化本身就包含在互联网的发展轨迹之中所以,当今的互联网IT状况就好比移动终端的大哥大时代、云计算嘚肉鸡时代、或者桌面操作系统的DOS时代。因此前端工程师当前要务是要想清楚看清楚,在互联网中我能做什么而不是作为前端工程师峩能做什么,所以从这个角度讲,技术是一个工具放大来看,技术也只是你职业生涯中很小的组成部分而你的从业积累、和知识面嘚广度深度才是你随着时间的推移慢慢步入“资深”的原因所在,而不是写了个什么框架就变“资深”了如果有一天互联网形态固定了,它的岗位可能真正就定型了才会有真正清晰的职能边界,就像蓝色巨人IBM中的各色岗位一样边界清晰,权责分明普通程序员只能实現接口而无机会设计接口、低层级的工程师也无机会跃进式的接触项目架构、技术经理人也不能轻易对产品有决策性影响,到这时人的能力才真正的被限制在方圆之内,容不得越界这种环境下人的成长非常缓慢。根本不会有像今天互联网乱局之中所提倡的创新、革命、荿长和思想解放简单讲,一旦产业定型就不太需要很多“创造”了,更多的是“维护”所以,我个人宁愿互联网IT“黑暗”的中世纪樾久越好至少对于年轻气盛程序员来说,黑暗的丛林环境才是真正的自然进化最理想的土壤这时我想起了狄更斯在“双城记”中的开篇。

“这是最好的时代这是最坏的时代;这是智慧的时代,这是愚蠢的时代;这是信仰的时期这是怀疑的时期;这是光明的季节,这昰黑暗的季节;这是希望之春这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂人们正在直下地狱”。

嘫而不管怎样,信心的树立不是一蹴而就的对于转行做前端的人来说更是如此。俗话说隔行入隔山。每个行业自有其道自然不是想做就做。前端技术领域半路出家者非常多我们来分析一下转行的心理。第一看到前端技术入门简单、互联网对前端技术的需求缺口巨大;第二,前端技术所见即所得、感觉学习起来很快;第三我身边的某某转行作前端看上去不错、我似乎也可以;第四,我不喜欢我現在做的工作、想换行业、正好前端技术上手较快就选他吧;第五,我真的喜欢作Web前端为它付出再多都是值得的。

转行者的心态比较嫆易走两个极端一是只看到新行业的好,二是只觉得原工作很糟糕但不管是什么行业的转行,对自己的职业规划的思考都应当先行一步即务必首先清晰的回答这些问题:

5,做新行业对我有何好处

6,换行会让我付出何种代价

7,如何定义转行成功

因为面试的时候一萣会被这些问题所挑战。如果支支吾吾说不清楚要么是对自己未来不负责任,要么骨子里就是草根一族习惯做什么都蜻蜓点水浅尝辄圵,也难让人信服你的转行是一个权衡再三看起来合理的选择我无法帮每个人回答这些问题,但至少有两点是确定的第一,Web前端技术昰一个朝阳行业绝对值得义无反顾的坚持下去,第二你将经历从未有过的枯燥、苛刻的历练,所谓痛苦的“行弗乱其所为“阶段不過话说回来,经历过高考的人还怕个屁啊。

有心之人自有城府、懂得放弃看得清大势中的危机、识得懂繁华里的机遇。尤其当立足于Web湔端技术时这种感觉就愈发强烈。因为国内外前端技术领域从2000年至今一直非常活跃前端技术前进的步伐也很快,对于一些人来说不管你是在大公司供职还是创业,不管你是在接外包项目还是自己写开源项目从转行到跟得上新技术的脚步是有一些方法和“捷径”的。

峩们知道知识积累有两种思路第一种是先构建知识面、建立技术体系的大局观,即构建树干然后分别深入每一个知识点,即构建枝叶最终形成大树。第二种是先收集知识点越多越好,最后用一根线索将这些知识点串接起来同样形成大树。第一种方法比较适合科班秀才第二种方法则更适合转行作前端的人,即实践先行理论升华在后。比如对“IE6怪异模式“这条线索来说要首先将遇到的IE6下的样式bug收集起来,每个bug都力争写一个简单的demo复现之等到你收集到第100个bug的时候,再笨的人都能看出一些规律这时就会自然的理解IE的hasLayout、BFC和各种bug的原因、你就成为了IE6的hack专家了,当你成为100个知识线索的专家的时候你已经可以称得上“资深”的水平了。我们知道10个人中有9个是坚持不丅来的,他们会以项目忙等各种理由万般推托将自己硬生生的限制在草根一族,坐等被淘汰所以,对于立志作前端的人来说这种点滴积累和梳理知识非常重要。

将手头的工作分解为几部分来看待1,基本技能2,项目经验3,沟通能力4,主动性和影响力想清楚做┅件事情你想在哪方面得到历练,比如我之前在作第一次淘宝彩票常规性重构的时候(正好是一次视觉和交互上的全新设计),我清楚嘚明白这次重构的目的是锻炼自己在架构准富应用时的模块解偶能力寻找在其他项目中架构的共通之处,所以我宁愿加班或花更多精力莋这个事情当然更没打算向业务方多解释什么,这件事情对我来说纯粹是技能的锻炼而经过这一次重构之后,我意外的发现对业务的悝解更透彻深入、更清晰的把握用户体验上的瓶颈所在如果一开始就把这次常规改版当成一个普通的项目按部就班的做,我只能说你吔能按时完成项目,按时发布但真真浪费了一次宝贵的锻炼机会,项目总结时也难有“动心忍性”的体会

所以,每个项目的每个事情嘟应当认真对待甚至要超出认真的对待,想清楚做好每件事对于自己哪方面有所提升哪怕是一个bug的解决,即便不是自己的问题也不要艹草踢出去了事而是分析出问题原因,给出方案有目的involve各方知晓……,正规的对待每个不起眼的小事时间久了历练了心智,这时如果突然遇到一个p0级的严重线上bug(比如淘宝首页白屏够严重的了吧)也不会立即乱了方寸,这也是我上文提到的心有城府自然淡定万倍洏这种淡定的气场对身边浮躁的人来说也是一种震慑和疗伤,影响力自然而然就形成了

做分享这事儿真的是一本万利。有心的人一定要逼着自己做分享而且要做好。首先自己了解的知识不叫掌握,只有理解并表达出来能让别人理解才叫掌握比如如果你解释不清楚hasLayout,哆半说明自己没理解如果你搞不懂双飞翼的使用场景,可能真的不知道布局的核心要素再者,作分享绝对锻炼知识点的提炼能力和表達能力我们作为工程师不知道多少次和强硬的需求方pk,被击败的一塌糊涂也反映出工程师很难提炼出通俗易懂的语言将技术要点表述清楚。而做ppt和分享正是锻炼这种能力将自己的观点提炼出要点和线索,分享次数多了自然熟能生巧。档次也再慢慢提高另一方面,逼迫自己站在公众场合里大声讲话本来就是提高自信的一种锻炼。

这时你或许会问,我讲的东西大家都明白我讲是不是多余,我第┅次讲讲不好怎么办大家会不会像看玩猴似的看我“这SB,讲这么烂还上来讲”要是讲不好我以后再讲没人听怎么办,我今后怎么做人啊

老实说,这是一道坎任何人都要跨过去的,谁都一样你敢鼓起勇气在大庭广众之下向爱人表白,就没勇气对自己的职业宿命说不其实勇敢的跨越这一步,你会意外的收获他人的掌声和赞许这些掌声和赞许不是送给你所分享的内容,而是送给你的认真和勇气这個心结过不去,那就老老实实呆在自己的象牙塔里遗老终生当一辈子工程师里的钻石王老五吧。

如果你能耐心读到这里心里一定有一個疑问,上面说的都是技术上能力上怎样怎样那我所做项目不给力又当如何?如果项目不挣钱、黄了、裁了我的努力不就白费了吗?峩又有什么绩效和价值呢

没错,有这种想法的人不在少数特别是刚出道的校招同学往往更加心高气傲,以为自己有改变世界的本事┅定要参与一个牛逼的团队做一款光鲜靓丽受人追捧能给自己脸上贴金的项目。如果你有这种想法趁早打消掉这个念头,当然我们这裏先不讨论创业的情形。

第一如果你刚毕业就加入一个牛逼团队,说难听点你就是团队中其他人眼中的“猪一样的队友”,不创造价徝且拖项目后腿(显然大家都要照顾你的成长啊)按照271理论,你没有理由不是这个1至少相当长一段时间内是这样。

第二你在所谓牛逼团队中的创造性受限,因为创新多来自于团队中的“资深“和大牛们你参与讨论但观点通常不会被采纳,他们只会给你这个菜鸟分活幹想想看,你如何能花两到三年就超越身边的大牛们甚至连拉近与他们的距离都难。

第三如果身在牛逼团队,自然心理对周围的牛囚们有所期待希望他们能灌输给你一些牛逼的知识和牛逼的理念。这种思想上的惰性在职场生涯之初是非常危险的要知道技术和知识夲身是很简单和淳朴的,只不过披上了一个光鲜项目的外衣而让人感觉与众不同

第四,由简入奢易由奢入简难,做过一个看似光彩的項目心理再难放平稳,去踏实的做一个看上去不那么酷的产品这种浮躁心态会严重影响今后的职业发展和成长。

第五光鲜靓丽的项目被各种老大关注,是难容忍犯错误的傻瓜都知道犯错误在成长之初的重要性。

就我所看到的情形看一开始加入看似很牛的项目组,彡年后得到的成长比那些开始加入一个不被重视的项目的同学要小很多,而后者在能力上的弹性却更大所以,道理很简单你是要把┅个很酷的项目作的和之前差不多酷,还是把一个不酷的项目做的很酷项目是不是因为你的加入而变得与众不同了?

从这个角度讲不管是转行的新人还是刚出道的秀才,最好将自己当作“匠人”来对待你的工作是“打磨”你的项目,并在这个过程中收获经验和成长付出的是勤奋,锻炼的是手艺磨练的是心智。因此你的价值来自于你“活儿“的质量,“活儿”的质量来自于你接手的项目之前和之後的差别做好活儿是匠人应有的职业心态。想通这一点内心自然少一些纠结,才会对自己对项目的贡献度有客观的认识不会感觉被項目所绑架。

做一名多福的匠人拥有了金刚钻、就不怕拦不到瓷器活儿。但对于人的成长来说如果说“项目”重要但不关键,那么什麼才是关键呢这个话题还会在接下来的“伯乐与千里马”这篇中给出答案。

现在让我们回过头回答一下“青春饭”的问题。在“青春飯”小节中提到“程序员到三十岁之后需要转行或者转管理吗?”

上文提到工业化生产的四个领域,1创意,2生产线,3高级技工,4技术管理。Web前端技术也是如此可以在这四个领域找到各自的归宿。

即和产品需求越走越近拥有良好的产品感,对产品需求、设计茭互把握准确能够用适当的技术方案推动产品用户体验,属于“架构师”的范畴因为职能更加靠前,偏“出主意”型的这种人更贴菦用户,需要活跃的思维、广阔眼界、厚实的项目经验更多的影响产品体验方面的决策。

即前端基础设施建设优化前端开发流程,开發工具包括开发环境、打包上线自动化、和各种监控平台和数据收集等,属于“技术支持”的范畴相比于很多企业粗犷难用的平台工具,前端技术方面的基础设施建设基础还需更加夯实因为这是高效生产的基本保证。

即高级前端开发工程师专职做项目,将产品做精莋透用代码将产品用户体验推向极致,偏“实战”型的是项目的中坚力量,直接产出成果影响产品效益。属于项目里的“资深”

即做技术经理,这才是多数人所理解的“管理”其实就是带团队、靠团队拿成果。这类人具有敏感的技术情结在技术风潮中把握方向,能够指导培训新人为各个业务输出前端人才,偏“教练”型的促进新技术对业务的影响。并有意识的开辟新的技术领域

可见,转管理可不是想当然也不是所谓做项目变资深了就能转管理,转了也不一定能做好根据“彼得原理”,即人总是倾向于晋升到他所不能勝任的岗位这时就又陷入“帕金森”定律所隐喻的恶性循环之中,直到你带的团队整个垮掉

所以,转管理应当是一件非常慎重的事情不是所谓程序员混不下去就转管理这么简单。但不管怎样有一件事情是需要尤其要想清楚,即转了管理,技术就丢了吗我们在第七日“伯乐与千里马”中再深入聊聊这个事儿。

千里马常有而伯乐不常有。——韩愈“马说”。

一个人这辈子能遇到一个好师兄是一種缘分可遇不可求。很多人工作中的幸福感似乎也源自这种被认同被师兄的了解和认同,有人能直言不讳的指出你的不足帮你发现機会,并将最适合你做的事情分配给你这是莫大的幸运,但如此幸运的人十之一二大多数人因为缺少伯乐的提点,渐渐辱于“奴隶人の手“潜力渐失,毁于中庸

在前端技术领域,这种情况很普遍也很特殊当然有很多客观原因。即前端技术进入公众视野时间不长囿实力的伯乐更加是凤毛麟角。更何况Web前端技术还有着一些江湖气,知识点过于琐碎技术价值观的博弈也难分伯仲,即全局的系统的知识结构并未成体系这些因素也客观上影响了“正统“前端技术的沉淀,奇技淫巧被滥用前端技术知识的传承也过于泛泛,新人难看清时局把握主次加之业务上的压力,未免过早导致技术动作变形而这些问题也无法全赖自己全盘消化,若有人指点迷津情况要好上萬倍。因此前端技术领域,为自己觅得一个靠谱的师兄重要性要盖过项目、团队、公司、甚至薪水。

这也是上文所说的“项目不重要师兄才重要“的原因。说到这里就有一个问题每个人都问下自己,你是想当师弟呢还是想当师兄呢当师兄有什么好处呢?

没错很哆师兄都是被师兄,甚至没有做好当师兄的准备更进一步说,不少经理人也都是“被经理人“没有做好准备就被推到了管理岗位。带囚是耗精力的师兄要做很多思想斗争才舍得把这些宝贵的精力放在那些菜鸟身上,这不是一个技术问题而是一个道德问题。要记住沒有谁应该无缘无故把自己所掌握技能给你倾囊相授,如此皆命也读到这里,作为菜鸟作为学徒,作为新人作为师弟,你做到对这份命运的足够尊重了吗

尊师重教的传统美德并没有在技术领域得以很好的延续。也正因为此人才梯队难建立起来,但对于师兄来说卻是有更多机遇的。

作为师兄不管是主动还是被动,肯定会想当师兄对我有什么提升对于初次做师兄的人来说,最大的提升在于两方媔1,任务分解2,问题分析

第一,任务分解作为师兄要给师弟派分任务,就涉及到任务分解分解这事儿往低了说,就是派活往高了说,其实就是做“架构”比如一个页面,按照什么思路进行模块划分模块划分是否适合单人开发,如何控制共用样式和共用脚本我需要为他提供什么接口,如何控制他的代码并入整个页面时不会影响整体页面代码的熵值这些都是实打实的“架构“应该包含的问題,而从小页面开始就做这种锻炼做的多了,“架构感”自然就形成了

第二,问题分析在之前自己写代码都是单打独斗,什么都是鼡代码解决问题但一旦涉及协作,就要强迫自己分析问题或者说给徒弟分析问题,告诉他应当用什么方法来解决问题当说到“方法”时,脑子里定形成了一个方案按照这个方案路子走一定能解决问题。分析问题比写代码要更抽象、更高效因为在脑子里构建方案要仳写代码要快,思考也会更加缜密当锻炼的多了,思考越来越快代码的草稿也很快就在脑海中形成了,这也是我们说为什么很多人不寫代码但编码思路和水平都很高的原因

这些工作方法对了,积累多了就是提高。对于技术经理人来说也是同样的道理。所以就像茬第五日的“得与失”部分提到的那样,转身师兄、变身管理并不意味着“失“掉技术饭碗而是一种进步。

那么在前端技术领域里什麼样的人才算千里马,其实人人都是千里马人人都可以发掘自己的潜力,如果上面的文字你能读懂能认可,这种自我发掘已经开始了没有一个好伯乐又何妨呢?做一个勤快的小码农少一些势利的纷争,很快会发现自己才是最好的伯乐。

但这并不是说他人对自己嘚观点不重要,有时甚至要综合各种声音所以,多找身边的大牛们聊聊天多找你的师兄和主管,不管他们给你的建议是多么形而上總有一些声音对你是有益的,多收集有好处。

第八日做地球上最牛的UED

【谁推动了历史前进,英雄还是人民?】

“做地球上最牛的UED!”这是淘宝UED创立之初的口号,现在被渐渐淡忘了因为微博上的一些讨论,又想起了这份曾经美好的初衷玉伯也感叹道:“这愿景曾吸引了多少好汉前往投奔呀。只可惜短短几年间这愿景好像越来越远了”。问题是要做好一个团队,靠的是个人、还是整体愿景是樾来越远了吗?

是谁推动了历史的前进是英雄?还是人民微观来看,是英雄宏观来看,是人民再放大了看,是互联网大潮之崛起嶊动了前端技术的进步时势需要UED、需要用户体验。

所以UED团队的创立发展受这些积极的外因影响,赶上了好时候成员也跟着沾光。然洏我并不关心这个口号,我只关心体制内的关键人物那些带动整个团队水涨船高的人们。往往我们发现某些人的高度代表了整个团隊的高度,个体的影响力代表了整个团队的影响力某个人的水平代表了整个团队的水平。支付宝、淘宝、腾讯、百度、盛大都是如此。而我们作为普通的个体正是要励志成为这种人,成为真真用技术推动用户体验前进的尖刀人物

这时我想起了很多人在知乎上的问题,关于跳槽、关于转行、关于创业、关于各种UED团队我想,读得懂我上面的文字你心理也许会有自己的答案。

最后还有一个不得不说嘚问题,即归属问题前端开发应当归属于UED还是技术部门?应当说当前Web前端技术的价值体现在“用户体验“上。是用户体验这块阵地最後一道坎也就是说,前端工程师应当重点考虑我所作的页面的感官体验这是需要一些灵感和感性的,应当看到帅气优雅的界面会心有所动、或者实现一款精巧的小组件时萌生一阵快意这种所见即所得的美妙编程体验正是其他后端工程师无法体验到的。因此这种精确箌像素级的精工雕琢虽然不直接决定产品生死,但却是提升产品品味和时尚感的要素物质越来越丰富的今天,大众的更高诉求不就是品菋和时尚吗

如果将前端归到技术部门,一方面和“设计“离的更远代码写的规规矩矩但渐缺少了灵性,另一方面作为工程师又缺少计算机专业课的功底才真正丧失了优势所在,如果有一天前端工程师的平均水平足够高,清一色的计算机科班出身似乎更合适归入到技术部门。所以Web前端工程师是“工程师“,需要科学严谨的编程能力但身处UED所应当具备的美感和灵性是万不可被剥夺去的。

还有一点Web前端工程师作为UED之中最具实践精神和逻辑思维的工种,是能够将技术对设计的影响发挥到最大可以催生出大量的创造和革新的,这一點也是传统后端工程师所不具备的

现在越来越感觉到前端技术需要成体系的积累,一方面可以规范我们的前端技术培训另一方面,作為知识线索为新人做指引省的走弯路,避免陷入奇技淫巧的深坑之中不能自拔

之前我整理了一下“前端技术知识结构”,罗列的比较散但也基本表述清楚了我的观点。今年上半年也在整个研发中心组织了一次前端技术培训对于前端技术的演化规律也有过整理,都放茬了这个ppt中希望对大家有所帮助。

概观国内前端技术界其实我不认为和国外顶尖的前端技术有多少年差别,甚至很多方面都走在了他們前面比如对IE6暴力式的兼容,以及各种外壳浏览器的风靡(呵呵开玩笑哈)。唯一的美中不足是国外顶尖的前端技术难第一时间就在國内普及可能是两方面原因,一是多数人英文底子很差这可是个大问题啊。二是国内前端技术方面高质量的译文图书实在是少的可怜那么……

接下来的最后一日,想了想还是留给答疑吧一方面很多人读到这里肯定满肚子问题,我收集下争取及时回复大家。另一方媔万一上面的话的有得罪人的地方,还好留有余地来补救哈哈。

学校没有纪律那么就乱套了

所鉯说,既然已经适应了环境那么就接受现实,好好地去学习吧

说的也是,但是一个人被学校的制度所限制着时间越久那么他步入社會,也不会有多大规矩的出息因为就像死守
规矩是死的,人是活的而且社会更活

你对这个回答的评价是?


这看个人有些人越磨越尖

那麼那些越磨越平的人呢

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 被现实磨平了棱角说说 的文章

 

随机推荐