部落冲突视频解说里一个说西班牙语的人说pvtas,请问这是什么意思。

&b&这是个很长的故事,讲述的是一名电竞玩家转行文字编辑后的程序历程与开发感悟。&/b&&br&&br&&b&&b&-----------------&/b&&/b&&br&&b&目录&/b&&br&&b&-----------------&br&&/b&&ul&&li&&b&序&/b&&/li&&li&&b&引言(一)&/b&&/li&&li&&b&引言(二)&/b&&/li&&li&&b&一,奇葩的转行&/b&&/li&&li&&b&二,第1个电商项目&/b&&/li&&li&&b&三,一个阶段小结&/b&&/li&&li&&b&四,第2个电商项目。&/b&&/li&&li&&b&五,第3个电商项目(上)&/b&&/li&&li&&b&六,第3个电商项目(下)&/b&&/li&&li&&b&七,第4个电商项目&/b&&/li&&li&&b&八,前端开发者快速升级通关的一些个人经验总结&/b&&/li&&li&&b&九,谈谈互联网项目环境对于前端开发者向高阶晋级的影响&/b&&/li&&li&&b&十,个人职业发展的超级野路子——准职业选手转编辑再转php开发再转前端开发&/b&&/li&&li&&b&十一,个人素养与coding(一)——我是如何反复“打怪”强化“代码素养”的&/b&&/li&&li&&b&十二,个人素养与coding(二)——电竞/编辑经历对开发基本功素养的影响&/b&&/li&&li&&b&十三,个人素养与coding(三)——开发者的战术素养和程序的正与邪,开发者的道不同不相为谋&/b&&/li&&li&&b&十四,个人素养与coding(四)——开发者的战略素养对职场嗅觉的影响&/b&&/li&&li&&b&&b&后记:第4个电商项目——分裂,生存,可能还有崛起。&/b&&br&&/b&&/li&&/ul&&br&&b&&b&======================&/b&&br&这里是序。&br&&/b&&b&&b&======================&/b&&/b&&br&&br&&b&这是一篇长文。&/b&&br&&b&&br&任何一篇长文或专题,都是应该有一个序。&/b&&b&这是做为一个合格的媒体编辑/记者非常重要的技能点,要反反复复地训练。我曾经训练过很多次,但时间已然有些久远,已经好久没有动笔写这样的序,借这个机会,&/b&&b&让我再次尝试做好一名编辑该做的事情。&/b&&br&&br&这篇文章主要是对我个人这两三年从事前端开发以来的“升级打怪”经历的回顾和总结,进而来回复题主对于“&b&前端开发工程师&/b&”这一职业存在怎样的发展空间,而它进入高阶之后需要具备怎样的能力以及这些技能或知识可以从哪些地方、项目或企业中获取得到的,等前端coder职业发展上存在疑惑的问题,来发表一些我的个人见解。&br&&br&然而,我是没权力也没有义务告诉任何一个人Ta未来的路该怎么走,但却可以告诉你我是如何走的,而且我的路子是很野的,真的很野,对于很多大咖来说,绝对不能说是成功的,但对于没有机会进入一流互联网项目历练的大多数程序开发从业者而言,或许我的经历会有那么一点点借鉴的意义。&br&&br&其实我曾想过,是不是要把自己这个跳跃性如此之大的从业经历写下来,是持有怀疑态度的。曾经某猎头在把我推荐给BAT某家时,建议我不要把媒体编辑的经历做太详细的描述或直接去掉,而我确实也用一些编辑手段弱化了那段经历,还是将它放在简历里面。我觉得,这不是什么问题,写文字一直是我的兴趣,并且曾经是我的谋生手段,而且还做得不算太差,只是和程序开发的关联性少了一些。&br&&br&当然了,是获得了电话面试的机会,但第一轮就被KO了,那只是1年多以前事情,但3个月等于1年的电商开发节奏,现在我已经忘记了当时的情形,只记得那个电话来到的时候我刚刚通宵完成一个项目的公关,那会儿脑子是一塌糊涂的。&br&&br&当然,那时我的能力应该达不到人家的要求,但如果现在还有从来一次的机会,我觉得自己应该有能力拿下这样的offer,但暂时没有这个必要。&br&&br&请别误会,并不是说BAT级别的offer对我没有吸引力,而是对于现阶段的我而言,暂时不能为了这样的机会离开现有的项目和团队,而且现在的项目可以让我做擅长的和感兴趣的事情,并基本都能够按照自己的意志去落实下去,而大公司一般只能是做螺丝钉,不能有太多个人意志的,而且好的机会已然被老人们占据了,只是为了去镀金而去当别人的打手或救火队员,这显然是不理性的。&br&&br&另一方面,我其实发现了程序开发者要想快速成长,不一定非要进入BAT或一线的互联网企业中进行历练,创业项目一样可以快速成长,只要你把握好机遇和机会。请相信我,这是绝对是可行的,这就是我想把自己的经历写下来的原因。&br&&br&ok,在开始之前,我觉得预先告诉各位看客,作为一个由平面媒体编辑/记者转行做互联网开发的Coder,本人的码字功底还是不错的,因此篇幅会很长,很长,很长。&br&&br&如果你确实不感兴趣,建议不用浪费时间,聊技术或开发理念终归是有些枯燥的,也可能存在我写得不够清楚而让你看不明白的地方。不过,如果你真的对一名先是由编辑大跨行转php开发,再由php转前端切图,然后是如何用2年时间从月薪8K涨到月薪35K的职业经历感兴趣的话,那就一直往下看。&br&&br&此外,如果这篇文章有幸被某个单位相中,想转载的话,那么该给这篇文章起一个怎样的标题,我就不再代劳了,标题党的功力已经退化得差不多了。还有,我是知道有不少错别字的,但已经逃离媒体行业很久,好不容易不再为错别字太多而担心稿费被扣,那么我真的不想再为这个问题而烦恼&b&。&/b&这不再是我的职责,而是你的。不砸别人的饭碗,这是做人的本分,不是吗?&br&&br&当然,我的版权意识是比较浓的,毕竟咱也做了好多年的写手、编辑、记者。我的意思——转载可以,但记得署名,只要署名(知乎的名字就可以了),永久免费。但对于不署名的,我保留追究的权利,并至少按1000字/千元(RMB)的稿费标准收取稿费。不要觉得贵,这是我当年做写手的后期可以拿到的最高稿费标准,也就是我认为我的文字值这个价,请按此执行,不谢。&br&&br&&b&再劝一次,篇幅真的很长。&/b&&br&&br&&br&=======&b&引言1&/b&=======&br&&br&一夜之间来了这么多赞,倍感欣慰。&br&&br&正好今天我们部门要搬家,正好没有发版需求和特紧急的开发任务。我打算偷懒让人帮我打理桌面,哈哈,我好抽时间,继续补充一些关于前端开发或程序开发方面的想法,希望把这个话题扩大,让更多人来关注和讨论,期待真正的前端大牛来分享职业发展的经历,会有人需要的。&br&&br&顺便说一声,我还是想求赞的。这不违法吧?&br&&br&嗯,先让我回想一下,为啥这个题目会让我愿意投入这么多精力来码字,愿意出来现身说法?&br&&br&我觉得,这肯定是一个好问题。题主想要在职业选择迷茫期获得前辈提供的经验,而决定是否要继续走前端开发这条路线。事实上,这个问题具有普遍性意义。不管是在校学生,还是工作了,但依然对前端这个工种到底有啥可玩的,它能发展到哪个位置,前端能出技术总监或CTO吗?&br&&br&男怕入错行,女怕嫁错郎。因此,任何的回复都会对题主或关注这个话题的人的职业决策带来影响。因此,我才会对意识流的高票答案用了一些刻薄的语言来回复,并不想卖弄文字技巧,先说声抱歉,但我是故意。&br&&br&职业路径选择,是一个严肃的话题。&br&&br&补充在最后,是关于个人对程序修养的看法或理解。为啥说这个?这和前端开发或各种程序员的职业发展有啥niao关系吗?我认为是有关系的,而且很大,约往高处,关系越明显。可以这么说,个人的修养好坏在很大程度上会决定一个人的职业发展高度,写代码也是一样的。这似乎很哲理化,但我的观念就是这样的。&br&&br&当然,也是个人的观点,你可以不用同意,甚至觉得我在扮高调,放屁。但我希望你回得有理有据,咱们用文字约战。&br&&br&==========引言2===========&br&&br&暂时没有看到让人满意的回复,忍不住回复。&br&&br&先对题主说:这个问题其实有很多类似的提问了,这里有一个集合前端开发知识的整理文章,&a href=&http://www.zhihu.com/question/& class=&internal&&知乎上,前端开发领域有哪些值得推荐的问答? - JavaScript&/a&,在里面可以找到很多你赶兴趣的问题与答案。&br&&br&开始之前,我要对于目前的高票答案进行吐槽。&br&&br&高票答案说的确实是有点点道理的,但对于从事前端并陷入迷茫的提问人来说,绝对是然并mei啥卵yong的。不知为何大家给高票,如果只是因为答主用了一个新鲜的说辞,而大家觉得有点意思就顺手点了个赞,那么,我认为这对于知乎的严肃性是一种伤害,当然对于知乎的娱乐化则是一种推动。也可能,大家更喜欢意识流的答案,抑或是,我太严肃了。&br&&br&好吧。我尝试用严肃又有点轻松文字表达方式来回答题主的疑惑。到底前端的路可以怎么走?&br&&br&&b&纯属个人路线,仅供参考。如有雷同,请勿代入。&/b&&br&&br&&b&==========================&/b&&br&&b&一,奇葩的转行。&/b&&br&&b&==========================&/b&&br&先var身份。&br&&br&首先,前端一枚。30++++了,算是老猿吧,年纪不小了。至今没啥拿的出手成绩,就喜欢coding,不谈天荒地老,只希望能写到写不动。&br&&br&其实,我也不知道自己的水平在什么段位,年初拿到了两个一线互联网的offer,被定位在相当于阿里P6/P7样子,也不知道怎么评的,自己觉得最多P5的水准,自感能力有限和性格不适合大公司,主要是被现在领导忽悠说那些大公司政治斗争非常厉害的,我又特担心自己EQ值太低,经不起考验被扫地出门而颜面无存也就放弃了,所以还是一起做电商创业项目比较实在,薪水别太离谱,有感兴趣的活干,说话分量也有那么一点,关键是上班能自由一点点,其实也挺好的。&br&&br&当然,不是本人逼格有多高,有些大企业还是比较向往,比如企鹅厂比如狼厂,但是人家看到我这种奇葩的半路出家的野路子和尚,就连HR初期的筛选都过不了,更别说去面谈做题什么的了。哎,说起来全是泪,伤心得一塌糊涂。不说这个,还是说开发经历吧。&br&&br&在开发人员里面,我的经历应该算是比较奇葩的。怎么个奇葩法呢?&br&&br&首先,做过几年的媒体编辑,对的,是平煤(对文字要求严格,错别字个数有严格限制的),客串过记者(采访过不少上市公司的总裁,如果说互联网的话,最牛逼的是现在京东的4个总裁之一,辛弃疾的后裔,如果他还记得我的话...),曾经写过不少IT媒体的专栏,比如电脑报、电脑商情报、电脑爱好者之类的媒体,后来看到IT媒体日薄西山,就半路出家。当然,不是去少林寺做和尚,只是转行做了另一种和尚——程序猿。&br&&br&嗯,跳跃似乎有点大,好多以前的同事不忍直视,其实自我感觉还好,因为业余就爱好博客,经常玩弄各种php开源博客系统,纯属自娱自乐,虽然没有参加过任何技术培训班(其实是因为写稿的真没几个钱可以用来交学费,都挺贵的),不过不管怎样,经过一通自我学习和努力,总算混进程序开发这一行当。&br&&br&现在每天就是T恤+牛仔+拖鞋+电脑背包,非常标准的coder。所以说,曾经是个文艺青年的我,在coder这个队伍里面,自我感觉文字控制能力还算是不错的,也不知道算不算个开发技能点?&br&&br&&b&==========================&/b&&br&&b&二,第1个电商项目。&/b&&br&&b&==========================&/b&&br&当然,奇葩的转型,那么开发的经历也就比较崎岖了。&br&&br&先干了一段时间的php+前端混合开发的外包,就是那种用开源项目套页面做简单功能的二次开发类型项目,触摸最多的如wordpress、phpcms、discuz!,drupal之类的,框架也玩弄了thinkphp、CI,不过做外包的开发累死累活也没几个钱,技术也不会有太明显提高。&br&&br&后来机缘巧合吧,前前前东家要做个电商交易平台,一时半会找到合适的负责人,感觉我还看得过去就被赶鸭子上轿转做了项目主管,负责整个项目基础设施建设,其实就是招人和分配任务等,不过干得最出色就是切图和切图,虽然当时开发方式还属于未开化的刀耕火种,于是乎将自己定位成前端是比较靠谱,而php的活就兼顾一点是一点。&br&&br&还好,虽然技术比较烂,但是那个项目发展得比较顺利,拿到了A轮(号称3000W美金,水分可能比较大,不过那也是两三年前的事情了,按互联网的3个月=1年的节奏,感觉真的好遥远),有钱之后引入了一批更牛逼的开发人员(主要是前端和php),虽然是我的手下,但那波人能力在当时来看绝对是很强,我也从来没敢把人当手下,甚至很多问题都得向人家请教,技术不行就要虚心请教,这没什么好害羞的。&br&&br&人家确实也比较牛逼,带来一些先进的前端开发理念,比如前端构建,前端MVVM,纯静态html+restful api构建web网站的开发方式。这些前端开发理念在2012年-13年那会儿绝对算是非常先进的玩意,那时nodejs还未成熟,而grunt也才出来不久,fis可能还在萌芽阶段,而各大互联网公司对于nodejs也只是内部尝试探索。&br&&br&后来,随着项目发展,前端的需求越来越复杂,需要尝试MVVM、SPA的前端开发技术了,而我作为当时项目的前端负责人,也需要对前端代码做了重构才能适应项目的发展要求,就是做类似这样的事情—— &br&&br&&a href=&http://www.zhihu.com/question/& class=&internal&&如何将一个已经上线的项目前端部分平滑过渡至组件化和工程化? - 前端开发&/a&&br&&br&这是我做的第一个的大规模的前端项目重构,当时的技术总监评估给到我的时间是10天,但我拖到了20天才基本完成,基本天天9-10的节奏。从现在的角度看,绝对是一次失败的重构经历。但是,个人从其中获得了很多有价值的经验,让我有机会尝试了许多新的前端技术,包括:&br&&br&1,构建工具使用gulp,那时才刚出来不久,之所以选择它也就是图个新鲜,这是前端开发的通病吧;&br&2,基于less预编译的css模块化,watch监控自动编译;&br&3,基于gulp.spritesmith的雪碧图自动构建,根据watch监控雪碧图目录,自动按目录生成sp图和一份less,less保存到CSS的模块中,进而自动触发less的自动编译;&br&4,js模块化是AMD方案,模块加载是用requireJS。我们只做了一点点小改进,那就是通过gulp自动生成require.config(开发和生产各一份),第三方js模块的路径根据一定规则自动构建,而不是手工配置。&br&&br&js模块按目录的方式打包,打包后的文件带上MD5戳,非覆盖式发布,解决AB版迭代和缓存问题。现在看来那种按目录整体打包方式是相当粗暴的,代码冗余非常严重,但无奈当时的水平也就这样而已。不过呢,将需要重复手工配置的有规律的前端资源调度实现自动化,其实就是前端工程化的雏形,至少是给我打开了前端工程化探索的大门。&br&&br&事实上,这种开发思维不是当时的我所能想到的,而是项目所引入的前端人才提供的开发思维。非常感谢这位同事,虽然一起共事的时间只有短短3个月,而我们也只是点头之交,甚至你现在还可能鄙视那时技术那么烂的我,但却还当着你的领导。不管怎样,感谢你让我看到了前端开发往深入发展的另一种可能。&br&&br&应该说在很多大公司的互联网公司里面,前端开发在很多年前已经有成套的而且相当成熟的前端工程化开发体系,但对我个人或那个项目的而言,这种方式在当时绝对是非常非常新鲜的,以至于我们那个团队的人逐步离开后(那波人中的前端现在基本也是前端领域的能手了,有在YY的有在VIP也有在UC的),接手的前端无力接管这种不太一样的开发模式,而又只好用原始的方式来生产新版的前端静态资源。当然,绝对不是我留了什么后手,而是交接了一个月多,也找不到能够很好理解的前端。&br&&br&大家别笑话,现在还有很多创业型项目的前端开发模式还依然停留在刀耕火种的开发模式下,包括很多已经名声在外的电商。在中国,电商从来都不是以技术为第一生产力的,技术很重要,但却没技术人想的那样重要,大家一开始都是以实现业务逻辑为前提,先把业务跑起来,领导管你用神马开发模式,老是不能按时出货就得滚蛋。&br&&br&有兴趣,大家不妨研究一下一些知名电商的前端代码,没有模块化的知名项目还不少(包括上市的项目),而甚至还有各种裸奔的代码在线上跑的,当然这些其实是创业期发展过快的后遗症,发展太快就可能没有很好的契机做基础设施建设,那么现有的业务代码过于复杂,后来的人只能在原来的基础上改改改成能满足业务需求就万事大吉了。这其实是国情决定的,业务需求的实现大于一切,电商业务发展就像高速的列车,一旦开动起来就很难停下来。&br&&br&这种情况下前端代码模块化和重构难度就非常非常大了,你见过哪个师傅敢说给一辆高速跑的列车换零件的吗?这种坑不是一般人有信心往里面挑的,谁碰谁倒霉。另一边却是代码生产和发布效率的日渐低下,可能只是改一段静态说明文字抑或是修正一个小bug,发布流程都要跑上个把星期才敢放上线,但是大家不也活的有滋有味的嘛。从业务的角度,技术真没那么重要了。&br&&br&&b&==========================&/b&&br&&b&三,一个阶段小结。&/b&&br&&b&==========================&/b&&br&扯太远了,回一下神。回归主题。前端的路该怎么走——&br&&br&我个人认为初中级前端要想快速进步,最好的方式:&br&&br&&b&①一定要在一个有多人协作的前端团队呆过。通俗地说,要和比你牛逼的人一起干过活,见过牛人长啥模样。&/b&&br&&b&②一定要找到一个在业务上对前端有较高要求的公司或项目,特别是各种奇葩甚至恶心的需求,对于技术人来说其实是快速进步的机会。&/b&&br&&br&第二点很重要。重要的事情要念3遍,不去外包公司,不去外包公司,不去外包公司。当然,第一点更加重要。但是,有牛人愿意带,在很多时候这属于小概率事件。即便有机会进入这样的项目,你也千万别期待别人会手把手教你什么。我只能告诉你,耳濡目染的能量还是非常强大的。&br&&br&因此,从两个角度看,楼主现在项目既对技术要求不高,也似乎没看到牛人,是时候换一家公司了。还是那个意思,技术的进步一定来自于业务的不停变化,当要求你必须实现各种奇葩需求,而你又把人家的需求给实现了,那么就意味着进步。&br&&br&当然,如果天赋异禀,而且非常自律自学能力也牛逼,就当我没说。至于能否偶遇牛人,这就得看个人造化了。如果你发现某项目的确有大牛存在的,薪资要求甚至可以降低以求获得快速进步的机会。技术人要明白,你能拿多少,在一定水位之前,基本和技术能力成正比关系的。&br&&br&&b&==========================&/b&&br&&b&四,第2个电商项目。&/b&&br&&b&==========================&/b&&br&似乎又跑题了。咱们继续聊程序人生。&br&&br&我的第一个电商项目的经历很不成功,但是可能由于公司管理和文化方面的原因,导致了那一拨我认为非常不错的技术开发人才来到项目后,均不到半年都另谋高就出走了。而我认为自己需要进一步提升,也就选择了离开。&br&&br&说得直白点,就是技术能力/经验都涨了,薪水还是万年不变(本来就够低的,不知道有没有人听说过给技术经理级别的薪水定位是月薪税前8K的电商项目呢?(TM)的我白痴痴的还一干就干了整整2年,虽然自己能力可能就值这么多而已,要么干脆点把我换掉要么给点点和岗位匹配的薪酬,对吧?),又没有更牛逼的人供你参考膜拜,离开是唯一的选择。你懂的。&br&&br&这个时候时间来到了2014初了,我跳槽到了一家做在线教育的电商创业项目,月薪Double,title是前端项目经理(这叫法有点点怪怪的),做的事情其实就是前端那一块的事情,我在这个项目前后只呆了半年的样子,加入这家公司只是为了看看自己到底值多少钱,其实项目并不是很感兴趣,只是给我Double的薪资,也就加入了。&br&&br&这个项目的总负责人其实是电信那边出来的,职业的资历可能比较牛逼,但对技术其实一概不通的,而我的直接上司是技术总监但感觉也不怎么懂技术,更像是个项目经理,只会催进度,而技术的细节怎么去实现,或者前后端分工协作的模式该如何界定,他并没有任何腹案。&br&&br&也正因为他们对此没有概念,而我从上一个项目重构经历得出了一些前后端分离的经验,给他们分享了一些最新的前端开发模式的信息,告诉他们前端这一块必须尽早进行模块化构建,而那时项目才刚刚开始,我正好有机会从头做起。对我来说是很好的实验机会。&br&&br&和上一版本相比,构建的流程没有太多变化,模块化只有css和js模块化,我只是对规范和文档要求严格一些,改善了一些构建工具的监控开发体验问题,比如gulp.watch监控文件编译,如果发生语法错误就自动跳出watch问题。&br&&br&如果要说一个比较大的改变,实际是项目需求带来的变化,该项目由于需要移动端开发,而移动端需要用到前端模板引擎(artTemplate),我们在维护模板引擎的时候需要反复地维护类似这样的代码:&br&&div class=&highlight&&&pre&&code class=&language-text&&&script type=&text/html& id=&adv_list&&
&div class=&adv_list&&
&div class=&swipe-wrap&&
&% for (var i in item) { %&
&div class=&item&&
&a href=&&%= item[i].url %&&&
&img src=&&%= item[i].image %&& alt=&&&
&script type=&text/html& id=&home1&&
&div class=&index_block home1&&
&% if (title) { %&
&div class=&title&&&%= title %&&/div&
&div class=&content&&
&div class=&item&&
&a href=&&%= url %&&&
&img src=&&%= image %&& alt=&&&
&/code&&/pre&&/div&html包裹在script内部,编辑器看起来不是很好看,而且多人一起搞容易冲突。于是,我就改进了前端mvc模板维护的机制,弄成这样子:&br&&figure&&img src=&https://pic3.zhimg.com/83d71e3f839e0bfc4a8f92c_b.png& data-rawwidth=&1047& data-rawheight=&797& class=&origin_image zh-lightbox-thumb& width=&1047& data-original=&https://pic3.zhimg.com/83d71e3f839e0bfc4a8f92c_r.png&&&/figure&&br&开发人员维护一份html,通过构建工具自动将html编译成AMD规范封装的js模块,模块id自动编译,比如tpl_index_flash就是tpl/index/_flash.html文件(加下划线就被编译封装在script标签内,如果不加下划线命名html文件,就直接转化为js对象),而这个文件会被编译保存在js/tpl/index.js模块中。操作模板就使用AMD模块的实例对象,但开发人维护的html比直接放在html结构中要简单多了,代码冲突也几乎没有了,而且这份模板放在js里面可以借助js压缩优化,也可以方便地实现异步调用模板,做加载上的优化。&br&&figure&&img src=&https://pic1.zhimg.com/a897fefedfd248e59a00914_b.png& data-rawwidth=&1355& data-rawheight=&796& class=&origin_image zh-lightbox-thumb& width=&1355& data-original=&https://pic1.zhimg.com/a897fefedfd248e59a00914_r.png&&&/figure&&br&&br&在这个项目中,我最大的进步就是项目需要前端mvc模式开发,使得我有机会进一步改善前端自动构建的htm模板维护机制(html模板编译js化),优化Watch即编译的前端开发体验问题。但是这时候,由于我的家庭原因,需要请长假(还少1个月),经过考虑后我办理了离职,但给这个项目的前端留下的前端工具和模式基本沿用了下来。&br&&br&&b&==========================&/b&&br&&b&五,第3个电商项目(上)。&/b&&br&&b&==========================&/b&&br&家里的事情解决后,我又得重新找工作。当然,技术和经验又涨了一点点,同时一些互联网求职的经验也涨不少(主要是在线教育这个项目有个UC出来的产品经理在这方面沟通比较多,偷师了一些经验),不再向以前那样白痴痴地不调研市场行情就傻乎乎地投简历。我学会了通过内推或猎头的方式找项目,至少行情比自己投简历要好很多。大家别笑话,可能还有很多人木有意识到这点,特别是像我这种半路出家没有在很像样的互联网公司呆过的同学,这方面的意识是比较滞后的,往往会落得同工不同酬的悲惨结局。&br&&br&2014年6月底,经过猎头推荐来到了一家化妆品起家的互联网电商。这个公司的业务规模很大,我进入的是一个会包含PC、H5、APP(安卓和IOS)等多端并行开发的海淘项目,进去的时候是以其前端开发主管的身份进去的。咱们是现实的屌丝一名,在薪水的提升面前,其实title没那么重要啦,对吧?&br&&br&这个项目在一个很高大上的,反正是和屌丝身份格格不入的地方办公。创始人是化妆品电商行业比较牛逼的,而且一直做的是电商,所以这家公司的互联网氛围还是比较浓厚,但也意味着快速开发迭代的节奏。我进入的时候项目的第一期已经上线,并且已经获得了千万美金级别的风投。&br&&br&进去那天,上午是超级简单的入职培训,下午熟悉项目,第2天上午就来了一个紧急需求——3个专题活动页面需要快速上线,隔天就得见到东西,因为项目投放了一个演唱会地推,线上必须在演唱会开始之前见到相应的推广活动页面。&br&&br&当时我所负责的组员有3个(其中1个,家人出事请假了),也就是能干活的包括我,就三个人。好吧,那时我其实还叫不全两名组员的名字就大伙分工,一人一个页面,用原始的方式切切切,把东西弄出来。那天,我们三个前端、两个php以及一个测试的妹子(可能是姐姐)搞到了凌晨3点多。&br&&br&这是我第2天上班的节奏,现在还记忆犹新。其实,真的有点被吓到了。那时候(其实才是去年,但电商的节奏让我感觉已经很久很久以前的事情了),项目的后台系统很不完善,没有啥可供运营使用的东西,专题快速部署的系统当然也不会有的,那么前端的工作就被限制在一些生效效率极度低下的专题页面的开发上,而且没啥大多没啥技术含量,就只能靠人力维持。&br&&br&随着项目的发展和投入的逐步加大,活动页面需求越来越多,人力维持是不太现实的,我们需要一个专题快速生产的系统。经过项目和产品需求分析后,务必要控制在2个星期内完成,而实际给到开发的时间其实只有1周。。。但主要工作其实对编辑器二次开发,后台编辑器上传图片时,可对图片进行二次修改编辑,我们二次开发就是要增加图片生成商品锚点定位、倒计时,甚至后来还提出了直接将锚点商品加入购物者的功能。。。&br&&br&这其实主要是前端的要啃下来的活,php只是从属配合,把生成锚点代码和展示配置保存到数据库。如果有人问我前端有什么需求值得去每个前端都去尝试,那么我会将web编辑器列为其中一个。谁弄谁知道。&br&&br&这个项目是我做电商前端开发以来的最难搞的需求,没有之一。当然,如果开发周期预计得足够长,一切难点都不是问题,难就难在限时实现,和参加奥数比赛类似。由于时间有限,项目经理帮我们找了个有类似功能实现的kindeditor编辑器插件,但是人家是加密了的,我们只能把代码扒了出来进行反编译,接入到我们的后台编辑器里面(ckeditor),接下来就是两个人接力coding,住了好几天7天连锁。。。尼玛,现在回想起来,没有在马桶上坐挂,那是命不该绝。后怕。&br&&br&这个编辑器项目总算如期交付,虽然后期有很多兼容性bug,但还都在可控范围内,解决了专题发布效率低下的问题,而前端开发也由此从手工维护专题的漩涡中解脱出来。我也因此在不到1个月时间内被列入了核心开发的岗位,并提前转正加薪(税前应该大于20K了)。其实,我当时很想着离开的,毕竟开发的节奏太快了,压力着实有点大。只是作为已过而立之年而且转行跳跃非常大的一个人,这些年过得有点昏昏噩噩,没啥成就,如果在这里学会了放弃,以后可能会变成一种习惯。而且,这份经历可能成为职业污点,毕竟开发圈子其实很小,不是东家就是西家,也就坚持了下来。现在回头看来,是正确的。谁没有过放弃的念头呢?&br&&br&&b&==========================&/b&&br&&b&六,第3个电商项目(下)。&/b&&br&&b&==========================&/b&&br&但是,项目需求迭代的速度并没有因为我们程序开发经常通宵,也不会因为某个人可能存在放弃的念头而会慢下来。这才是‘正常的’互联网电商的节奏,因为去年开始做海淘的项目开始喷发,有点当年千团大战的感觉,如果你把节奏慢下来,可能意味着落后,一步慢就会步步慢。&br&&br&Boss发话说,我们第一期发版后的UI界面和性能体验实在太糟糕了,而好多页面的首屏加载速度让人难以忍受,甚至有白屏情况,让要我们尽快出台优化方案。其实,上线只有1个多月,前期又没有太多时间做基础设施建设,整套系统都是在一个相对完整的商业系统上二次开发而来,能有多少好的性能体验呢??&br&&br&但是,在民营企业里面,Boss的话就是圣旨。就得立刻响应和执行。&br&&br&于是,我们整个技术团队就对前端性能优化做了一次相对完整的评估,雅虎XX条军规,出台了一些优化方案。这个方案实施,我提出了要响应快速的迭代需求,前后端模式需要建立起松耦合的开发协作体系。其实,这个时候阿里前后端开发体系的一系列文章才出来几个月,对于业界的影响还是有的,至少这个项目来自后端开发的传统程序员基本能接受这种开发思维,但是问题是如何建立?&br&&br&对于一个已经在线上跑的项目,彻底的打翻重构是不现实的。我又一次面临了一个有难度的前端模块化工程化、前后端分离开发体系建立的需求。但这次不同,这个项目代码规模更大,业务更复杂多变,而且一直是高速运行的。&br&&br&入职后的1个多月里被专题和编辑器羁绊住了(中间还请了一个星期的假),网站的其他业务其实我没有太多精力去顾及,还好另外一个同事手脚麻利,维护性质的需求一般能很好地解决。当我有机会从头梳理前端以及服务端View层的代码逻辑时,还是被那些商业电商系统混乱的前端代码结构给震住了。&br&&br&我就不说哪家了,国内的开源或不开源的电商系统,大部分精力放在后端的业务实现层面,而前端这边压根是啥没有模块化概念的。当然,为啥这个项目的技术选型要选这样一个系统?鬼才知道呢,反正我是不知道的。但是,既然负责这一块,别人挖的坑就得由接手的人来填。这是行规,你懂的。&br&&br&在电商这个领域,解决前后端耦合的问题,主要要做好服务端模板层的规划,控制权尽可能只压在前端或后端,多方维护的情况尽可能减少。以PC端为例,这里是要求SEO的,那么页面的渲染必须在服务端完成。当然,这里会涉及页面性能优化和前端资源调度的问题,服务端模板层最好是由前端团队来掌控。然而,不是每个前端开发人员都是懂后端语言的,这个其实是提高了前端人才的准入门槛,但这又是必须的。&br&&br&至少我前面几个电商项目都是这种情况,其他电商的做法就不清楚了。这里简单说我们的做法:&br&&br&&b&1,服务层按功能分层、分域,服务端view层独立开发域。&/b&&br&&br&比如,核心底层基类分出一个开发域,通用函数或组件也可以一个开发域,后台各种管理运营或配置系统划分为不同的域,而前台的,比如首页、列表页或专场、搜索、详情、购物车、登录注册找回密码、会员中心也可以分别各一个域。此外,即便是服务端模板层的开发语言,无法前端团队没能力决定,也至少单独一个开发管理的域。这是前后端松耦合的关键。&br&&br&当然了,不是各种开发域分得越细就越好,务必要根据按开发团队的人数以及实力来确定。如果分的太多太细了,代码合并管理的重复量会提升。每个人可能同时负责好几个域的开发,解决了代码耦合,但却降低了开发效率,而且增加系统间联调的风险,这是不合理的。&br&&br&&b&2,对服务端模板层进行公共页面、组件抽象。&/b&&br&&br&比如全站的很多头尾部是共用的,变化的部分相对较少的,进行公共文件剥离和抽象。垂直类电商一般是以页面为颗粒度的,页面展示大多以大块大块的图文列表出现,太精细的抽象是没必要的,至少我所负责的项目大抵如此。其他大众类电商因为要展示的商品种类多,页面可能会做的非常细腻,以更精细的页面组件来组织view层代码结构才会显得有必要。&br&&br&&b&3,开发前端静态资源调度机制。&/b&&br&&br&为什么要做这个事情?这个问题我就详细展开了,太多了。理论层面的,可参考&br&&a href=&http://www.zhihu.com/question/& class=&internal&&大公司里怎样开发和部署前端代码? - 前端开发&/a&&br&当然,因为业务不同,我们有自己实现机制。但需要解决的问题基本上,张云龙讲得比较通俗易懂,我也就不班门弄斧。&br&&br&&b&4,我们遇到的问题——TTI延迟引起的前端构建框架重构&/b&&br&&br&前端模块机制是建立在requireJS基础上的,但之前我做的是异步的方式,在以前的项目中其实对于性能优化没有那么苛刻,但是这个项目不一样。是当前竞争最惨烈的一个垂直领域——海淘。因此,任何一个可以改善用户体验的优化,对于项目的意义都是巨大的。&br&&br&从用户体验出发的几个核心时间指标包括:Start Render、DOM Ready、Page Load、TTI。不同的性能指标对用户体验的影响是不同的,而指标本身受哪些因素的影响也是不同的。一般的前端优化都会考虑前面三个的优化点,而最后的TTI优化往往被忽略。我们却碰到了必须解决这个问题的点,业务场景发生在需要加入购物的按钮上。比如详情页的下单按钮。&br&&br&不好意思,我不好拿原来自己做的项目来做说明,就随便找一个电商的详情页来替代 因为大家的问题是类似的,比如这页面 &a href=&//link.zhihu.com/?target=http%3A//item.jumei.com/gz1912.html%3Ffrom%3Dindex_hotdeals1_pos003_onsale& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&姬芮(Za)隔离霜聚美订制礼盒&i class=&icon-external&&&/i&&/a&&br&&figure&&img src=&https://pic1.zhimg.com/df5e1aa35a1b66a16aff4_b.jpg& data-rawwidth=&1440& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&https://pic1.zhimg.com/df5e1aa35a1b66a16aff4_r.jpg&&&/figure&&br&如上图所示,两张页面是加载先后的两次截图对比。当用户打开页面时候,页面结构的渲染很快就完成了,但一些异步的请求较慢,SKU的计算也需要耗费一些时间,但问题用户可以看到加入购物车的按钮啊,大红色的很吸引人,让人点击的欲望是很强烈的。但是,有些时候网速稍微卡断一点,那么这个加入购物车的按钮就一直点击不了的。很多小白用户就可能会问,为啥不能点击加入购物车啊?我敢肯定一定有这样的投诉,只是看网站开发者如何对待这个问题而已。&br&&br&这个就是典型的TTI问题。&br&&br&&b&什么是&/b&&b&TTI?&/b&? 最好百度。简单滴说,Time To Interact指的是页面可交互的时间。这个应该越早越好,如果页面因为需要等待异步请求的结果才能计算,而异步的数据可能是回不来的,那么就不要让用户可以这么快地看到可交互的元素,因为它会吸引人去点击,但却没有响应,投诉就必然。&br&&br&当然,这个问题发生在我们的网站很多地方,比如详情页、购物车以及生成订单的页面,要知道这些页面的交互分分钟对转化率产生影响的。然而,采用requireJS异步请求模块的方式,这个TTi问题就会更加突出。&br&&br&因为页面首次渲染会发生在css加载完成之后,如果不做任何处理,加入购物车的按钮就会很早呈现在用户面前而触发用户去点击,但由于页面一方面要等待异步的js完成,还要等js发起的ajax请求返回的数据做进一步处理,即便是我们对按钮做loading状态处理,但require异步的js可能会发生很多意外,页面的购物车按钮区域一直在loading,而导致用户无法点击加入购物车。&br&&br&也就是说,我们用requireJS框架代码的模块化管理,但却不能在生产环境中直接使用它的异步机制,因为它会对TTI延迟带来影响。怎么办?&br&&br&ok,到这里你可能对js模块化有些很反感,有这么多毛病干嘛还要模块化啊?这个问题很深刻,但问题不能单纯从一个角度看待,任何事物都是有两面性的。&br&&br&其实,如果用其他模块化方案,只要是异步加载js的,都会存在类似的问题,包括seajs。要知道模块化开发一定是团队配合的必然选择,既然已经选择了requireJS作为模块化机制,那么它带来的问题,我们就要着手研究解决方案。&br&&br&&b&5,&/b&&b&前端模块化开发与&/b&&b&TTI延迟问题的解决&/b&&br&&br&首先,我们的前端团队已经熟悉了requireJS,基本都能掌握AMD模块开发要点。首次重构的代码已经发布上线后,必须先将TTI问题严重的几个页面,做loading状态处理,让用户等待。&br&&br&但这只是过渡方案,更优化的解决方案是要对前端开发构建流程做优化调整,把异步的模块在发布生产时必须合并起来,作为同步加载的模块,放置在页面最底部,而且合并的文件应尽可能降低代码的冗余。&br&&br&但是页面js资源不仅仅只是优化一个页面,将一个页面combo成一个模块就完事了,应该想服务端模板一样,js也要分层,将最底层最核心的类库抽离出来单独combo,多个页面之间共用的模块也要单独combo(这种形式的combo结果可能有多个,因为如果共用模块过多,按一定的大小来合并,我们的原则是mini化之后不能不要超过200K一个文件,如果超过了,就要另起一个文件,当然,这个要灵活处理),前面两者是在页面之间可以相互继承的,而只有当期页面私有逻辑的js模块则应该是一个单独的模块。&br&&br&那么,网站js最终的形式可能是这样的:&br&&figure&&img src=&https://pic2.zhimg.com/805edad04af25_b.png& data-rawwidth=&486& data-rawheight=&318& class=&origin_image zh-lightbox-thumb& width=&486& data-original=&https://pic2.zhimg.com/805edad04af25_r.png&&&/figure&这是我们希望得到的模块combo结果。我们采用的线下combo,然后将combo的结果发布到CDN,这样就需要解决以下的一些列问题:&br&&br&1,如何区分核心js和页面共用js?&br&2,构建流程上如何解决它们的修改,然后编译的版本迭代问题?&br&3,对于开发的角度,在本地开发能够快速调试,包括源码调试以及combo状态调试?线上的问题代码,如何方便开发人员调试?&br&4,私有模块化如何调用共用模块的方法,或采用怎样的机制来对共用模块进行单独的实例化?&br&5,多个模块化之间,combo的先后顺序是什么?&br&6,内嵌资源比如img图片引用,如果引用的图片发生了修改,如何解决它的缓存问题?&br&7,如果业务模块很多,比如好几百个(电商的业务很容易达到这样的量),那么可能因严重影响代码发版的速度,是不是考虑增加构建的缓存机制,或服务端combo的机制?&br&……&br&&br&好吧,这些问题最终演变出来的,其实就是一整套环环相扣的前端工程化解决方案。&br&&br&这里面,单独就js而言,要涉及很多代码规范问题,比如js通用模块开发标准,私有模块开发标准,私有模块提升为公共模块的机制,第三方插件的改造规范,js模块的碎片化程度如何掌握?这是一个度的问题,等等。&br&&br&&figure&&img src=&https://pic2.zhimg.com/6be45aba9fd_b.png& data-rawwidth=&600& data-rawheight=&446& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/6be45aba9fd_r.png&&&/figure&&br&因为加入CDN网络后的,强缓存解决方案是更换URL路径,而对于访问量大一点的电商来说,非覆盖式发布是最佳的选择。前端架构的开发机制还会涉及服务端模板引擎的如何加载前端静态资源的问题,如果是纯静态的移动端网站优化,可能还需要你自己设计一套开发机制以及静态html开发的具备模块化能力的模板引擎,来解决动态变化的css或js引用问题以及开发调试的体验问题。&br&&br&好了,这其实是业务逻辑开发以外的,高阶前端开发者需要面临上述的前端痛点问题。这会涉及方方面的调整,比如前后端边界的处理,前后端交互的API规范,开发调试环境、测试以及发布流程的设计,版本迭代回滚,以及性能监控等等一些列衍生问题。。。&br&&br&我可以负责任地告诉,不同的项目,前端架构设计是不太一样的,因为业务逻辑不同,前后端开发人员配比以及能力模型也不同,那么前端架构就可能得采用不同的设计方案。&br&&br&当你的业务发展要面临这些问题时,可能前端就没有大家想想中那样简单了?&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&“一叶障目不见泰山”
“前端说白了只是语法糖,一种编写页面的容器api和程序语言的封装,是计算机发展的大树长出的小枝桠。”……
&/code&&/pre&&/div&&br&如果我说了这么多,举了这么实例和理论分析,如果大家还认同这样的看法,就当我什么话页没有说过。就此打住别再往下看,但我也劝你别再干前端了。对于这种似乎是很文艺的表达方式,咋一看,好像挺有意思的,但如果要想玩文字游戏,我们就得按游戏的规则来把问题说清楚:&br&&br&请问什么是前端的“一叶障目不见泰山”?&br&请问什么是语法糖?&br&请问什么又是计算机的大树?&br&请问计算机的小枝桠又是什么?&br&&br&&u&作为前端从业者,我对于这样的无厘头描述是表示反感的。因为这是一个很严肃的话题,而编程又是要求逻辑严谨的工作,任何意识流的或空泛的描述都应该是不被允许的。当然,如果我的文字伤害了答主,或违反了知乎的游戏规则,那么该对我关小黑屋的就关小黑屋。我没有意见。&/u&&br&&br&是的,前端从某个角度上看,业务本身的实现并不难,不会涉及太多深层次的算法问题,但是如果要将页面优化做到比较好,解决方案诞生的过程中一定涉及很多计算机底层的逻辑算法的问题。&br&&br&比如facebook这种的网站,是上万个AMD模块的代码规模,不同国家的用户进入同一个页面要加载的css和js组合可能是几百万种时,人家可是要找博士来研究前端架构的解决方案!当然,这个不是我说的,如果认为我在吹牛散布假消息,大家记得找张云龙大侠来问清楚——&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/fouber/blog/blob/master/.md& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/fouber/blog/&/span&&span class=&invisible&&blob/master/.md&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&当然,绝大多数项目是没有到达这样的量级的,比如我们也就几百个js模块,但是对这些模块的依赖关系处理,就已经涉及递归、排序、排重、对比以及插入等底层算法,只是很多人还没有接触到这一层面而已,并不意味着前端开发就不需要。此外,如果你的前端团队如果要用到nodejs做中间层开发,前端开发人员还会面临大量的服务端开发的问题。这是另一个话题,我就不再说了。&br&&br&总之,在我看来,前端开发的难点不在于某个业务逻辑的本身实现,而在于规模化生产的前端工程化问题的解决。&br&&br&&b&==========================&/b&&br&&b&七,第4个电商项目。&/b&&br&&b&==========================&/b&&br&这是第3个项目电商的延续,因为是同一拨团队继续干的项目。这份经历暂时不方便透露太多,只能说这是以我原来的第3个电商项目的技术团队核心成员为班底的,又一个从零开始的项目,同样是海淘。经过半年多一点,现在已经走到了B轮,暂时只能透露这个消息。&br&&br&对于做海淘的电商而言,因为我们属于后进者,节奏要比其他项目要快一些,要不是没有任何机会的了,也就意味着别人可能是半年或3个月就融资一次,那么我们就得基本上2个月就进行一次融资,至少在C轮以前必须是这样的速度,要么只有等死。可想而知,要能完成这样的融资节奏,那么开发、推广和运营是怎样的节奏呢?&br&&br&作为参与者当然是非常非常辛苦的。这几个月不能说天天有发版,但基本上每周二周四会有一个小版本,1周或2周就得完成有一个中级版本,可能是多个版本交替迭代的,而一个月就一个大版本更新。竞争激烈,我们必须按这样的速度去迭代才可能有活路。&br&&br&那么,单就前端开发而言,如果没有很好的模块化、自动化、流程化的控制体系,你能想象搞这种速度的开发迭代,哪个程序员会和你玩?还好,半年来30来号技术开发,技术团队的离职率基本为0,技术负责人的项目管理能力非常厉害的(我知道的就是,华为那边出接近100W年薪挖他,他没走,当然我也是跟着他混)。&br&&br&ok,不能再说了。只是有感而发,差点停不下来。如果哪天这个项目有个完结了,比如我离开它,或项目走到了上市或被收购,或资金断流散场,我会回来把这份经历补充好。埋坑。&br&&br&&br&==================这里是分割线=================&br&&br&&b&八,前端开发者快速升级通关的一些个人经验总结。&/b&&br&&br&&b&这纯属个人经验,不一定适合你。还是那句话,如果感兴趣就往下看,不强求。&/b&&br&&br&在评论里面,我说了,从转行做全职前端,从切图开始升级发展到做电商前端架构,只是花了2年时间。不管你信不信,这绝对是事实。当然,我是有好几年php+前端混合开发基础的,不算是从白丁开始的,但转行那时候的前端技能最多就是初中级别,只会用jq插件完成逻辑。&br&&br&我现在的好几下属,做前端的时间都比我长,有个已经5年了,但依然找不到方向。我平时在招聘前端时,面试的前端好多都干了3-5年了,还是那样。不是我想笑话这样的人,或绝对自己真的可以吹牛逼,我只是觉得可能是大家没有看清楚前端这个工种的未来,没踩准快速升级通关的节奏。当然,也可能你还不够努力。反正,种种原因吧,各有不同,我只能说我自己的。&br&&br&这两年,我手机里面全部是前端开发书籍,没有100本页有50本,背包里面总有一本关于技术开发的书籍。每天除了上班干活,吃喝拉撒睡外,全部时间几乎全部放在看书写代码写demo上面。以至于忽略了很多事情,包括对家人的照料。这些努力是你看不到的。当然,除了自身努力外,我确实也踏对了前端开发迅猛发展的节奏,比较早地接触了Nodejs,比较早地看到了前端构建前端工程化的价值。&br&&br&不过,有时候一个人的价值往往不仅仅是看他的代码能力有多少,经验有多少,还要看你能号召多少人跟你一起干。就好比一个人的财富,并不只是他所拥有的银行存款、固定资产或者股票等等他直接控制的财富的总和,而是除了这些意外,他能调动多少资源,所有他能调动的资源页都是他的财富。&br&&br&技术人做到一定程度之后,再往上发展,需要有一定的号召力,因为绝大多数企业不会给你开那么高的薪酬,甚至给你股份期权。当有几个人愿意跟随你的时候,那么在找项目谈价格时,就会掌控议价的主动权。因为,你已经不是一个人在战斗,你的价值绝对不是以一个人的开发技能来衡量的,而是由跟随你的团队的整体实力来决定。&br&&br&当然,有人愿意跟着我,是因为这两年我除了一直站在代码开发的第一线外,还坚持了以下几样东西:&br&&blockquote&&b&1,从不藏私。&/b&把你知道的东西,毫无保留地分享给你周围的同学,记得是毫不保留。知道多少,分享多少,这样才会不断促使自己去知道的更多。技术层面不存在教会徒弟饿死师傅这种事情,如果你抱有这样的想法,那就太狭隘了。&br&&br&&b&2,对代码要有洁癖。&/b&洁癖到什么程度?包括一个空格,一个标点符号,不要觉得无所谓,一定要觉得有所谓。要追求能力极限上的完美,包括逻辑判断的严谨、文档的完善、代码格式的完美。&br&&br&&b&3,言出必行。&/b&一个需求来到我这里,只要我有答应别人的时间节点,不管如何也要想尽办法把它实现了。如果确实无法按时,一定提前沟通,但二次调整的时间一定一定要准时,下死命也要完成。事不过三,不给自己留任何后路或找理由。&/blockquote&总之,言出必行既是项目管理能力问题,也是个人诚信问题,这样团队里的其他人才会愿意相信你,依赖你,跟随你。&br&&br&其实,很多时候技术和经验积累到一定程度之后,业务处理上的能力或技巧,大多数人的差距其实很小的,但拉开差距的往往不是技术本身,而是对待人,对待技术,或对待需求的态度不一样。我不敢说,技术层面有多厉害,即便是现在的项目给我的技术评级是P7,之前也有拿到的几个offer给我技术评级也是P6/P7,但我自认为没有到达这个水准。&br&&br&既然如此,可能是对待人,对待技术,或对待需求的态度上做得不错。&br&&br&举个新鲜的例子:&br&&br&&p&前几个月我们有一个微信jsSdk分享有礼的需求,这个需求非常重要,我决定自己书写前端逻辑,避免耽误与外部的合作。但这个需求关键的点是需要获得两次微信用户授权,一个是交易授权签名,一个是分享授权签名。但由于后端开发同事没有经验,只做了交易授权签名,但他也已经非常努力了,基本通宵达旦了,但当我发现另一个授权签名没有服务端接口时,前端的逻辑是走不通的,等别人调休完成再做吗?但项目其实是务必在第二天提测,要不无法按时上线,而广告已经投放出去了。&/p&&br&&p&如果是你会如何处理?&/p&&br&&p&当时已经是凌晨5点了,后端的同事都疲惫不堪回去休息了,我决定自己来书写服务端另一个授权签名的api,但这里有一个坑,授权签名的算法里面要求前端post一个url,而这个URL必须是不经过转义,但微信jsSDK里面没有特别说明这个(可能是我没看仔细忽略了),从安全的角度我习惯对前端ajax的url字段进行了转义处理,导致一直调试不通,找了各种原因,还是没找到原因。。。已经是早上9点多,别人已经又来上班,而我还没有下班,但已经很困很困了,但知道这个需求很重要,咬牙再坚持,碰巧在这个页面 &a href=&//link.zhihu.com/?target=http%3A//mp.weixin.qq.com/debug/cgi-bin/sandbox%3Ft%3Djsapisign& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信 JS 接口签名校验工具&i class=&icon-external&&&/i&&/a& 看到了问题所在,如图&/p&&p&&figure&&img src=&https://pic3.zhimg.com/f38e65bbb3ee8b159e06_b.jpg& data-rawwidth=&850& data-rawheight=&612& class=&origin_image zh-lightbox-thumb& width=&850& data-original=&https://pic3.zhimg.com/f38e65bbb3ee8b159e06_r.jpg&&&/figure&在php端对这一字段反转义,调试就通了,在那天中午前能够按时提测,最后没有太大问题终于是上了线。虽然还有不少细节没处理好,但至少别人接手可以轻易解决。那天我回家修休息已经是下午3点了。也即是,我从前一天10点开始,一直干到了第二天的下午3点,就为了完成当初承诺的时间节点。&/p&&br&&p&事实上,这个需求不是很难,但技术开发有非常明确的截止时间,而需求又是我自己亲自做的。如果是其他同事,看到api似乎是服务端的事务,其实作为前端开发的你,人家都走了,你也跟着走人,最后担主要责任的一定不是前端开发,对吧?但是,这不是我的做法,因为这个项目既然是由你来接手,并评估可以按时完成的,那么不管哪里出了问题,这都是你的问题。因此,我会去书写服务端的api逻辑,尽管这似乎不是我的责任。&/p&&br&&p&好了,说了这么多。其实快速通关可能是需要时运,但更多是个人的努力与坚持。这个没有什么诀窍的,而且很多时候和技术本身没有关系,而是对待困难的态度要有点点不一样。&/p&&br&最后,回归到楼主的问题本身——到底前端的路可以怎么走?&br&&br&前面提过两点,如果当你要从中级跨入高级前端,这除了项目环境外,还需要你要有一定的坚持,并且选对前端未来的发展路线,至少我认为有以下几种路线可供选择:&br&&br&&b&1,业务层面的高手,做到非常了解某个领域的业务逻辑。比如垂直类电商的业务逻辑,这样你其实可以尝试带队,做项目管理,最终发展做项目经理。&/b&&br&&br&&b&2,前端工程化解决能手。就是我在第六章罗里吧嗦列举出来的一堆问题,你都能有腹案去解决,每个项目的工程化方案都是不一样的,这种人才的需求也很旺盛,尤其是哪些基础设施建设不太完善的项目。&/b&&br&&br&&b&3,nodejs服务端方面开发。这个可能在岗位上更像是后端开发了,只是前端可以通过这个方向进入服务端开发的领域,做的牛逼,其实做一下CTO的梦还是可以做一做的。。。&/b&&br&&br&&b&4,如果上面觉得都不适合你,但你对前端开发又比较了解,那么转行做产品页也是不错的选择。具备开发思维的产品,在很多时候是一个优势。&/b&&br&&br&&b&5,创业。&/b&&br&&br&&b&按现在的行情,&/b&&b&前面4个方向任何一个方向做好了,作为打工者,你的收入都不会太低,一般不会低于25W年薪吧?&/b&&br&&b&如果第一点和第二点你都能做得很好,前端架构师这种岗位就可以去试试,35W以下年薪可以不用考虑;&/b&&br&&b&如果你连第三点也做得不错,那么系统架构师职位是可以去尝试的,50W年薪的岗位就应该在你的考虑范围;&/b&&br&&b&如果你连这4点页都做的比较到位,我觉得你最合适干第5点,这个值多少钱,就不知道了。&/b&&br&&br&&b&此外,移动互联的前端开发也是一个很不错的发展方向,你也可以尝试做&/b&webapp和hybrid app的开发。。。多端的开发能力,也是前端开发人员不错的发展方向。&br&&br&=================================&br&感谢,周末码的字能感动到人,还是比较高兴的。希望我的这份回答能成为个人在知乎的一个亮点,因此我决定继续分享一些东西,顺便预先挖一个坑。&br&================================&br&&br&&p&如果要说一个通行的经验,我会说——做一行就爱一行。&/p&&br&&p&我想以后自己不写代码了,经过这两年开发历程,自认为做其他职业其实也不会太烂。这可能很性格有关,就比如当初我做编辑,也不算差,还算是当时报社的第一打手,好多黑报道几乎出自我手,只是当初好单纯的说。&/p&&br&=======================&br&&p&&b&九,谈谈互联网项目&/b&&b&环境对于&/b&&b&前端开发者向高阶晋级的影响。&/b&&/p&=======================&br&&br&&b&(上)&/b&&br&&br&&p&我在前面曾经提到过一个观点——“技术人要明白,你能拿多少,在一定水位之前,基本和技术能力成正比关系的。”&br&&/p&&br&&p&什么是一定水位之前?什么又是一定水位之后?&/p&&br&&p&这里我觉得要对这两个名词做一下解析,避免大家对我的这种说辞产生误解,以为是这位编辑是在玩弄文字游戏。&/p&&br&&blockquote&所谓的“一定水位”,就是指当一个前端开发者的开发能力进入中高级之后,不同特点的前端开发者再往深入发展时将会出现后续发展路径上的选择差异的那个状态或时刻。&/blockquote&&br&&p&名词解析总会是有点绕的,但这是我所能表述的最简单的一种解析了,希望看官你能明白我所指的是什么。但在这里,我应该要对中高级前端的开发能力进行一个定位,否则我们并不清楚这种“水位”到底该如何度量。&/p&&br&&p&当然,这个不同行业/企业对“中高级前端开发”的定位或理解是不一样的。单就电商而言,我觉得是基本上能够独立解决各种业务需求,独挡一面了。如果非要有一个衡量的标准,那么我们公司的定位是具备以下技能点:&/p&&blockquote&&p&1,html、css和js较为扎实的基本功,尤其是js方面能力,要能脱离jq/zepto之类的工具类库也能干活,具备良好的面向对象编程的思维,能够书写和维护较大规模的前端业务代码。&/p&&p&2,熟练使用Sass、LESS、Stylus等CSS 预处理器中的一款。&/p&&p&3,掌握至少一种前端模块化开发规范及其相关框架,比如AMD(requireJS)或CMD(seajs)。&/p&&p&4,掌握至少一款前端MVC/MVVM框架,并有一、两个项目实战经验。&/p&&p&5,熟悉至少一门热门的后端开发语言,比如php,java。&/p&&p&6,团队协作方面,有在具有较大规模的电商开发经验,必须具备至少一个有多人协作开发的项目参与经验,掌握SVN或Git中的一种。&/p&&p&7,熟悉前端页面的优化原则,熟悉http协议的通讯机制,对静态资源缓存机制较深入的了解。&/p&&p&8,熟悉HTML5和CSS3,有移动H5网站开发经验。&/p&&/blockquote&&p&把H5开发经验加上,是因为移动互联网已经是几乎所有的互联网项目的业务发展重心,随着时间的往后推移,以后这一点应该成为前端招聘JD的标配。但我之所以把这项列在最后,因为从PC端切换至H5端开发,其实并不是那么难,只要项目需要,给一点点时间,任何一个有经验的前端都能快速切入,如果连这点快速学习能力都不具备,Ta不可能是一名中高级别的前端。&/p&&br&到了这一层面,按当前的市场行情,基本可以以20K为分水岭(就是这个话题——&a href=&http://www.zhihu.com/question/& class=&internal&&月入20k的前端该具备什么能力? - 前端开发&/a&)。不同的公司略有差异,一流公司不差钱,这个阀值一般会更高一点。我没有在一流的公司里面呆过,但在三四流的电商项目中跑了一圈,了解到的情况就是这样子。当一个开发人员越过了这个分水岭,绝大多数企业都不太可能只会让他单纯地去写代码,而不要求他做其他事情。不同的环境,安排的代码外的事项一般这样子:&br&&br&1,开始要求带新人,负责项目需求的跟进与开发任务的实施。职位一般表现为主管或经理,或即便是没有职位上的直接提升,但干的活都是要求带人,日常工作就会涉及需求评估,分配任务和难点攻关,重要或紧急需求的实现(救火队员),等等。&br&&br&2,代码能力比一般的前端高了,也有可能被安排一些底层的前端工具研发,以提高前端的生产效率为主要任务的团队中去。&br&&br&后面这种情况,在规模大且核心业务已趋于平稳的互联网企业可能会碰到,比如百度的FIS团队,比如阿里蚂蚁金服的前端工程技术团队。了解Web开发的都应该知道,由于前端开发语言本身的局限性,导致前端开发工作的碎片化非常严重,重复的工作非常多,开发体验是相当不好的,规模化生产的效率低。企业的规模越大,这种糟糕的开发体验就对其生产效率的负面影响页就越突出。因此,像BAT级别的企业才会设立专门的部门来解决这个问题。&br&&br&但是,其他快速发展的项目则普遍是第1种情况,尤其是快节奏的电商,比如唯品会、聚美、蘑菇街,等等,还有N多。为什么?因为电商务必要快!那么人才培养成熟后(或招揽的人才具备同等水平),往往被优先安排到业务最繁忙的事务上。因为这样才能最快地出成绩,而前端生产效率低下这种负面影响并不是那么的重要,甚至可以说一点也不重要。&br&&br&因为中国的电商几乎都是以市场营销为导向的,满足业务需要才是最关键的。只要业务发展快,融资节奏跟得上,前端这一技术细分领域是否模块化,是否工程化,就显得真的不那么重要了。页面少几个连接数还是多几个连接数,并不会有立竿见影的影响,高并发上来了,顶不住的话,有大不了我多几台服务器就是了,但营销需求的开发一定要优先满足。&br&&br&而规模更小或创业初期的互联网项目,如果能用得起这样前端的,往往都是除了开发外,还有做更多的事情,包括招聘、培训、带团队、需求评估与跟进,书写业务逻辑,甚至还要自己切图,事情多,工作杂,加班加点是正常的,每天过得累死累活,比如我就是这么过来的。&br&&br&于是,有前瞻意识的前端leader才可能会去考虑前端构建、前端模块化以及工程化方面的事情,而把一部分精力投放到提高前端团队的生产效率的构建工具开发上面来。当然,我算是比较早就意识到这一点的前端之一吧,所以才能快速地成长。&br&&br&那么,这两种不同岗位安排,对开发者后续的影响又有什么区别呢?&br&&br&在规模越大的团队,工作划分得越细腻,专注的点就越深,但同时就可能会被限制在某个狭窄点上,成为某个角落的技术专家。但页会因为缺少去了解具体业务细节的机会,而让他的发展受到限制,那么这种人才往往是不太适合去做创业的,一直呆在大平台上才更容易创造高价值。&br&&br&就前端这个工种而言,如果它的发展都不跳出前端这个范畴,那么我的理解是这样的:&br&&figure&&img src=&https://pic2.zhimg.com/8aa7feaa5ca5_b.png& data-rawwidth=&868& data-rawheight=&404& class=&origin_image zh-lightbox-thumb& width=&868& data-original=&https://pic2.zhimg.com/8aa7feaa5ca5_r.png&&&/figure&&br&在大平台的前端团队中,一般容易批量生产技术专家类型的人才,这些人才对他所在技术领域的研究会足够深,但也可能(只是一种相对较低的可能性,不是绝对)不太容易诞生前端架构类型的人才。为什么?因为做前端架构必须要深入了解业务,同时要务必了解业务团队的能力模型。&br&&br&比如:&br&我们都知道,解决规模化生产的javascript开发模式有很多种,未必一定是AMD或CMD,还有以命名空间或类继承为原子模型的js组件化架构,等等。但是,不同类型的多人协作开发模式,对于前端开发者的能力要求是不一样的。很显然,AMD或CMD规范的模块化方案对于开发者的能力要求是最低,而以一个通用基类+继承的组件化方案,对开发者的要求可能是最高的。&br&&br&为什么我会这么说?&br&&br&因为很多初中级的前端还可能还不知道何为类,何为继承。js的类和继承并不是那么的直接,请问你要他如何在这种开发模式下书写业务逻辑?而AMD或CMD就不一样了,我可以不要求你务必理解规范的意义,但我可以强制要求开发人员严格按照规范的实施标准,依葫芦画瓢,让前端组员快速参与到业务逻辑的开发中。&br&&br&相比之下,AMD的规范更加死板,但也更加容易对入门的开发者进行强制要求,对于小成本的创业型项目,就能快速地通过简单培训,让初级的前端也能参与到业务的开发上来,这也就是我为什么一直使用requireJS作为前端架构的模块化方案的原因。&br&&br&因为它足够简单,入手的资料也齐全,我连培训文档都不用自己书写(像阮一峰这样的大神分享的知识、文档给创业项目太多的帮助了),而我所经历的都是创业项目,初期的给到手上的工程师质量是层次不齐的,从4k-5K到10K+++不等,请问这样的原材料,如果要像不缺钱的项目那样使用各种高档的性能可能更好的模块化方案,可行吗?换做是你会这么干吗?&br&&br&创业一定要压缩成本,以最小的成本做出价值,这才是一个合格的架构师该考虑的,性能啊,设计模式啊,这些都不是最重要的。请问如果一直是在高大上的项目打滚的前端工程化设计开发者,咱们花大成本挖他过来,给到创业项目的方案可能是无法落地的。&br&&br&我所在的第3个电商项目就出现了这样的情况,花大价钱挖来了一批来自BAT的前端高工,但是出来好多前端解决方案都是无法落地。当然,我从他们给出的解决方案以及相关的代码中,学到了很多,让我见识了淘宝、百度之类的一些内部前端开发模式。&br&&br&在这里,我可以给半路出家没有机会进入顶级公司的人,你真的想知道别人如何做的,或想了解细节是什么。说实在的,有太多的途径了。最简单的一招就是——比如利用招聘需求,发布一个高要求高薪资的岗位,让HR帮你把对应的人给约过来,多聊一聊,就基本能知道了。谁叫大公司的HR喜欢带有色眼镜看待半路出家的人,难道你就不能以牙还牙以眼还眼吗?&br&&br&这种招数我确实用过一两次,但毕竟是灰色手段,用多了对身心健康是有害的。最佳的方法是多看人家分享的演讲视频,多参加行业交流。比如这两年我通过自费参加的行业分享会的事情,报名费和路费没有万把块也有好几千了吧,当然如果能通过公司层面的企业间交流或引入高级人才来获得成长机会当然是最好的。&b&越是高端的人才,掌握的核心知识点就越多,&/b&&b&当然&/b&&b&价值会越高。半路出家的和尚一定要把握好这种智力资源,务必要对高端知识有良好的嗅觉!!!&/b&&br&&b&&br&对的,能力比你强的人,对你来说就一种活着的智力资源,而不是你的职场对手,做人别那么狭隘。&/b&比如我第1个电商项目,从2012年开始到2013年公司融资成后引入了一批优秀的人才,我当时是拿着8K的薪水,干着项目经理的活,而引入的手下却拿着你两倍甚至更高的薪酬时(我是主管,手下的薪酬我一定是有办法知道的,不管公司层面再怎么保密也是没法的,当然这种属于非常初级别的权力游戏,如果你连这点手段都不会使,你可能需要回炉去做最底层的开发者),作为主管的你是会不会觉得心里极度不平衡?&br&&br&不患寡患不均,这是人性的弱点。当然,我也没那么高尚,那时候也一样有些觉得不忿。但是,当你看到别人确实比你强悍,理念比你先进的时候,请一定把这种人性中丑陋的一面藏起来,敞开你的心胸去接受这种事实,并虚心向比你优秀的人学习。&br&&br&=======================&br&&b&(下)&/b&&br&=======================&br&打住,有点跑题了。咱们还是来聊前端这份职业的发展问题。&br&&br&职业发展其实是一个很虚但又很实际的话题,我其实给不了具体的答案。我尽可能尝试写出一点点有价值的看法。&b&我认为,谈论任何一种职业的发展,都得先从企业需求的角度来分析,到底这个市场需要怎样的前端开发高阶人才,这样才有让我们这些开发从业者有机会去思考满足需求这个问题,进而才能正确地确立一个可行的职业发展方向。&/b&&br&&br&咱们做开发的应该很明白这个逻辑——先要有开发需求,然后才会有你去写代码,实现需求;而不是我先写一份代码,诞生某种需求,然后你要企业来为这个需求买单吧?很显然,这个逻辑走不通的。&br&&br&ok,让我们把时间坐标往前挪动一下。回想一下,10年甚至更高以前,有多少企业会需要前端开发这种工种?可能没有多少吧?比如我们耳熟能详的淘宝,一开始前端都是后端兼顾着去做的,不是吗?哪来前端一说呢?&br&&br&但是时间再往后推移一点,来到2010年前后,互联网进入了高速发展期,尤其是电商,除了淘宝天猫、京东等先期的玩家外,还大量涌现了如唯品会、美丽说、蘑菇街以及以美团为代表团购类电商等等一大批玩家,并很快获得了巨额融资而进入高速发展期,堪称野蛮成长。&br&&br&当然,从技术的角度,野蛮成长的背后是有代价的,前面我反复强调过,电商是以市场营销为导向的,绝大多数开发资源都要以满足营销需求为第一要务,追求极限的业务发展速度,而可能忽略了技术层面技术设施的建设。&br&&br&当然,这也是技术人的角度。从企业的角度并不是这么一回事,除非技术项目的管理者(最好是创始人)在一开始就意识到,前端技术精细化是有价值的,企业才会重视前端技术基础设施建设的问题,而预留部分开发资源来解决这一问题。当然,绝大多数现实并不是这样的,我们可以通过相关的前端代码来分析得出这个结论,但还是存在不少有这样眼光的企业,而在技术上的具备某种优势,比如天猫。&br&&br&当然,这还是技术层面的观点。但你不能否认天猫的前端基础设施建设是国内所有电商中做得最好的吧?因此,这个观点至少是站得住脚的。正因为有需求,所以才会有给我们前端从业者快速成长的机会,这一段时间涌现了大量的前端顶尖人才以及相应的解决方案,比如seajs、kissy等技术方案雏形就是诞生在这一个快速成长市场背后。&br&&br&所谓时势造英雄,说的就是应该是这个道理。&br&&br&那么,我扯这么多干嘛呢?和你我的前端职业发展有什么关系吗?当然有关系啦。在一线的互联网企业优秀的人才储备更胜一筹,顶尖人才对于未来技术的探索和思考一般会走在前面,包括前瞻性的开发理念和开发意识。&br&&br&比如,一般的项目(特别是外包项目)还采用前后端混合开发的时候,人家已经在探索前端模块化的解决方案,当你还直接把js写在服务端模板层上的时候,甚至一些js方法和逻辑还需要用后端语言来辅助做判断的时候,人家已经在实施前后端分离开发这个事情了……但问题是你知道别人在做这些吗?知道了,那么你又能意识到这些东西的价值吗?&br&&br&比如这种:&br&&figure&&img src=&https://pic3.zhimg.com/5b7fb7e11f765cce322fe_b.jpg& data-rawwidth=&1420& data-rawheight=&790& class=&origin_image zh-lightbox-thumb& width=&1420& data-original=&https://pic3.zhimg.com/5b7fb7e11f765cce322fe_r.jpg&&&/figure&&br&我也就是随手下载的一个开源商业系统,随便一点就找到了这种‘漂亮’的模板,外包项目基本就是天天做这种活的,很多电商创业初期就是从这种模板系统开始的。请问这种项目该如何做重构,如何做前后端分离?我可以保证,绝大多数项目到死也没有把这个问题解决。不过如果你有能力做好这件事情,那么你的价值就不会太低的,当然,我觉得自己有这个能力,你呢?&br&&br&正是因为我曾经在外包或企业网站级别的项目中做过2-3年,但始终得不到很好的成长,表现在薪酬上一直难以寸进,甚至比不上写稿,当然我做外包项目的同时,为了生存只能坚持给媒体供稿,包括和编辑合作写枪稿,稿费很高,但很不客观,甚至自己都觉得恶心。不过这是为了生存,也不怕你笑话,谁没有过低谷呢?你说对吧?&br&&br&因此,如果大家有机会进入这样的企业历练那就抓住,这是快速成长的最佳途径。当然,如果你没有机会,那么也不用太沮丧。&br&&br&随着时间再往后推移(就是2012年左右吧,nodejs逐步稳定起来之后),越来越多的企业开始意识到,前端技术精细化的价值,包括二线三线四线的电商企业。那么,如果你没有机会进入一线的企业,在一些二线三线的电商里面也可以获得非常不错的发展机会。这样的机会依然大量存在,这两年新创的具备电商基因的企业实在是有点多。&br&&br&你会发现,我之所以能快速成长,其实是因为我一直呆在电商这个领域。这个领域的特点是技术会跟钱直接打交道,你开发的程序控制着钱的流向以及要负责它的安全问题。因为钱这个玩意,大家都是很在意的,少一毛多一毛都是敏感的。&br&&br&比如你抢个1毛钱红包都是很值得高兴的事情,正因为如此,涉及钱的平台,它背后的技术力量就需要更加小心而谨慎了,用户对此是非常非常敏感的。你一个按钮稍微反应慢一点点,就可能让用户对你的信任度减少那么一点点,而这个市场并不只是你一个玩家,更加极致的用户体验就可能成为分出胜负手的关键。那么,用户体验的最佳解决者的价值就呈现出来了,因此具备电商基因的互联网项目都必须对前端重视起来。&br&&br&其实,广义的角度,绝大多数的互联网项目都或多或少要和钱打交道的,间接或直接罢了。&br&&br&========================&br&到这里我不想再说太多了,免得超越了太多人文字阅读的极限。因此,我需要对篇幅进行控制。不要误会,不是我没有东西可说,只是这里似乎已经不再适合。&br&&br&ok,还是从我自己说起。&br&&br&这两年的求职经历告诉我,当我转行前端并获得的高速成长的机会,事实上得益于互联网电商野蛮成长背后,一开始对前端精细化的不够重视带来的机遇,如果前几年企业就已经意识到了这一点,并对前端技术设施建设有一个良好的规划,并安排相应的开发资源,那么我这种野路子和尚是的价值就可能打一些折扣。可以预计得到,一旦前端技术设施建设完善,那么支撑前端精细化背后的工程化技术的价值就会被弱化。&br&&br&但是,现在前端精细化的进程才刚刚开始,甚至现在市面上连一本阐述前端工程化方面的解决方案的教育性书籍都没有(我建议 &a data-hash=&e9306aab1b61e74e7ae6& href=&//www.zhihu.com/people/e9306aab1b61e74e7ae6& class=&member_mention& data-editable=&true& data-title=&@张云龙& data-tip=&p$b$e9306aab1b61e74e7ae6& data-hovercard=&p$b$e9306aab1b61e74e7ae6&&@张云龙&/a& 大侠出一本,但不要放入太多百度的东西,如果有行业的编辑看到,我建议可以组织这样一个话题书籍,会有市场的)。我这么说,你能感受到这里面的职场机遇吗?&br&&br&这是前端从业者的舞台,欢迎加入。&br&&br&&b&十,&/b&&b&关于我的转行和&/b&&b&职业发展的超级野路子——准职业选手转编辑再转php开发再转前端&/b&&br&&figure&&img src=&https://pic1.zhimg.com/9ddf57d6fb15b34d0f79556abf677590_b.jpg& data-rawwidth=&500& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic1.zhimg.com/9ddf57d6fb15b34d0f79556abf677590_r.jpg&&&/figure&先来一张大家很熟悉的图,后面几章我会聊聊此图与coder,可能会是不客观的,甚至是主观的臆断,但我可以保证话题还是有一点新颖性的。不过,我需要做比较长的转行铺垫,所以务必请客官您见谅。我还是建议能看则看,看不下去就真的不要勉强。&br&&br&但如果你对这个话题有兴趣,不妨将就一下看看。&br&&br&&b&(一)&/b&&br&如果有人问我,做写手、编辑的经历对我现在有影响吗?对我个人来说,是正能量,还是负能量?我会不假思索地告诉Ta,有深刻影响,并且是正能量。从某个角度,是非常大的一种优势,而且这种优势可能是从始至终的。&br&&br&为什么?&br&&br&当然,从刚开始切入写程序的时候,可能会有点点羁绊,毕竟从写文字进入到写代码,这是非常规的跳跃。码字是一个相对感性的过程,太过理性的思维是写不出让人拍案的文字的,那些文采飞扬的作品大多是那些性格忧郁、内心情感丰富的人留下,或在不太理性的状态下写出来的,比如酒醉之后,情感受伤之时,抑或是人生失意的那些时刻。这种作品很多很多,就列举了。。。&br&&br&当然,我的文字能力远远达不到这种级别,可能一辈子也没有这种能力,最多就是能用文字把自己的意思表达清楚的水平,这点自觉我还是有的。因此,我是做不了大众文化类的编辑记者的,没这个能力,但是有很多对文笔要求并不高的媒体可供选择,比如IT类媒体。&br&&br&当然,我并不是说IT类媒体就对文字能力就没有任何要求,只是相对低一些。而我所在的报社其实是具备完整的新闻采编资格的(那时候网络媒体还不被承认,网媒大多是没有新闻采编资格的),因此即便文字能力再烂,我也得努力去提高自己的文字水平,做一些参悟文学修养的事,要不老是写一些没什么修养的文字,你也不太可能有资格去做更深层次的内容,或去做采访这种高难度的动作,对吧。&br&&br&因此,我也曾经修炼过类似《如何提高新闻编辑的职业素养》,参阅各种文学作品,甚至也尝试去考取《新闻记者证》这种事情。当然,努力过但无奈能力太弱了,拿不到,简直就是失败编辑的典范。哎!&br&&figure&&img src=&https://pic2.zhimg.com/34a3c07c7d5fda063af2d74ff33d2f75_b.jpg& data-rawwidth=&745& data-rawheight=&522& class=&origin_image zh-lightbox-thumb& width=&745& data-original=&https://pic2.zhimg.com/34a3c07c7d5fda063af2d74ff33d2f75_r.jpg&&&/figure&经过深刻反思后,我觉得自己该转业了,否则一方面平面媒体下坡路的速度在加快,IT类媒体更为明显,另一方面文字修养的缺失,自己是走不好靠码字来生活这条路的。怎么办?&br&&br&当时我是很迷茫的,并不知道自己未来该做什么。但危机意识相对强烈的我,深深地知道,该重新找活路了,但我并不是特别明确具体的方向在哪里?那时我已经27-28了。如果有类似的经历,你一定能感受得到,那种内心的彷徨与挣扎。&br&&br&(如果你能看到这里,我想你应该给我点个赞吧?)&br&&br&但毕竟我所在的媒体和IT很近,很近,经常和各种IT软硬件人士、互联网人士有接触,包括帮他们写写枪稿什么的。&br&&br&我的客户譬如3721、阿里巴巴、百度、网易、搜狗、华硕、微星等,对的,没准某个xxxx平台商家入驻的成功案例就出自咱的手笔,只是你未必知道那是俺们这些文编的随意捏造,但做软件或互联网产品市场运营的人士一定一定知道这里面的猫腻。这是灰色的运营手段,但大家不也天天用吗?而且,很多互联网产品就是这么运作起来的。&br&&br&世界就是这么好玩,许多知名的互联网产品或平台也有它的原罪,也需要通过灰色的手段来完成原始的积累,甚至需要通过“坑蒙拐骗”的方式来教育市场,激活潜在的需求!&br&&br&打住,不能再说了,跑题了。这绝对是我个人的臆想,请别乱猜测,没根没据的,我只是写个故事,你不能当真。&br&&br&&b&(二)&/b&&br&得益于多年媒体的经历(其实也没几年了,3-4年吧,只是大学就开始写稿了,算起来也是码字生涯的一部分,所以对我自己来说是很长的了),或多或少让我具备了比一般人相对灵敏的嗅觉,特别是对行业未来的发展层面上的观察与思考——认定互联网是未来的必然趋势,里面应该有很多职业的机遇,就这样我想着去从事和互联网相关的事情……&br&&br&另一方面,也是因为我喜欢捣鼓研究各种自己不太擅长的东西,比如玩玩吉他(这样是觉得妹子会喜欢),捣鼓计算机软硬件,以及开发程序什么的,例如玩玩wordpress和自己弄一套模板,用phpcms/dedecms等内容系统建个素材站,也或者搞搞dz论坛系统,顺便业余借个企业网站外包的单子,当然还有很多。。。&br&&br&甚至,为了给电脑报、电脑爱好者写出高质量的稿件,我认真地去啃类似《&a href=&//link.zhihu.com/?target=http%3A//book.douban.com/subject/2031396/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&深入解析Windows操作系统 (豆瓣)&i class=&icon-external&&&/i&&/a& 》这样的巨作,膜拜大神级偶像Mark Russinovich,经常去逛人家的博客 &a href=&//link.zhihu.com/?target=http%3A//www.trojanhorsethebook.com/blog/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mark Russinovich's Blog&i class=&icon-external&&&/i&&/a&,意外地锻炼了英文阅读的能力。&br&&br&当然,还会拆开电源、音箱、显卡甚至CPU,研究它们内部线路细节什么的。真的,什么是好电源,什么是烂显卡,CPU多核心与多进程的区别,这些我还算比较清楚的,不过CPU这个玩意真(TM)比较深奥。。。&br&&br&当然,为了努力提高自己的编辑/记者的素养,《如何成为顶级记者》这种作品是要读的。为了改善文字能力,或增长见识吧,还阅读了不少经济类、金融类以及品牌营销类作品,譬如《博弈论》、《货币战争》、《营销管理》、《定位》、《品牌之源》,甚至《资治通鉴》、《变态心理学》这种玩意都还涉猎过……&br&&figure&&img src=&https://pic4.zhimg.com/e40a51b2f346c910ec838f_b.jpg& data-rawwidth=&2448& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&2448& data-original=&https://pic4.zhimg.com/e40a51b2f346c910ec838f_r.jpg&&&/figure&其实,我还未曾告诉你,咱一度+差点成为了电竞职业选手,要不咱们来玩玩《星际争霸》,曾经水平大约在VS平台16/17级的样子,Terran选手,现在最多5级,老了打不动了,APM太低了,操作不了那么多兵种,TVP、TVT的机械化玩法或许还能搞搞,但极限暴兵流或TVZ的SK打法是玩不了的,对APM要求太高了,但给点时间,让我找回点点意识,或许跟你玩玩超低APM的意识流大招,黑死你……对,“意识流”,这个词上面我用过,这是电竞行业术语,我没有乱造词吧?&br&&br&如果没有记错,我似乎和魔兽人皇sky有过星际的对战记录,那时他还在打星际(真的他曾经打过星际,Home战队),每当我职业发展不顺的时候,还偶尔到浩方平台扮鸟,找心理平衡,当然也经常碰到被找平衡的。&br&&br&大家应该知道的,电竞是1万个人中可能只有1-2个人有饭吃,其他人都没得吃的行业,这明显不适合资质普通的玩家,比如我,电竞是玩不的了,那只有转行当写手吧。其实,那时我大学还没玩完,就出来做编辑了,也就是没毕业就做和专业无关的事情,码字的编辑。&br&&br&为啥?通宵练级是要钱的,没钱就给IT媒体写写稿子,挣网吧费。你说这个法子,可行吧?&br&&br&你知道的,电子游戏玩得不赖的人,电脑知识还是很丰富的,那就给IT媒体供稿其实不是什么有难度的事情,而且那时候IT媒体稿费比大众文化类媒体还要高一点,毕竟懂电脑的人真的不多,而电脑知识的普及初期就必然让拥有这方面知识的人价值高那么一点点。真的,如果骗你,那就让我的代码天天爆出bug,这么毒的誓言,你不会不信吧??&br&&br&玩电竞游戏的,其实都是穷鬼,拥有一个游戏以外的谋生手段是必要的,所以我就开始多多写稿,写着写着就成了编辑,这个过渡还算自然的,对吧?&br&&br&尼玛,这位答主明显在吹牛了……都说了,这一章不会那么客观的,只是我的个人臆想,就是在努力说明我的路子有多野,仅此而已。&br&&br&&b&再次,我真的要请你不要当真,权当这一章是答主我在写一篇半路转行当程序员的YY小说好了。因为连我自己都觉得,这样才是符合逻辑的。嗯,就是这样才符合逻辑,要不这样的职业路子,谁都走不通,形成不了闭环。&/b&&br&&br&不过呢,如果你想约我打星际,有空我们可以找个地方联机,比如QQ对战平台,没玩过星际的或只能和电脑玩玩的,我让你一个SCV或让你再加一家电脑玩家,输赢无所谓,就当娱乐,做个朋友也行,咱们“不能打一辈子星际,却能做一辈子朋友”,有兴趣私信约战吧。&br&&br&-------------------------------&br&不说游戏了,我觉得这一章有点点乱,需要稍微简单整理一下,从大学开始之后的事情以及职业发展线路:&br&&br&&b&大学与游戏&/b&&br&大一 --&
--&开始变坏,玩游戏 --& 大三 --& 变得更坏,通宵玩游戏 --& 玩出花样了,参加比赛
--& 投入更多时间练习,烧钱(小钱) --& 没钱,挂科
--& 大四补 --& 没钱升级 --&
--& 白天写稿,晚上打联赛
--& 发现写稿似乎可以致富(大四上半学期基本每月可以拿到4K左右的稿费,别人找工作大多数是达不到这个水位的)--&卖力写稿 --& 大四下半学期被招安当编辑(非编制内的),结果是忙于写稿和打比赛忘记把学位这玩意拿到手里面了。。。甚感遗憾&br&&br&&b&编辑与枪手&/b&&br&上班 --& 写稿 ,玩游戏 --& 上班 --& 写稿 ,偶尔玩游戏,研究php系统 - -& 上班 --& 写稿,写枪稿,捣鼓php开源系统 --& 危机(06/07年),IT媒体日渐衰落,软件硬件厂商的广告投放开始缩水,并逐步向网络媒体倾斜,比如太平洋、zol之类的。。。怎么办?--& 痛苦中写稿,写更恶心的枪稿
--& 偶尔发现企业网站开发需求,用dedecms/phpcms/dz接单 --& 转行外包&br&&br&&b&外包项目--&企业站开发、维护,可能包括运营+运维,此外还是要做外包&/b&&br&……&br&(痛苦的经历,不想再写了)&br&&br&&b&电商 --&&/b&&b&电商 --&&/b&&b&电商 --&&/b&&b&电商 --&now&/b&&br&……&br&(请回头看上面的章节)&br&&br&(这种路子够野吧?请记得点赞!!我需要鼓励,要不这程序没法继续跑下去了)&br&&br&&b&十一,个人&/b&&b&素养与coding(一)——我是如何&/b&&b&反复“打怪”强化“代码素养”的?&/b&&br&打住!一定要打住了。铺垫大约就这么多了。咱们还是回来说说素养和coding这两件事情。&br&&br&两个词,coding就不用解析了吧?咱们来谈谈何为素养?&a href=&//link.zhihu.com/?target=http%3A//baike.baidu.com/link%3Furl%3DCbQ7aGM2RRSwteVGzLkCIsLuGQ4PhXgL4Ls1u8t_D6NQjQxsofUgcJxt71jHAwOEj-AxHhJgLKqbyRWu0UhPfK& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&素养_百度百科&i class=&icon-external&&&/i&&/a&&br&&blockquote&素养,谓由训练和实践而获得的技巧或能力。《&a href=&//link.zhihu.com/?target=http%3A//baike.baidu.com/view/18673.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&汉书&i class=&icon-external&&&/i&&/a&·李寻传》:“马不伏历,不可以趋道;士不素养,不可以重国。” 宋陆游 《上殿札子》:“气不素养,临事惶遽。” 《&a href=&//link.zhihu.com/?target=http%3A//baike.baidu.com/view/108044.htm}

我要回帖

更多关于 部落冲突疯蛙解说 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信