“
對于初創(chuàng)公司來說,軟件開發(fā)的要點(diǎn)有哪些?程序員的重要性到底有多大?外包、內(nèi)包能夠包治百病嗎?
主要結(jié)論
就算要失敗并重試,初創(chuàng)公司的速度也一定要快,更重要的是一定要專心聆聽客戶心聲。初創(chuàng)公司的程序員需要迎合客戶而非代碼本身,這樣才能創(chuàng)造出足夠簡單直觀的軟件,進(jìn)而改善客戶體驗(yàn)。
為實(shí)現(xiàn)品牌的擴(kuò)張和公司規(guī)模的擴(kuò)大,初創(chuàng)公司的程序員必須在前瞻性思維引導(dǎo)下用狂飆的速度和激情進(jìn)行嘗試。
初創(chuàng)公司的程序員必須在速度、成本、質(zhì)量、用戶體驗(yàn)、設(shè)計(jì)、伸縮性等要?jiǎng)?wù)之間進(jìn)行權(quán)衡。
初創(chuàng)公司的程序員必須能順利應(yīng)對安全弱點(diǎn)和失敗。
初創(chuàng)公司的程序員可以是創(chuàng)始人、公司員工,或外包的供應(yīng)商,重點(diǎn)在于恰當(dāng)?shù)男膽B(tài)。
對大部分初創(chuàng)公司來說,技術(shù)是最關(guān)鍵的分水嶺。無論將技術(shù)視作自己的精髓(例如谷歌或優(yōu)步),或希望通過技術(shù)促進(jìn)自己的核心業(yè)務(wù)(例如Zenefits或Zappos),對初創(chuàng)公司來說,軟件開發(fā)很可能成為連接客戶痛點(diǎn)和公司收入流的橋梁。畢竟餐巾紙上規(guī)劃的構(gòu)思和藍(lán)圖需要通過軟件的形式交付到客戶手中。
初創(chuàng)公司實(shí)景
初創(chuàng)公司會(huì)面臨動(dòng)態(tài)、不可預(yù)測,甚至混亂的環(huán)境,這就迫使創(chuàng)始人必須快速行事,快速失敗,更快速地學(xué)習(xí)經(jīng)驗(yàn)教訓(xùn)找出市場利基(Market niche),從中獲得可持續(xù)收入。60%的初創(chuàng)公司撐不過頭五年,接受風(fēng)投注資的初創(chuàng)公司中75%終將失敗。這主要是因?yàn)槌鮿?chuàng)公司面臨的風(fēng)險(xiǎn)較大,錯(cuò)過了市場機(jī)會(huì),或其他業(yè)務(wù)方面的原因。
為了獲得推動(dòng),初創(chuàng)公司需要快速發(fā)展出自己的第一個(gè)客戶,并用更快速度發(fā)展出前十個(gè)客戶。但這一切可能需要2年時(shí)間??紤]到收入,需要盡可能快地將1個(gè)收入來源擴(kuò)展為10個(gè),只要達(dá)到百萬級收入,就可輕松實(shí)現(xiàn)15%的月增幅。
要快速獲取客戶并獲得收入,這種想法背后的原因在于,最適合的團(tuán)隊(duì)會(huì)借助每個(gè)客戶和每分錢的投入對產(chǎn)品進(jìn)行完善。各種緊迫情況會(huì)迫使團(tuán)隊(duì)更加立足于基礎(chǔ),專注聆聽客戶的想法和反饋,用盡可能最簡單的方式實(shí)現(xiàn)這些反饋,并周而復(fù)始地一直這樣做下去。
如果你的團(tuán)隊(duì)只是專注于他們自己覺得酷的地方,而非專注于客戶的實(shí)際想法,那只能說你入錯(cuò)行了。只要你的一切行事以客戶為基礎(chǔ),而非以代碼為基礎(chǔ),客戶會(huì)讓你在這場游戲中順利獲勝。
這和父母養(yǎng)育孩子的過程很相似:如果你希望自己的孩子以后能有出息,就必須在孩子成長和轉(zhuǎn)變過程中付諸足夠關(guān)心。你也許認(rèn)為孩子以后會(huì)成為氣象學(xué)家或NASA的專家,但這僅僅是因?yàn)槟阕约河X得這些職業(yè)很酷,只有朝著整個(gè)社會(huì)(而非你)需要他扮演的角色方向上培養(yǎng)、引導(dǎo)和教導(dǎo),你的孩子才能最終獲得成功。
程序員極為重要!
團(tuán)隊(duì)中的程序員能夠?qū)ψ罱K的成功或失敗造成多大程度的影響,這一點(diǎn)很難量化,但很明顯軟件和制造軟件的人在先于對手搶占市場方面扮演了一個(gè)關(guān)鍵的角色。這里有些例子。
為初創(chuàng)公司寫代碼和為老牌公司寫代碼的過程截然不同。初創(chuàng)公司有著獨(dú)特的文化,并會(huì)擴(kuò)展到業(yè)務(wù)的每個(gè)角度,從財(cái)務(wù)到銷售,從運(yùn)維到軟件開發(fā),全都包含在內(nèi)。你的產(chǎn)品必須簡單并且便宜。你必須精準(zhǔn)地專注于客戶,并不斷根據(jù)客戶體驗(yàn)快速完善自己的產(chǎn)品。沒什么是孤立的,沒什么是“神圣不可侵犯”的。這里有些例子。
不是隨便哪些代碼都可以這樣做,也不是隨便哪個(gè)程序員都愿意這樣做。無論程序員是否同時(shí)也是創(chuàng)始人,都必須首先和客戶而非代碼“聯(lián)姻”。尤其是軟件必須采用這樣的一種心態(tài):
理解客戶的想法,并采用差異化的技術(shù)滿足客戶的需求:
你的軟件必須能顛覆現(xiàn)有技術(shù)或企業(yè),通過更簡單、更直觀、更穩(wěn)健的各種“更”改善用戶體驗(yàn)。
因此對程序員來說,如果初創(chuàng)公司的業(yè)務(wù)領(lǐng)導(dǎo)談到某個(gè)健康追蹤應(yīng)用的上市時(shí)間,針對某個(gè)在線花店談到更平滑、直觀、不受干擾的客戶購物體驗(yàn),或談到要為放款人立刻提供針對特定客戶量身打造的報(bào)價(jià)方案;程序員需要知道這些要求意味著什么,以及如何通過軟件開發(fā)工具、方法以及功能實(shí)現(xiàn)這些要求。
這并不是說與項(xiàng)目有關(guān)的所有程序員都需要理解業(yè)務(wù)的方方面面,并理解將這些內(nèi)容轉(zhuǎn)變?yōu)榧夹g(shù)決策的方法,但技術(shù)領(lǐng)導(dǎo)者必須心里有譜,同時(shí)也要能解釋給技術(shù)團(tuán)隊(duì)。這樣整個(gè)團(tuán)隊(duì)才能通過大量小決策的積累最終產(chǎn)生大成果,成功實(shí)現(xiàn)“創(chuàng)造客戶想要的產(chǎn)品”這一愿景。
在競爭和不斷變化的要?jiǎng)?wù)之間進(jìn)行權(quán)衡:
技術(shù)愿景要求技術(shù)領(lǐng)導(dǎo)者必須能在競爭優(yōu)先權(quán)和速度、質(zhì)量、成本、用戶體驗(yàn)、設(shè)計(jì)、縮放性等方面進(jìn)行權(quán)衡。對每個(gè)初創(chuàng)公司來說這些要?jiǎng)?wù)各不相同,并且對同一家初創(chuàng)公司,這些要?jiǎng)?wù)也會(huì)時(shí)常發(fā)生變化。
例如身處性命攸關(guān)的醫(yī)療設(shè)備行業(yè)的初創(chuàng)公司,無疑會(huì)先于上市速度或成本等因素優(yōu)先考慮代碼質(zhì)量。但如果要開發(fā)網(wǎng)絡(luò)叫車應(yīng)用,上市速度和代碼質(zhì)量很可能同樣重要:客戶需要每次叫車時(shí)有車可乘,初創(chuàng)公司則需要在這個(gè)競爭激烈的市場中通過速度保持領(lǐng)先。
技術(shù)領(lǐng)導(dǎo)者需要對不同要?jiǎng)?wù)進(jìn)行權(quán)衡,但同時(shí)也要獲得所有團(tuán)隊(duì)成員的認(rèn)同和支持。如果我的初創(chuàng)公司要開發(fā)社交應(yīng)用,同時(shí)我雇傭了一位始終堅(jiān)持提供100%高質(zhì)量代碼的程序員,我可能會(huì)錯(cuò)失市場機(jī)會(huì)。
從2007年到2013年,每當(dāng)由于快速發(fā)布新功能導(dǎo)致網(wǎng)站出現(xiàn)技術(shù)問題后,Twitter都會(huì)在網(wǎng)站上放一張我們稱之為“失敗鯨(Fail Whale)”的圖片。很明顯,對他們來說創(chuàng)新速度的重要性遠(yuǎn)遠(yuǎn)勝過質(zhì)量。
成功僅僅是多個(gè)失敗粉飾后的結(jié)果:
對于技術(shù)領(lǐng)導(dǎo)者和支持團(tuán)隊(duì)來說,另一個(gè)非常重要的心態(tài)在于要能接受弱點(diǎn)和失敗。初創(chuàng)公司通常需要通過實(shí)驗(yàn)找出值得進(jìn)一步投入的想法、領(lǐng)域,以及特征。對于手頭的問題或腦海中的長遠(yuǎn)目標(biāo),并沒有哪怕一個(gè)已經(jīng)明確的解決方案,面對這種情況程序員也必須充滿活力,不能因此而感覺受挫。
團(tuán)隊(duì)的角色:
團(tuán)隊(duì)中的程序員實(shí)際上是公司創(chuàng)始人以及項(xiàng)目目標(biāo)實(shí)現(xiàn)過程中的“螺絲釘”。你的項(xiàng)目可能需要一名軟件工程師和一名質(zhì)量工程師,或者由同一位程序員擔(dān)任這些角色。你的項(xiàng)目可能需要架構(gòu)師,但此人同時(shí)也是產(chǎn)品的所有者或業(yè)務(wù)分析師。對初創(chuàng)公司來說,人員配置方面不存在嚴(yán)格的規(guī)定。人員需要接受項(xiàng)目的支配,然而你肯定不想面對冗員造成的開銷和瓶頸。
平臺和方法論很重要
為實(shí)現(xiàn)品牌的擴(kuò)張和公司規(guī)模的擴(kuò)大,技術(shù)團(tuán)隊(duì)必須在前瞻性思維引導(dǎo)下用狂飆的速度和激情進(jìn)行嘗試。天使投資人和風(fēng)險(xiǎn)資本投資人想要看到的不光是單點(diǎn)解決方案,而是能夠通過發(fā)展成功打造出一個(gè)平臺的公司。這就需要針對不斷變化的大環(huán)境開發(fā)出精彩的代碼,并持續(xù)專注于為最終用戶制造驚喜。
選擇能順應(yīng)這些需求的恰當(dāng)平臺就成為勢在必行的做法。平臺可以意味著某種操作系統(tǒng),某種編程語言,或者在某種編程語言基礎(chǔ)上構(gòu)建的某種框架。猶如房屋的地基,這種平臺可以為初創(chuàng)公司提供支撐,但也會(huì)造成局限。
在外人看來某些平臺似乎挺適合,但面對你的具體要求可能會(huì)顯得很糟糕。Azure也許很適合Olyve.com但并不適合Proflowers.com。Windows平臺也許很適合很多公司,但相比Unix系統(tǒng),在可伸縮性方面對PayPal來說無異于災(zāi)難。選擇恰當(dāng)平臺的最佳方法是雇傭足夠出色的程序員,并將平臺的選擇任務(wù)交給他們。
一般來說,初創(chuàng)公司的程序員更愿意選擇能快速順應(yīng)產(chǎn)品及其管理過程中所產(chǎn)生變化的技術(shù)。例如一些通用的基礎(chǔ)架構(gòu),如配置管理、問題報(bào)告、追蹤,以及規(guī)劃系統(tǒng)和調(diào)度與通知系統(tǒng)。
諸如白板等易于實(shí)現(xiàn)的工具,以及能夠應(yīng)對信息快節(jié)奏變化速度的技術(shù),可以降低初創(chuàng)公司的培訓(xùn)和維護(hù)成本。為了緩解資源缺乏的問題,初創(chuàng)公司通常會(huì)大量使用開源解決方案,這也使得他們能夠獲得大量“前人的經(jīng)驗(yàn)”。這里有些例子。
對于工具、平臺,以及方法論的選擇是需要優(yōu)先考慮的要?jiǎng)?wù),但隨著時(shí)間的流逝,最終的選擇也會(huì)不斷變化。如果速度是頭等要?jiǎng)?wù),那么可以選擇包含各類附加功能和服務(wù)的云平臺(例如Azure云),但這種做法:1,比其他選項(xiàng)成本更高;并且2,無法在不同組件方面獲得同類中的最佳產(chǎn)品。后續(xù)的發(fā)展之路上,隨著從客戶處獲得不同反饋以及公司的繼續(xù)增長,考慮其他選項(xiàng)可能會(huì)成為你那時(shí)的頭等要?jiǎng)?wù)。
在方法論方面,對于初創(chuàng)公司來說必須從整體上確保軟件開發(fā)過程的敏捷性、持續(xù)演化,以及機(jī)會(huì)主義。敏捷方法論對“變化”持包容態(tài)度,可以讓開發(fā)工作更適應(yīng)業(yè)務(wù)戰(zhàn)略。
采用快速發(fā)布后進(jìn)行迭代并持續(xù)集成的方法,可以縮短將創(chuàng)意構(gòu)思通過快速開發(fā)變成最終產(chǎn)品所需的前置時(shí)間。精益(Lean)方法論是敏捷的一個(gè)變體,借此可發(fā)現(xiàn)軟件項(xiàng)目中風(fēng)險(xiǎn)最大的部分,并提供最小可行產(chǎn)品促進(jìn)下一次迭代的測試和修改工作。
外包,內(nèi)包,包治百病?
最關(guān)鍵的軟件開發(fā)領(lǐng)導(dǎo)者是否同時(shí)也是公司創(chuàng)始人?未必。創(chuàng)業(yè)團(tuán)隊(duì)必須包含一系列互補(bǔ)的特征,這樣才能讓初創(chuàng)公司從不同角度發(fā)現(xiàn)機(jī)會(huì),快速嘗試,與客戶保持足夠近的距離。
這一過程需要銷售、營銷,以及技術(shù)的介入。需要?jiǎng)?chuàng)新并形成體系,需要冒險(xiǎn)但也要謹(jǐn)慎行事,同時(shí)需要維持極危險(xiǎn)的“全速狂飆”承諾。這些技能和特征也許并非每個(gè)創(chuàng)始人都具備,但每個(gè)創(chuàng)始人都會(huì)將其視作核心價(jià)值。這里有些例子。
程序員到底該來自哪里,這不光決定了一個(gè)或全部創(chuàng)始人是否恰巧都是軟件工程師,還決定了你想要實(shí)現(xiàn)什么目標(biāo),要使用什么語言、平臺和方法論,想多快速度實(shí)現(xiàn),這其中你能投入多收成本。對于軟件或解決方案,到底由公司內(nèi)部自行開發(fā)還是外包,最重要的差別并不在于程序員到底居住在哪里,而在于誰負(fù)責(zé)領(lǐng)導(dǎo)開發(fā)工作。
負(fù)責(zé)人了解代碼嗎?最好能了解。負(fù)責(zé)人了解你的客戶和業(yè)務(wù)嗎?要能了解那就更好了。負(fù)責(zé)人能夠100%致力于實(shí)現(xiàn)初創(chuàng)公司所需的速度和價(jià)值嗎?如果能,那就大膽放手干吧。負(fù)責(zé)人可以是創(chuàng)始人自己或雇傭的員工,也可以是顧問或外包團(tuán)隊(duì)的成員,但此人必須能夠駕馭公司的技術(shù)愿景。
如果軟件開發(fā)工作是外包的,你只能獲得很少的潛在優(yōu)勢。雖然74%的高增速互聯(lián)網(wǎng)初創(chuàng)公司由于過早擴(kuò)張而最終失敗,但外包至少還有一個(gè)優(yōu)勢:可以非??焖俑咝У?cái)U(kuò)張和收縮,以合適的規(guī)模進(jìn)行嘗試。
此外還有其他一些優(yōu)勢,例如你可以更迅速地應(yīng)對程序員與代碼而非客戶“聯(lián)姻”,或所采取的方法無法滿足初創(chuàng)公司對企業(yè)文化的要求所造成的問題。如果創(chuàng)業(yè)團(tuán)隊(duì)中有程序員屬于后一種情況,可能在起步階段就會(huì)面臨障礙。然而如果雇傭的人員無法滿足要求,隨時(shí)更換代碼、供應(yīng)商,或同時(shí)更換這兩者,即可瞬間做出動(dòng)態(tài)的調(diào)整。
Gigster的創(chuàng)始人兼初創(chuàng)公司軟件外包做法的擁護(hù)者Roger Dickey認(rèn)為,如果采取外包的方法,就可以輕松地快速做出5個(gè)原型,并根據(jù)客戶需求從中選擇。他認(rèn)為借此可以規(guī)避對代碼過度依賴這種對初創(chuàng)公司來說致命的問題。
我同意這一點(diǎn)但也要提醒大家,如果外包,那么你的公司內(nèi)部一定要有了解技術(shù)和業(yè)務(wù)的人員,這樣的人必須能用易于理解的方式促進(jìn)技術(shù)人員之間,以及技術(shù)和業(yè)務(wù)人員之間的交流,并將這種交流運(yùn)用到開發(fā)環(huán)境中。
內(nèi)部開發(fā)且創(chuàng)始人身兼程序員職責(zé),和/或由技術(shù)人員領(lǐng)導(dǎo)開發(fā)工作,這些做法也能帶來收益。最重要的問題在于,由于代碼本身已成為獲得成功的重要組件,你需要對代碼獲得盡可能多的所有權(quán)和控制權(quán)。
在尋求天使或VC投資的過程中,可以從技能和態(tài)度的角度將創(chuàng)始人描述為你們公司的“獨(dú)門秘方”,這一點(diǎn)對投資人很有吸引力,畢竟他們更愿意投資人員而非想法。如果你的所有優(yōu)勢都源自某個(gè)供應(yīng)商,對投資人來說就有些危險(xiǎn)了。
無論軟件開發(fā)選擇了外包或內(nèi)部開發(fā)的方式,都必須在程序員、其他創(chuàng)始人,以及客戶之間維持活躍的交流溝通、信任、原則,以及開放式討論。可以在公司內(nèi)部或外部尋找符合這些特征的人,但是要記住,他們對你的成功意義重大。
成功到底長什么樣?
成長只發(fā)生在旅途中,而非終點(diǎn)線上,這種說法對初創(chuàng)公司來說比任何其他領(lǐng)域都更為適用。成功意味著旅途還在繼續(xù),還是“熟悉的配方”,但“味道更多”:更多實(shí)驗(yàn),更多嘗試,更大規(guī)模,重構(gòu),失敗……。初創(chuàng)公司在第一階段會(huì)面臨不少挑戰(zhàn),就算后續(xù)階段都能獲得成功結(jié)果也不會(huì)有太大區(qū)別。
但你的工作要?jiǎng)?wù)可能會(huì)變?yōu)橐?guī)模、品牌的成長、管理位于不同位置的(更)大技術(shù)團(tuán)隊(duì)等。面對這些挑戰(zhàn)的你依然能從第一階段所奠定的心態(tài)中獲益。也許彼時(shí)步調(diào)已經(jīng)不那么快得讓人發(fā)狂,但是對于客戶,對于迭代,以及對于集成和溝通交流的承諾始終是不變的。
如果你覺得這樣的過程有著獨(dú)特的樂趣,引人入勝,充滿挑戰(zhàn),那么你可能已經(jīng)變身為成功路上的初創(chuàng)公司創(chuàng)始人。
本文由譯者大愚若智翻譯自InfoQ英文站,原文鏈接:
https://www.infoq.com/articles/how-startups-build-software
▽
免費(fèi)沙龍報(bào)名:來深圳一起聊聊分布式架構(gòu)吧~(戳閱讀原文報(bào)名)
云計(jì)算的發(fā)展離不開分布式架構(gòu)的應(yīng)用。在最新一期蝴蝶沙龍上,我們將邀請首都在線總工程師周東波、PingCAP首席技術(shù)官黃東旭等資深專家來到深圳,一起聊一聊分布式架構(gòu)背后的那些實(shí)踐經(jīng)驗(yàn)與技術(shù)細(xì)節(jié),內(nèi)容涉及容器化服務(wù)的分布式存儲選型、分布式關(guān)系型數(shù)據(jù)庫的架構(gòu)實(shí)現(xiàn)等話題。
喜歡我們的會(huì)點(diǎn)贊,愛我們的會(huì)分享!
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。