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