為初創公司修復軟件熵的 5 種方法
已發表: 2019-01-21初創公司耗盡大部分資源以盡快進入市場
好的質量需要大量的時間和成本才能達到,而這正是大多數初創公司受苦的地方
編寫和重寫代碼的一個組成部分,並在你前進的過程中養成這樣做的習慣
“'初創公司'是一家對以下方面感到困惑的公司——1.它的產品是什麼,2.它的客戶是誰3.如何賺錢。” – Dave McClure,500 Startups 創始人
在其旅程中,一家科技初創公司擁有三個成功的槓桿:成本、速度和質量。
不幸的是,您一次只能選擇兩個。 所以,如果你選擇速度和成本,你可能不得不犧牲質量。 或者,如果您選擇速度和質量,可能會花費您數百萬美元。 這種二比三的選擇會導致軟件熵,這是“已經完成的事情無法撤消”的情況,正如麥克白夫人所說,或者用技術術語來說,你會說,“在軟件技術這樣的封閉系統中,產品的消耗質量無法在一段時間內得到改善。”
我們將更多地討論軟件熵、導致它的因素以及可能的解決方案。 在此之前,了解導致軟件熵的原因很重要。
創業的三個槓桿
速度
一旦你涉足初創公司的水域,你就會意識到時間是上述所有三個因素中最有限的資源。 在一家初創公司開始在收入方面看到一些吸引力之前,它從未被稱為公司。
為了充分利用自舉數量,發布了一種通常稱為“測試版”並且通常具有“低質量”(與目標產品相比)的快速產品,以儘早佔領市場。
初創公司耗盡大部分資源以盡快進入市場,全力以赴實現“速度”,這在大多數情況下是三者中最受歡迎的槓桿。
成本
與時間相比,成本在任何意義上都是有形的。 這是創業公司的心跳。
“創業公司只有兩個優先事項:贏得市場和不耗盡現金。” ——本霍洛維茨
您帳戶中的餘額越多,您生存的時間就越長。 在初創公司的初始階段,大部分資源都用於為您的組織安排重要資產(也包括負債),例如支付辦公室、家具、互聯網、工資等等。
通常情況下,由於預算限制,初創公司很難負擔得起業內頂級開發商的費用。 通常,高級程序員或高級管理人員會留到以後,以便在資金流入時僱用他們。
質量
好的工作是昂貴的,偉大的工作更昂貴,而高質量的工作需要付出非凡的代價。 質量是最難達到的。 好的質量需要大量的時間和成本才能達到。 這也是大多數初創公司受苦的地方。
大多數創業公司都是從有限的資金開始的,力爭盡快盈利。 他們的目標是在資金耗盡之前做好生產準備和銷售。 在公司處於成長階段之前,企業家會努力快速生產並打入市場。 這使這些初創公司能夠獲得市場份額並協作以建立客戶反饋。
大多數公司從“測試版”開始,這可以產生一些吸引力並為他們的需求提供資金,因為他們在一個以產品競爭激烈為特徵的市場中向上發展。
初創公司通常會聘請新的開發人員和工程師(很少有預算聘請高級開發人員),他們了解他們的需求,有一定的開發意識,並且可以用最少的資源創建產品。 毫無疑問,這些開發商的成本更低。 它們很容易成型,並且經常可以輪班工作。
Urbanclap 聯合創始人/首席技術官 Raghav Chandra 說
“質量通常被視為速度(更長的衝刺、更多的代碼編寫/測試等)和成本(更多的工程師、更好的基礎設施等)的折衷。 然而,在年輕的階段,良好的質量是對速度和成本的巨大推動。
質量有多個方面:它的架構設計(!= infra)在早期發揮了最大的影響力。
最大的耗時要么是發現錯誤(通過調用鏈),要么是在設計糟糕的代碼上構建功能——這都是糟糕的隔離和軟件維護的產物。”
隨著公司開始成長並開始盈利,構建穩定產品的需求就出現了。 創建的產品的先前版本需要改進,並且必須重新編寫代碼。
隨著客戶開始出現,質量很快成為重中之重。 為了提高這種質量,團隊中增加了一名經驗更豐富、對市場更了解的員工。 聘請成本更高的高級開發人員來開發現有產品。 這些開發人員大部分時間都在改進舊代碼行,同時也在快速開發新的、高質量的功能。
修復舊代碼行以開發新功能,大多數開發人員都在努力獲得所需的結果。 但隨著時間的流逝,在團隊努力改進產品的情況下,質量卻沒有提高。
這個因素被稱為軟件熵。
什麼是軟件熵?
根據維基百科的定義,關於封閉系統(沒有輸入或輸出)中的熱力學第二定律,在一段時間內無法減少無序。
即使在軟件系統的情況下,這條定律似乎也是相關的; 當一個系統在一段時間內被修改時,它的無序度只會隨著努力而增加而不是減少。
隨著新開發人員嘗試改進現有代碼以提高質量,產品質量與預期結果相差甚遠。 隨著對現有代碼行的修改進行修正,“熵”不斷增加,導致更複雜的代碼難以修復。 這通常會導致開發人員和軟件工程師感到沮喪。 大多數時候,成長中的初創公司採取從頭開始編寫代碼來修復這種熵的艱難路線。
為你推薦:
Andrew Hunt 和 David Thomas 在 The Pragmatic Programmer: From Journeyman to Master 一書中寫道,
“軟件熵具有傳染性,如果不加以控制,就會成為一種流行病。”
那麼,我們如何解決這個問題,以及聘請能夠在更少的時間和預算內完成高質量工作的開發人員的最佳措施是什麼?
那麼,創業公司應該關注成本、速度還是質量?
Intelliphi 首席執行官兼創始人 Anand Thaker 說,
“系統的質量應該達到最低限度,這樣它就不會給用戶體驗帶來持續的麻煩”
在系統運行關鍵或生死操作的情況下也有例外。
在這些早期階段,初創公司仍在尋找產品與市場的契合度。 在嘈雜且競爭激烈的基於 SaaS 的世界中,產品與市場的契合度決定了創業公司的成敗。 此外,團隊的活力和領導力也處於快速發展階段。 出於這個原因,精益創業快速失敗是一種合理的哲學。 將其視為第一個熵挑戰。
隨著產品市場的固化,一家初創公司要么計劃對零件或整個平台進行質量改造。 在這一點上向前發展,轉化為更好的客戶體驗的質量努力會影響增長。 良好的增長提供了更多的資金和客戶保留。
就個人而言,我更喜歡以產品為主導的初創公司和初創公司創始人。 通常,解決方案和願景是穩健的,他們的方法結合了彈性……他們的退出和倍數要大得多(是其他典型初創公司的 3 到 5 倍)。 對於這些類型的初創公司/創始人,他們很可能尊重熵,但是,即使他們對早期階段的理解也是關於速度和適合獲得關鍵初始動力的。”
初創公司如何降低軟件熵?
從最少的技術開始
UrbanClap 首席技術官談到使用最少且可重用的技術是“無法正確分離關注點,這會導致糟糕和臃腫的團隊設計以及過度膨脹的基礎設施成本。 要很好地解決這個問題,最大和最重要的槓桿就是掌握有意建築設計的文化。
- 強大的設計審查文化,專注於模塊化和重用的有意設計
- 框架高於指導方針——對於小團隊,傳播最佳實踐是一個緩慢的過程。 最好通過工程師構建框架和工具來“自動化”最佳實踐,以標準化不同的工程部分。”
大多數創業公司都是從一個特定的想法開始的,它會在一段時間內發展,添加新的想法、功能,有時它會變成一個全新的產品。 確保您在成立初期使用的技術 A 與技術 B 兼容,後者可以與您將來可能使用的技術 C 合併。
隨著公司願景的發展,產品也在發展,在此過程中引入(或中斷)各種技術。 確保您使用最少的技術,直到您的產品穩定並可以使用。 優化你的代碼。
考慮代碼優化
編寫和重寫代碼的一個組成部分,並在你前進的過程中養成這樣做的習慣。 這可以幫助您跟踪在光澤產品後端上線的所有代碼。
編寫代碼的一個組成部分有助於新員工在提交新提交之前修改重要部分。 整體部分有助於區分代碼的好部分和壞部分。
重新檢查提交
曾經提交過代碼嗎? 如果沒有,把它放在你的遺願清單上。
它是對開發人員投入組織的努力和承諾的衡量標準。 大多數初創公司都會慶祝第一個提交的代碼。 是時候重新檢查這些提交了。 不是第一個,不是最後一個,而是全部。
強制要求同行完成所有代碼提交,以確保不遺餘力地獲得最優質的代碼。
招聘時不要忘記評估工具
一段時間後,您會意識到您無法向客戶證明代碼質量差,將其歸咎於時間和成本。
從您第一次僱用時開始使用技術評估軟件,可確保您與了解您的要求並能夠在壓力下取得成果的員工打交道。
初創公司的每一次錯誤招聘都會花費近 18,000 美元,從工資和津貼到招聘所涉及的所有流程——最重要的是,一個小團隊在重要項目上花費的面試和評估時間。
技術招聘軟件具有多種編程語言、自動測試創建和詳細的候選人報告等功能。 廣泛的抄襲功能可幫助團隊擺脫通常的“密切關注”的麻煩。
諸如“Java 項目”(作為作業共享的現有項目的一部分)之類的任務可以與在真實編碼環境中工作並提交實際代碼的候選人共享,這可以正確地描述必須完成的工作。
做你的作業
最後但並非最不重要的一點是,做好功課。 關注有影響力的人,閱讀書籍,與類似領域的人聯繫。
有很多人在他們的組織中努力提高軟件熵。
Anand Thaker 說,
“知識和溝通對於改進熵至關重要。 當一個對系統的某個部分有深入了解的團隊成員離開時,我們經歷了熵。
另一種情況是軟件的某些部分幾個月或幾年都沒有受到影響。 確保定期重新訪問這些功能和底層代碼/邏輯。
此外,考慮為發展理念設定基調/文化。
熵將永遠存在,但限制它的增長也是一門藝術。 作為技術或行政主管,您可能已經知道這一點,但軟件開發是一個有紀律的過程。 優秀的團隊成員為他們的工作感到自豪。 同行對這種努力的認可大有幫助。” 談論並討論人們隨著時間的推移所學到的知識。
結論
在初始階段,初創公司是否應該關注質量?
糟糕的代碼質量一直是許多初創公司失敗的主要原因。 在一段時間內改進它已經損失了大量的時間、金錢和努力。 像“代碼不好”這樣的簡單評論來“改進這一行”總比什麼都不做來改進代碼要好。
初創企業是一種開闢新天地並改變世界的經濟現象。
Raghav Chandra 對飽受熵之苦的初創公司的建議是:“對於較小的團隊,我發現擁有更多團隊並保持組織扁平化、每個人都可以參與的更好的槓桿作用。
作為技術主管/經理,重要的是要培養團隊更好地“思考”。 努力思考更好是有幫助的,這會減少以後解決問題的時間。
實施前的頭腦風暴和深入思考並不是在時間或成本上的妥協——它確實是構建系統級質量的最便宜的方式。”
是時候關注熵並聘請最優秀的開發人員來幫助減少我們構建的產品中的熵了。