引言
原文:Introduction
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
流程,創(chuàng)造力和質(zhì)量。在閱讀本書的同時,將這三個詞寫入你的腦海中。流程、創(chuàng)造力、質(zhì)量。這本書可能充滿了重要主題的練習(xí),每個程序員都應(yīng)該知道它們,但是從書中獲得的真實知識就是這三個詞。我寫這本編程書的目的是告訴你,我所知道的是,軟件中最重要的三個常量。沒有流程,你會迷失在想知道如何開始,并有維持長期項目的進展的問題。沒有創(chuàng)造力,你將無法作為程序員解決每天遇到的問題。沒有質(zhì)量,你不知道你所做的任何事情是否良好。
教你這三個概念很簡單。我可以簡單地寫三篇博客文章,并說:“你去看看,然后你就知道這三個字是什么意思。” 這不會讓你成為一個更好的程序員,絕對不是一個可以在未來 10 到 20 年內(nèi)自食其力的開發(fā)者。僅僅知道大概的流程并不意味著,你可以在現(xiàn)實實踐中實際應(yīng)用它。閱讀關(guān)于創(chuàng)造力博客文章,并不能幫助你弄清如何寫出有創(chuàng)造力的代碼。要真正理解這些復(fù)雜的主題,你將需要將其內(nèi)在化,最佳方式是將其應(yīng)用于簡單的項目。
當(dāng)你通過書中的練習(xí),我會告訴你,你將要處理的三個中的哪一個。這是我相對其他書籍的一個改變,其中我試圖暗中讓你在無意中學(xué)習(xí)概念。這次我會明確表達,因為很重要的一點就是,把這個概念牢牢地保存在你的頭腦中,這樣你就可以在練習(xí)過程中實踐了。然后,你將評估你對應(yīng)用這個實踐的嘗試效果如何,以及下一次可以做些什么來改進。本書的一個重要組成部分是,能夠客觀地反思自己的能力,以及改進自己的能力。在完成一些其他目標(biāo)的同時,通過專注于一種技術(shù)或?qū)嵺`來做到它。
除了流程,創(chuàng)造力和質(zhì)量外,你還將學(xué)習(xí)五個重要主題,我認(rèn)為現(xiàn)代程序員需要掌握它們。這些可能會在未來發(fā)生變化,但是它們在至今位置近十年間是至關(guān)重要的,因此除非技術(shù)發(fā)生了巨大的變化,否則它們?nèi)詫⑦m用。即使是一些東西,像第六部分中的 SQL,也仍然是相關(guān)的,因為它教你如何構(gòu)建數(shù)據(jù),以便在后面不會在邏輯上崩潰。你的次要教育目標(biāo)是:
- 入門 - 你可以通過執(zhí)行快速的 Hack 來了解如何啟動項目。
- 數(shù)據(jù)結(jié)構(gòu) - 我不教給你每一個單一的數(shù)據(jù)結(jié)構(gòu),但是讓我們開始更完整地學(xué)習(xí)它們。
- 算法 - 不能處理的數(shù)據(jù)結(jié)構(gòu)相當(dāng)無意義。
- 解析文本 - 計算機科學(xué)的基礎(chǔ)是解析,知道如何實現(xiàn)它,可以幫助你學(xué)習(xí)編程語言,當(dāng)他們變得流行的時候。
- 數(shù)據(jù)建模 - 我將使用 SQL 來教會你,以邏輯方式為存儲數(shù)據(jù)建模的基礎(chǔ)知識。
- Unix工具 - 命令行工具在本書中用作要復(fù)制的項目,然后你還可以學(xué)習(xí) Unix 命令行高級工具。
在這本書的每個部分,你將一次性專注于三個實踐中的一個或兩個,直到最后,在第七部分中,你將構(gòu)建一個簡單的網(wǎng)站來應(yīng)用它們。大作業(yè)并不吸引人。你不會學(xué)習(xí)如何創(chuàng)建下一個創(chuàng)業(yè)公司,但他們是很好的小項目,將幫助你在學(xué)習(xí) Django 時應(yīng)用你所熟悉的知識。
完全是個人的事情
許多其他的書被設(shè)計為,在團隊背景下教你這三個概念。當(dāng)這些書向你講述流程時,全部都是關(guān)于,如何在項目中與另一個人合作來維護代碼。當(dāng)他們教授創(chuàng)造力時,全部都是關(guān)于,如何和你的團隊開會來向客戶詢問問題。可悲的是,這些“專業(yè)”書籍絕大部分都沒有教授質(zhì)量。這一切都很好,但是對于大多數(shù)初學(xué)者來說,這些團隊風(fēng)格的書籍有兩個問題:
你沒有團隊,所以你不能練習(xí)它們教給你的東西。面向團隊的書籍專為那些初級程序員而設(shè)計,它們已經(jīng)有工作,并需要在剛加入的團隊工作。在這種情況發(fā)生之前,任何團隊導(dǎo)向的書籍對你來說都是無用的。
如果你自己的個人過程,創(chuàng)造力和質(zhì)量是一團糟,學(xué)習(xí)如何在團隊中工作有何意義?盡管“團隊精神”的粉絲們說,絕大多數(shù)的編程任務(wù)都是獨立完成的,你對自己的技能的評估通常是獨立完成的。如果你在一個團隊工作,但是你的代碼始終是低質(zhì)量的,并且你不斷向團隊成員尋求幫助,那么你的老板會給你較低評價。由于它們始終討論團隊有多厲害,當(dāng)一個初級程序員無法單獨工作時,他們從來不會責(zé)怪團隊。他們責(zé)怪初級程序員。
這本書并不關(guān)于,成為一個在大企業(yè)混日子的優(yōu)秀程序員。這本書關(guān)于幫助你提高你的個人技能,所以當(dāng)你得到一份工作時,你可以獨自工作。如果你改善你的個人流程,那么你會成為一個更強大的團隊貢獻者。這也意味著你可以啟動和發(fā)展自己的想法,這是絕大多數(shù)項目開始的地方。