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年
成長,是永遠的課題。
我喜歡朋友以前講的一個比喻:當你想要開車去周遊世界時,並不需要給自己的車裝滿足夠跑完整個世界的油量,而只需要加滿第一箱油就可以了,路上有那麼多加油站,你隨時都可以加油,路上有那麼多的人,你也不用所有的事都只靠自己,想要一箱油就跑完整個世界的人遍地都是,但他們可能永遠都不會出發,只有那些真正經歷過的風景,才會讓人真正變得豐富起來,哪怕看風景時的你狼狽不堪。
入行的前三年,我花了大量時間打基礎,因為想走得更遠,而不是走的更快。軟體開發本質上是一個工程領域,這意味著知識只能起到有限的指導作用,而經驗技巧和最終落地後能產生價值的東西,通常都是要一步一步實踐總結和探索才能得到的。就好像你在學校裡學了很多理論知識,畢業後走進工廠的時候還是會一臉懵逼,知識到技能的轉換是需要一個過程的。
下一個三年,我希望自己把更多的精力花在實戰經驗的積累上,同時學著從更高的層面去理解技術、系統、團隊和業務。單一方向的知識儲備紅利讓我有資格擠進現在的賽道,但自己內心裡非常清楚,後面的路只靠技術很可能越走越窄,而更高層次的機會意味著更加綜合的能力棧,而專業技術僅僅是其中一個板塊,甚至是權重並不高的板塊。成長就是不斷地打碎自己然後重塑的過程,其實最重要的,也不過就是一些勇氣和耐心吧。
未來,路還很長,原下一個三年,能遇見未知的自己。