github总基地:http://www.github.com/dashnowords/blogs
博客园地址:《大史住在大前端》原创博文目录
华为云社区地址:【你要的前端打怪升级指南】
字节跳动幸福里大前端团队邀请各路高手前来玩耍,团队和谐有爱,技术硬核,字节范儿正,覆盖前端各个方向技术栈,总有位置适合你,Base北京,社招实习都有HC,不要犹豫,内推简历请直接瞄准shiwenqiang@bytedance.com~
你配得上所有美好的事物,但你必须自己主动去拿。
10000小时练习
关于10000小时定律,你可能在很多鸡汤中都看到过,大致的意思就是说人们眼中的天才都是付出了持续不断努力的,10000小时的练习是一个人从平凡成为领域专家的必要条件(我感觉到有杠精已经在摩拳擦掌了)。
我第一次找到一份前端工程师的工作是在2017年7月底的时候,那时候除了自学的一点点angular.js
的技能外,没有任何正规的技术从业经历,找同学帮忙内推菊厂,投了5个部门,4个无音信1个婉拒,然后就没有再坚持。我依然记得那是2017年夏天最热的时候,每天拿着简历顶着大太阳,奔走于各家小公司去面试,最终大概花了一周的时间后,过了3轮面试然后进了西安的一家外包公司。
2020年8月,我有幸成为字节跳动的一名前端工程师。算起来入行3年零1个月,如果每周按6
个工作日算,平均每个工作日11
个小时,那么这段时间大约就是(52周*3年+4周)*6工作日/周*11小时/天=10164
,也就算是刚刚熬过了10000小时,作为年近三十才转行的野生码农来说,这样的结果来之不易,从外包进大厂有多难,圈内的人都明白,运气之余,也有自己脚踏实地的努力。这篇文章写于入职后的一周,希望跟过去告个别,然后自信地抬起头,在新的生活里Inspire Creativity,Enrich Life!
我做对的事情
-
努力工作,及时复盘
在职场里,这永远是第一原则,过去的工作里我的平均绩效在
B+
的水平,至少自己不会因为工作内容枯燥简单就草率对待。及时复盘,把经验沉淀下来,但一定要强迫自己反思,无论是学会了什么新技术,或者观察自己在面对一些事情时采取的策略,或者对产品和业务的想法等等,写什么都可以,但一定要做。 -
补习JS基础
2017年入行开始,我做的第一件事情就是补JS基础,不夸张地说,当时即便能够用
angular.js+php+mySQL
写出可以交付的完整产品,我却连JS里的数组方法和字符串方法都分不清楚,基础特别差。几乎每天早晨5点就起床,然后看书看博客记笔记,犀牛书,红宝书,蝴蝶书,忍者书等等市面上能找到的一本一本看,就这样近2个月的时间里基础知识水平大幅提高了,当然最终你会意识到JS基础和减肥一样,都是近乎永恒的话题。 -
参与一个简单的JS开源项目
2017年8月中旬,我在
github
上偶然看到一个讲原生JS编程的小项目——【JavaScript30】,这是一个为期30天的编程练习,希望帮助开发者了解JavaScript原生语法。当时自己就每天跟着项目做练习,每道题目都要求自己用ES5
和ES6
的语法写两个版本,然后再去看其他人的分析和编码,2个礼拜后,发现自己一直跟的那个作者断更了,后续的部分都没再提供源码和注解,于是自己开始贡献代码,编写解题指南,提供扩展题目和自己的答案,用了近2个月的时间,完成了后半部分的题解,这个项目已经1400
多Star了,如果你也是JS新手,不妨跟着练习一下【JavaScript30解题指南】。尽管这不是什么知名的轮子,但是参与开源项目本身是一种不错的经历,它的门槛并没有想象的那么高,但却能够刷新你对自己的认知。 -
接了一些私活
这是个稍微有些敏感的话题,但已经很久不做了(因为时间投入到其他事情上可能长期收益更大,总有一天你也会走到这一步),觉得这些经历对自己还是很有意义的。我其实很推荐技术还不错且有余力的同学至少完整地做一次私活,你可以自己去网上找或者通过熟人介绍,你可能还会面临和其他人竞标,可能会把最终能落入自己口袋的收益想象得过高,可能还要自己拟协议,过程中除了搞定自己的开发,还要督促着其他协作者,甚至最后被队友拖累,或者为了要到尾款而不得不装孙子、送礼、请吃饭,程序员的那点傲娇和面子在真实的世界分分钟被轰的一地鸡毛,那时你才明白,成年人的世界没有“容易”,世界上也没有那么多“应该”。我接私活有个原则,只接自己不会的,如果一个私活对我来说没有任何锻炼,自己会引荐其他人。签了协议,没有退路了,你会发现其实学点新技术也没那么难,我就是用这样的方式学会了使用
RN
,ionic
,Python
,Three.js
等等很多技术,也在一些规模稍大的项目中锻炼了虚线带组的能力,而这些东西,在常规的小公司和工作中几乎是没有机会的。 -
坚持听前端公开课
算是个硬广告吧,我从入行时起,在网上看到了京程一灯的介绍,那时候公开课才做到第3期,只记得当时老袁(就是京程一灯的创始人)讲1个小时的10行代码,自己下去查资料搞了5个多小时才整明白,但他勾画的前端知识体系的蓝图真的让人充满期待,由于个人时间关系,我直到今年才报名了精英班的课程,但3年间光是免费的公开课几乎也听了一百多节,也是这样的机缘才让自己能在过去重度依赖
angular.js
的外包工作环境里,保持对前端前沿技术的关注和了解。另外像是慕课网的基础课程(自己前两年几乎把前端大类的免费课程全看了,App统计的学习时间约1000
小时),极客时间的专题(别舍不得那点投入,少撸一顿串不就有了,尤其是每年GMTC大会的视频),阿里D2的视频(优酷上有),今年掘金上大火的《前端早早聊》大会,都是很不错的,可以挑感兴趣的听听看,比如定个计划每周看一个视频,其实很快就看完了。掘金我刷的并不算频繁,不夸张地说,在自己2年前端经验的时候,上面的文章我几乎是看不懂的,因为工作里用不到,我并不知道别人在讨论什么在分享什么,现在周末会抽时间上去看看。 -
持续学习,写技术博客
2018年5月,大约1年左右工作经验时我开始尝试写技术博客——《大史住在大前端》,自己博客里整理出来的文章看起来都是规范认真的,但其实我写的第一篇文章,仅仅是描述在一个vue工程里,组件里引用图片时路径的写法和webpack里的配置应该怎么对应,它浪费了我一整天时间,一共不到300字,我真的尽力了......我的方法是每个月初找一个前端领域自己不熟悉的技术,然后这个月的学习和博客都围绕着这个主题展开(所以自己的博客大都是系列专题性质的),最终1年半的时间,大约写下了110多篇不掺水的博文,大多都是基础知识的学习笔记(因为工作环境的关系,实在没有机会输出什么有价值的实践经验,只能不断去夯实基础),刚开始并没有什么目的,写东西是自己的学习方式,它可以帮助我检验自己是否真的弄懂了某个知识点,后来的收获都是意料之外的,在【仰望星空的人,不应该被嘲笑】这篇文章中描述了很多,不再展开,希望你也能保持学习和输出,只要开始,总是不晚的。
-
做了一次外部的技术分享
工作里其实也做过不少公开的技术分享,还有被邀请去其他组做分享的,并不是说你必须技术非常牛逼才可以分享,毕竟分享不是装B,你要做的是让别人知道自己有认真思考过一些东西,而且愿意分享,这才是非常重要的,当然这也能在一定程度上帮助你克服自卑心理。2019年11月,大约2.5年工作经验的时候,有幸在谷歌西安开发者社群的年会上做一些关于浏览器方面的知识分享,很认真地准备了PPT(其实我可喜欢做ppt了),也认识了很多新朋友。这样的机会不多,如果有遇到,希望你尽量抓住,否则当你还一脸羞涩的给自己加内心戏的时候,机会可能就被别人拿走了,觉得自己行和觉得自己不行的人,往往都是对的。
-
付费参加业界前辈的成长咨询计划
2020年过年时,大约2.5年工作经验的时候,报名了Scott的前端早早聊咨询营(就是掘金上经常霸屏的那个前端早早聊)。这是一个为期2年的1对1技术咨询计划,任何你遇到的职场问题或者技术问题都可以找Scott约谈,他的经验和资源足够覆盖你遇到的大部分实际场景,我更倾向整理好提纲和自己的一些思考,提高沟通质量。有人带路是非常重要的,但咨询并不是保姆,只有你自己先搞明白面对的问题是什么,别人才可能更好地帮助到你。很多时候别人不是不愿意帮助你,而只是不知道怎么帮。当然这种咨询模式是见仁见智的,我想对于Scott自己来说也是一种模式的探索,如果你是那种等着别人找上门来给你指导的,那可能并不适合这种形式。
-
机会摆在面前时,请走出舒适圈
当你发现自己处在一个困局时,是否还有勇气走出舒适圈呢?2019年底,大约入行2.5年时,我面试了很多西安和杭州的大厂,尽管几乎全都到了HR面的环节,但最终只拿到了2个很一般的Offer,摆在我面前的有两条路,接受少量涨幅的薪资然后留在西安,或者选择大幅度涨幅的薪资去杭州,如果这时候的你已经30岁了,有车有房还单身,你能接受去另一个城市吗?我能,相比于孤独,平庸更难以忍受,也因为自己知道,如果留下,4~5年后的自己很可能因为眼界和能力而被职场淘汰。
在杭州的工作仍然是外包,虽然枯燥但也不是特别忙,工作氛围也不错,但是当我在工作中看到正式员工承担的任务和能够调动的资源后,很快就意识到虽然大家都在一起办公,但其实并不在一个赛道上,他们受到的锻炼和成长的速度远远超过外包员工,而作我们只是在别人参加完一场场战斗后过来帮别人打扫战场的,当我想要主动去学习更多时,桌面上通常只会跳出那刺眼的提示“外包同学没有权限”。这种环境最可怕的地方在于,处处存在的差异化待遇会让人养成“受害者心态”,觉得面临的一切都是客观环境造成的,最终忘了自己还有选择的权力和能力。
原本的计划是参加完京程一灯半年的课程后,等到2021年春季再挑战大厂,base杭州,但是在一灯班主任的严厉督促和全程盯梢下,意外且幸运地拿到了字节的offer,只是base在北京且薪资涨幅也没有达到自己的期望。刚刚习惯杭州生活的我再次面临选择,是再次走出舒适区抓住进大厂的机会(北京租房是真贵,其他消费其实并不夸张),还是按照自己的规划稳扎稳打半年后再挑战杭州的大厂,短暂的咨询和考虑后,我选择了北京。想起了那个上帝解救信徒的故事,机会到来的时候,它并不一定是你期望的样子。
在字节跳动开始工作后,我很庆幸自己没有错过这次机会,对于一个只在外包公司工作过的技术从业者而言,它真的意味着另一个世界。
被“字节范儿”圈粉
大厂真正的价值,并不是那些显而易见的福利待遇和光环,而是一个野蛮进化的机会。
-
国内顶级的福利待遇
字节的福利待遇是圈内公认的好,好到让我头一天下班时站在天桥上感慨得差点哭出来,在外包真的没经历过这样的待遇,上班不打卡,住宿有房补,免费的三餐下午茶健身房,顶配的16寸MacBook,27寸4k的大屏幕连着双屏还能直接给电脑充电(领显示器的时候IT小哥说如果有需要还可以再申请一个24寸的),错过周年庆的我还补领了团队的周年纪念大礼包,周围同事也是大咖云集,而最让我欣慰的是不用再因为外包的身份被区别对待。
没有在外包公司待过的读者可能无法体会这种对比有多强烈。在外包公司的时候,我入职比其他人晚结果只领到了13寸的macbook,IT告诉我最近没货了,到组里后发现除了我以外其他人用的都是16寸的,外包同学的工卡和正式员工的颜色是不一样的,那种低人一等的感觉真的很难描述,我的工牌还特别不一样,园区各处的门禁都刷不开,真的造成了很多麻烦,天天在楼下被保安拦住,我心里不痛快,一度都只把工牌装在口袋里。那时也申请过显示器,然鹅连到电脑后平均5分钟黑屏一下,黑了3次以后我就再也没用过,我知道可以去换,但真的懒得费那个功夫。工作中用到的连接线、数据转换芯片什么的,也都是自费从某宝买的,测试使用的付费账号也是自己充钱的,更不用提跟正式员工合作时那种人微言轻的感觉了。
没有黑外包公司的意思,客观讲福利待遇和薪资方面外包比很多小公司都更好,但它能带给技术人员的提升和精神收获真的有限,每个人的想法和追求也不一样,它总归是能满足一大批人的诉求。
友好的入职流程和巨大的知识库
公司安排了非常细致的入职培训,从企业文化、价值观,到各项规范制度和工作方式,再到办公软件的技巧、福利待遇介绍等等,真的很用心。入职当天主管和导师就找你沟通发展规划和期望,告知字节工程师的原则、红线和基本工作流程,以往的工作环境里真的从来没有人跟我聊这些;一切行政事务都可以通过飞书联系到相关部门,真的很方便。字节的知识库建设真的让人佩服,统一的入口可以导航到海量的指南和知识沉淀,甚至其他各个产品线整理的技术和业务文档等等,唯一的问题就是留给社招同学消化这些海量资料的时间非常有限,想起《鹿鼎记》中陈近南对韦小宝说“这本只是绝世武功的目录,那边那堆才是绝世武功的秘籍......”,最终能消化吸收多少,那就取决于自己的意愿和行动了。
我看到了认同
很多同事喜欢穿字节的文化衫,7周年的,8周年的,很多女生背着印着字节LOGO的帆布袋,还有很多定制的周边产品,开会的时候大家经常会拿“字节范儿”的要求来当论据,也会用“字节工程师文化”作为原则开怼,你可以说这是“洗脑”,但它本质上是一种价值认同。我到今天依然可以背诵大学的16字校训,身处低谷的时候常常用它鞭策自己,这依旧源于认同。这些精神层面的东西承载着我们内心深处的骄傲,在逆风的时候给我们挺住的信念,信是所望之事的实底,未见之事的确据。这种事真的不用太较真,我只是谈谈自己的观点,你怼我被洗脑,我怼你没信仰,相视一笑心里互骂一句傻X,擦肩而过自己开心就好。
追求极致的工程师文化
参加了2次周会的代码检视,负责主持的同事会提前把周会大纲发到群里,从业3年我还是第一次经历这样的代码检视,被“示众”的代码从业务功能的实现上来说通常没什么问题,大家讨论的是逻辑策略、编程风格、某个语法糖的优劣,甚至性能和设计模式,没讨论清楚的知识点,很可能几天后就会有同事在群里发文档来阐述自己理解,积极主动且思维活跃,这样的同事和技术氛围真香。想起以前我们代码检视的时候,70%以上的case都围绕着一个叫做“魔鬼字符串”的术语,对比之下真的有些Low了。来到字节以后才知道,原来你觉得产品设计不合理的时候是可以沟通甚至拒接的,原来接口的mock数据是可以直接要求后端同学提供的,原来除了无奈接锅以外还有很多坦诚有效的合作方式。
辛苦,但心不累
忙碌且生机勃勃,这是自己在字节工作一周时的感受,忙是真的忙,但是有收获,公司在野蛮进化,每个个体也在快速成长,当然也可能是新鲜感麻醉了自己的疲惫。有人说1.2倍的成长速度让人欣慰,1.5倍的成长速度让人焦虑,2倍的成长速度让人痛苦,更高的速度让人崩溃,你能承受哪个级别的压力,就能拥有哪个级别的成长速度。我并不羡慕那些以更快的速度成长的人,毕竟成长是需要付出代价的,而每个人能接受的代价不可能都一样,我更希望找到更适合自己的节奏。由于刚上手工作,业务还不熟悉,我几乎每天都是11点多才离开办公室的,即便如此,同事分享的很多技术资料也只能先躺进收藏夹里,我还没有学会如何更好地调度时间,可能这样的节奏还会持续一段时间,但我却乐此不疲,朋友说这是因为“有成长,心不累”。工作之余,字节的人也很会玩,有人喜欢骑行,有人喜欢狼人杀,有人喜欢游泳健身练瑜伽,这和自己之前对大厂的印象倒是很不一样,不过混在年轻人的圈子里明显感觉自己也变年轻了(不要打我,也不接受吐槽)。
我开始关注工作效率
以前觉得自己的工作效率和时间管理做的还不错,至少能拿出时间做一点大家想做却没有做的事情,但现在才发现这也许只是错觉,你总做容易的事情,当然不会感觉到时间的压力,即便是项目进度比较紧的时候,加加班,搞搞996似乎也就那么回事。我们通常都会愿意延长时间,而不是考虑如何提高效率,在同样的时间内完成更多的工作,当然也有很多不言自明的客观原因。
但是如果有一天,你发现手头的事情多到如果只靠加班根本就不可能做完时,反而会开始思考如何提高做事的效率,时间就像R沟,挤挤总是有的。我买了时间和精力管理的书籍,想审视一下还有哪些是自己可以尝试的;买了新的机械键盘,因为不习惯macbook的键位和敲击感会降低我敲代码的速度;买了Logitech anywhere 2S鼠标,因为觉得触控板实现同样的动作速度有点慢,但是又不想舍弃触控板的快捷手势;买了KOKUYO的活页本和周计划矩阵的内页,因为觉得放在手边的ToDoList比云文档更容易跟进检查OKR的落地情况,而且它非常适合以周为单位来安排要做的事情.....然后又制定了一系列深入学习工作中常用工具的规划,这种细枝末节的时间累计起来真的很吓人,你一个操作用5秒,别人用快捷键可能就1秒,一两次操作看起来差别并不大,如果类似的事情每天发生几百次你试试看?工具是为了提高生产效率而存在的,但提效的前提是你必须对它足够熟练,如果你即将上战场,恐怕不会把枪械的使用方式大概熟悉一下就冲吧,熟悉工具的过程是新习惯养成的过程,必然会有很多不适应,但扛过去了,那真的就很香了。或许可以搞个学习小组,大家一起玩可好?
下一个3年
成长,是永远的课题。
我喜欢朋友以前讲的一个比喻:当你想要开车去周游世界时,并不需要给自己的车装满足够跑完整个世界的油量,而只需要加满第一箱油就可以了,路上有那么多加油站,你随时都可以加油,路上有那么多的人,你也不用所有的事都只靠自己,想要一箱油就跑完整个世界的人遍地都是,但他们可能永远都不会出发,只有那些真正经历过的风景,才会让人真正变得丰富起来,哪怕看风景时的你狼狈不堪。
入行的前三年,我花了大量时间打基础,因为想走得更远,而不是走的更快。软件开发本质上是一个工程领域,这意味着知识只能起到有限的指导作用,而经验技巧和最终落地后能产生价值的东西,通常都是要一步一步实践总结和探索才能得到的。就好像你在学校里学了很多理论知识,毕业后走进工厂的时候还是会一脸懵逼,知识到技能的转换是需要一个过程的。
下一个三年,我希望自己把更多的精力花在实战经验的积累上,同时学着从更高的层面去理解技术、系统、团队和业务。单一方向的知识储备红利让我有资格挤进现在的赛道,但自己内心里非常清楚,后面的路只靠技术很可能越走越窄,而更高层次的机会意味着更加综合的能力栈,而专业技术仅仅是其中一个板块,甚至是权重并不高的板块。成长就是不断地打碎自己然后重塑的过程,其实最重要的,也不过就是一些勇气和耐心吧。
未来,路还很长,原下一个三年,能遇见未知的自己。