當我想爲程序員的生活寫本書...

我是一名不知名的作家,全職體驗了一年多程序員的生活,於是不忘初心的我想爲程序員寫本書。

陸游曾經說過:“紙上得來終覺淺,絕知此事要躬行”。從我這一年多踏入IT這一行,在國企和互聯網企業都幹過,這可以算2個極端吧,雖然可以分得很細,比如創業公司、傳統轉型企業等,但還有大好時光,一定會去體驗的。

當我氣定神閒地打開筆記本,挺直了腰背,深吸一口氣,打下了幾個大字:

這就是程序員的生活

還記得小學老師教過一種文體結構嗎?--------總分總
沒錯,非常適合本書。

列提綱

  • 出生
  • 活着
  • 死去

遞歸拆分

形成子結構。

  • 出生
    • 出生前
    • 出生時
    • 出生後
  • 活着
    • 就是活着
  • 死去
    • 死前
    • 死去
    • 死後

出生和死亡

與大多數人一樣,出生和死亡都是一段終結。

出生:

  • 據長輩回憶,你出生前,算命先生告訴你媽,此人將來必有大成;
  • 出生前一會,天空突然陰雲密佈,氣氛變得壓抑,聽到你啼哭的聲音後,又突然雲開見日,雨後天晴;
  • 你出生後依然哭個不停,直到看見了智能手機和電腦屏幕;

死亡:

  • 你躺在病牀上,忍受着勁椎病、腰間盤突出、肝硬化的痛苦,心裏想着過去幾十年坐塌的人體工學椅,應酬與團建時被灌的茅臺酒,還有深夜喝過的濃厚咖啡因;或者走到xx互聯網公司的玻璃樓,回想起當年徹夜通明的一道風景線,如今因爲法定工作時間變爲4小時,所以晚上8點已經人去樓空;
  • 你心滿意足的閉上了眼睛,離開了這個世界;
  • 後面的事,你不再關心了,你不缺買一塊墓碑的錢,但你想被葬在老家祖先的墳地旁,磊一個小山包,一切安好。

其實,出生和死亡都很平常,我覺得生活的這個過程纔是重點,也是本書的主體內容。

活着

如果說我想以一個大統一的模式來描述所有人的生活,顯然只能抽象到所有人的共同特徵(出生、喫飯、成長、睡覺、死亡等),至少沒有一個理論可以做到,物理學不也沒統一,計算機就更難了。
就像數據庫分爲關係型、NoSQL、圖數據庫、文檔數據庫等等,沒有哪一個數據庫敢說所有數據都能處理;就像流式數據的處理、離線數據的分析、普通數據的CRUD,都有相應的開源工具。
所以,大一統理論是不適合的。

曾經有一位不知名的老師說過:人類處理事物最普遍的方式是分類

學科的劃分,物種的劃分,男女的劃分,級別的劃分(再說下去大家都知道的)…再說回程序員,對程序員最普遍的劃分:xx語言程序員。

根據WIKI:https://en.wikipedia.org/wiki/List_of_programming_languages 列出的語言列表,大約有六七百種計算機語言,而全世界的程序員據統計不超過3000萬(至少目前這樣),常用的計算機語言也就十幾種;
而全世界人口70多億,有多少種語言說法不一,但使用人口超過百萬的也就幾十種;

但是顯然人類沒有把人類按照語言來分類,漢語人,英語人,日語人,聽起來怪怪的,人類按國籍分類;而程序員是個神奇的羣體,因爲很容易做到了跨國籍,我們只談論程序。

對於精通很多們語言的大師,也是很普遍的,甚至如今只掌握一門語言根本不合理,所以聰明的人們進行了抽象:軟件開發工程師;對於非專注於某些語言的算法設計者,被稱爲算法工程師;對於經驗豐富,走上了技術巔峯,指導一堆人怎麼做的設計者,被稱爲架構師;人們喜歡title,還喜歡暱稱,程序員也喜歡,我們都是猴子的後代:猿。程序員也很有創造性,搞出了1024節日,也很正常,和商家利用數字搞出的雙11、情感氾濫的520沒什麼區別。

所以,描述程序員的生活很簡單,因爲大多數都在工作中度過:

上班();
while(ok){
	寫代碼();
	開會();
	睡覺();
	// 重要:這裏沒有下班
}

寫代碼的過程也是很崎嶇的:

討論需求();
while(coding) {
	實現需求();
	調試bug();
	改需求();	
}

開會比較適合用建造者模式描述:

	// 早會
	// 晚會
	// 週會
	// 臨時會議

睡覺應該是個接口,適合有多種實現:

public interface Sleep {
    void doSleep();
}
public class SleepOnBed implements Sleep {
    @Override
    public void doSleep() {
    	// TODO
        throw new UnsupportedOperationException();
    }
}	
public class SleepOnChair implements Sleep {
    @Override
    public void doSleep() {
        // TODO 趴在椅子上
    }
}
public class SleepOnMeeting implements Sleep {
    @Override
    public void doSleep() {
        // TODO 別叫醒我
    }
}
public class SleepOnTheWay implements Sleep {
    @Override
    public void doSleep() {
        // TODO 在路上應該有多種實現
    }
}

當然,程序員不是好惹的,經常會追求新鮮環境,於是最外層還有一個循環:

while(alive){
	找工作();
	工作();
	跳槽();
}

整個人生就是個優美的循環:

while (alive) {
    找工作();
    上班();
    while (ok) {
        while (coding) {
            實現需求();
            調試bug();
            改需求();
        }
        開會();
        睡覺();
        // 重要:這裏沒有下班
    }
    跳槽();
}

總結

沒錯,接下來只要實現那些方法,這本書就可以批量生成了。

爲了愛和自由,獻上我微薄的力量!


謹以此文獻給《活着》— 餘華

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章