不知道多少想進(jìn)入互聯(lián)網(wǎng)行業(yè)的創(chuàng)業(yè)者曾問我,我想做一個項目,我該用什么技術(shù)?
存在即合理,你所選擇的所有技術(shù)本質(zhì)上都可以完成任務(wù),只是成本問題。
首先考慮的成本是學(xué)習(xí)成本,如果你說用這種技術(shù)很輕易可以實現(xiàn)功能,但是學(xué)習(xí)使用這種技術(shù)就需要幾個月,等你團(tuán)隊成員學(xué)習(xí)完成,項目早就過了最佳時期。所以你明白外面為什么一堆企業(yè)在用PHP了,因為上手實在是快得沒有朋友。
接著需要考慮的成本,就是找人的成本。試想想,你決定用C++來寫一個后臺管理系統(tǒng),你確定能很低成本找到會這技能的同學(xué)嗎?但是假如你采用了php這開發(fā)方案,外頭隨便一抓都是php,找人根本不愁(注意:我并沒有對php有偏見)。
核心技術(shù)研發(fā)風(fēng)險也是一個需要考慮的問題,假如你是要制作一只爬蟲,我相信你在搜索引擎找到的大部分資料都是關(guān)于python的,如果你用其它語言來寫爬蟲也無可厚非,反正都是可以寫出來,還是那句話,成本問題。
請用你的技術(shù)leader最熟悉的技術(shù),要知道項目排期,核心系統(tǒng)研發(fā)都是依靠你的技術(shù)leader一行一行代碼堆起來的。技術(shù)leader很辛苦的,就不要強(qiáng)迫他去話費額外的時間耗費在不在行的其它技術(shù)上了。
用成熟的技術(shù)而不用最新的技術(shù),這句話是針對小型團(tuán)隊而言的。成熟的技術(shù),你遇到的問題別人早就遇到了,答案還發(fā)布出來了。新技術(shù),社區(qū)資料不多,出了問題找不到答案,你就蒙頭查源代碼去吧。所以新技術(shù)先讓大企業(yè)去踩踩坑,用順了,我們就拿過來用。
有沒有好奇互聯(lián)網(wǎng)那些所謂主流技術(shù)是如何產(chǎn)生的呢?其實各種技術(shù)都是圈地為王。因為互聯(lián)網(wǎng)行業(yè)眾多創(chuàng)業(yè)公司的CTO都是從大公司出來的,而他們在創(chuàng)業(yè)公司選擇的技術(shù)往往是在老東家那里學(xué)來的。然后就這樣子一個帶一個的,某種技術(shù)就流行開來了。就像我習(xí)慣使用python + flask開發(fā)后端,雖然偶然使用一下golang。受我影響,身邊的朋友越來越多的使用了python和flask作為項目的技術(shù)選擇。
慎用高大上的技術(shù),老老實實用一下普通的技術(shù)吧。就像docker和微服務(wù)現(xiàn)在挺熱門的,但是使用前請考慮一下自己的技術(shù)團(tuán)隊能否扛住這種技術(shù)棧,不然一旦投產(chǎn)后問題無法解決,后果很嚴(yán)重。其實Linux + nginx + php/python + mysql足以應(yīng)付大部分場景,沒必要用多么新的技術(shù)。
從零開始開發(fā)還是二次開發(fā)?二次開發(fā)優(yōu)勢在于,系統(tǒng)可用,自己僅僅需要開發(fā)一些定制功能即可,需要的時間比較短。當(dāng)然缺點很明顯,在已有基礎(chǔ)上改動,就需要看懂原有系統(tǒng),后期維護(hù)工作也明顯增大。從零開始,就需要考慮系統(tǒng)從0到1這個階段是非常耗時的,但是后期維護(hù)相對而言輕松一些。
是否真的需要投入技術(shù)來開發(fā)?這世界上有一種東西叫做開源,開發(fā)系統(tǒng)之前請考慮一下有沒有現(xiàn)成的東西可以滿足業(yè)務(wù)需求??纯炊嗌倨髽I(yè)用wordpress制作公司官網(wǎng),多少企業(yè)使用discuz作為公司產(chǎn)品論壇,多少電商企業(yè)直接用ZenCart呢。
技術(shù)選型,三言兩語無法言盡,從業(yè)務(wù)出發(fā)才是根本的解決方法。
由于這只是一篇短短的小文章,沒法詳細(xì)說明什么時候該上消息中間件,什么時候又該異步回調(diào)處理。也沒辦法詳細(xì)說你該用什么語言什么框架。如果你想了解更多也可以私信我或者留言評論,我會具體回答。