苦惱的問題
我就職于一家小型的創(chuàng)業(yè)公司投慈,公司從董事長數(shù)到一線員工都沒超過20個人(實際上只有16個~~~)承耿。雖說公司業(yè)務(wù)不過分依賴互聯(lián)網(wǎng),但是現(xiàn)代企業(yè)沒有不接觸互聯(lián)網(wǎng)的伪煤,就好像家里一定要有床一樣加袋。然而公司的IT技術(shù)人員只有我一個。是的16個人只有一個技術(shù)人員::>_<::抱既,所以我的問題在于如何通過一個人的力量支撐公司的線上業(yè)務(wù)职烧,同時探索線上業(yè)務(wù)的可能性。這對我個人而言帶來的極大的挑戰(zhàn)蝙砌。
嘗試過的解決方案
曾經(jīng)嘗試過阳堕,軟件業(yè)務(wù)外包,失敗告終择克,合作開發(fā)恬总,失敗告終,技術(shù)人員外派肚邢,失敗告終壹堰。后來我發(fā)現(xiàn)之前三種常見的方式都有一個問題,就是外包的人員骡湖,參與合作的人員贱纠,外派的人員并不關(guān)心你的死活,對他們來說錢揣自己的包里比你的項目能成功更重要响蕴,雙方的利益點很難達到協(xié)調(diào)統(tǒng)一的程度谆焊。所以我只能用一個更笨的解決辦法,自己的土地得自己先耕種浦夷。是的不再依靠他人自己來做辖试。
擼起袖子自己干的問題
如果只有自己一個人應(yīng)該如何處理一個企業(yè)的線上業(yè)務(wù)辜王?西紅柿炒雞蛋再好做,也要起火開灶爆鍋呀罐孝!所以我要先解決幾個關(guān)鍵問題:生產(chǎn)力呐馆,技術(shù)選型,產(chǎn)品質(zhì)量莲兢,系統(tǒng)的擴展能力汹来,為了解決以上幾個問題我大量的使用了開源軟件,顯然這很有效果(不然不能來吹呀)改艇。下面就說說我如何利用開源軟件解決這些問題的收班。
生產(chǎn)力問題
一個最基礎(chǔ)的互聯(lián)網(wǎng)技術(shù)團隊都應(yīng)該有那些成員組成?
我們先要討論一下遣耍,一個最基礎(chǔ)的互聯(lián)網(wǎng)技術(shù)團隊都應(yīng)該有那些成員組成闺阱?一個產(chǎn)品經(jīng)理(兼著項目經(jīng)理和運營工作),一個UI設(shè)計(兼著各種美工雜活)舵变,一個前端工程師(最好能用前端技術(shù)生產(chǎn)移動端應(yīng)用)酣溃,一個后端工程師(兼著運維的工作),這樣算下來大概要有48個人才能維持一個公司基本的線上業(yè)務(wù)纪隙。所以解決這個問題就是提升我個人的生產(chǎn)力赊豌,因為48個人之間是有一定的溝通成本的,所以我個人生產(chǎn)力只要提升3~4倍左右就可以滿足我們公司的業(yè)務(wù)需求绵咱。
縮減生產(chǎn)流程
讓生產(chǎn)流程最小化是我最近才真正解決的問題碘饼,源于一次出差在高鐵上嘗試極限編程。為了縮減生產(chǎn)流程從人員的角度來看悲伶,我砍了50%產(chǎn)品經(jīng)理的日常智能艾恼,整個UI都不做,砍掉前端50%的工作麸锉,以及后端50%的工作钠绍。這樣我只要比以前提升150%的精力消耗就可以實現(xiàn)4個人以上的生產(chǎn)力。那些砍掉的部分直接使用開源軟件來處理花沉。
開源軟件起到的作用
首先產(chǎn)品設(shè)計方面我已經(jīng)不再寫任何文檔了柳爽,我認為互聯(lián)網(wǎng)產(chǎn)品的開發(fā)或者說軟件開發(fā)應(yīng)該像寫文章一樣提筆就來,而不是提前全部構(gòu)思好了碱屁,然后再落筆去完成磷脯。所以我會先打開代碼編輯器使用注釋寫好我要做的東西是什么,以及業(yè)務(wù)流程應(yīng)該是怎樣的娩脾。然后UI層面連帶著前端使用github上面現(xiàn)成的開源組件庫赵誓,比如muse-ui或者element-ui,拼接我想要構(gòu)建的界面。最后后端有大量現(xiàn)成的開源系統(tǒng)比如laravel俩功,幾乎不需要自己投入大量精力去開發(fā)底層功能隘冲,根據(jù)自己的業(yè)務(wù)修改邏輯就可以直接使用了。
技術(shù)選型問題
平臺的選擇
公司的業(yè)務(wù)是大量基于瀏覽器開發(fā)的绑雄,三點考慮,一奥邮、幾乎所有的設(shè)備都有瀏覽器万牺。二、相關(guān)的技術(shù)生態(tài)比較成熟洽腺。三脚粟、我們的業(yè)務(wù)幾乎不涉及密集計算,比如圖像處理蘸朋,所以移動端的APP我覺得就顯得沒有那么重要了核无。
技術(shù)的選擇
目前公司使用的技術(shù)大部分都是c/c++ 派系生態(tài)的東西,比如nginx藕坯,php团南,mysql以及相關(guān)的框架應(yīng)用vuejs,laravel炼彪。他們都是開源軟件吐根,有強大的開源社區(qū)做支持和維護,這相當于我在利用全世界的資源來開發(fā)軟件應(yīng)用辐马。除此之外還有十分健壯的生態(tài)環(huán)境拷橘,這樣我就可以獲取幾乎任何我想要的解決方案,因為開源世界肯定有人想過我想的問題了喜爷。相當于我從全世界免費雇人為公司打工冗疮。
產(chǎn)品質(zhì)量問題
我們講道理,以我見過的程序員來說檩帐,很大一部分人(包括我~~)都很難寫出高質(zhì)量术幔,穩(wěn)定,且可維護的代碼轿塔。相比之下開源社區(qū)的軟件代碼質(zhì)量都非常易維護且非常健壯(健壯就是軟件安全特愿,穩(wěn)定,完整)勾缭,因為開源軟件廣泛流傳揍障,經(jīng)歷全世界不同地區(qū)地域的商業(yè)考驗,不斷的更新修改,由幾千幾萬人共同維護岖食,經(jīng)過磨礪開源軟件在很多場景下運行的都很穩(wěn)定谎仲,安全性也會好很多戳寸。所以質(zhì)量方面至少要比我自己以及見過的外包團隊生產(chǎn)的東西要好很多(也可能是我見識少)兜畸。
系統(tǒng)的擴展能力
我們開發(fā)的東西努释,不可能只停留在一個階段,而且隨著技術(shù)的發(fā)展咬摇,底層技術(shù)可能成本會更加的低伐蒂,這樣的紅利便宜肯定要占呀!所以這就又體現(xiàn)出開源軟件的優(yōu)勢了肛鹏。因為開源軟件運行在各種不同的商業(yè)環(huán)境下逸邦,所以他們會有豐富的生態(tài)系統(tǒng)支撐,這就意味著有很多成熟的解決方案在扰。當我們進行業(yè)務(wù)變更的時候都可以在開源社區(qū)找到合適的解決方案(幸好現(xiàn)在人類想象力有限~~~點子少)缕减。而且隨著業(yè)務(wù)規(guī)模的不斷擴大,大規(guī)模I/O場景的解決方案也會有相應(yīng)的社區(qū)版解決方案芒珠。利用開源軟件的流行特性桥狡,我們可以很容易的找到相關(guān)技術(shù)人員擴大生產(chǎn)規(guī)模。
開源軟件我尚未用到的特質(zhì)
制定行業(yè)標準
開源軟件是可以制定行業(yè)標準的皱卓,參考谷歌的Android蘋果之外幾乎是唯一的手機操作系統(tǒng)了裹芝,基本上谷歌給Android開放了怎樣的API能力,決定了手機生產(chǎn)商能如何開發(fā)手機功能好爬。
讓更多的人來幫助你完善軟件而且是免費的
21世紀啥最貴呀局雄,除了房子就是人,如果有人能積極的幫你完善你創(chuàng)作的軟件那該有多好呀存炮?互惠互利炬搭,不僅提升生產(chǎn)力還大大降低成本。
總結(jié)
新時代穆桂,我想我們不需要在維持一個專注技術(shù)研究的團隊了宫盔,因為研究成果并不直接創(chuàng)造社會價值,如果可以我們應(yīng)該把技術(shù)開放與全人類共享享完。讓人們通過對技術(shù)的應(yīng)用創(chuàng)造跟高的生產(chǎn)力灼芭。所以現(xiàn)代企業(yè)為什么不積極擁抱開源軟件呢?