創(chuàng)業(yè)三部曲之一——學(xué)技術(shù)
何李石 發(fā)表于 2011.8.30| 點擊數(shù)4958
我從創(chuàng)立3家科技公司的經(jīng)歷中學(xué)到了什么?36kr 上的這篇文章直截了當(dāng)?shù)母嬖V你,作為一個想要成功的創(chuàng)業(yè)者,你需要具備哪些素質(zhì)。然而,這些素質(zhì)因人而異,并不是所有創(chuàng)業(yè)者都需要從同一個模子里造出來才 能成功。但是,在與許多創(chuàng)業(yè)者接觸的交流中,我們發(fā)現(xiàn)大家遇到一些共性問題。這些問題并不是創(chuàng)業(yè)者自身素質(zhì)問題,也并不是無法改變的,而是很多有想法有激 情的創(chuàng)業(yè)者不擅長的。比如,創(chuàng)業(yè)之初如何進行技術(shù)的選擇和學(xué)習(xí),如何尋找自己的創(chuàng)業(yè)伙伴,如何為你的團隊募集資金。
基于此,我們采訪了多位 互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)方面的創(chuàng)業(yè)者,邀請他們談?wù)勗趧?chuàng)業(yè)之初是如何進行技術(shù)選擇和學(xué)習(xí)的,如何尋找自己的創(chuàng)業(yè)伙伴的,以及如何為團隊募集資金。同時,我們將 創(chuàng)業(yè)者必須面對的這三個問題整理成三篇獨立的文章,以《創(chuàng)業(yè)三部曲》系列的形式呈現(xiàn)給讀者,希望對大家有所幫助。
本文是該系列文章的第一篇,創(chuàng)業(yè)三部曲之一——學(xué)技術(shù)。Tech2IPO有一群很多優(yōu)秀的讀者,我們跟這群優(yōu)秀的讀者接觸過程中發(fā)現(xiàn),大部分人都有很棒的 idea。但是,當(dāng)談到項目何時上線甚至如何實現(xiàn)是,很多人說自己不懂技術(shù),想自己學(xué)技術(shù)或者找相關(guān)的合作伙伴。比如,為《假如有這么個應(yīng)用》系列文章投 稿的堅果兄弟和麥子, 他們希望通過投稿不光能夠引起大家的討論,也希望找到能夠幫他們實現(xiàn)點子的技術(shù)合作人員。當(dāng)然,并不是每個創(chuàng)業(yè)者都要懂技術(shù)的。但是,作為靠技術(shù)起家的互 聯(lián)網(wǎng)或者移動互聯(lián)網(wǎng)公司,沒有技術(shù)也是不現(xiàn)實的。因此,本文中,我們采訪了四位創(chuàng)業(yè)者,向他們請教創(chuàng)業(yè)之初該如何選擇和學(xué)習(xí)技術(shù)。
一、寬島網(wǎng)CEO李路
寬島簡介:寬島網(wǎng)是一個類似Tumblr的輕博客社區(qū),其前身寬途網(wǎng)是國內(nèi)第一個輕博客社區(qū)。在開發(fā)方面,寬島網(wǎng)選擇了Ruby on Rails這個Web開發(fā)框架,早期的Twitter也是用Ruby on Rails做成的。
技術(shù)方面的創(chuàng)業(yè)者可能傾向于使用自己擅長的技術(shù),這種選擇所帶來的局限性導(dǎo)致創(chuàng)業(yè)者將自己限定于特定的平臺,而看不到其他平臺的優(yōu)劣。下面,寬島網(wǎng)CEO李路談?wù)勂渥约涸诩夹g(shù)方面的經(jīng)驗。(本文只截取部分內(nèi)容,關(guān)于技術(shù)方面更多詳細的討論請看李路的輕博客。)
1. 關(guān)于自己的工作平臺
這包括操作系統(tǒng), 編輯器, shell環(huán)境。這是所有工具箱里最重要的,每天,比起你面對某種語言,某個項目,某個老板,你面對系統(tǒng)和編輯器的時候更多,只要打開電腦,它就在哪里。 因此,選擇最好的,我從很久以前,在招人的時候就會先問:你用什么操作系統(tǒng)?什么編輯器?什么shell環(huán)境?我自己的環(huán)境是Ubuntu(偶爾也會用 Mac os X), Zsh, Emacs Ubuntu Linux, Archlinux, Gentoo等linux發(fā)行版,我想是最好的選擇,Mac os X也完全可以,對于iOS開發(fā)就是必須的了。不要用windows做開發(fā)環(huán)境(真的,就算開發(fā)windows桌面軟件,我也不會用windows,哪怕讓 我用flash實現(xiàn))。
Emacs和Vi是編輯器世界里公認的最好選擇,我自己用Emacs,她非常的迷人,甚至有讓你對她形成宗教信仰的 能力。如果是Mac系統(tǒng),textMate也是可以接受的,雖然我不認為她比emacs更好。選定了一個編輯器,你就要一直用她,包括寫郵件等等和技術(shù)無 關(guān)的領(lǐng)域,讓她成為你身體的一部分。實際上,我學(xué)習(xí)和熟悉Emacs的時間,超過了學(xué)習(xí)任何一種編程語言,當(dāng)然,這還不包括學(xué)習(xí)Emacs Lisp的部分。而經(jīng)過五年的使用,我也不敢說我做到了我應(yīng)該用emacs能做到的事情的,十分之一。
Shell環(huán)境上,Bash和Zsh都很好,Zsh更新,更強大,也更復(fù)雜。
2. 團隊的工作平臺
這包括一個好的版本控制系統(tǒng),一個好的代碼托管平臺,一個好的問題追蹤和知識管理系統(tǒng)。對于團隊來說,沒有什么比這些更重要的了,溝通和控制,是一個團隊工作的全部。
我使用Git和Github。比起SVN和更古老的CVS來說,Git無疑是最新最好的替代品,她確實能夠提升溝通和工作效率。Github則很方便地集成了代碼托管,問題追蹤和wiki系統(tǒng),也許在特定的某件事上,她不如以前我們的SVN+Trac這樣的平臺功能強大,但對于初創(chuàng)企業(yè),我認為這樣的服務(wù)是最合適的。
3. 關(guān)于語言
語言的選擇其實不難。在你所掌握的編程語言中,選擇你最有興趣的,最喜愛的,或者寫起來最上癮的。理由很簡單,開發(fā)是人的工作,越好地激發(fā)出你的熱情,才能產(chǎn)生越有創(chuàng)造性的代碼和產(chǎn)品。至于冷門語言招不到程序員這種說法,我實在無法同意。實際上優(yōu)秀但掌握的人不多的這類語言,往往能讓你更容易地招到頂尖的程序員,因為使用這些語言的,一定不會是庸碌之輩。我使用過的,通??梢宰鯳eb后臺開發(fā)的語言有C,C++,VB,Java,PHP,Python,Ruby,Lisp,JavaScript。
我的選擇是Ruby, 如前所述,這算得上是在我掌握的語言里,最有興趣和最喜愛的。
我有兩年的C++經(jīng)驗,但我覺得我還是沒有掌握她,而且,今后也不打算繼續(xù)學(xué)習(xí)她了,痛苦比快樂多得多。
VB和Java從接觸的一開始我就不喜歡,在被迫用她們做了幾個項目后,印象也沒有絲毫改善,刻板,累贅和費力。
PHP是很好的web開發(fā)語言,但她太混亂,太不一致,非常地缺乏優(yōu)雅和美感。
Python幾乎是現(xiàn)在最好的入門語言,簡潔,清晰,學(xué)習(xí)和開發(fā)容易,不過對我來說,有些缺乏創(chuàng)造力,那也就是缺乏樂趣。
Lisp我不能算掌握,但很有興趣。
Javascript,在做web前端開發(fā)的時候是必須掌握的,幸虧,這是一種很有趣的語言,也能夠?qū)懙暮軆?yōu)雅和很有創(chuàng)造力。
不過,上邊列的這些語言,真的沒有一個比起我剛接觸Ruby時那種震撼更大。一種簡潔,優(yōu)雅,一致,創(chuàng)造力超群的語言,還有一個非常活躍和富有智慧的社區(qū)。
4. 關(guān)于框架,數(shù)據(jù)庫和服務(wù)器
框架要選擇你用起來最自然和最符合你的開發(fā)思路的,簡單來說,就是:如果讓你寫,你也會這樣去做。以這個為原則,去一一試用最好的那些框架就可以了。
我用的是Rails3, 她有90%的做法是和我的思路與原則相符合的,而剩下的10%,也可以方便地自定義或修改。很遺憾我因為接觸的比較少,沒辦法推薦php和python的優(yōu)秀web框架,不過,請先選好語言,再選擇框架,不要為了框架而使用你不喜歡的語言。
數(shù)據(jù)庫方面,就不太一樣了,這里一定不能用你個人的喜愛與否來決定,因為數(shù)據(jù)的存儲和安全是絕對不能忽視的一塊木板。請使用最符合你的項目要求的數(shù)據(jù)庫。如 果涉及到支付,大量的事務(wù),或者是有數(shù)據(jù)安全的要求很高,請使用完善的傳統(tǒng)關(guān)系型數(shù)據(jù)庫,Oracle,Postgre, Mysql,用你支付的起的最好的。如果是社交網(wǎng)絡(luò)這種,對數(shù)據(jù)的海量存儲和讀寫速度有要求,但不強求事務(wù)和任何時間點上的即時一致性的,請使用 Nosql類型的數(shù)據(jù)庫。我使用的是MongoDB和Redis,理由很簡單,她們的文檔齊全,功能符合要求,并且沒有可見的影響開發(fā)和部署的bug。在 創(chuàng)業(yè)的初期,有足夠的文檔和社區(qū)支持,夠用的功能和可接受的性能,要遠遠比性能強大但文檔不全,難以開發(fā)來的好。在這一點上,請不要趕時髦,也不要浪費時 間去自己做各種數(shù)據(jù)庫的性能比較,選擇文檔最齊全,社區(qū)最活躍的吧。
服務(wù)器方面,也差不多是同樣的道理,選擇最主流和最穩(wěn)定的,在此基礎(chǔ) 上,選擇管理維護最方便的。我使用Debian,web服務(wù)器是Nginx, 幾乎是不二之選。CentOS和Redhat同樣主流和穩(wěn)定,但是她們的管理維護,尤其是包管理系統(tǒng),比Debian還有差距Apache和 Lighthttp差不多和上面理由一樣,請注意,我在這里也不是因為性能的原因選擇Nginx的。
5. 關(guān)于工作流程和其他工具
你還需要什么?
測試框架:
在現(xiàn)在這個時代,尤其是web開發(fā),我想測試先行是很有必要的,每一次你的代碼變動,都要讓這個架構(gòu)運行測試,習(xí)慣了之后,你會發(fā)現(xiàn)自己離不開她。我用Rspec。
部署工具:
一條簡單的命令,把你的代碼部署到生產(chǎn)環(huán)境中去,而且同時還能夠做很多操作,比如cache生成,搜索索引生成,js/css代碼壓縮等等,并且具備回滾的能力,喔,最好和版本控制系統(tǒng)聯(lián)動,讓你簽下最新的版本。我用Capistrano。
一套好的工作設(shè)備:
程序員們,幫自己一個忙吧,用你能支付的起的最好的顯示設(shè)備和鍵盤,而不要只用公司配給你的可憐巴巴的破筆記本來工作。我用兩個24寸的顯示器,寬廣的可視區(qū)域能夠直接提高你的效率,用Cherry出品的茶軸鍵盤,她讓我的鍵入更快更準(zhǔn)確。
一個好的工作環(huán)境:
一米五長的桌子,明亮的房間,通風(fēng)和清新的空氣,有可以小睡的沙發(fā)。
二、42區(qū)創(chuàng)始人張沈鵬
42區(qū)簡介:42 區(qū)是一個新型的社交網(wǎng)站,有一個讓用戶建立職業(yè)信息的頁面,類似About.me和Linkedin;也可以讓你像發(fā)微薄一樣嘮叨,是不是的有技術(shù)人員來 評論你的嘮叨。在服務(wù)器端方面,42區(qū)使用Python開發(fā),這是42區(qū)創(chuàng)始人張沈鵬原先所在的公司豆瓣網(wǎng)的第一大主流語言。豆瓣網(wǎng)也是國內(nèi)少有的使用 Python語言開發(fā)的多用戶大流量網(wǎng)站。
關(guān)于做技術(shù)創(chuàng)業(yè),張沈鵬認為,要學(xué)的技術(shù)很多,其學(xué)習(xí)周期大概一年,在創(chuàng)業(yè)之前能夠去豆瓣鍛煉下 是最好的。同時,張沈鵬也給大家推薦一本Python學(xué)習(xí)教程:《Python入門指南 Release 2.7》Guido van Rossum, Fred L.Drake, Jr.著 劉鑫 譯 2010年10月版。關(guān)于尋找一起創(chuàng)業(yè)的技術(shù)伙伴,張沈鵬認為,對方應(yīng)該“寫過自己的網(wǎng)站,能很快的掌握一門新的東西,對技術(shù)本身有興趣”。
三、堅果鋪子創(chuàng)始人韓竹
堅果鋪子簡介:堅果鋪子是一個類似Dropbox的文件同步和存儲工具,目前它有Windows、Mac和Linux等桌面客戶端,以及Android和 iOS等移動平臺客戶端。因為堅果鋪子這樣的文件同步存儲工具主要功夫在后臺和客戶端,所以技術(shù)可能跟前面講的寬島網(wǎng)和42區(qū)所采用的技術(shù)有所不同。不 過,創(chuàng)業(yè)不限方向,我們希望為大家提供不同的經(jīng)驗,給大家更多更好的選擇。
1. 創(chuàng)業(yè)選擇的是什么技術(shù)?比如語言、框架和平臺之類的
我們用了多種不同的技術(shù). 就編程語言, 有java, C++/C, Object C, C#, 選擇的時候主要取決于幾個因素:
1) 開發(fā)效率。
2) 運行環(huán)境所需的程序效率。
3) 平臺的native支持。
我們沒太考慮掌握的熟悉程度. 其中部分語言是我們第一次使用。
我們沒有使用過任何的框架(framework), 都是用的函數(shù)庫(library). 不知道我的理解是否正確, 我個人對于framework和library的定義有所區(qū)別,比如:
1) framework更多是約束程序員的行為, 有點類似畫好地盤跳舞。
2. 你給初始創(chuàng)業(yè)中的技術(shù)人員的建議是什么?比如,就你選擇的技術(shù)而言,要學(xué)習(xí)該從哪開始?
做為技術(shù)人員, 我覺得最基本的是打破砂鍋問到底的心態(tài). 比方說, 看到一個bug, 一定要找到最深層次的問題, 從最基本的角度去解決問題, 而不是通過簡單的添加代碼, 解決問題的現(xiàn)象甚至屏蔽問題. 例如
c.compute(); // c為null, 出現(xiàn)segment fault
最糟糕的解決辦法就直接如下fix:
if (c != NULL) c.compute();
這并沒有解決問題, 因為它沒有回答為什么c在這個地方可能為NULL, 這是否是合法的參數(shù)?
另外一個比較重要的點是, 用于重構(gòu)自己的代碼. Google每個兩三年都會重寫搜索引擎的核心代碼. 我們也一直堅信, 刪除已有的代碼比添加新的代碼更難, 也更有意義。
另外, 做技術(shù)的同志, 也不要拘泥于任何一種技術(shù). 很多事情都是邊干邊學(xué), 在戰(zhàn)斗中提升. 沒必要因為擅長某種技術(shù), 就厚此薄彼甚至賣弄技術(shù), 更多還是需要從產(chǎn)品的角度出發(fā)。
最佩服的技術(shù)人員是能夠融會貫通, 舉一反三. 有些技術(shù)人員能夠從CPU architecture->Hardware interconnect->OS kernel optimization->Language/Runtime implementation->Application->Business Logic整個stack角度去分析和解決問題, 這是非常厲害的。
四、Talk Jokes共同創(chuàng)始人申華章
背景簡介:作為Talk Jokes的共同創(chuàng)始人,申華章主要并非負責(zé)技術(shù)。但從非技術(shù)人員眼中看看他們對技術(shù)人員的看法和要求,對于技術(shù)人員來說也是種不錯的參考。畢竟,一個互聯(lián)網(wǎng)創(chuàng)業(yè)公司必須是由技術(shù)人員和非技術(shù)人員有機組成的。
1. 技術(shù)的重要性:你認為團隊中技術(shù)人員有多重要?
2. 你給初始創(chuàng)業(yè)中的技術(shù)人員的建議是什么?
對 iOS 開發(fā)來說,看一本基礎(chǔ)的書,然后就可以看一些優(yōu)秀的源代碼。當(dāng)然最好的學(xué)習(xí)是盡量早開始做實際的項目。一定要精益求精,一個應(yīng)用或者游戲多寫幾遍,你就會有體會了。做一個什么都懂一點的工程師,不如做一個在某一方面非常精通的工程師。我招人不追求他現(xiàn)在水平有多高,但我一定希望他有這種精益求精的素質(zhì)。如果他能每次都比上一次寫的代碼質(zhì)量高一些,效率高一些,那就他就是我理想中的工程師。(詳見申華章博客,iPhone創(chuàng)業(yè)小心得。)
原文鏈接:http://tech2ipo.com/2011/08/startup-trilogy-first-learn-technologies/