我是一名不知名的作家,全職體驗了一年多程序員的生活,於是不忘初心的我想爲程序員寫本書。
陸游曾經說過:“紙上得來終覺淺,絕知此事要躬行”。從我這一年多踏入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();
改需求();
}
開會();
睡覺();
// 重要:這裏沒有下班
}
跳槽();
}
總結
沒錯,接下來只要實現那些方法,這本書就可以批量生成了。
爲了愛和自由,獻上我微薄的力量!
謹以此文獻給《活着》— 餘華