徒手寫1000行以上的代碼是怎樣的體驗?
代碼不都是徒手寫的么?1000行很容易達到的。07-08年春節前夕的時候,我們的客戶問我們能不能給他們做一個搜索,我沒有學過搜索,但是看過一些科普的文章,自己研究過一點思路。我事先知道Lucene,知道它是基于Java的。
我出門買了本Lucene in Action和Java語言的入門書,然后就回家過年了。春節假期7天,我女朋友和父母在打牌看電視,我在另外一個屋子,看這兩本書和寫一個基于Lucene的搜索系統,我設計了一個XML的出入協議,索引的導入格式用XML,我寫了一個Java版本的web server作為系統的底層,查詢用REST形式返回XML的結果,一個配置目錄里面用配置文件設置查詢字段,排序字段,自帶索引整理,切換不同的查詢方法,只需要在url選擇不同的配置文件名即可,帶簡單日志。
7天的時間,寫完了2000-3000行的代碼。然后節后就給我們的客戶上線測試,一啟用,就把它們原來的搜索速度從高峰的時候幾分鐘沒有結果,變成穩定在幾十毫秒內。他們的日搜索量因為用這套搜索,從日4000增至8000,后來增至10萬。
在他們搜索量20-30萬后,這套代碼才做了***次大改進,性能提升到***。后來我們接入了更多的客戶,這套代碼不斷改進,***單機支撐2000萬次搜索。后來幾經改進,代碼增至1萬8000以上。后來,我就沒關注過行數了。
這套代碼發展出來的系統,曾經服務于,飯統網、大眾點評、FTChinese、六間房、盛大云中書城,以及我們公司當年幾十個小客戶。日***搜索在3000萬左右,應該至少完成了幾億次搜索。
(我職業生涯中寫過大小上百個業余的side project,大多數沒有發布,大多數行數都在3000行以上。)
既然有人點贊,再講一個故事。我們上海泰尼現在還沒倒閉,靠的是一套排版系統,我們從底層支持蘋果iBook Author的格式,這是一個非常復雜的打包格式,類似于網頁,但是有大量網頁不支持的排版格式和CSS3標準的東西。12年,我們公司快到窮途末路的時候,我突然有個瘋狂的主意,要做這個非常復雜的東西。但是我跟我們的主程,也就是現在的CTO老師 @陳勇輝 老師說了這個idea,這個豬頭聽不懂。
于是我在出差去做演講的三天路上,寫了一個原型,實現了一個XML DOM解析樹,一個簡易的CSS解析樹,寫了一個簡單的iBook Author的格式分析文檔,利用我分析出來的文件格式,寫了一個可以顯示某本iBook Author電子書一頁的信息的一個Demo,剛才查了下代碼庫,大概不到900多行。
交給主程看,給他講解思路和文件格式的細節。然后第二天,他看懂了,然后這個項目的具體代碼我就沒有參與過了。這個項目現在大概有2萬6000行左右。前后已經給公司賺了200萬左右。公司沒死因為這個項目。