《Web全棧工程師的自我修養(yǎng)》這本書(shū)是在豆瓣淘書(shū)的時(shí)候看到的胧谈,評(píng)分還不錯(cuò)玖院,就在工作室購(gòu)書(shū)的時(shí)候,隨便就寫(xiě)了上去了第岖。想買(mǎi)這本書(shū)起初就兩個(gè)原因。一是:因?yàn)榈谝粯涌吹竭@個(gè)書(shū)名的時(shí)候就讓我很印象深刻试溯,因?yàn)槲矣浀糜幸槐窘醒輪T的自由修養(yǎng)的蔑滓。二是:自己對(duì)全棧很感興趣,第一次聽(tīng)到全棧這個(gè)詞就感覺(jué)很新鮮遇绞,找了好多腦圖键袱。但是我對(duì)全棧還是沒(méi)有很清晰的定義。直到遇到了這本書(shū)摹闽。讀了兩遍:感覺(jué)提升了對(duì)全局的視野蹄咖。
什么是全棧工程師?
文中的有兩種解釋?zhuān)?/p>
一是:一些高級(jí)工程師向上下游擴(kuò)展自己的能力并承擔(dān)了更多的責(zé)任付鹿。對(duì)公司帶來(lái)收益并且自己也得到了提升澜汤。
二是:創(chuàng)業(yè)公司或者小公司的程序員自愿或非自愿的去做那些自己“舒適區(qū)”外的工作,自己承擔(dān)了更多的責(zé)任舵匾,對(duì)公司對(duì)自己都得到了很大的提高俊抵。
但大多數(shù)全棧工程師的成長(zhǎng)都不是靠外力,而是自我驅(qū)動(dòng)坐梯。當(dāng)然徽诲,很顯而易見(jiàn)。
如何成為全棧吵血?
每個(gè)小菜鳥(niǎo)都有想成為全棧的夢(mèng)想谎替。當(dāng)然只能從少到多,慢慢積累經(jīng)驗(yàn)和知識(shí)蹋辅。作者推薦了一種方式:“先精后廣钱贯,一專(zhuān)多長(zhǎng)”的學(xué)習(xí)流程。這個(gè)也比較符合一般人的職業(yè)發(fā)展晕翠。先在一個(gè)特定的方向上有比較深入的鉆研喷舀,然后再將學(xué)習(xí)目標(biāo)漸漸推廣開(kāi)來(lái)砍濒。
還有兩個(gè)建議:一是圍繞商業(yè)利益為目的,歸根結(jié)底硫麻,技術(shù)是服務(wù)于商業(yè)目的的爸邢。二是關(guān)注用戶體驗(yàn),(不要說(shuō)我們技術(shù)的就不用太上心用戶體驗(yàn))拿愧,因?yàn)槊恳粋€(gè)糟糕的體驗(yàn)背后都蘊(yùn)含這商機(jī)杠河,而且你要學(xué)會(huì)做自己會(huì)用的產(chǎn)品。
上面就是對(duì)全棧工程師的三個(gè)能力:一專(zhuān)多長(zhǎng)浇辜、關(guān)注商業(yè)目標(biāo)券敌、關(guān)注用戶體驗(yàn)。
三種人:
一:學(xué)生
作者對(duì)學(xué)生的建議柳洋,
在校園要把握好校招的機(jī)會(huì)待诅。
對(duì)工作的選擇中崗位優(yōu)先于公司。
畢業(yè)之后選擇大公司對(duì)自己發(fā)展前途來(lái)說(shuō)更加明智熊镣。
1.小風(fēng)險(xiǎn)
2.垂直專(zhuān)精的技能
3.服務(wù)海量用戶的經(jīng)驗(yàn)
4.軟技能
5.人脈
6.心態(tài)
對(duì)實(shí)習(xí)的建議:
1.是記住團(tuán)隊(duì)里的每個(gè)人卑雁。
2.有任何問(wèn)題,主動(dòng)問(wèn)導(dǎo)師绪囱。
3.主動(dòng)介紹自己测蹲,請(qǐng)大家多關(guān)照。
4.每周總結(jié)心得鬼吵、經(jīng)驗(yàn)教訓(xùn)扣甲、學(xué)習(xí)成長(zhǎng)。
5.實(shí)習(xí)結(jié)束齿椅,總結(jié)所有項(xiàng)目琉挖,給出交接文檔,并向大家致謝涣脚。
二:野生程序員
對(duì)“野生程序員”的定義是:沒(méi)有計(jì)算機(jī)基礎(chǔ)知識(shí)和相關(guān)教育經(jīng)歷粹排,靠著計(jì)算機(jī)開(kāi)發(fā)興趣進(jìn)入這個(gè)行業(yè),雖然知識(shí)面比較廣涩澡,但各方面都一知半解的開(kāi)發(fā)者顽耳。
顯然這樣字是不好的。自己沒(méi)有什么競(jìng)爭(zhēng)力妙同。
下面作者給出的能力模型例子每項(xiàng)都差不多60分左右射富,而且也有精通的技能,就應(yīng)該不錯(cuò)的例子粥帚∫群模可以對(duì)照自己做一個(gè)自己的能力模型去評(píng)估看看。缺少什么芒涡,要補(bǔ)充什么柴灯。
三:工程師
對(duì)工程師的事業(yè)指南
有3個(gè)關(guān)鍵:技術(shù)卖漫,成長(zhǎng),聲望赠群。
技術(shù):當(dāng)然不用說(shuō)的啦羊始。缺什么少什么,不用說(shuō)查描,去補(bǔ)就好了突委,你自己一定更加清楚。
成長(zhǎng):對(duì)于成長(zhǎng)最好的解釋就是累計(jì)自己的作品集冬三。一份作品集比簡(jiǎn)歷更能說(shuō)服人匀油。要善用GitHub,而且不要自己感覺(jué)自己的代碼不夠好而不開(kāi)源,這樣很不好勾笆,也不是理由和借口敌蚜。
聲望:就像那個(gè)什么都懂的人。感覺(jué)他什么都能解決窝爪。身邊是不是有這種人钝侠,可能你喜歡也可能你不喜歡,但是你一定不會(huì)排斥成為這樣的人酸舍。很簡(jiǎn)單,就是“答應(yīng)做的事情里初,全部都要完成啃勉,但是你也要學(xué)會(huì)正確的拒絕∷粒”
全棧工程師需要的一些重要技術(shù)
?HTTP
前端的視角
發(fā)出的請(qǐng)求列表
每個(gè)請(qǐng)求的開(kāi)始時(shí)間
每個(gè)請(qǐng)求從剛開(kāi)始到結(jié)束花費(fèi)的時(shí)間
每個(gè)請(qǐng)求的類(lèi)型
每個(gè)請(qǐng)求的狀態(tài)碼
每個(gè)請(qǐng)求產(chǎn)生的流量消耗
每個(gè)請(qǐng)求gzip壓縮前的體積淮阐,以及在本地gzip解壓后的體積
優(yōu)化方案
盡量減少同一域下的HTTP請(qǐng)求數(shù)等
盡量減少每一個(gè)資源的體積,壓縮合并等
后端的視角
提高服務(wù)器的請(qǐng)求處理能力刁品。利用nginx等服務(wù)器做負(fù)載均衡等
預(yù)防DDoS攻擊泣特。生成靜態(tài)頁(yè),利用cdn等
緩存
服務(wù)器緩存
基本的數(shù)據(jù)庫(kù)查詢緩存
使用擴(kuò)展數(shù)據(jù)庫(kù)緩存和緩存工具挑随,如memcached
再加一層文件緩存状您。
?????? 查找優(yōu)先級(jí):內(nèi)存緩存 ——> 文件緩存 ——> 數(shù)據(jù)庫(kù)
頁(yè)面靜態(tài)化
瀏覽器緩存
Expires
Last-Modified
Cache-Control
Restful Web API
移動(dòng)端
混合App:web技術(shù)?+?原生程序外殼
而且移動(dòng)端是趨勢(shì),都應(yīng)該去接觸一下兜挨。
持續(xù)集成
版本控制
SVN(集中式版本控制)
Git(分布式版本控制)
最佳實(shí)踐
鼓勵(lì)頻繁的提交
確定分支流程
定義主干原則膏孟,并且堅(jiān)守它
不要把邏輯的修改和代碼格式化操作混在一起
不相干的代碼分開(kāi)提交
保持工作代碼庫(kù)的“干凈”
包管理
Nmp
Bower
根據(jù)Semver的規(guī)范,版本號(hào)用小數(shù)點(diǎn)分隔為三個(gè)數(shù)字拌汇。比如v3.2.1中3是主要版本號(hào)柒桑,2是次要版本號(hào),1是補(bǔ)丁噪舀。
主要版本號(hào):有API變更導(dǎo)致不兼容舊版本的時(shí)候使用
次要版本號(hào):新增功能魁淳,但是向前兼容的情況下使用
補(bǔ)镀:修復(fù)向前兼容的bug時(shí)使用
全棧工程師的成長(zhǎng)途徑
初級(jí)前端知識(shí)體系
對(duì)瀏覽器兼容性的了解
對(duì)HTML/CSS/Javascript語(yǔ)法和原理的理解
對(duì)編輯器和插件的熟悉程度
對(duì)調(diào)試工具的了解程度
對(duì)版本管理軟件的熟悉和應(yīng)用經(jīng)驗(yàn)
對(duì)前端庫(kù)/框架的使用
標(biāo)準(zhǔn)/規(guī)范
中級(jí)前端知識(shí)體系
對(duì)代碼質(zhì)量、代碼規(guī)范的理解
對(duì)Javascript單元測(cè)試的熟悉
對(duì)性能優(yōu)化的應(yīng)用和理解
對(duì)SEO的應(yīng)用和理解
代碼部署
移動(dòng)Web
高級(jí)前端知識(shí)體系
代碼架構(gòu)
安全
對(duì)自動(dòng)化測(cè)試的理解
VPS選擇
內(nèi)存一般是主要瓶頸界逛,建議選擇最少512MB
CPU是相對(duì)沒(méi)那么重要的性能指標(biāo)
硬盤(pán)的大小和讀寫(xiě)速度是關(guān)鍵
服務(wù)商的客戶服務(wù)
自己搭建網(wǎng)站是個(gè)很費(fèi)時(shí)費(fèi)力的事昆稿,途中會(huì)碰到很多問(wèn)題,確實(shí)可以學(xué)到很多東西仇奶,適合有精力有興趣的同學(xué)貌嫡。
全棧工程師擴(kuò)展技能
設(shè)計(jì)模式
創(chuàng)建型模式。用來(lái)創(chuàng)建對(duì)象的模式该溯,它對(duì)實(shí)例化的過(guò)程進(jìn)行了抽象岛抄。如單例模式
結(jié)構(gòu)型模式。主要解決類(lèi)狈茉、對(duì)象夫椭、模塊之間的耦合關(guān)系。如適配器模式
行為型模式氯庆。用來(lái)識(shí)別對(duì)象之間的常用腳力模式并加以實(shí)現(xiàn)蹭秋。如觀察者模式
設(shè)計(jì)原則
DPY?? Don’t?Repeat?Yourself
慣例優(yōu)于設(shè)置。
KISS原則? Keep?it?simple堤撵,stupid
最少知道原則? 減少耦合仁讨。
高效方式
閱讀英文資料
??? 英文的技術(shù)資料更多
??? Google的搜索能力非常強(qiáng)
??? 英語(yǔ)世界的語(yǔ)言風(fēng)格比較嚴(yán)謹(jǐn)
時(shí)間管理四象限
???? 如果您平時(shí)沒(méi)有做重要的事情,就會(huì)發(fā)現(xiàn)自己常常在做緊急的事情实昨。
消除重復(fù)工作
????? 給自己留出不被打擾的時(shí)間
番茄工作法
跨界思考
紙上頭腦風(fēng)暴
使用版本控制工具和構(gòu)建系統(tǒng)
加班是一種文化洞豁?
拿工作時(shí)長(zhǎng)來(lái)拼,這還是體力勞動(dòng)時(shí)代打工者的心態(tài)在作祟荒给。
架構(gòu)模式
?????? MVC模式(Model-View-Controller)是最有名的一種架構(gòu)模式丈挟。
學(xué)習(xí)設(shè)計(jì)
設(shè)計(jì)的四大基本理論:
親密
????? 關(guān)系親密的元素要放在一起,關(guān)系疏遠(yuǎn)的元素則要分開(kāi)志电。位置的親密性直接表現(xiàn)出意義的相關(guān)性曙咽。
對(duì)齊
重復(fù)
????? 視覺(jué)上使用重復(fù)的圖形和元素、線條挑辆、顏色等例朱。
對(duì)比
?????? 如果兩個(gè)元素不一樣,就讓它完全不一樣鱼蝉,產(chǎn)生視覺(jué)沖擊力茉继。
設(shè)計(jì)工具
Axure
Sketch
Quartz?Composer
學(xué)習(xí)管理
在項(xiàng)目最開(kāi)始做出合理的時(shí)間評(píng)估
根據(jù)人員的強(qiáng)項(xiàng)來(lái)安排任務(wù)
喚起團(tuán)隊(duì)對(duì)項(xiàng)目成功的渴望
保障溝通。理想溝通頻率每周至少兩次蚀乔。
添加一張讀書(shū)的腦圖: