第二部分:簡單的黑魔法
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
你有最好的想法改基,你會打動世界!你會成為一個億萬富豪!你的大腦與這個概念融為一體瓦糕,你會在你的夢想中看到它空另,它像幽靈一樣困擾著你。下一步就是實現(xiàn)它轰绵,將其從大腦中移出并放進計算機。你必須殺死鬼魂尼荆,將幽靈從靈魂世界中帶出來左腔,將其綁定到一個 Python 圖騰上,并將其扔到互聯(lián)網(wǎng)的海洋中。
對你而言足夠有創(chuàng)意嘛?
創(chuàng)造力的敵人就是起步秧饮。如果在安裝程序的過程中存在障礙,你怎么能實現(xiàn)你的夢想蓄愁?如果你的想法非常強烈和龐大,讓你開始擔心呢狞悲?你足夠好嗎撮抓?你足夠聰明嗎?那個著名的程序員摇锋,會首先讓你寫出測試丹拯,否則會由于你不知道該怎么做而生氣嘛站超?入門通常是創(chuàng)造力中最困難的事情之一,這本書的這部分旨在讓你渡過它乖酬。
我是畫家死相,音樂家,作家和程序員咬像,所以我知道一兩件關(guān)于創(chuàng)意的事情算撮。我更了解入門和流程。當我對處理某個項目不感興趣的時候县昂,流程是將我拖出項目的泥濘的東西肮柜。但是,如果沒有首先的起步倒彰,我就不能走到這一步审洞。
起步需要勇氣,并且對任何人的想法有些不關(guān)心待讳。在繪畫中芒澜,當我不能開始時,我只是隨意抓取顏料创淡,并在畫布上砸在正確的位置痴晦。很多非常成功的畫家都是這樣工作的。其他畫家從頭開始研究 - 學習琳彩,測試阅酪,素描,然后最終將它們?nèi)糠诺揭黄饋黹_始汁针。作為一個作家,我所做的第一件事就是在我的房子周圍散步砚尽,瘋狂地和自己說話施无,想像我正在和某人交談,然后當我說出足夠的說話時必孤,我坐下來寫作猾骡。我只是寫下了出現(xiàn)在我腦子里的第一件事。
我不會坐下來寫作敷搪,或者擔心語法兴想。我不會問,“我很聰明嗎赡勘?”我只是寫出我如何說話嫂便,并將其輸入鍵盤,然后當我完成了幾個段落闸与,我會看一看毙替。它是否有意義岸售?我需要清理嗎?這樣的確有效厂画,并讓我繼續(xù)下去凸丸。也許我寫的是垃圾。但是袱院,我開始了屎慢,并且這個很重要。之后忽洛,我依靠我的流程把起始點變成一個完整的詞腻惠。
你如何看待這個創(chuàng)造性的起步?我的朋友脐瑰,你需要弄清楚妖枚,并且這本書會有所幫助。首先我們需要打破你對這個起步的恐懼苍在。也許甚至不再害怕了绝页。也許在你開始編程之前,你需要做大量無意義的事情寂恬,這樣你才能夠溢出所有障礙续誉。
我在第一部分說過,如果你每次去做一件事的時候初肉,你必須清理一小時酷鸦,并修復(fù)一堆工具,你就不會有創(chuàng)造力牙咏。
如何實踐創(chuàng)造力
在這本書的這一部分臼隔,你將通過讓自己立即開始,快速實踐創(chuàng)造力妄壶。我會給你簡單的超級無聊的小項目摔握。我的意思是,Unix 的cat
命令只是輸出一個文件丁寄。老實說就像兩行 Python 一樣簡單氨淌。這些項目的起步是重要的,為了起步伊磺,你會變得冷酷無情盛正。你要坐在你的電腦旁邊,縱身已閱屑埋,讓事情發(fā)生豪筝。就是現(xiàn)在,不是30分鐘后。
你怎么做到他呢壤蚜?你需要一個清單即寡,你需要自動化。清單是你必須準備好去做的所有事情袜刷。打開你的電腦聪富,關(guān)掉社交媒體,啟動你的編輯器著蟹,摸一摸你的幸運的橡皮小鴨墩蔓,做一個神圣的禱告,冥想 10 分鐘萧豆,然后復(fù)制你的項目框架并開始奸披。這是一個例子,但你需要一個檢查列表涮雷,并且越短越好阵面。
但你不知道這個清單是什么。也許你有一個想法洪鸭,但你在開始工作之前真的知道你所做的一切嗎样刷?這就是每個項目中,你將重點關(guān)注的東西览爵。在第一個項目中置鼻,你會坐下來嘗試一下,但你會記下你所做的一切蜓竹。你不能管理無法測量的東西箕母,這是衡量自己的第一步,來看看你如何做某件事情俱济。如果你有屏幕錄制軟件會更好嘶是。打開它,并記錄你自己寫出了一個糟糕的軟件蛛碌,然后觀看視頻俊啼。記下你做了什么
為了確保你不要在項目中埋頭骨干,而是練習起步左医,你還將為每個項目設(shè)置一個嚴格的計時器。你必須在45分鐘內(nèi)完成最棒的垃圾同木。不多不少浮梢。開始時設(shè)置一個45分鐘的定時器,準備好你的本子和鉛筆彤路,然后去做吧秕硝。當定時器關(guān)閉時,你完成了洲尊≡恫颍看看你做了什么奈偏,然后好的那部分才會出現(xiàn)。
每個項目后躯护,拿起你的列表惊来,并找出可以做什么來消除障礙。你坐在那里棺滞,做許多小文件裁蚁,并且必須在互聯(lián)網(wǎng)上查找嘛?制作項目框架吧继准。你在文本編輯器中輸入命令時似乎有問題嗎枉证?花時間學習來更好地使用它,或?qū)W習盲打移必。你不知道基本的命令和 API 嗎室谚?去獲取一些書來學習吧,我的朋友崔泵。
然后刪掉代碼并重新開始秒赤。從頭開始。使用新的紙張開始寫管削,或開始錄制倒脓。無論你需要做什么來跟蹤你所做的事情。這次你更進一步了嘛含思?有更少的障礙嗎崎弃?你的目標是減少想法和實現(xiàn)之間的時間,直到起步只是你做的意見事情含潘,就像吃飯和呼吸那樣饲做,最終你會感覺到起步是自然的,之后你可以繼續(xù)下一個項目遏弱。
請記住盆均,你要立即坐下來并編程。盡管去做吧漱逸。如果一個內(nèi)心的聲音告訴你泪姨,你這樣做錯了,就告訴那個愚蠢的聲音來讓它閉嘴饰抒。這才是 Hack肮砾。保持放松并全力以赴,就像你只是把代碼扔給一個朋友袋坑,它知道你是傻瓜但仍然很有趣仗处。像測試和質(zhì)量這樣的愚蠢的事情可能會在本書的后面出現(xiàn),但現(xiàn)在只需要編程,把東西搞亂婆誓,實現(xiàn)一些黑魔法吃环。獲得想法比贏得虛構(gòu)的質(zhì)量比賽更重要。
在每個倉促的 45 分鐘 Hack 之后洋幻,你坐下來查看你是怎么做的郁轻。這個“創(chuàng)造然后批改”的流程,將來可以幫助你改善鞋屈。
菜鳥程序員的流程
如果你剛剛開始范咨,并且在啟動項目時還是完全失敗了,那么我將為你提供一個簡化的流程厂庇,以便你使用它來開始渠啊。這部分的練習是進行 45 分鐘的 Hack(編程 ),但作為一個菜鳥程序員权旷,你可能需要更多的時間替蛉,或者你可能不知道從哪里開始。在這種情況下拄氯,請隨意使用 60 分鐘或使用兩個 4 5分鐘的時間進行每項練習躲查。
對于一個流程,菜鳥程序員應(yīng)該在每個會話之前執(zhí)行以下操作(在啟動計時器之前):
- 準備好你的電腦译柏,并確保你準備好了镣煮。
- 閱讀任務(wù)描述并記下筆記。這是你的研究階段鄙麦,你需要以書面形式收集盡可能多的信息典唇。
- 進行研究,并將其轉(zhuǎn)化為 TODO 列表胯府,了解你需要做什么來實現(xiàn)這個黑魔法介衔。寫下你可以想到的任務(wù)。你需要創(chuàng)建什么文件骂因?什么目錄炎咖?什么功能?你會使用哪些庫寒波?
一旦你有了 TODO 列表乘盼,你就可以啟動定時器了。在你的 Hack 會話中俄烁,你將執(zhí)行以下操作:
- 選擇你的 TODO 上第一個最簡單的任務(wù)绸栅,并完成它。你需要一個文件嗎猴娩?創(chuàng)建它!你需要一個目錄嗎?創(chuàng)建他卷中!
- 檢查你剛剛做的工作矛双。
- 刪除當前任務(wù),執(zhí)行下一個任務(wù)蟆豫。
我認真對待這個流程议忽。它是我使用的一個較小的版本,但它可以用十减。幾乎每個流程都只是“制作一個清單栈幸,完成它,檢查它”帮辟。如果它適用于我速址,它將適用于你,所以如果你不知道該怎么做由驹,你應(yīng)該使用它芍锚。
菜鳥程序員的編程流程
此過程也將適用于你編寫的代碼。我在第一本書“笨辦法學 Python”中介紹了它蔓榄。當你不確定如何寫一段代碼時并炮,遵循這個流程:
- 用簡單的中文寫出,你的代碼應(yīng)該做什么甥郑。如果你需要把它寫成一個段落逃魄,那么就這樣做。如果你可以把它寫成一個任務(wù)列表澜搅,那就更好了伍俘。如果你寫出了一個段落,那么你將把它轉(zhuǎn)換成代碼必須做的事情的列表店展。
- 把這個列表變成注釋养篓,把
#
放在每行的前面。 - 從頂部開始赂蕴,在每個注釋下柳弄,編寫 Python 代碼使其有效。如果注釋太抽象概说,那么將其分解成較小的注釋并重復(fù)此步驟碧注。
- 運行代碼,來確保你剛才寫的內(nèi)容沒有語法錯誤糖赔,并且基本能工作萍丐。
這就是你需要做的所有事情。如果你可以用你的中文(或任何自然語言)來表達你想要的代碼放典,那么你可以輕松地實現(xiàn)代碼逝变,而不必考慮代碼基茵。最終你不需要先寫注釋再寫代碼,但是當我卡住的時候我還是這樣做的壳影。