創業三部曲之一——學技術

我從創立3家科技公司的經歷中學到了什麼? 36kr 上的這篇文章直截了當的告訴你,作為一個想要成功的創業者,你需要具備哪些素質。然而,這些素質因人而異,並不是所有創業者都需要從同一個模子裡造出來才能成功。但是,在與許多創業者接觸的交流中,我們發現大家遇到一些共性問題。這些問題並不是創業者自身素質問題,也並不是無法改變的,而是很多有想法有激情的創業者不擅長的。比如,創業之初如何進行技術的選擇和學習,如何尋找自己的創業夥伴,如何為你的團隊募集資金。

基於此,我們採訪了多位互聯網和移動互聯網方面的創業者,邀請他們談談在創業之初是如何進行技術選擇和學習的,如何尋找自己的創業夥伴的,以及如何為團隊募集資金。同時,我們將​​創業者必鬚麵對的這三個問題整理成三篇獨立的文章,以《創業三部曲》系列的形式呈現給讀者,希望對大家有所幫助。

本文是該系列文章的第一篇,創業三部曲之一——學技術。 Tech2IPO有一群很多優秀的讀者,我們跟這群優秀的讀者接觸過程中發現,大部分人都有很棒的idea。但是,當談到項目何時上線甚至如何實現是,很多人說自己不懂技術,想自己學技術或者找相關的合作夥伴。比如,為《假如有這麼個應用》系列文章投稿的堅果兄弟和麥子, 他們希望通過投稿不光能夠引起大家的討論,也希望找到能夠幫他們實現點子的技術合作人員。當然,並不是每個創業者都要懂技術的。但是,作為靠技術起家的互聯網或者移動互聯網公司,沒有技術也是不現實的。因此,本文中,我們採訪了四位創業者,向他們請教創業之初該如何選擇和學習技術。

一、寬島網CEO李路

寬島簡介:寬島網是一個類似Tumblr的輕博客社區,其前身寬途網是國內第一個輕博客社區。在開發方面,寬島網選擇了Ruby on Rails這個Web開發框架,早期的Twitter也是用Ruby on Rails做成的。

技術方面的創業者可能傾向於使用自己擅長的技術,這種選擇所帶來的局限性導致創業者將自己限定於特定的平台,而看不到其他平台的優劣。下面,寬島網CEO李路談談其自己在技術方面的經驗。 (本文只截取部分內容,關於技術方面更多詳細的討論請看李路的輕博客。)



1. 關於自己的工作平台

這包括操作系統, 編輯器, shell環境。這是所有工具箱裡最重要的,每天,比起你面對某種語言,某個項目,某個老闆,你面對系統和編輯器的時候更多,只要打開電腦,它就在哪裡。因此,選擇最好的,我從很久以前,在招人的時候就會先問:你用什麼操作系統?什麼編輯器?什麼shell環境?我自己的環境是Ubuntu(偶爾也會用Mac os X), Zsh, Emacs Ubuntu Linux, Archlinux, Gentoo等linux發行版,我想是最好的選擇,Mac os X也完全可以,對於iOS開發就是必須的了。不要用windows做開發環境(真的,就算開發windows桌面軟件,我也不會用windows,哪怕讓我用flash實現)。

Emacs和Vi是編輯器世界裡公認的最好選擇,我自己用Emacs,她非常的迷人,甚至有讓你對她形成宗教信仰的能力。如果是Mac系統,textMate也是可以接受的,雖然我不認為她比emacs更好。選定了一個編輯器,你就要一直用她,包括寫郵件等等和技術無關的領域,讓她成為你身體的一部分。實際上,我學習和熟悉Emacs的時間,超過了學習任何一種編程語言,當然,這還不包括學習Emacs Lisp的部分。而經過五年的使用,我也不敢說我做到了我應該用emacs能做到的事情的,十分之一。

Shell環境上,Bash和Zsh都很好,Zsh更新,更強大,也更複雜。

2. 團隊的工作平台

這包括一個好的版本控制系統,一個好的代碼託管平台,一個好的問題追踪和知識管理系統。對於團隊來說,沒有什麼比這些更重要的了,溝通和控制,是一個團隊工作的全部。

我使用Git和Github。比起SVN和更古老的CVS來說,Git無疑是最新最好的替代品,她確實能夠提升溝通和工作效率。 Github則很方便地集成了代碼託管,問題追​​踪和wiki系統,也許在特定的某件事上,她不如以前我們的SVN+Trac這樣的平台功能強大,但對於初創企業,我認為這樣的服務是最合適的。

3. 關於語言

語言的選擇其實不難。在你所掌握的編程語言中,選擇你最有興趣的,最喜愛的,或者寫起來最上癮的。理由很簡單,開發是人的工作,越好地激發出你的熱情,才能產生越有創造性的代碼和產品。至於冷門語言招不到程序員這種說法,我實在無法同意。實際上優秀但掌握的人不多的這類語言,往往能讓你更容易地招到頂尖的程序員,因為使用這些語言的,一定不會是庸碌之輩。我使用過的,通常可以做Web後台開發的語言有C,C++,VB,Java,PHP,Python,Ruby,Lisp,JavaScript。

