今天在Q群里嘮一個(gè)新技術(shù)(關(guān)于phper如何學(xué)習(xí)swoole)的時(shí)候,突然一群友發(fā)一句“脫離業(yè)務(wù)的技術(shù)都是耍流氓”贿衍,頓時(shí)讓我等老鳥(niǎo)無(wú)言以對(duì)授舟。然后,就是一堆的不明群眾復(fù)制贸辈、刷屏释树。。。
幸好本人反應(yīng)夠快奢啥,快速輸入下面這段話:
分享一些工作的經(jīng)驗(yàn):不存在脫離業(yè)務(wù)的技術(shù)秸仙。所有新技術(shù)都是為了解決一些業(yè)務(wù)痛點(diǎn),讓特定業(yè)務(wù)更爽桩盲。
當(dāng)我們掌握足夠多的技術(shù)寂纪,在遇到問(wèn)題時(shí)就可以選擇適合的技術(shù)進(jìn)行解決。反之赌结,如果沒(méi)有技術(shù)儲(chǔ)備捞蛋,就會(huì)手足無(wú)措,又或者說(shuō)選擇一些不太恰當(dāng)?shù)募夹g(shù)進(jìn)行解決柬姚,最終都會(huì)走一些彎路拟杉、踩一些坑。走彎路量承、踩坑固然是所有項(xiàng)目都會(huì)遇到的一個(gè)問(wèn)題搬设,一個(gè)人走彎路、踩坑也許不是什么大問(wèn)題宴合,但整個(gè)項(xiàng)目走彎路焕梅,這個(gè)最終苦的還是我們這些技術(shù)人員。
技術(shù)儲(chǔ)備至關(guān)重要卦洽,不論是團(tuán)隊(duì)還是個(gè)人。有了足夠的技術(shù)儲(chǔ)備斜棚,才可以游刃有余阀蒂,做到胸有成竹,遇到問(wèn)題可以快速找到N種解決辦法弟蚀,并評(píng)估各個(gè)方案的優(yōu)缺點(diǎn)進(jìn)行合理選擇蚤霞。
** 總之一句話:根據(jù)業(yè)務(wù)場(chǎng)景選技術(shù),但前提是對(duì)各種技術(shù)都有深入的理解义钉,能熟知其利弊昧绣。**
下面會(huì)圍繞這個(gè)觀點(diǎn),做一些延伸思考:
1:技術(shù)由何而來(lái)捶闸?
關(guān)于這個(gè)問(wèn)題夜畴,我的同事** "江邊望海"** 曾經(jīng)提到一種關(guān)于"技術(shù)人員的成長(zhǎng)之路"的思路可以拿來(lái)借鑒:
** 第一個(gè)階段:** 做技術(shù)人員的前3年,不斷的做業(yè)務(wù)删壮,做各種各樣的業(yè)務(wù)贪绘。
** 第二個(gè)階段:** 3-5年,解決一些異常問(wèn)題央碟,遇到足夠多的問(wèn)題税灌。總結(jié)其規(guī)律,找出業(yè)務(wù)痛點(diǎn)
** 第三個(gè)階段:** 根據(jù)痛點(diǎn)菱涤、規(guī)律制定流程(開(kāi)發(fā)規(guī)范苞也、協(xié)作方式、設(shè)計(jì)模式)粘秆,開(kāi)發(fā)新的解決方案(新技術(shù)的誕生)
不謀而合如迟,新技術(shù)的目標(biāo)就是為了解決一些痛點(diǎn),優(yōu)化工作效率翻擒。無(wú)論新技術(shù)是一種實(shí)際的技術(shù)氓涣,如redis、hadoop等解決現(xiàn)有存儲(chǔ)的問(wèn)題陋气。還是如MVC劳吠、設(shè)計(jì)模式、OAuth一般只是提供一種思路巩趁,不同語(yǔ)言有不同的實(shí)現(xiàn)痒玩。新的技術(shù)(思想)只是針對(duì)特定痛點(diǎn)的一劑良藥,用的得當(dāng)便可事半功倍议慰,用的不得當(dāng)便會(huì)事倍功半蠢古。
2:如何尋找業(yè)務(wù)的痛點(diǎn)
先說(shuō)一段題外話:很久以前的一次聊天中,我給客服小妹講一黑科技:現(xiàn)在有一種技術(shù)别凹,可以模擬任何人的手機(jī)號(hào)給任何人打電話草讶、發(fā)短信。
然后客服小妹就問(wèn)炉菲,這技術(shù)有什么用呀堕战?
可以把自己偽裝成任意一個(gè)人,然后給你打電話拍霜,你怕不怕嘱丢。
然后呢?
這么說(shuō)吧祠饺,假如給你家人發(fā)短信越驻,上面顯示你的手機(jī)號(hào),讓匯錢(qián)道偷,怕不怕
我家人才沒(méi)這么笨缀旁。。试疙。
那诵棵。。祝旷。
然后我就各種解釋履澳,想讓她明白這技術(shù)多么牛逼嘶窄,多么有用。
“好啦距贷,我明白了柄冲,我逗你玩的,別太認(rèn)真忠蝗,哈哈哈哈”
然后就這樣了现横。。阁最。
技術(shù)是很牛逼的技術(shù)戒祠,只是要想讓別人認(rèn)可這項(xiàng)技術(shù),尋找這項(xiàng)技術(shù)所解決的痛點(diǎn)尤為重要速种。幸好只是跟同事瞎聊姜盈,如果就拿類似這樣的方案跟領(lǐng)導(dǎo)講技術(shù)解決方案,說(shuō)不明白各模塊所存在的必要價(jià)值配阵,估計(jì)就慘了馏颂。
好吧,說(shuō)正事棋傍,** 如何才能尋找開(kāi)發(fā)中的痛點(diǎn)救拉?**
- 主要還是多做業(yè)務(wù),做足夠多的業(yè)務(wù)瘫拣,做足夠多重復(fù)無(wú)味的工作亿絮。其它的崗位也是一樣,只有足夠多的使用自己的產(chǎn)品麸拄,才會(huì)去反思如何提升效率壹无。
- 一旦有了反思,有了提升的想法感帅,便進(jìn)入上面所提的第二個(gè)階段。
在這個(gè)階段地淀,開(kāi)發(fā)效率便會(huì)有所下降失球,因?yàn)橄氲母啵此嫉母喟锘佟5@些想法往往不被認(rèn)同实苞,因?yàn)檫@些想法不符合常規(guī)的思路。所以你需要更加的努力烈疚,整日整夜的忙黔牵,產(chǎn)出卻跟其它人并無(wú)區(qū)別。需要補(bǔ)更多的課爷肝,比如他人認(rèn)為完全用不到的TCP/IP猾浦、網(wǎng)絡(luò)編程陆错、算法導(dǎo)論等基礎(chǔ)知識(shí)。思考的更多金赦,總結(jié)更多的規(guī)律音瓷,就會(huì)發(fā)現(xiàn)越多不知道的東西。這個(gè)階段也許要2年夹抗,也許永遠(yuǎn)走不出來(lái)绳慎,永遠(yuǎn)對(duì)一些理論抱著仰望的態(tài)度,卻從未花時(shí)間去真正了解漠烧,期望著有大牛封裝這些功能杏愤。如果愿意花一個(gè)周末全心的去了解,沒(méi)有哪項(xiàng)單一的技術(shù)是解決不了的已脓。所謂積少成多珊楼,多讀書(shū),多看官網(wǎng)摆舟,此時(shí)可以借鑒的資料已經(jīng)不是特別多亥曹。但此時(shí)有一個(gè)好處,只要是能找到的資料都是非常有價(jià)值的恨诱,不會(huì)再有那些眼花繚亂的翻版與誤解媳瞪。 - 選擇對(duì)業(yè)務(wù)有用的東西,深入理解照宝、總結(jié)其利弊蛇受、分析其應(yīng)用場(chǎng)景,然后快速進(jìn)入下一階段尤為重要厕鹃。
- 在這一階段兢仰,就是要總結(jié)業(yè)務(wù)痛點(diǎn),綜合所了解的知識(shí)剂碴,提出適當(dāng)?shù)慕鉀Q方案把将。適當(dāng)?shù)臅r(shí)候需要開(kāi)發(fā)自己的一套解決方案,如上所說(shuō)忆矛,也許是一套理論察蹲,也許是一個(gè)實(shí)際的工具軟件。
3:引入新技術(shù)存在的問(wèn)題
引入新技術(shù)可能存在一些問(wèn)題催训,這是大家的共識(shí)洽议。具體問(wèn)題包括但不限于以下幾點(diǎn):
- 不可控因素,突然not work怎么辦漫拭。所以很少有人在核心業(yè)務(wù)中引入一些不是常規(guī)的第三方解決方案亚兄。
- 學(xué)習(xí)成本。一般公司都有自己的技術(shù)儲(chǔ)備采驻,一旦引入新技術(shù)审胚,就需要自己的團(tuán)隊(duì)去嘗試匈勋、培訓(xùn)、上線測(cè)試菲盾、填坑颓影。
- 部分員工的排斥心理。這個(gè)不解釋
曾經(jīng)聽(tīng)過(guò)滴滴架構(gòu)師李令輝的一次分享《用靈活的架構(gòu)去適應(yīng)變化的業(yè)務(wù)》懒鉴,明確指出了我們不引入新的開(kāi)源技術(shù)诡挂。這看似有些難以理解,但卻有其意義临谱。引入新技術(shù)有其優(yōu)勢(shì)璃俗,也有其弊端。再引用李令輝的一句:
我們還有野心重新梳理整體業(yè)務(wù)架構(gòu)悉默,中國(guó)架構(gòu)師比較不自信城豁,當(dāng)設(shè)計(jì)一個(gè)新架構(gòu)的時(shí)候,你的領(lǐng)導(dǎo)和同事就會(huì)問(wèn)是否有大公司這么做過(guò)抄课,大公司包括了BAT3M唱星。
技術(shù)方案固然重要,但有一點(diǎn)更為重要跟磨,就是團(tuán)隊(duì)的“內(nèi)研”能力间聊。團(tuán)隊(duì)的內(nèi)部研發(fā)能力如果較弱,就算拿最牛逼的技術(shù)依然會(huì)走彎路抵拘。別人的技術(shù)方案只是一種工具哎榴,內(nèi)研能力才是決定我們是否能把這個(gè)工具用在正確地方的主要因素。
4:如何引入新技術(shù)
分階段而論僵蛛,如果是創(chuàng)立階段尚蝌,制定一些框架類的規(guī)定,其它的技術(shù)方案選型以快為主充尉,唯快不破嘛飘言。能快速解決現(xiàn)有問(wèn)題的方案就是好方案。
-
到達(dá)盈利模式后驼侠,解決掉技術(shù)債務(wù)(把欠的東西都還上)热凹,這樣才能一身輕松的快速前進(jìn)。積累經(jīng)驗(yàn)泪电,分析各技術(shù)方案在業(yè)務(wù)中的利弊,發(fā)揮其長(zhǎng)處纪铺、避開(kāi)其弊端相速,充分提升業(yè)務(wù)能力。制定開(kāi)發(fā)規(guī)范鲜锚、優(yōu)化協(xié)作模式突诬,新技術(shù)的引入苫拍、使用、深入分析旺隙、適用場(chǎng)景分析绒极。當(dāng)做好這些準(zhǔn)備后,個(gè)人認(rèn)為開(kāi)發(fā)效率至少能提升5倍以上蔬捷。
** 重新說(shuō)明一下:新技術(shù)不只是指實(shí)際的軟件垄提,也可以是一些思路、一些模式周拐。**
5:最后
最后還是說(shuō)一說(shuō)開(kāi)始的話題:phper有沒(méi)有必要學(xué)習(xí)swoole铡俐。本來(lái)就是想說(shuō)這個(gè)話題的,結(jié)果被打斷了妥粟,好吧审丘,我還是很執(zhí)著的。
swoole做為一個(gè)新的技術(shù)(其實(shí)成熟版本已經(jīng)存在3年以上)勾给,與php充分融合滩报,借用php的語(yǔ)法,使用php的cli運(yùn)行模式就可以測(cè)試其全部功能播急∨Ъ兀看似swoole是php的一個(gè)擴(kuò)展方法,實(shí)則不然旅择。swoole是一套網(wǎng)絡(luò)框架惭笑,看過(guò)其源碼就會(huì)明白,其中有大量的C代碼生真,實(shí)現(xiàn)了并發(fā)沉噩、網(wǎng)絡(luò)編程、共享內(nèi)存操作方面的東西柱蟀,最終只是以php的擴(kuò)展方式做為最終呈現(xiàn)川蒙。
那么,還有必要學(xué)嗎长已?
當(dāng)然有畜眨,php做為一種腳本語(yǔ)言,常規(guī)的職責(zé)就是藏在nginx/apache的后面接收請(qǐng)求术瓮,處理請(qǐng)求并返回給nginx康聂。存在的問(wèn)題是每接到一個(gè)請(qǐng)求就需要初始化一些資源,返回結(jié)果后就把資源釋放掉胞四。這就決定了php只能做web應(yīng)用恬汁,做服務(wù)就略牽強(qiáng)。舉個(gè)例子來(lái)說(shuō)辜伟,用php提供一個(gè)分詞服務(wù)氓侧,分詞的服務(wù)端需要先加載詞典脊另,然后接收用戶傳入的文本,將其分詞并返回约巷。整個(gè)過(guò)程最耗時(shí)的就是加載詞典偎痛,而php常規(guī)的php-fpm模式需要每次加載詞典,這無(wú)疑是個(gè)很大的問(wèn)題独郎。如果把php前端的nginx去掉踩麦,php直接對(duì)外提供服務(wù),那么就可以讓php啟動(dòng)一個(gè)進(jìn)程并一直存在囚聚,詞典也只需要加載一次靖榕。
這看似簡(jiǎn)單的調(diào)整,實(shí)則已經(jīng)改變了php在整個(gè)架構(gòu)中的職責(zé)顽铸。如swoole官網(wǎng)所寫(xiě):重新定義PHP茁计。
要如何學(xué)椒惨?
官網(wǎng)的demo看起來(lái)很簡(jiǎn)單备燃,但剛才已經(jīng)說(shuō)了躁垛,swoole不再是單純的php涨共,是重新定義PHP船万。常規(guī)phper所不了解的網(wǎng)絡(luò)編程触幼、并發(fā)痕届、進(jìn)程間通信在這里已經(jīng)是常識(shí)問(wèn)題级乍,不會(huì)有單獨(dú)的文檔介紹這些內(nèi)容优质,需要自己去補(bǔ)充竣贪。如果有java、C/C++的并發(fā)編程經(jīng)驗(yàn)巩螃,上手這個(gè)會(huì)更方便演怎。如果單獨(dú)去了解一下相關(guān)的知識(shí),再來(lái)看這個(gè)東西避乏,會(huì)有一種遇到神器的感覺(jué):swoole簡(jiǎn)化了網(wǎng)絡(luò)編程的許多方面爷耀,可以讓phper以最快的方式實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)服務(wù)器。然而也有一步一個(gè)坑的走過(guò)來(lái)的phper拍皮,真是邊走邊在心里咒罵歹叮,怎么這個(gè)坑在文檔中沒(méi)有說(shuō)明,為什么這個(gè)變量不起作用铆帽。具體的坑在另一篇文檔中有說(shuō)明(入口)咆耿,這里就不再調(diào)戲swoole了,哈哈爹橱。至于swoole能做什么票灰,有人問(wèn)能做數(shù)據(jù)采集嗎,這里也不做解釋,swoole提供了更多的可能屑迂。掌握此技能很有必要(業(yè)余時(shí)間),不管現(xiàn)在你是否有適用場(chǎng)景冯键。
不是有個(gè)段子嗎:如果你有一把錘子惹盼,看哪都是釘子。但如果你有100種熟練使用的工具呢惫确?
** 所擁有的見(jiàn)聞(技能)手报,決定了所看到的世界。**
關(guān)注公眾號(hào)"web創(chuàng)新之路”改化,就有機(jī)會(huì)天天聽(tīng)我瞎嗶嗶~