
葉夫根尼·布里克曼
本書以軟件工程師出身的創業者的角度,全面介紹了創業公司該如何打造產品、實現技術和建立團隊,既是爲創業者打造的一份實用入門指南,又適合所有程序員系統認識IT行業。書中內容分爲三部分——技術、產品和團隊,詳細描繪創業的原始景象,具體內容包括:創業點子、產品設計、數據與營銷、技術棧的選擇、整潔的代碼、軟件交付、創業文化、招兵買馬,等等。本書適合所有程序員,尤其是準備創業的技術人員。
2020015。 感覺這是一本被題目耽誤了的好書。用程序員替代創業者是一個失敗,奔跑吧更是無語,又不是娛樂節目~ 整本書涉及了技術創業的方方面面,金句極多,對於技術人員來說,無論是創業者,或者是想在技術上深鑽,這本書都很有參考價值。 書中有些話我很喜歡: 1. 最有效的一個策略就是努力成爲一名T型人。既是通才(在許多有價值的方面高度熟練——T的橫),也是專才(在某個特定的學科中屬於領域內最出色的——T的豎)。 2. 我並沒有發明什麼新東西。只不過把他人的發現彙集起來了而已,在他們背後是幾個世紀的工作成果。如果我在50年、10年,甚至5年前做這些事,可能就不會成功。任何新生事物都是如此。當萬事俱備,質變就發生了,而且是不可避免地發生。教別人相信“人類最偉大的進步是由極少數人推動的”實在是糟糕透頂的胡說八道。——亨利·福特 3. 加州大學戴維斯分校的研究發現,科學及其他學科中的傑出成就者一般只是做得更多,而不是做的質量更高。 4. 所以自我管理的方法就是一旦你有什麼真正重要的問題,就不要把其他事情置於自己注意力的中心,你要一直把心思放在這個問題上。讓你的潛意識保持在“飢餓”狀態,不得不解決你的問題。這樣你就可以平靜地入睡,等待清晨醒來時得到答案,得來全不費工夫。——Richard Hamming, You and Your Research演講 4. “如果你第一次發佈的時候沒有感到尷尬,就是產品推出的時間太晚了。” 5. 是否能夠解決一個問題存在兩個因素。·問題可以被解決。·問題可以被你解決。第一個問題和市場實際情況有關。我們既要考慮前面所提到的市場規模、問題驗證,也要覈實解決該問題的技術是否已經存在,還要看解決方案從經濟上是否足以建立起可盈利的商業模式。紅杉資本是當今世上最成功的風險投資公司之一,它的合夥人會詢問創始人們一個問題:“爲什麼是現在?”世界發生了什麼變化,使得現在成爲建立這家公司的最佳時間?你知道什麼其他人所不知道的?爲什麼沒有人在兩年前建立這樣的公司?爲什麼兩年以後再建立這樣的公司就太遲了? 6. 你關注的目標越廣泛,錯失靶心的必然性就越大。想讓大量人口中50%的人滿意你的產品,從而實現50%產品滿意度的目標,這種做法是行不通的。我們只能挑選出50%的人,想方設法讓他們100%滿意,才能實現我們的目標。我們甚至可以瞄準市場中10%的人,讓他們100%地心醉神迷,從而取得更大的成功。這聽起來可能有點違揹我們的直觀感覺,但爲單個用戶進行設計是滿足廣大人羣需求最有效的方式。——Alan Cooper, The Inmates Are Running The Asylum 7. “達到完美並不是沒有東西可以添加,而是沒有東西可以去除。” 8. 人們認爲專注就是要對你關注的東西點頭稱是,但是事實並非如此。專注其實是要對其他一百個出現的好主意說不——所以你只能小心挑選。實際上,我對我們不做的事與我們做了的事一樣感到自豪。創新就是對1000種東西說不。——史蒂夫·喬布斯 9. 你的差異性必須比競爭者多得多才行。你要尋求的不是10%的改進,而是10倍的改進。做不到這點,大多數客戶就覺得不值得花工夫換成你的產品。 10. 如果研究Zynga這樣的公司製作的手機遊戲,會發現其一半收益來自於0.15%的玩家,這些玩家被稱爲“鯨魚玩家”。在這樣的商業模式中,弄清楚是怎樣的用戶獲取策略,激活、留存和推薦策略吸引到了更多的鯨魚玩家,是這種公司獲得成功的唯一方式。 11. 我的朋友Clift Norris找到了一個基本的常數,我稱之爲Norris常數,表示未經訓練的程序員在他(或者她)遇到瓶頸之前所能編寫的平均代碼量。Clift估計這個數是1500行。如果代碼超過這個數,就會十分混亂,作者也無法輕鬆地調試或修改。——John D.Cook, The Endeavour 12. 你只能花你生命中屈指可數的1萬個小時,所以要定期投資(讓學習成爲一種定期的習慣),也要明智地選擇你的投資。爲了讓你的投資多樣化,你要在保守投資和高風險投資中保持平衡;你需要緊跟行業趨勢,瞭解什麼技能和技術在當今是有價值的,什麼是即將來臨的,而且明天可能是有價值的。 13. 做事情的時間不是找出來的,而是創造出來的。
被書名耽誤的好書。這是寫給互聯網程序員的創業百科全書。英文原書的名字Hello Startup呼應Hello World,一語雙關,直接做主標題就很好。 你不能準備去創業,它是自然而然發生的,跟着它走就是了,然後一路去解決各種問題。讀書仍然是很重要的(比如這一本),從經歷中學習也很重要。但是最後,你還是得以你的方式去應對遇到的事情。 不要相信你讀到的所有東西。你在科技出版物上看到的很多創業故事都是經過大量編輯的市場營銷敘事方法。這些故事不一定是錯誤的,但是它們沒有描繪出全部的情況。 經濟上的成功並不是唯一的目標或者成功的唯一指標。人們很容易沉浸在賺錢帶來的滿足感中。你應該把金錢當作真正要做的事情的助推劑,而不要把金錢本身當作目標。金錢就像汽車中的汽油——你需要加以關注,否則車就會拋錨,但是美好的生活並不是在加油站間旅行。 如果你是爲了變得富有,那麼請永遠不要創業。如果有人說這是或者那是一種迷人的生活方式,他們肯定不知道自己在說什麼。通常,這是一段要經過許多許多年艱辛工作的長途跋涉,成功的概率永遠不會讓你滿意。 作爲程序員,把賭注壓在幾家創業公司身上,是找到成功職業的最佳方式之一。去已經初露鋒芒的創業公司打工。等公司繼續成長,拿到股票回報後,繼續找另外的創業公司。 第一部分 產品 點子不是設計, 設計不是原型, 原型不是程序, 程序不是產品, 產品不是企業, 企業不是利潤, 利潤不是退出, 退出也不是快樂。 創立公司最合適的原因就是你對某個想法充滿熱情,非要把它帶給全世界。你之所以去做,不是爲了聲望或財富,而是因爲它對你足夠重要。爲了實現它,你願意爲之經受所有的痛苦、風險和犧牲。只有你願意把生命的下一個十年都花在開創一家公司上,你才能去做這件事。 開創一家公司就像把自己丟下懸崖峭壁,還要在下落的過程中把飛機組裝出來。 建立一家成功的創業公司的難度是超乎想象的。面對大公司的競爭,你很難招聘到出色的人才;當你好不容易纔招聘到的出色人才決定離開公司時,也會讓你感到世事維艱;解僱那些表現不好的人也很困難;激勵人同樣困難;在事情不見起色錢卻已花完時,激勵自己更是困難;融資是困難的;在投資者介入之後,不讓他們使自己的業務偏離軌道也是困難的;在你不得不擔心公司的短期生存問題時,關注公司的長期發展方向也是困難的;讓不斷變化的市場接受全新的產品是困難的;在某種東西上花那麼多的時間——製作、銷售、推廣,仍然不引起別人的注意,堅持下去也是困難的;每一天,你都要在幾乎沒有足夠信息的情況下做出數十個決定,而且每一個決定都會把很多的時間、金錢和許多人的職業置於風險當中,這同樣不容易;你犯了錯誤,並且還會不斷再犯的時候,同樣也是艱難困苦的,因爲除了自己之外,你沒辦法去責備別人。 科技創業公司是具有下述特徵的組織。 產品:科技。 環境:極度不確定。 目標:大幅增長。 運作模式:探索。 偉大的公司是進化而來的,速度制勝。要以一種增量、迭代式的發展方式去打造一家創業公司(好比敏捷和精益開發),而不是費心去找出完美的計劃(好比"瀑布式開發")。不管你是在打造產品、開發技術抑或建立團隊,都會發現最好的起步方式其實就是先做出一個大概可以工作的最小的東西(最簡可行產品,簡稱MVP),然後再根據客戶的反饋(對產品而言)、代碼的評審和測試情況(對技術而言)或員工情況(對團隊而言)逐漸進化,擴大規模。 99%的Web創業公司都不存在複雜的科學問題,大部分的Web創業公司能否成功,幾乎都完全取決於執行、有針對性的推廣、銷售、產品和技術。 許多人都在談論如何使用"病毒營銷策略",但現實中卻沒有這樣的東西。在所有社交網絡上出現的病毒式傳播的博客文章或視頻並不是一種市場推廣策略,而是純屬好運。這是你預料不到的,你也無法控制能看到它的受衆,也不能把它變成一種可持續的營銷策略。 最困難的事情就是成功函數是非常不連續的。例如,你努力了幾個月絞盡腦汁要找出提高用戶增長率的方法,嘗試引入一些新特性,覺得可以讓指標曲線"向上和向右"移動,但實際卻一點兒作用都沒有。長期以來,一無所獲。然後突然之間,巨大的成功就毫無徵兆地到來了。 既然我們無法提前知道這些間斷點會出現在什麼地方,那麼唯一合理的行爲似乎就是真正努力去工作了。時間的長度是有限的,所以只能儘可能多地去做事情,讓自己在倒下之前碰到下一個斷點的機會盡可能地大。如果你在到達下一個斷點之前就已經倒下了,你也知道自己已經努力過,不可能更快地實現目標了。 創意並不神奇。比如,過去40年幾乎所有的暢銷歌曲全部都基於完全相同的四個和絃,從甲殼蟲樂隊的"Let it Be"、Journey的"Don't Stop Believing",到Bob Marley的"No Woman No Cry"、The Red Hot Chili Peppers的"Under the Bridge"、Lady Gaga的"Poker Face",概莫能外(如果不相信,不妨看看Axis of Awesome在一場趣味十足、讓人大開眼界的表演中演唱的"The 4 Chords Song"去核實一下)。 沒有人能預測哪些知識可以讓你產生有用的點子,哪些知識不能的方法。最好的做法就是儘可能多學習一些東西,特別是你覺得有意思的主題。換句話說,"獲得創業點子的方法就是不要去想創業點子",而是把自己變成一個有創業點子的人。找到吸引你的主題,花大量的時間去思索,在點子日記上寫下自己的想法並與他人分享。學會利用約束條件,尋找痛點,多出去走走,爲你的潛意識提供大量時間處理所學到的東西。最終,便會萌發點子。 什麼樣的環境可以激勵人們產生新的點子呢?因人而異,但最常見的要素有這麼一些:給自己充足的時間;記錄點子日記;解決問題;放下工作;添加約束;尋找痛點;與他人交談。 產生不同尋常的點子的最佳方式並不是提高點子的平均質量,而是提高它們的差異性。 業務是由點子和執行力構成的。也許有人可以偷走你的點子,但偷走你的執行力就要困難得多。 評估市場規模有一個好方法,就是考慮建立一家賺10億美元收入的公司的幾種方法。 ·以1美元的價格銷售10億件產品:可口可樂(罐裝汽水); ·以10美元的價格銷售1億件產品:強生(家用產品); ·以100美元的價格銷售1000萬件產品:暴雪(《魔獸爭霸》); ·以1000美元的價格銷售100萬件產品:聯想(筆記本電腦); ·以1萬美元的價格銷售10萬件產品:豐田(汽車); ·以10萬美元的價格銷售1萬件產品:Oracle(企業級軟件); ·以100萬美元的價格銷售1000件產品:Countrywide(高端金融抵押公司)。 讓錯誤更有可能發生或更不可能發生。 達到完美並不是沒有東西可以添加,而是沒有東西可以去除。 想通過加入創業公司而致富並不是明智之舉。這不僅是不可能的事情,而且也是一種不好的導向。對金錢的渴望並不足以讓人忍受在建立公司的過程中所經受的那種殘酷的艱難工作。實際上,它甚至還可能會降低你的積極性。建立創業公司很可能不會讓你變得富有;如果可以,也不會那麼快。成功是極少的,如果確實發生了,也要花上近十年的時間。 第二部分 技術 最初選擇的技術並不是關鍵,最初的決定在最後看來一定是錯的,唯一的問題是它會錯多久。關鍵在於,你要在遇到拐點時有壯士斷腕的勇氣,而不是爲了存活而一層一層地給它貼上創可貼。遵循這樣的準則極其重要。從目前來看,這比緊跟潮流、爲了做出初始的最佳技術決定而進行無窮無盡的設計分析要更爲重要。我們應該做的是,確保把自己和環境鍛造成能夠適應各種變化,能夠知道什麼時候是重建的合適時機。 好的技術棧,擴展要快於需要進行的維護。 創業的擴展和手動汽車換擋有點類似。太早擴展就像在汽車低速行駛時切換到高速擋:齒輪會越轉越慢,可能還會徹底熄火;太晚擴展就像在低速擋上把油門一腳踩到底:發動機會承受巨大的壓力,出現紅燈告警,如果持續的時間太長,發動機會過熱,根本不會達到最高速度。所以,爲了能平緩前進,我們必須在合適的時間進行擴展和換擋。 對創業公司來說,使用開源產品通常是最好的選擇,其次就是使用商業產品。自己開發基礎框架應該被看作是最後的選擇,只有在沒有其他選擇的時候纔可以用。 編程在很大程度上就是一門手藝。你會因爲選擇了正確的工具、努力工作並製作出精美的東西而獲得深深的成就感。它的美不僅源於對用戶而言漂亮的外觀,還源於其精工細作的內部運作方式。優雅的解決方案會讓程序員愉悅 編程是一種讓他人瞭解你想讓電腦做什麼的藝術。程序員的工作並不是在編寫代碼,而是在理解代碼。編程語言是對程序的思考,而不是表達你已經思考過的程序。 "好的投資是無聊的"。我想說好的數據存儲也是無聊的。關係型數據庫應該是我們做出任何數據存儲決定的默認選擇。我們可以先用關係型數據庫對問題進行建模,看看在碰壁之前我們可以走多遠。如果很長時間都沒有碰壁也不用驚訝,因爲關係型數據庫也是相當靈活的。 數據庫擴展的解決方案,按照複雜程度,以下列出了最常見的一些選擇: ·對數據存儲格式和現有數據庫的查詢進行優化; ·在數據庫之前設置緩存(例如內存緩存); ·建立主-從複製; ·對無關聯的表進行垂直分區; ·對單張表進行水平分區; ·建立多主複製。 一般而言,我們要儘可能避免對數據進行分區,並堅持使用單點寫入。分片的多主系統存在更多的故障模式,在實現JOIN操作、事務、強制完整性約束、遷移、更新、備份和id生成方面也會更加複雜。NoSQL的問題則是,你不得不在上述各個方面做出犧牲,即便大多數用戶場景對於這一切並不是必要的。而即便在確有必要做出犧牲的情況下,用關係型數據庫去實現也可以讓我們走得很遠 如果力求全面導致名稱長得可笑,通常也是一個信號,表明你所命名的對象承擔了太多的職責 實現持續集成最常見的方法就是使用基於主幹的開發模型。在git中只使用main,不建立任何分支。 第三部分 團隊 當初,他們並不知道那是不可能的,所以他們做到了。 馬丁·路德·金做的演講是"我有一個夢想",而非"我有一個計劃"。當你的產品正在艱難的孕育當中,你的團隊一週要工作80個小時,這就是夢想,這就是說服你們保持前進的理由,而肯定不是一個計劃,或是獲得收益的預期去驅使你們。所以爲什麼說公司的使命不應該和金錢有關。 如果你想做一艘船,就不要召集人們去收集木材,也不要給他們分工或下命令。相反,你要讓他們對廣闊無盡的大海產生渴望。 自主權、掌控力和使命感是激勵人的三個最強有力的因素。如果你找到了一份可以同時提供這三者的工作,那麼就是找到了一份你會熱愛的工作,也是一份你可以爲之自豪的工作。 不要把核心價值和文化規範、管理風潮或者當前策略這些弄混。它是一個核心價值,是哪怕你不再工作也有足夠的錢卻仍會在生活中遵循的價值,是即便一百年以後,即便你加入完全不同的公司,即便你因遵循這一價值而被市場懲罰,也會遵循的價值。 兩個創始人通常是通往成功的最好途徑。你可以平均分配工作和股權,也沒有政治操作的空間。三個創始人也沒有問題:只是在職責劃分上會更困難一些,但總可以通過投票決定。一旦超過了三人,事情會變得越來越不穩定,做出決定也變得更加困難,職責和股權的分配也更難處理,更有可能出現政治問題和內耗。 組織設計的第一法則就是所有的組織設計都是不好的。無論什麼設計,都是以其他部分爲代價來優化組織某些部分之間的溝通的。 在創業的初期,讓所有人都在同一個地點工作是很有幫助的,因爲那時候仍然要嘗試確定公司的文化,並尋找產品的市場地位。只有在清楚公司是什麼並且把關注點轉移到想出如何做之後,我們才應該考慮通過招聘遠程員工的方式去擴大團隊規模,成爲一家分佈式的公司。 遠程辦公的主要優點實際上也是主要的缺點。如果你只想關起門來心無旁騖地工作,真的也很簡單,但是你也會失去很多內部溝通,因爲你們並不是在相同的時間、相同的地點工作。人們在午餐聊天時腦海中浮現出來的許多想法也可能就不會有了。 我不信任遠程員工,只信任遠程(分佈式)團隊。也就是說團隊中的每一個人,即便他們聚在同一條街上,即便他們兩個人每天都去同一間辦公室,即便他們坐在一間屋子裏,他們仍然得像分佈式團隊那樣來行事,確保所有的信息都以完全分佈式的方式流動。否則你很容易會遇到這樣的問題,兩三個人在咖啡機前交談,而忘了把交談內容記下來讓其他團隊成員瞭解最新情況,這樣總是會有人感覺被排除在外。這樣是不行的。 爲創造性的任務提供獎勵也許會影響表現,其中的原因就是,你會將注意力放到獎勵而不是任務上。只有在任務無聊且重複的情況下,獎勵完成任務的員工才能提高他們的表現,比如一些手工勞動。如果任務需要創造性,比如編程,提供獎賞實際上可能會影響員工的表現。 除了基本的報酬之外(在美國每年大約75000美元),更多的錢,或者更多其他的外在激勵因素並不必然會帶來更多的激勵。那麼要怎麼辦呢?答案就是內在激勵因素——我們都具有的內部驅動力,能夠讓我們因爲任務本身的利益而喜歡上一個任務。 放像獎金這樣的外在獎勵有一個好方法,就是把它們和內在獎勵結合起來。例如,我們可以在整個公司的員工面前弄個儀式發放獎金,而不是在一對一的會面中私下發放。這樣的儀式可以體現出人們做重要事情的內在驅動力,並且贏得同事的認同。這也是許多競賽所起的作用:真正的獎品並不僅僅是金錢,而是其他人看到你是勝者。 "My Promise to You (Our Employees)" ——Mike Gamson, LinkedIn全局解決方案副總裁 我們先從壞消息講起。壞消息就是有一天你會離開LinkedIn。我知道你才進入公司就要考慮離開是很奇怪的,但我要讓你關注這件事,這樣我們才能最充分地利用我們一起在公司的時間,攜手前行。我不清楚你打算在這裏度過2年、5年、10年還是更長的時間,但我要確保無論你和我們一起在這段旅途上待多長時間,當你在20、30、40年後回首整個職業生涯的時候,你會覺得待在這兒的歲月是職業生涯中變化最大的。你在這裏的這些年學到的最多、成長最快、接觸到最多不可思議的人和最具創新性的想法。我希望你在這裏的這些年能成爲真正改變你職業軌跡的歲月。我希望你在Linkedln比在你們本可能選擇的其他地方,獲得生命中更多的成就。我向你承諾,我將致力於營造和培育能夠讓你改變職業軌跡的環境,爲你提供接觸各種思想、各種人員、各種體驗的機會,滿足你在生命中實現這一切所需的因素。當你在某天離開LinkedIn,我希望你能夠真正地轉變。我所期望得到的回報是你能允諾全身心投入到這個自我轉變的機會中,投入到我們的公司和這個世界中,並用你的勇氣和堅持去追尋這些機會。 只要你想創造某種東西,你會發現你不知道自己在做什麼,會發現自己的知識存在巨大缺口,會意識到你缺少一些關鍵的技能。最終,解決的方法會變得顯而易見,那就是讀書。
這些年程序員創業越來越多,身邊不少小夥伴走上創業道路,有些因市場出問題倒閉,有些因團隊出問題解散,還有一些痛並快樂着… 80年代創業軍人成功者居多,因爲他們更有執行力,更有社會資源,比如:柳傳志、任正非、王石、王健林。 90年代創業老師成功者居多,因爲他們更有知識,更會鼓動人心,比如:馬雲、俞敏洪、郭廣昌、羅永浩。 90年代後期工程師創業成功者越來越多,因爲他們有技術,能沉下來打造好產品,比如:王傳福、雷軍、馬化騰、李彥宏。 其中,不乏優秀的程序員,因爲互聯網、移動互聯網對社會影響太大,讓軟件工程師走到了風口。
本書標題不討巧,不夠吸引力,作爲程序員無論是否走上創業之路,還是職場規劃都是有一定借鑑性的。 作者有多家知名公司程序員的經歷到創立自己的公司,結合走訪了大量業內人士,形成了本書三大篇章,是對產品,技術以及團隊的思考與經驗分享。 我想程序員可選擇第一和第三章來看,填補一些技術之外的知識體系進來,第二章技術部分可以節省不少時間,畢竟1000多頁的書籍。
這本書很適合 希望創業的程序員閱讀。從大章節目錄,就可以看到完整的結構:產品,技術,團隊。 # 產品 1. 首先,爲什麼加入創業公司 - 如果單純爲了財務上的成功,加入大公司可能是更好且更有保障的選擇;而創業公司,可能本身的失敗率,就在75%左右。而且,即使賭對了一家創業公司,也要耐心等待很多年,才能看到明顯的財務回報。同時,創業公司可能還會面臨更艱苦的工作/對自己更壞的影響。 於我來說,其中的吸引力,可能是一種自主權;一種自己掌握命運的感覺;一種創造的快樂。我在花費很多時間讀文檔/看別人的內容的時候,能夠獲得信息增量的快樂,但內心中很空 - 缺少那種自己創造的滿足感。而在不同公司工作了10年之後,感覺自己最快樂的那幾年,是在創業公司的時候,那種“我可以選擇/安排自己做什麼事情”的快樂。 2. 如何獲得創業想法,進行Product-Market-Fit的驗證。這裏講到了一些點:記錄想法,關注痛點,和真正的用戶交談,迅速驗證, 這一部分其實是我自己的弱項:以前和朋友們一起做的MVP,遇到的問題通常是因爲,找不到很好的PMF;沒有用戶。回想以前的問題,主要是:沒有找到核心問題解決,花了太多時間,在不重要的事情上,以至於沒能及時推向市場。 3. 產品設計。首先,應該清晰的知道,自己的目標用戶是什麼樣的人,有對應的用戶畫像;然後,設計產品的時候,關注用戶在和產品交互的時候,產生的情感(包括:解決問題是否容易,用戶是否會覺得沮喪;);最後,找到這些用戶,進行可用性測試,收集反饋,迭代。 在這個過程中,每次能進行可用性測試的最簡單實現,都可以稱之爲MVP。每次的MVP,應該把關注點放在要解決的問題上,而不是代碼/系統化方案上。證明這個點子可行,遠比實現它更加重要。所以,不應該過早的進行規模化 -- 那隻會浪費自己的時間。 4. 數據和營銷。在有了產品+用戶之後,就可以根據用戶的行爲,進行進一步的迭代了。其中判斷依據,就是數據;有效的數據,大概是這麼幾個:1. 產品的關鍵指標(使用量/增長/留存率 等 -- 具體產品不同,會有所不同);2. 根據AB測試的埋點,看不同功能對於產品關鍵指標的影響程度。 對於創業的程序員來說,營銷 可能比產品更加重要。因爲一個產品除非好到革命性的改變(比如 ChatGPT),讓整個世界談論它/讓人不得不用,且很難被取代 - 大部分產品,如果無法觸及到對應的用戶,也就很容易被其他人取代。 優秀的人也是一樣的 -- 他們也通常是懂得如何營銷自己的一羣人。 # 技術 5. 技術棧的選擇。這裏的原則是:好的技術棧,擴展要快於需要進行的維護。就是說,在用戶量變大/功能變得複雜的時候,開發的數量並不需要對應用戶量而指數增長(當然,根據功能數量線性增長,是有必要的;但不應該高於線性)。公司的技術棧改變,是正常的;但這種改變,需要在不破壞業務的前提下,漸進式地進行。 人們通常對於“自己實現XXX”有很強的願望 -- 但是,對應哪些 實現起來複雜/容易出錯/要花大量時間,且開源世界已經有了很好的方案的技術(比如,K8S / Web框架/基礎數據結構),自己實現耗時耗力,容易出錯,還不容易讓別人一起進行貢獻。 對於編程語言的選擇,建議選擇 符合這麼幾個特點的:1. 較好的社區支持;2. 成熟,容易學習;3. 有非常成熟的項目背書。 在這個主題下,左耳朵耗子 前輩的《我做系統架構的一些原則》,可能是更好的一個總結。 6. 整潔的代碼。這一個章節,我略過了。因爲這方面的書,看過太多了;其中,首推 Robert Martin的《代碼整潔之道》,和後面的《架構整潔之道》。 7. 可擴展性。寫一個“能用”的代碼很容易;但一個“能持續支持業務的改動”的就比較困難了。在業務複雜、功能變多、開發人員增加 之後,代碼難免變的腐壞;在這個時候,就需要系統的辦法,來讓代碼的複雜度也隨之線性增長(而不是n^2的增長)。書裏面把這類問題,統稱爲技術債。並給出四個編碼實踐:1. 架構/寫代碼時候,做好代碼分離(Micro-Service / Code-Structure);2. 提交之前,做好自動化測試;3. 提交後,做好代碼評審;4. 持續性的,維護一個良好的文檔。 這裏,每一個實踐下面,都有很多可以講的,能做好都不容易;我也見過太多 在其中任何一個步驟 因爲前人沒做好,讓後人花了更多時間去填坑的事情。 爲了做好上面這幾個步驟,需要整個團隊有整體的質量追求,說的過去的代碼品味,以及持續的維護/檢查。 最後,書裏降到了優化;先給了(架構層面的)幾個策略。分個類,這幾個是我在系統設計(的面試)時候,通常會考慮的:分治,緩存,懶惰,近似正確性,異步,節流,冗餘,抖動與隨機化;這些,是不怎麼考慮的:協同定位,更快的硬件,更快的算法。 但是,在優化之前,應該先測量:優化是很貴的,而且可能破壞最初的簡潔性。未經測量直接優化,很可能沒有優化到點子上,而導致了架構上沒必要的複雜化。 8. 軟件交付。最終上線了,沒有問題了,纔算是交付。如果開發了很久,沒能上線;那麼這些開發的時間 都白費了。不過,書裏面在講的,是CI/CD/監控。CI/CD這兩部分,在我目前的工作中已經是標配/有完整定論了;關於監控,大家採取的方式,可能會有所不同。書裏面建議的,是 日誌/Google Analytics(前端埋點)/後端埋點 並行的方式。通常來說,用日誌進行監控,成本會高一些(畢竟日誌的量太大,寫起來自由度又太高);但是相對來說比較容易實現。埋點的方式,要對埋點有系統化的設計,才能迭代地抓到主要指標。 # 團隊 (因爲目前我工作中,主要還是在做具體的代碼工作;暫時這部分總結的內容,用過的比較少) 9. 創業文化。這裏,從幾個角度,在講如何構建公司的創業文化:願景+使命,組織設計,招聘晉升機制,激勵方式(不能僅僅依賴金錢,有挑戰的工作也很有意義),辦公室配置(儘量獨立辦公室/安靜無打擾的空間),遠程辦公,溝通 這幾個方面。我想,這一章對於實際的創業,是十分重要的;但我因爲沒有經歷過,讀起來不太能聯繫實際經驗,沒能很快想到 如何把文中提到的內容 在日常工作中應用起來。這一章應該是我後面需要經常/反覆讀的。 10. 求職之路。這裏講了如何尋找到創業公司的工作機會/通過面試/薪酬談判。如果希望加入創業公司的話,就要知道 - 它的成功率極低,給的現金部分可能又偏少;所以 - 拿不錯的金錢收益的程度,(相比於大公司)需要耐心待很久。從這個角度來說,找到合適的機會,並且談判到一個還不錯的總包(不僅是現金,還有工作時間/方式/股權歸屬 等任何變量),其實是很重要的一件事。這一章,不論是否希望找到一個創業公司進行工作,都很值得讀一下。 11. 招兵買馬。講的是,自己做老闆,要找 - 合夥人/早期員工/後期員工/10x開發。這裏,對於10x開發的定義很有意思,也很實際:寫程序是一件很具體的事情;而基於對系統的理解程度不同,細節的處理不盡相同 - 讓結果/性能相差10倍,是一件很可能的事情。 還探討了,應該找什麼樣的人:聰明能成事,文化契合,溝通能力強。以及,通過什麼途徑找:推薦,僱主品牌吸引力(比如,Google),LinkedIn,專職招聘。如何面試、錄用 等。 找到合適的人,可能是一個公司早期階段,最最重要的事情了。我目前在這方面,還缺少對應的經歷,對相關內容的感受/體驗,就沒有那麼強烈。這一章之於我,也是一個值得後面反覆回顧的章節。 12. 學習。這裏講的是,作爲程序員 如何持續地自我提高。我挺喜歡這一章的;選取記憶比較深的幾個故事/觀點:1. 作者會在每個深夜11點,坐下來花20~40分鐘去(有計劃性的)學習新東西——這種持續性的學習,讓作者把相關的技能用到工作上(LinkedIn的Web基礎架構),並做出來了很好的成績。2. 對於一個部門來說,計算培訓收益,可以看培訓之後 員工表現有多少比例提升/節省了多少小時。3. 實踐 - 讀完了書 就要有所輸出;學了技能,就要做個項目 - 甚至於,應該先做項目,再通過項目帶動自己閱讀。4. 人應該懂得分享,會分享 -- 即使有些內容,對你聽起來像是嘗試一樣,可能也有很多人,是不瞭解的。而這些內容的輸出,一方面可以幫助自己獲得publicity,另一方面也可以 讓自己把已經習得的知識更加鞏固。 總體來說,這本書是很值得推薦的;也值得反覆閱讀:有些章節,因爲缺少相關經驗,而讀起來沒有收穫;可以等到後面遇到相關的事情了,再來讀一下。 可能 它最大的敗筆,就是這個和主題不怎麼相關的名字《奔跑吧,程序員》了。分明是一本講述,作爲程序員如何高效工作/創業/發揮出更大價值的書,卻起了這麼一個幾乎完全不相關的名字 - 一點也不符合 信達雅。
這本書表面上教你如何技術創業,但實際上很多思維也可以應用在當前的工作中,追求“始終創業”的心態,並應用在新項目中。 本書分爲三個部分:產品、技術、團隊。每個部分有各自需要關注的問題。 一、產品 1. 創業時的點子從何處來?點子來源於生活,發現於痛點,需要及時記錄。我現在就經常用手機備忘錄去記錄一些創業點子,積少成多先。 2. 創業初期應該考慮完美還是完成?創業初期要儘快的驗證想法,創業初期完成比完美更重要。更好的解釋是簡約而非複雜。完成最簡功能,但不意味可以殘缺、平庸、bug一堆。 3. 如何驗證點子的合理性?不要臆想需求,而是提前做好需求調研,並在 MVP 後尋找客戶驗證(從接受度高的人羣入手,再逐步擴大人羣)。首先向自己問這三個問題: - 頻率:你所解決的問題經常發生嗎? - 密度:有很多人都會面臨這個問題嗎? - 痛苦程度:該問題只是讓人討厭,還是絕對必須解決? 4. 如何評估市場規模?書中給了幾個方法: - 廣告工具:通過如 Google的AdWords Keyword Planner工具獲取相關關鍵詞的搜索量 - 競品調研:網站分析工具估算競品流量,應用商店公開數據 - 社區調研:根據社區話題討論貼估算影響人數 - 市場報告:媒體披露的數據,公開的市場調研報告數據 - 產品數據:現有產品披露的數據 5. 關於初期產品方向的思考?完成而不是完美,開發上應該追求敏捷開發,快速試錯,最小MVP;實現後應該儘快找客戶體驗,確保有客戶買單;設計上要提前想好市場規模、需求容量、競品分析,商業分析。 6. 產品設計如何體現差異化?多關注情感設計。一些小點的體驗優化,會讓用戶覺得這是一款有靈魂的產品。情感設計的幾個要點: - 考慮周到:記錄用戶習慣、自動補全、按場景提示而非通用提示 - 積極響應:操作反饋 - 容錯防呆:危險操作提供撤回能力、自動保存避免異常丟失用戶重要數據、帶有幫助和指引的錯誤信息、及時檢查表單錯誤、永遠不出錯、按鈕點擊後立即禁用 7. 如何制定 MVP?MVP並不一定是實際的產品,它只需要能夠在客戶使用的時候驗證你的假設就可以了,比如展示頁面、介紹視頻、“人工”智能(用人工替代自動化)。 8. MVP 版本有哪些注意點?早期MVP版本,可以不用把力氣花在費時費力又存在不確定的自動化和規模化上,可以先從人工操作入手來節省時間,後續驗證可行再轉出自動化。不止於創業早期,對於我們工作中的技術項目也可以踐行這個思路:先工具化,配置寫死不可配,留足口子,後續驗證可行再進行產品化和平臺化。 9. 創業公司早期主要關注哪些數據指標?包括AARRR和神奇數字,這個神奇數字是其他指標的組合、閾值,可以作爲核心指標反映項目的發展情況。 - 獲取(acquisition); - 激活(activation); - 留存(retention); - 推薦(referral); - 收益(revenue); - 神奇數字(the magic number)。 另外,數據指標應該是持續迭代而非一成不變 二、技術 1. 初期如何選擇技術棧以及何時更換技術棧?技術選擇之初以熟悉作爲標準,但在遇到“拐點”(比如規模上去維護不動)時也要有壯士斷腕的決心 2. 技術實現上如何考慮優先級?許多研發對實現複雜項目很感興趣,但這在創業公司不可取。創業公司應該優先考慮質量和速度。故優先級上應該先擁抱開源,其次考慮商業方案,最後才考慮自研。 3. 創業之初項目是否應該考慮自動化測試?對於初創公司,不要過早的投入和沉迷自動化測試,因爲項目發展太快了。只有當你覺得寫一個代碼需要額外關注bug排查的成本大於編寫測試用例的成本時,才引入自動化測試。 4. 項目之初如何平衡代碼質量和性能?代碼質量比性能更重要,不要一上來就考慮性能優化。真要做做性能優化,第一步需要先測量,根據量化結果確定瓶頸和優化方向,而不是靠直覺。 三、團隊 1. 創業公司需要設定使命嗎?需要的,這是用來解釋公司存在的意義(回答爲什麼的問題)。另外,使命設計上應該簡約清晰、鼓舞人心。 2. 創業公司如何設計組織?沒有完美的組織設計,只有當下合適的組織設計。組織設計是一個動態分類的過程。 3. 創業公司如何考慮晉升制度?大多數公司,工程師的晉升路徑是轉管理而非首席工程師這種難以衡量的地位。這裏我覺得跟大衆即可。 4. 創業公司如何考慮激勵制度?建設外在激勵和內在激勵。外在激勵是工資股票薪酬,內在激勵就是成長和成就的訴求,我們應該營造一種能最大程度放大自主權(黑客馬拉松)、專業能力(有挑戰的事)和目標(階段性畫餅)的環境。發放獎金和榮譽(最佳員工)時也應該對外公開,可以滿足員工的成就感,具有一段時期的激勵作用,很多人會拿這個用來體現自己的能力。 5. 創業公司如何打造好的辦公室?好的辦公室應該具有以下要素:能共處的地方(會議室);能獨處的地方(隔間工位);能放空的地方(茶水間);能根據員工需要佈置(如升降桌、白板等)。 6. 創業公司應該選擇遠程辦公還是辦公室工作?辦公室工作和遠程工作孰優孰劣沒有標準答案。對於一家創業公司,前期讓大家在同一個地方辦公室很重要,一來可以培養大家前期的革命友誼,二來產品方向、企業文化、公司使命都在不斷變化,在一起工作可以更方便的討論和決策。當以上內容確定,才應該考慮是否要引入遠程辦公,考慮點包括人才儲備、保密安全、產品形態等角度。 即使採用了遠程辦公,公司也應該定期組織團隊成員聚會工作(並報銷差旅),以提高團隊凝聚力、公司認同感、同事間情誼。 7. 創業時如何選擇合夥人?創業夥伴作爲並肩作戰的戰友,可以緩解創業時無人溝通的壓力,一般尋找1至2個最佳,通常是熟悉的、一起幹過活的人,比如前同事、大學室友等等。此外在尋找時還應該考慮這幾個特徵:敏思篤行、技能互補、動機一致、能夠信任。 8. 招聘人才時要考慮哪些點?早期員工應該考慮通才,比如找全棧工程師等多面手。此外應該招聰明並能把事情做好的人。把事情做好意味着要認可創業初期完成比完美更重要這件事。 9. 如何尋找尋找出色的人選?作爲一家創業公司,前期想要招聘到優秀的人才必定不能用常規的招聘公告(比如boss直聘這種),可以試着通過人脈內推、通過開源產品和會議建立品牌力以此來吸引、甚至是主動搜索那些優秀的人才。記住一句話:最出色的程序員並不會上門來找你,你必須走出去找他們。此外,還必須提供和其他公司有所不同的工作條件,才能招到這些優秀人員。這些工作條件不限於機會、薪酬、福利等等。 10. 錯失優秀應聘者和招進錯誤的應聘者哪個影響更大?後者影響更大,寧可錯過,不可放過。招到錯誤的人結果工作要幫忙救火、還得考慮裁掉後需要重新招聘的成本,不如一開始就把標準放高,覺得不合適就直接放棄。作爲應聘者也應該理解到這點,這樣以後自我感覺面試良好但是面試沒過時就應該知道原因了。 四、總結 以上便是我讀這本書的感悟,大多數點能用在現在的工作中,同時也爲自己未來創業儲備知識。
創業與人密不可分、偉大的公司是進化而來的、速度制勝。創業公司就是在極度不確定的條件下創造新產品或服務的人類組織。“科技創業公司”是具有下述特徵的組織。產品:技術。環境:極度不確定。目標:大幅增長。運作模式:探索。 產品: 1.對於顧客而言,產品的設計就是他們所在意的一切。 2.從根本上說,設計就是如何去呈現信息,讓他人可以理解並使用這些信息。 3.設計不是按鈕、彩色圖表或功能特性,它關乎人和目標。 4.達到完美並不是沒有東西可以添加,而是沒有東西可以去除。 5.人類,即便是專家,都會非常非常頻繁地犯錯。數據和測量就是我們把事情做好的最好的工具。 6.點子不是設計,設計不是原型,原型不是程序,程序不是產品,產品不是企業,企業不是利潤,利潤不是退出,退出也不是快樂。 7.活在未來,實現缺失的東西。 8.創造力並不是一種天賦,它只是一種行事方式。 技術: 1.編程是一種讓他人瞭解你想讓電腦做什麼的藝術。 2.軟件開發並不是在圖紙上、IDE中或設計工具裏進行的,它是在你的腦海中進行的。 3.高級的模塊不應該依賴於低級的模塊,二者都應該依賴於抽象。抽象不應該依賴於細節,細節應該依賴於抽象。 4.一個出色的抽象應該滿足兩個屬性:信息隱藏和可組合性。信息隱藏意味着抽象應該比其背後的細節更加簡單。可組合性意味着可以把多個抽象組合起來,從而得到新的抽象,這一抽象反過來也仍然能夠和其他抽象組合。 5.創業公司的一切,包括代碼,更多是進化而來,而不是提前設計的結果,而重構正是其中的一個例子。 6.突破瓶頸的唯一方式就是從根本上改變你的訓練。 7.如果你覺得痛苦,就多去做。 8.最好的學習方法就是教。 團隊: 1.自主權、掌控力和使命感是激勵人的三個最強有力的因素。 2.每一家偉大公司的核心都是偉大的文化——一種能夠讓我們想出新點子、新規劃和新產品的環境。 3.把使命與核心價值放在一起,就形成了公司的核心理念——處理事情的指導原則。 4.如果在文化上做好了,過程只要做到一點即可:採用出色的判斷。 5.讓組織和使命、價值保持一致的最佳方法就是招聘已經與之相匹配的人。 6.如果你在尋找一個機會,實際上是在尋找人;如果你在評估一個機會,實際上是在評估人;如果你嘗試統籌資源去追逐一個機會,實際上是嘗試得到他人的支持並參與其中。 7.你如何才能提供給應聘者無法拒絕的錄用機會呢?一個詞:傾聽。 8.人天生就是愛玩而好奇的,我們經常會在一些困難的任務上投入大量的時間,即便沒有人爲此買單。
本月末主要讀了一本專業書,《奔跑吧,程序員>>書中介紹了從想法到數據營銷,技術,交付整個互聯網產品的實現交付邏輯,數據模塊講解的是好的產品需要以來一些數據做決定支撐 ,營銷模塊講解的是好的產品是需要有對應的銷售體系,有一句話,酒香也怕巷子深,技術模塊的話大概學習了用不同的語言搭建不同的模塊,以及代碼的一些原則,後面學習了交付和求職,我學習了之後知道走通一個項目對於產品而言很重要,學習了很多,對自己工作的感悟更深刻
各種可能,只要向前,都是工匠之路
確實書名取得平平無奇。 跳到數據驅動、海盜模型那裏開始閱讀——因爲和現在的工作有很好的重合度,所以就驅使着我快去把這本書"讀完"了。 這本書勾畫了技術創業型組織完整的成長圖景,並沒有那麼多細節或者拖沓的敘述,但很多觀點都很是中肯,尤其是讓程序員讀起來,不能共鳴得更多。 我覺得這本書於我個人,最有意義的是注意力被平日的工作奪走時,能起到很好的"提點"作用。