我的選擇是Ruby, 如前所述,這算得上是在我掌握的語言裡,最有興趣和最喜愛的。

我有兩年的C++經驗,但我覺得我還是沒有掌握她,而且,今後也不打算繼續學習她了,痛苦比快樂多得多。

VB和Java從接觸的一開始我就不喜歡,在被迫用她們做了幾個項目後,印像也沒有絲毫改善,刻板,累贅和費力。

PHP是很好的web開發語言,但她太混亂,太不一致,非常地缺乏優雅和美感。

Python幾乎是現在最好的入門語言,簡潔,清晰,學習和開發容易,不過對我來說,有些缺乏創造力,那也就是缺乏樂趣。

Lisp我不能算掌握,但很有興趣。

Javascript,在做web前端開發的時候是必須掌握的,幸虧,這是一種很有趣的語言,也能夠寫的很優雅和很有創造力。

不過,上邊列的這些語言,真的沒有一個比起我剛接觸Ruby時那種震撼更大。一種簡潔,優雅,一致,創造力超群的語言,還有一個非常活躍和富有智慧的社區。

4. 關於框架,數據庫和服務器

框架要選擇你用起來最自然和最符合你的開發思路的,簡單來說,就是:如果讓你寫,你也會這樣去做。以這個為原則,去一一試用最好的那些框架就可以了。

我用的是Rails3, 她有90%的做法是和我的思路與原則相符合的,而剩下的10%,也可以方便地自定義或修改。很遺憾我因為接觸的比較少,沒辦法推薦php和python的優秀web框架,不過,請先選好語言,再選擇框架,不要為了框架而使用你不喜歡的語言。

數據庫方面,就不太一樣了,這裡一定不能用你個人的喜愛與否來決定,因為數據的存儲和安全是絕對不能忽視的一塊木板。請使用最符合你的項目要求的數據庫。如果涉及到支付,大量的事務,或者是有數據安全的要求很高,請使用完善的傳統關係型數據庫,Oracle,Postgre, Mysql,用你支付的起的最好的。如果是社交網絡這種,對數據的海量存儲和讀寫速度有要求,但不強求事務和任何時間點上的即時一致性的,請使用Nosql類型的數據庫。我使用的是MongoDB和Redis,理由很簡單,她們的文檔齊全,功能符合要求,並且沒有可見的影響開發和部署的bug。在創業的初期,有足夠的文檔和社區支持,夠用的功能和可接受的性能,要遠遠比性能強大但文檔不全,難以開發來的好。在這一點上,請不要趕時髦,也不要浪費時間去自己做各種數據庫的性能比較,選擇文檔最齊全,社區最活躍的吧。

服務器方面,也差不多是同樣的道理,選擇最主流和最穩定的,在此基礎上,選擇管理維護最方便的。我使用Debian,web服務器是Nginx, 幾乎是不二之選。 CentOS和Redhat同樣主流和穩定,但是她們的管理維護,尤其是包管理系統,比Debian還有差距Apache和Lighthttp差不多和上面理由一樣,請注意,我在這裡也不是因為性能的原因選擇Nginx的。

5. 關於工作流程和其他工具

你還需要什麼?

測試框架:

在現在這個時代,尤其是web開發,我想測試先行是很有必要的,每一次你的代碼變動,都要讓這個架構運行測試,習慣了之後,你會發現自己離不開她。我用Rspec。

部署工具:

一條簡單的命令,把你的代碼部署到生產環境中去,而且同時還能夠做很多操作,比如cache生成,搜索索引生成,js/css代碼壓縮等等,並且具備回滾的能力,喔,最好和版本控制系統聯動,讓你簽下最新的版本。我用Capistrano。

一套好的工作設備:

程序員們,幫自己一個忙吧,用你能支付的起的最好的顯示設備和鍵盤,而不要只用公司配給你的可憐巴巴的破筆記本來工作。我用兩個24寸的顯示器,寬廣的可視區域能夠直接提高你的效率,用Cherry出品的茶軸鍵盤,她讓我的鍵入更快更準確。

一個好的工作環境:

一米五​​長的桌子,明亮的房間,通風和清新的空氣,有可以小睡的沙發。

二、42區創始人張沈鵬

42區簡介:42 區是一個新型的社交網站,有一個讓用戶建立職業信息的頁面,類似About.me和Linkedin;也可以讓你像發微薄一樣嘮叨,是不是的有技術人員來評論你的嘮叨。在服務器端方面,42區使用Python開發,這是42區創始人張沈鵬原先所在的公司豆瓣網的第一大主流語言。豆瓣網也是國內少有的使用Python語言開發的多用戶大流量網站。

