CTO訓(xùn)練營第二季畢設(shè):初創(chuàng)團隊工程能力建設(shè)
原創(chuàng)【51CTO.com原創(chuàng)稿件】
導(dǎo)語:CTO訓(xùn)練營第二季已經(jīng)圓滿收官,作為一個學(xué)習(xí)分享和社交的平臺,CTO訓(xùn)練營提供的不光是知識分享,還有一個屬于技術(shù)管理者的人脈圈子。結(jié)課之后,第二季學(xué)員提交了畢業(yè)設(shè)計,來對四個月以來的學(xué)習(xí)進行總結(jié)與回顧,部分論文由CTO導(dǎo)師進行點評和打分。
初創(chuàng)團隊工程能力建設(shè) 李德強 上海云盾高級工程師
一、公司介紹
進入某互聯(lián)網(wǎng)金融公司時,公司成立只有創(chuàng)業(yè)4個月的時間,因公司定位于金融P2P對接電影產(chǎn)業(yè),在不到一年的時間內(nèi)研發(fā)團隊從十幾人迅速擴大為一百多人。工作中負責過運維,項目研發(fā),架構(gòu)等工作。
因為是初創(chuàng)型公司,當時很多的制度、技術(shù)、人員等不健全,主要表現(xiàn)為下:
團隊成員以初級為主,多是工作1-2年的程序員,工作時間最長的也不超過4年
原始而笨拙的技術(shù),F(xiàn)TP代碼發(fā)布系統(tǒng),服務(wù)器管理混亂,毫無體系可言
業(yè)務(wù)系統(tǒng)是基于開源及購買的商業(yè)系統(tǒng),系統(tǒng)與業(yè)務(wù)脫節(jié)
研發(fā)中產(chǎn)品,測試等角色缺失
二、團隊發(fā)展
在項目研發(fā)過程中,早期PHP研發(fā)是4個人,分成WEB,APP,業(yè)務(wù)、后臺四個系統(tǒng)。后期隨著業(yè)務(wù)的發(fā)展,接入多家合作方,同時將用戶、票務(wù)、卡券,緩存,API等拆分成獨立的子系統(tǒng)。因采用阿里云服務(wù)器所帶來的存儲性能問題,而對數(shù)據(jù)庫進行了分庫分表升級。電影業(yè)務(wù)相關(guān)的技術(shù)人員,包括后端研發(fā),前端,測試,APP等擴大為近50人的團隊。
業(yè)務(wù)在發(fā)展的過程中,進行團隊管理,做了如下工作:
加強流程管理,規(guī)范各部門之間的工作流程,引入禪道項目管理系統(tǒng),標準化各部門之間工作的輸入輸出。
推動運維實施自動化,標準化等工作,建立相應(yīng)的運維規(guī)范。服務(wù)器的安裝以腳本化與鏡像為主。搭建全新的版本管理系統(tǒng),代碼發(fā)布系統(tǒng),監(jiān)控系統(tǒng)。
定期晨會、周會,以敏捷的方式推進工作,及時發(fā)現(xiàn)問題及時處理。
組建了架構(gòu)組,承擔基礎(chǔ)的技術(shù)預(yù)研工作,為重大的技術(shù)升級保駕護航。
定期分享,做到知識共享。
團隊拆分,根據(jù)業(yè)務(wù)的發(fā)展,將團隊拆分成職責清晰的小團隊。
三、問題反思
在業(yè)務(wù)發(fā)展的工作中,雖然做了很多的工作,但還是有很多不足的地方,總結(jié)如下:
項目管理中,部分工作流程,代碼規(guī)范,有制定,沒監(jiān)督,沒執(zhí)行。
上線前沒有做好代碼質(zhì)量檢查,不良的代碼經(jīng)常導(dǎo)致線上bug。
系統(tǒng)進行拆分及分庫分表升級后,與之相對應(yīng)的維護成本迅速增加。
自動化運維不足,在服務(wù)器管理,環(huán)境部署,權(quán)限管理等方面相對不足。
業(yè)務(wù)發(fā)展,需求增多,研發(fā)人員增加,研發(fā),測試,上線,線上問題排查等各環(huán)節(jié)的時間成本越來越大。
四、解決方案
根據(jù)在訓(xùn)練營中學(xué)到的知識,在組織管理及團隊的工程能力方面都需要加強。但對于目前的問題,更傾向于用系統(tǒng)解決問題,組織架構(gòu)管理輔助,避免過度的依賴人,因為人是有惰性的,易變的,但系統(tǒng)是不變的。提高團隊的工程能力,針對出現(xiàn)的問題構(gòu)建各種自動化的系統(tǒng)是更靠譜的一件事。工程能力就是用工具化,系統(tǒng)化,自動化的方式解決工作中遇到的各種問題,提高工作效率的能力。
4.1解決認識問題
工程能力與業(yè)務(wù)開發(fā)是兩種不同的思維能力。業(yè)務(wù)開發(fā)側(cè)重于滿足需求,快速滿足需求是業(yè)務(wù)發(fā)展的關(guān)鍵。而工程能力更側(cè)重于規(guī)則,工具思維,系統(tǒng)性思維,自動化思維,將重復(fù)的事情交給自動化的工具來完成,用系統(tǒng)來減少人為失誤。
工作價值問題。改變研發(fā)人員原有的工作習(xí)慣,從自身來看,極易影響工作效率,遇到抵觸。首先要結(jié)合當前工作中的問題,失誤,痛點講解系統(tǒng)化的工程帶來的好處。結(jié)合研發(fā)人員個人的興趣愛好,將要實施的項目與個人的價值結(jié)合起來,樹立共同的目標。讓研發(fā)人員覺得這事值得做。
系統(tǒng)性認識團隊及技術(shù)體系中的需要。隨著團隊的增大,部門之間的合作及溝通需求越來越大,溝通成本也越來越高;隨著系統(tǒng)的拆分,擴展,各系統(tǒng)之間的管理,也需要通過工具化,系統(tǒng)化的方式來化解架構(gòu)升級帶來的復(fù)雜性問題。每月兩次,技術(shù)團隊的痛點分析,方案研討,前景講解會議能有效解決團隊的系統(tǒng)性認識問題。讓團隊所有人明白,做什么樣報系統(tǒng),解決什么樣的問題。
技術(shù)方案及工作前景不清晰問題。請外部的大牛到公司做技術(shù)交流,將成熟的解決方案清晰的程現(xiàn)給團隊,提高團隊在認識能力,消除團隊成員在認知上的分歧。讓大家了解什么樣方案是好的方案。
4.2、解決人的問題
人的問題既包括A+類人才的缺失,經(jīng)驗豐富研發(fā)人員的不足,也包括組織架構(gòu)上的不合理。
提高知名高,吸引人才加入。提高自己及公司在互聯(lián)網(wǎng)技術(shù)圈的知名度,吸引更優(yōu)秀的人才加入。提高知名度的方法有活躍于互聯(lián)網(wǎng)技術(shù)社交網(wǎng)站,如到知乎答題等;進行公開的技術(shù)分享,提高外部人才對自己公司業(yè)務(wù)及技術(shù)體系的認識;開通公司及個人的技術(shù)公眾號或博客,將經(jīng)驗輸出。
從招聘入手,選擇A+類人才加入。A+類人才的標準包括需要有開朗的性格,樂于溝通,高效率的工作,有良好的教育背景,有成功的項目實施經(jīng)驗。A+類人才不好招,寧缺勿濫。
在沒有足夠人才的情況下,從現(xiàn)有人才入手,選擇次優(yōu)的人,針對性的進行培養(yǎng),解決當前業(yè)務(wù)中的痛點。現(xiàn)有人才中,雖然不及A+類人才,但在工作效率上還是很不錯的,缺乏的是認識、經(jīng)驗與視野。有針對性的講解,訓(xùn)練,提升還是很大的,而且性價比高。
在組織架構(gòu)上設(shè)立專屬項目組,投入資源進行系統(tǒng)研發(fā)。
4.3、系統(tǒng)方案
方案設(shè)計是以節(jié)約資源為前提,充分利用各種開源或商業(yè)的工具,聯(lián)接業(yè)務(wù)及組織中的各種角色,解決技術(shù)及管理上的痛點。整個系統(tǒng)分為5個了系統(tǒng),分別是:
運維平臺:實施服務(wù)器標準化,可配置化,基于ansible實現(xiàn)自動化部署。日常測試使用的開發(fā)環(huán)境,測試環(huán)境,預(yù)發(fā)布環(huán)境基于docker實現(xiàn),可方便進行快速部署,回歸測試。基于openldap做權(quán)限管理,可便于接入各種開源系統(tǒng)。基于zabbix實現(xiàn)服務(wù)器監(jiān)控。基于jumpserver實現(xiàn)堡壘機功能,資產(chǎn)管理與審核功能。基于jumpserver二次開發(fā),擴展成自己的運維平臺。
日志平臺:使用 logstash進行日志數(shù)據(jù)收集,Elasticsearch進行日志數(shù)據(jù)處理,Kibana 實現(xiàn)數(shù)據(jù)可視化,基于Elasticsearch實現(xiàn)異常日志排查。
版本管理工具:選擇gitlab,因其具有web界面,良好的權(quán)限控制,方便進行代碼review。
持續(xù)集成工具:選擇jenkins,結(jié)合git plugin與gitlab webhook插件,可實現(xiàn)代碼的持續(xù)集成;使用sonarqube 進行自動化的代碼質(zhì)量檢查。
項目管理系統(tǒng):使用jira進行項目管理,因為jira穩(wěn)定成熟,功能豐富。
4.4、方案落地
因為采用開源的工具,方案落地,相對而言不會很困難。整個項目預(yù)估3個月,分五個階段實施:
***階段:openldap,gitlab、jira等基礎(chǔ)環(huán)境的安裝;git遷移到gitlab;制作jira的使用教程,組織***個小型項目,遷移試用。預(yù)計2周。
第二階段:部署elk,配置elk抽取各種日志,實現(xiàn)基本的日志分析處理。部署zabbix監(jiān)控系統(tǒng)。預(yù)計兩周。
第三階段:制定服務(wù)器規(guī)范;部署jumpserver,實現(xiàn)堡壘機功能;基于ansible實現(xiàn)軟件的自動化安裝;基于docker,快速部署多套業(yè)務(wù)環(huán)境;配置jenkins,實現(xiàn)多套環(huán)境之間的代碼持續(xù)集成,代碼提交后的自動化檢查。預(yù)計一個月時間。
第四階段:jumpserver是基于django開發(fā)的一個可視化的堡壘機系統(tǒng)。基于jumpserver進行二次開發(fā),做成自己的運維平臺。集成openldap的用戶管理功能,實現(xiàn)界面化操作;集成軟件的自動化安裝功能,多套環(huán)境的部署及重復(fù)部署實現(xiàn)界面化操作;聯(lián)接ELK,實現(xiàn)異常定位排查。預(yù)計一個月時間。
第五階段:持續(xù)改進運維平臺,實現(xiàn)服務(wù)器的一切操作可視化,自動化,減不人為帶來的不必要的麻煩。
4.5、管理協(xié)助
只依靠系統(tǒng)自動化不一定能提高團隊個人的工作能力及工程能力,但系統(tǒng)卻能將以前無法量化的工作進行量化,以數(shù)字化的形式將個人的工程能力呈現(xiàn)出來,以此作為考核指標,將有助于團隊提高個人能力,培養(yǎng)以結(jié)果為導(dǎo)向的文化,提高執(zhí)行力。可以基于兩項報告作為考核的依據(jù):
Jira的任務(wù)完成程度報告,考核員工的執(zhí)行力
Sonarqube的代碼質(zhì)量檢查報告,考核員工的工程能力
五、總結(jié)
來訓(xùn)練營的這4個月時間,讓我認識了很多的朋友,與導(dǎo)師及同學(xué)的交流討論讓我開闊了視野,不同思維方式的碰撞讓我看到了自己的不足,體系化的課程也讓我看到自己能力的片面性,也努力的方向。感謝這么長時間以來51CTO的精心組織,感謝一起度過這4個月的導(dǎo)師,同學(xué)。
導(dǎo)師點評:前阿姨幫CTO左文建
評分:90
評語:思路清晰,分析問題深入,方法對路。 不過知易行難,工程能力的提升,需要團隊付出長期的努力。相比事而言,更難是尋找人才。在方向正確下,只要努力就會有希望,有結(jié)果。 加油!
CTO訓(xùn)練營是51CTO高招主辦,面向中高端技術(shù)管理者的學(xué)習(xí)分享及社交平臺,匯集業(yè)界資深技術(shù)高管、投資人資源,以“打造技術(shù)經(jīng)理的MBA”為核心,全心全力幫助中國***潛力的技術(shù)管理者,成長為未來技術(shù)領(lǐng)域的***及榜樣。第三季CTO訓(xùn)練營將在原有優(yōu)質(zhì)內(nèi)容體系的基礎(chǔ)上,延伸四大選修活動,滿足不同技術(shù)管理者的個性化需求。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】