黑客和敏捷開發
前段時間讀了一下O'Reilly公司的《黑客與畫家》(Hackers and Painters: Big Ideas from the Computer Age,作者Paul Graham),雖說這書已經出版良久了,但是讀書往往是不講究時間的,有收穫就好。這本書是文集,相對內容比較散,針對的也並非是業內人士,所以不同人在不同角度可以把這本書看出千滋百味。但不管怎麼說,我覺得絕大多數人,都可以從這本書中收穫良多。本人是IT行業人士,僅從IT創業者角度談談自己的理解。
“如果觀察那些做出偉大作品的人,你會發現他們的共同點就是工作的非常艱苦。如果你工作的不艱苦,你可能正在浪費時間。 並非所有的痛苦都是有益的。世界上有有益的痛苦,也有無益的痛苦。你需要的是咬牙向前衝刺的痛苦,而不是腳背釘子扎破的痛苦。解決難題的痛苦對設計師有好處,但是對付挑剔的客戶的痛苦或者對付質量低劣的建材的痛苦就是另一回事了。”
創業的辛苦是必然,但是絕不是隨隨便便的辛苦就能成功的。辛苦要用在往目標衝刺當中,與對手博弈之中,而不是無謂的的消費。而這也跟Hacker們所一貫追求的相符(本文中的Hacker與書中的Hacker所指一致,均是指有追求的Geekers)。對於創業過程來說,在搭好了開展事業所需要的基本的條件之後,就專心致志於自己的主業吧。而在主業中,也需要集中在一兩個點重點突破,而不要總被別的事情所分散。
那麼具體到這一個過程,又有哪些可以注意的地方呢?
首先,我們需要明白,“創業一直有一個潛規則: 一旦創業了,很多事情是不由你的。創業前, 你只想努力2-3倍,從而得到相應的回報。 但真正創業後,你的競爭對手決定了你到底要有多辛苦。 而他們做出的決定都是一樣的: 你能吃多少苦,我們就能吃多少苦,所以創業者才會很苦逼。這種情況下,你應該超越出來,從層次上高於你所在的環境。否則你勢必將做得異常累。”那麼,我們需要做的,就是要用超出對手的層次與境界與對手競爭。而這個競爭過程又分為戰略和戰術兩個層次,兩者相互配合,缺一不可。戰略上要從產品本身,定位,核心功能等方面入手,要站的比對手高,看的比對手遠。而要做到這點,有兩個方面需要注意:一是確立好需要解決問題的初衷而不是為了Show技術,二是不要盲目的認為自己就是比別人想的遠,而是要通過大量的驗證來調整,而為了支援不斷大量的調整,敏捷思想必不可少。在戰術上,就要考慮到每一個細節的實現是否得當。而具體到IT創業的話,這個戰術跟寫程式就密不可分了。而寫程式的相關內容,我們下面再說。
第二,我們還需要明白,“人們真正注意到你的時候,不是第一眼看到你站在那裡,而是發現過了這麼久你居然還在那裡。” 有的時候不是你不美,而是你的美麗沒有綻放太久就中道崩殂了。堅持的重要性無需多言,但是把握好堅持與變通的臨界,這是一門藝術活。
第三,在創業這個問題上,“致富的最好辦法是創造財富(而不是掠奪)”。只要能夠創造財富,就能獲得財富。而掠奪財富的話,財富的永續性是值得懷疑的。“要更好的創造財富,你做的事情需要兩點保證:可測量性,可放大性。矽谷的訣竅,可測量性來自小團隊,可放大性來自開發新技術。”而針對小團隊的測量創造財富的能力,和開發新技術來真正創造財富,無疑是小團隊們的核心競爭力。
現在再回到創業戰術的問題上來,針對IT創業的話,具體的戰術跟寫程式十分密切。而為了能在戰術上比對手快速而高效,選擇非常敏捷的語言是個好主意。在書中為了能高效的寫程式,作者對Lisp十分推崇。對此,我持部分贊同意見。對於Lisp語言的思想,無疑是現在程式設計語言的典範。但是針對具體的開發過程,直接使用Lisp未必真能非常高效。 第一,目前已經掌握Lisp語言的程式設計師相對小眾,如果你本來沒有掌握Lisp,為了Lisp而Lisp,沒有幾年的積累,很可能成為“只有寶劍而沒有對應劍術”,所以是否使用Lisp得視情況而定。第二,不可否認,目前Lisp的庫相對不夠豐富,但是對此也有解決方法,就是使用支援Java類庫Clojure。這也是我認為Clojure優於Common Lisp和Scheme的重要原因。第三點就是由於Lisp程式設計師由於太小眾了,確實在想擴張的時候容易捉襟見肘。即使是Clojure在國內也豐富不到哪去,對此我的觀點是,為什麼不試試Ruby呢?當然本文並非語言之爭,上述觀點也只是鄙人淺見,是鄙人針對目前情況的看法而已,如果讀者不認同,還請批評指正。
應該來說,《黑客與畫家》還是非常值得一讀之書,相信你讀了之後,也會有新的理解和體會。最後,我想用《黑客與畫家》中的一句話結束文章:“畫作永遠沒有完工的一天,你只是不再畫下去而已。 ” 我們的生命,就是作畫。
相關文章
- 瀑布模型和敏捷開發模型敏捷
- 瀑布式開發和敏捷開發的區別敏捷
- 敏捷開發敏捷
- [敏捷開發實踐](1) 認識敏捷開發敏捷
- 敏捷開發思維和免費敏捷管理工具敏捷
- 敏捷開發和傳統開發的區別?以及敏捷開發管理工具的推薦敏捷
- 淺談軟體開發模型之瀑布開發和敏捷開發模型敏捷
- [敏捷開發實踐](2) 用於開發和維持複雜產品的敏捷開發框架Scrum敏捷框架Scrum
- 敏捷開發框架敏捷框架
- 敏捷開發理解敏捷
- scrum敏捷開發Scrum敏捷
- 敏捷開發--Scrum開發模型敏捷Scrum模型
- 敏捷開發下平衡質量和進度敏捷
- 軟體開發和敏捷-對症下藥敏捷
- 精益看板管理和敏捷軟體開發敏捷
- 敏捷開發大家談(五)--敏捷開發的設計原則敏捷
- 敏捷開發入門敏捷
- 敏捷開發簡介敏捷
- 敏捷開發相關敏捷
- 敏捷式開發管理敏捷
- 初識敏捷開發敏捷
- 【筆記】敏捷開發筆記敏捷
- 敏捷開發與jira敏捷
- 敏捷開發過程敏捷
- 敏捷開發(XP,SCRUM)敏捷Scrum
- [TEAP早期試讀]資料庫和敏捷開發資料庫敏捷
- 軟體開發新模式:敏捷開發模式敏捷
- 【敏捷開發】驅動測試開發敏捷
- 敏捷開發的那些事敏捷
- 敏捷開發大家談(三)敏捷
- 敏捷開發大家談(二)敏捷
- 敏捷開發入門教程敏捷
- 敏捷開發大家談(一)敏捷
- 敏捷開發大家談(四)敏捷
- 敏捷開發與測試敏捷
- 敏捷開發價值觀敏捷
- 敏捷開發方法綜述敏捷
- 軟體開發中的精益和敏捷 - Aram Koukia敏捷