關於做技術創業,張沈鵬認為,要學的技術很多,其學習週期大概一年,在創業之前能夠去豆瓣鍛煉下是最好的。同時,張沈鵬也給大家推荐一本Python學習教程:《Python入門指南Release 2.7》Guido van Rossum, Fred L.Drake, Jr.著劉鑫譯2010年10月版。關於尋找一起創業的技術夥伴,張沈鵬認為,對方應該“寫過自己的網站,能很快的掌握一門新的東西,對技術本身有興趣”。

三、堅果鋪子創始人韓竹

堅果鋪子簡介:堅果鋪子是一個類似Dropbox的文件同步和存儲工具,目前它有Windows、Mac和Linux等桌面客戶端,以及Android和iOS等移動平台客戶端。因為堅果鋪子這樣的文件同步存儲工具主要功夫在後台和客戶端,所以技術可能跟前面講的寬島網和42區所採用的技術有所不同。不過,創業不限方向,我們希望為大家提供不同的經驗,給大家更多更好的選擇。

1. 創業選擇的是什麼技術?比如語言、框架和平台之類的

我們用了多種不同的技術. 就編程語言, 有java, C++/C,  Object C, C#,  選擇的時候主要取決於幾個因素:

1) 開發效率。

2) 運行環境所需的程序效率。

3) 平台的native支持。

我們沒太考慮掌握的熟悉程度. 其中部分語言是我們第一次使用。

我們沒有使用過任何的框架(framework), 都是用的函數庫(library).  不知道我的理解是否正確, 我個人對於framework和library的定義有所區別,比如:

1) framework更多是約束程序員的行為, 有點類似畫好地盤跳舞。

2) library更多提供輔助行為, 只有需要的時候, 程序員才訪問library。

我們不太喜歡framework的原因是,  感覺約束太多;  看起來很簡單, 但是背後隱藏了態度細節,  可能存在很多陷阱以及一些不必要的功能。

所以我們剛開始基於這些​​library構建了一些很簡單的框架.  雖然花了些時間,  不過我們充分了解這些代碼, 所以開發和調試效率反而有很大提升。

2. 你給初始創業中的技術​​人員的建議是什麼?比如,就你選擇的技術而言,要學習該從哪開始?

做為技術人員, 我覺得最基本的是打破砂鍋聞到底的心態. 比方說, 看到一個bug, 一定要找到最深層次的問題,  從最基本的角度去解決問題, 而不是通過簡單的添加代碼,  解決問題的現象甚至屏蔽問題. 例如

c.compute();  // c為null, 出現segment fault

最糟糕的解決辦法就直接如下fix:

if  (c != NULL) c.compute();

這並沒有解決問題, 因為它沒有回答為什麼c在這個地方可能為NULL, 這是否是合法的參數?

另外一個比較重要的點是,  用於重構自己的代碼.  Google每個兩三年都會重寫搜索引擎的核心代碼.  我們也一直堅信, 刪除已有的代碼比添加新的代碼更難, 也更有意義。

另外,  做技術的同志, 也不要拘泥於任何一種技術.  很多事情都是邊幹邊學,  在戰鬥中提升.  沒必要因為擅長某種技術, 就厚此薄彼甚至賣弄技術,  更多還是需要從產品的角度出發。

最佩服的技術人員是能夠融會貫通, 舉一反三.  有些技術人員能夠從CPU architecture->Hardware interconnect->OS kernel optimization->Language/Runtime implementation-&gt ;Application->Business Logic整個stack角度去分析和解決問題, 這是非常厲害的。

四、Talk Jokes共同創始人申華章

背景簡介:作為Talk Jokes的共同創始人,申華章主要並非負責技術。但從非技術人員眼中看看他們對技術人員的看法和要求,對於技術人員來說也是種不錯的參考。畢竟,一個互聯網創業公司必須是由技術人員和非技術人員有機組成的。

1. 技術的重要性:你認為團隊中技術人員有多重要?

非常重要。對現在的創業團隊來說,執行力比任何​​時候都重要。在我看來,執行力來自三方面,正確的方向,優秀的設計,高效的工程師。簡單的說,設計和技術,是項目經理的左右手。我們團隊的理想配置是一個設計師加兩個工程師(半個後端,一個半前端)。

2. 你給初始創業中的技術​​人員的建議是什麼?

對iOS 開發來說,看一本基礎的書,然後就可以看一些優秀的源代碼。當然最好的學習是盡量早開始做實際的項目。一定要精益求精,一個應用或者遊戲多寫幾遍,你就會有體會了。做一個什麼都懂一點的工程師,不如做一個在某一方面非常精通的工程師。我招人不追求他現在水平有多高,但我一定希望他有這種精益求精的素質。如果他能每次都比上一次寫的代碼質量高一些,效率高一些,那就他就是我理想中的工程師。 (詳見申華章博客,iPhone創業小心得。)

game2網誌:除特殊說明,本站所提供的圖片,文章均轉載其他站點,如需使用請聯繫原作者

Comments are closed.