為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴
發(fā)表日期:2018-05 文章編輯:小燈 瀏覽次數(shù):3043
對(duì)于追求效率的程序員來(lái)說(shuō),影響工作效率的事情,是深?lèi)和唇^的,當(dāng)大家拿到任務(wù)的時(shí)候,其實(shí)對(duì)于工作量的評(píng)估,心中大致都是有一個(gè)數(shù)的,然而,為什么我們交付的時(shí)候,大部分情況下會(huì)比估算的時(shí)間長(zhǎng)呢,有時(shí)候還會(huì)長(zhǎng)達(dá)幾倍之多?
go
的版本和其他人的不一樣,編譯他人的代碼時(shí)會(huì)報(bào)錯(cuò);這里不談技能Level問(wèn)題,我們統(tǒng)一認(rèn)為水平為中級(jí)程序員即可
本文主要是解決研發(fā)順暢度問(wèn)題的,從開(kāi)發(fā)
-> 測(cè)試
->發(fā)布
的效率問(wèn)題,當(dāng)然,既然上面提出了幾個(gè)影響效率的因素,那我就先說(shuō)一下這幾個(gè)問(wèn)題我們是怎么解決的,雖然不是最優(yōu)方案,但一定是適合我們自己的團(tuán)隊(duì)的,我們團(tuán)隊(duì)人較少,情況大致如下:
但是產(chǎn)品內(nèi)容較多,比如我們需要和第三方存管系統(tǒng)對(duì)接,第三方資產(chǎn)系統(tǒng)對(duì)接,需要提供管理員系統(tǒng),手機(jī)APP,官網(wǎng),以及其他周邊的服務(wù)系統(tǒng),如果不好好解決效率問(wèn)題,僅僅憑借這些人員數(shù)量,是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)檫@里僅僅是包含了開(kāi)發(fā)的任務(wù),后續(xù)還有上線和解決線上問(wèn)題的任務(wù)。
我來(lái)簡(jiǎn)單說(shuō)一下我們是怎么解決這些問(wèn)題的吧,希望大家能夠給予建議,同時(shí)也很高興能幫助到大家。
我們是小公司,這個(gè)問(wèn)題。。。。解決不了,大家都在一個(gè)特大開(kāi)間里, 只能帶耳塞和耳機(jī)了。。。不過(guò)我們的客服大部分是在微信上服務(wù),以及出去跑業(yè)務(wù)的,因此干擾度不是特別大;
我強(qiáng)制給大家配備Macbook Pro Retina
, 強(qiáng)制大家使用如下工具:
同時(shí),我要求編譯環(huán)境的庫(kù)版本必須是某個(gè)特定版本,比如 go
必須使用 1.9.4
, 這些都是硬性要求,其他的大家是可以自由發(fā)揮。
大家可能會(huì)認(rèn)為配備Macbook Pro Retina
筆記本的成本太高,但是我想說(shuō)的是,這真的是一個(gè)提高研發(fā)效率的途徑:
unix-like
,linux上能用的命令,大部分都移植在mac上了,不需要搞什么cygwin
了,那玩意搞得真心難受, 最后效果也不是很好;總之,好處多多,一定要說(shuō)服你們的老板啊?。
一定要要求程序員做需求反講,先是產(chǎn)品經(jīng)理講需求,然后是技術(shù)消化,最后研發(fā)給產(chǎn)品經(jīng)理反講,確保雙方理解一致,對(duì)于頻繁改需求的問(wèn)題,這個(gè)沒(méi)有太好的解決辦法,因?yàn)橛袝r(shí)候需求就是變了(這里不是說(shuō)按鈕要放到別的位置,顏色要換成什么,主要的是指功能性的需求)
我們的要求就是后端只能用go
, APP開(kāi)發(fā)iOS使用ReactNative
,打包自動(dòng)化用gulp
, Web使用React
, Android就使用原生開(kāi)發(fā),主要技術(shù)桟列表如下:
這么羅列下來(lái),其實(shí)已經(jīng)很多了,我們應(yīng)該盡可能減緩技術(shù)桟列表的增長(zhǎng),要做好技術(shù)選型的把控工作,不要隨意使用某個(gè)語(yǔ)言,某個(gè)框架。
架構(gòu)本身是隨著環(huán)境的變化而發(fā)生變化的,需求
、體量
、痛點(diǎn)
是推動(dòng)架構(gòu)變化的主要原因,我之前做的是廣告行業(yè)的技術(shù)架構(gòu),當(dāng)時(shí)的痛點(diǎn)有如下幾點(diǎn)(有些記不清了):
研發(fā)環(huán)境
->測(cè)試環(huán)境
->生產(chǎn)環(huán)境
都有差異,因?yàn)檫@些差異,找問(wèn)題需要找很久,有新服務(wù)器加入那更是痛上加痛了,上百臺(tái)的服務(wù)器啊。。。。;SVN
,后來(lái)給大家做了GIT
的培訓(xùn),搭建了GitLab
, 使用了 GitFlow
CI
, 你就說(shuō)痛不痛?其實(shí)大公司要使用某個(gè)工具,某個(gè)架構(gòu),某個(gè)流程,做大批量的更換是挺難的,所以很容易就這么痛下去,都2018年
了,我一個(gè)同事入職某60
,這些給研發(fā)人員使用的基礎(chǔ)設(shè)施還很原始呢,我同事的原話:完全沒(méi)法和我們現(xiàn)在的開(kāi)發(fā)環(huán)境相提并論。再說(shuō)說(shuō)我們P2P行業(yè)的痛點(diǎn):
我們不跑路,我們是一家很正規(guī)的P2P公司,是金融辦審查過(guò)的
P2P的業(yè)務(wù)特點(diǎn)如下
對(duì)了,大家如果忘記了我們有多少個(gè)人,可以往上面再翻一下,另外,這僅僅是我們的一條產(chǎn)品線,我們之前希望把控更多的資產(chǎn),自己也嘗試開(kāi)始做資產(chǎn)管理,嗯,做了一個(gè)類(lèi)似鉆石抵押的借款平臺(tái),反正產(chǎn)品線多。。。
除了業(yè)務(wù)上有痛點(diǎn),公司體量小,本身也會(huì)有一個(gè)致命痛點(diǎn)
招聘難:好的人才可遇不可求,我們面試到的程序員也大多是初級(jí)或中級(jí)的,高級(jí)的不多見(jiàn)。由于我們使用的是go
語(yǔ)言作為后端語(yǔ)言,ReactNative
作為前端APP開(kāi)發(fā)框架,能找到合適的就是微乎其微了。大家別看這些概念都已經(jīng)很火了,但在我們小公司里,幾乎是招聘不到有這些實(shí)戰(zhàn)經(jīng)驗(yàn)的程序員的,大部分是只有一點(diǎn)開(kāi)發(fā)基礎(chǔ)的,只會(huì)一門(mén)語(yǔ)言,甚至沒(méi)做過(guò)項(xiàng)目的,怎么辦?培訓(xùn)+實(shí)戰(zhàn),沒(méi)有別的出路。
基于這些問(wèn)題,我們就有了一個(gè)架構(gòu)設(shè)計(jì)的思路:
postman
進(jìn)行測(cè)試,或?qū)懽詣?dòng)測(cè)試工具進(jìn)行請(qǐng)求;為了增加把控度,我們自己造了輪子,此框架適用于我們的應(yīng)用場(chǎng)景,同時(shí)也是開(kāi)源的,所以,非常歡迎大家使用,并給出建議:
go-spirit
想要快速入手go-spirit請(qǐng)戳這里
這項(xiàng)任務(wù)是必須要執(zhí)行的,但仍然解決不了初級(jí)程序員,尤其是入門(mén)級(jí)程序員犯這個(gè)錯(cuò)誤,第一是要提升這位程序員的技術(shù)水平,在每日例會(huì)上要碎碎念,多跟他講講設(shè)計(jì)、講講哪些東西合理、哪些東西不合理,經(jīng)常講講行為規(guī)范,比如:
for
循環(huán)里一條條去執(zhí)行sql
來(lái)查詢(xún)結(jié)果,而是應(yīng)該在for
循環(huán)前先一次性查回來(lái)再處理;真的很碎,但這是規(guī)范,也是文化的傳承,小公司可以這么做,因?yàn)槿松俸眠哆?,大公司則需要有嚴(yán)格的行為準(zhǔn)則和制度,但也應(yīng)該拆團(tuán)隊(duì),培養(yǎng)主管對(duì)規(guī)則和文化的重視。
做完需求反講后,產(chǎn)品經(jīng)理和研發(fā)人員都對(duì)需求有了一定的理解,接下來(lái)最好做一下技術(shù)實(shí)現(xiàn)上的設(shè)計(jì),先做好磨刀的工作,再做砍柴的事。尤其是對(duì)于初級(jí)程序員,應(yīng)該先聽(tīng)聽(tīng)他們的設(shè)計(jì)思路,應(yīng)該給予及時(shí)的幫助和糾正,總比在最后讓他們改BUG
強(qiáng)。
一定要做好BUG數(shù)量的控制,否則技術(shù)債務(wù)會(huì)像滾雪球一樣越來(lái)越大,本來(lái)我們可以好好做研發(fā)的,卻要去解決焦頭爛額的線上問(wèn)題,這是不能容忍的。
大致會(huì)有如下的阻礙:
我們是這么做的
盡早穩(wěn)定好API
接口的定義,測(cè)試人員開(kāi)始寫(xiě)MOCK
(只需要寫(xiě)個(gè)javascript
腳本即可,對(duì)請(qǐng)求內(nèi)容進(jìn)行判斷,然后返回特定內(nèi)容),這樣就可以了,為什么要這么做?
API
的實(shí)際邏輯實(shí)現(xiàn)會(huì)比較慢,前端需要使用MOCK
來(lái)完成對(duì)接,快速實(shí)現(xiàn)各個(gè)頁(yè)面的邏輯聯(lián)通;MOCK
腳本的時(shí)候,會(huì)把業(yè)務(wù)場(chǎng)景都過(guò)一遍,增加了測(cè)試用例的品質(zhì);MOCK
給客戶演示?gulp
編譯網(wǎng)站的時(shí)候,研發(fā)人員自己的機(jī)器能編譯通過(guò),放到別人的機(jī)器上編譯就不行,因?yàn)榘惭b的環(huán)境,類(lèi)庫(kù)版本有差異。如果放到指定的docker里去編譯,則不會(huì)出現(xiàn)這個(gè)問(wèn)題;CI
上做,就需要寫(xiě)好CI
腳本,一切都是按照預(yù)定的計(jì)劃執(zhí)行。所以,研發(fā)人員的研發(fā)環(huán)境,是一種習(xí)慣、文化,更是一整套生態(tài),從物理上的工作環(huán)境到電腦里的系統(tǒng)環(huán)境,從功能到架構(gòu),從研發(fā)到上線,每個(gè)環(huán)節(jié)都可能出現(xiàn)效率上的殺手。
我主要會(huì)為大家講解,如何搭建一個(gè)完整的從 開(kāi)發(fā)
到上線
的環(huán)境,并且為大家講解幾個(gè)CI
案例, 同時(shí)實(shí)戰(zhàn)gitlab-ci.yml
的寫(xiě)法,讓每個(gè)團(tuán)隊(duì)享受CI
帶來(lái)的便捷和樂(lè)趣。
我們用的是阿里云(小公司嘛,哪有錢(qián)搞機(jī)房),因此,后續(xù)的部署講解均是基于阿里云的,大家也可以按照自己的需求,開(kāi)發(fā)出部署其他云平臺(tái)的模塊,go-flow是插件化的。
涵蓋的內(nèi)容大致如下(后續(xù)根據(jù)實(shí)際情況做調(diào)整):
gitlab-ci
編譯一個(gè)APK
gitlab-ci
編譯一個(gè)todo
程序的示例(go
),從代碼提交
到發(fā)布
的整套流程go-spirit
快速發(fā)布mock
服務(wù)PKI
(Public Key Infrastructure) 證書(shū)使用一句話:不玩虛的,實(shí)戰(zhàn)!實(shí)戰(zhàn)!
先給大家放幾張我們現(xiàn)在正在使用的系統(tǒng)的圖片,全當(dāng)時(shí)給干澀的文字配個(gè)圖了。。。
使用go-flow
搭建下面這些環(huán)境的執(zhí)行截圖,嗯,我給大家?guī)?lái)的是全家桶,當(dāng)然這些是基礎(chǔ)環(huán)境,每個(gè)公司都會(huì)有自己的環(huán)境需要搭建,大家可以為 go-flow
貢獻(xiàn)插件哦?
大家不用嘗試訪問(wèn)圖中的地址啦,因?yàn)槲已杆俚氖褂?go-flow 釋放了這些資源?
我們研發(fā)所有的服務(wù)都做了客戶端證書(shū)的雙向認(rèn)證,以防止外人的訪問(wèn)(PKI)訪問(wèn)服務(wù)時(shí),會(huì)彈出如下提示:
沒(méi)有客戶端證書(shū)的人是無(wú)法訪問(wèn)的。
每次提交代碼,都能觸發(fā)自動(dòng)編譯和測(cè)試
部分任務(wù)可以指定為手動(dòng)觸發(fā),比如部署,因?yàn)椴皇敲看翁峤淮a都需要部署
有編譯的詳細(xì)過(guò)程
不同的Runner用于跑不同的項(xiàng)目,比如編譯蘋(píng)果應(yīng)用的runner就需要跑在mac上,我們公司有一臺(tái)專(zhuān)門(mén)編譯iOS應(yīng)用的MacMini
研發(fā)人員登錄公司內(nèi)部系統(tǒng),都是使用的LDAP,用戶可以自己登錄修改密碼。
日志系統(tǒng),我就喜歡graylog,好用, 結(jié)合好 logrus_mate 就可以往不同的系統(tǒng)打日志了。
簡(jiǎn)單易用。
能看到最后,說(shuō)明您很認(rèn)真,歡迎加入我的QQ群進(jìn)行更深入的交流:780798965
為研發(fā)人員創(chuàng)造一個(gè)高效的研發(fā)環(huán)境(二)- 實(shí)戰(zhàn)環(huán)境搭建
日期:2018-10 瀏覽次數(shù):7355
日期:2018-12 瀏覽次數(shù):4424
日期:2018-07 瀏覽次數(shù):4959
日期:2018-12 瀏覽次數(shù):4259
日期:2018-09 瀏覽次數(shù):5596
日期:2018-12 瀏覽次數(shù):10013
日期:2018-11 瀏覽次數(shù):4897
日期:2018-07 瀏覽次數(shù):4665
日期:2018-05 瀏覽次數(shù):4951
日期:2018-12 瀏覽次數(shù):4400
日期:2018-10 瀏覽次數(shù):5225
日期:2018-12 瀏覽次數(shù):6299
日期:2018-11 瀏覽次數(shù):4554
日期:2018-08 瀏覽次數(shù):4680
日期:2018-11 瀏覽次數(shù):12743
日期:2018-09 瀏覽次數(shù):5664
日期:2018-12 瀏覽次數(shù):4929
日期:2018-10 瀏覽次數(shù):4266
日期:2018-11 瀏覽次數(shù):4615
日期:2018-12 瀏覽次數(shù):6149
日期:2018-06 瀏覽次數(shù):4092
日期:2018-08 瀏覽次數(shù):5539
日期:2018-10 瀏覽次數(shù):4537
日期:2018-12 瀏覽次數(shù):4623
日期:2018-07 瀏覽次數(shù):4450
日期:2018-12 瀏覽次數(shù):4599
日期:2018-06 瀏覽次數(shù):4481
日期:2018-11 瀏覽次數(shù):4458
日期:2018-12 瀏覽次數(shù):4337
日期:2018-12 瀏覽次數(shù):5360
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.