完成一幅畫——堅持寫完整的程序

寫程序從來都不是一件容易的事情,往往你自己覺得很滿意的作品,用戶卻說你的程序根本就是個半成品。你抓耳撓腮,卻始終不得其解。

早在我念大學之前,我是一名藝術生,在北京學畫。那時候,每天都要畫很多的畫,有人像有水粉色彩有速寫,每次我堅挺三個小時就畫不下去了,就坐著休息玩手機。老師就會走過來說:才三個小時,你這還沒有畫完呢,繼續畫。

我那時是不懂的,就很納悶,明明該有的都有了,為什麼就偏偏說我沒有畫完呢?然後老師就拿起畫筆,在我的畫上繼續畫,修修改改,兩個小時過去了,直到下課,她放下畫板,還是說,先這樣吧,還沒有畫完。

後來我明白了,可能在大師的眼裡,根本沒有能畫完的畫。

大師之所以為大師,就是因為他們不停地去提升自身對完整的認知,桌子上有一個用來畫畫的石膏立方體,你去畫,畫的一模一樣,這叫完成。可是你畫的只是一個立方體,這不叫完整。注意我的說法,是“一個”而不是“這個”,你要畫的,是“這個立方體”,這個桌子上的那一個立方體,你怎麼才能讓你的畫面體現出這一點呢?在素描的技巧裡,我們使用明暗,使用光線,使用紋路。要去觀察,你畫了一個立方體,那它上邊的光線呢?它出廠壓模的紋路呢?使用了這麼久,磕磕碰碰的豁口呢?可能剛剛把它放到桌上,那個人的淺淺的指紋還印在上邊?這就是細節,這些具體的細節決定了你畫的那個立方體,不是我桌子上的那個立方體,不是畫材店櫥窗裡擺的那個立方體,而是你面前畫板後邊的桌子上的那個你正在畫的立方體。

這就是完整。

開始接觸編程以後,我還沒有意識到這個問題,只是下意識地去讓自己寫的代碼變得更加完整,直到有一天,有人說:哎呀,怎麼你寫的代碼一寫出來就那麼好看,那麼優美一看就像是高手,而我就不行。

我想了想,可能是因為我的確是從一開始就注重了代碼的規範和風格問題。

但是程序的完成不止於此。在你一開始學習編程的時候,難免會有一些小小的在你看起來很無腦的練習,比如有星號(*)在終端輸出一個金字塔,或者輸出一個菱形。再比如後來可能難度上升了,你需要寫一個華氏度和攝氏度轉換的程序——這應該是我寫的第一個比較完整的程序。

那麼,你是怎麼做的呢?算法可能大同小異,我們點擊運行,程序編譯,運行,終端上顯示了孤零零的兩個字:32.你覺得你的任務完成了,於是結束了。

這就是一個很好的例子,這個程序是個半成品

如同畫畫一樣,你這一次不畫到盡可能的完整,下一次你就還是不知道該在哪裡完善。

  • 既然是程序,既然我們有了華氏度和攝氏度的轉換算法,那我們是不是可以做一個簡單的交互,讓它轉換任意的數值呢?
  • 既然能任意數值了,那是不是可以在程序里切換轉換方向,讓華氏度和攝氏度可以互相轉換呢?
  • 既然都能轉換了,那我們的程序是不是也可以像那些系統程序一樣既能運行打開,也能直接接受參數然後執行呢?
  • 程序執行完成就退出了,我們可不可以加一個循環讓它繼續等待用戶下一次的輸入呢?
  • 既然程序都這麼多功能了,我們是不是可以考慮給它寫個圖形的界面?

就這樣一步一步地思考,我一步一步地完成了這個程序,對於做這個題目的你來說,可能最難的地方就是那個溫度單位轉換算法了,其他的都不難,但如果你堅持完成了它,那麼下一次你就會明白一個完整程序的定義是什麼。

我們說盜墓,其實就是盜墓賊和墓主人的一次超越時空的博弈,墓主人生前請一些牛逼的人設計各種機關保護自己的墓穴,而盜墓賊則需要機關算盡來破除重重阻礙最終奪得之前的陪葬品——其實寫程序和最終的用戶也是這麼一回事,用戶在使用你的軟件,就是在和你博弈——你要想方設法讓你的程序經受住他們有意無意的摧殘。

你不知道你的用戶會如何使用你的程序,是好的方面?還是壞的方面?難道設計槍支的人就能把他的槍綁定在好人手裡嗎?同樣的,你也不能確定你的文本框就一定會被用戶填入數字或者字母。你不做檢測,不做判斷,那麼你的程序分分鐘就崩潰了——而這種錯誤本在開發的時候就應該予以考慮並且避免的——而這個鍋,只能你自己來背。因為你從來沒有這麼做過,你對程序的完整的定義裡就根本沒有這一條,你又何來一開始就能避免它呢?

這就是為什麼,你辛辛苦苦寫出來的代碼,你的完美作品,會被你的產品經理,你的用戶唾棄為半成品。它不穩定,不好看,也不好用。它僅僅是功能上的堆砌只是一個不穩定的程序而不是一個完整的軟件。

在大師的眼中,永遠沒有完整的作品,因為他們堅信這幅作品還有提升的空間,他們堅信只要能再增加一點細節,他們的下一幅畫就能更趨近於完美一點。

你的潛力,如同一個沒有說明書和規格的千斤頂,你每 push 一下,它就能把看似不可能的重物給抬升一些,誰也不知道它的極限在哪裡,但我們知道,在你第一次把它抬升之後我們就肯定能再次到達這個高度了。

而且,如果你不能再做到 push 自己了,那可能你的潛力也就真的消失殆盡了。

所以如果你去問問身邊那些所謂的“學霸”,那些“天才”,他們總是有各種辦法來不停地提高自己對於“完成”的閾值,每個人可能各有方法,他們也不知道這到底算是什麼,有的人稱之為完美主義,有的人稱之為強迫症——其實,更確切的來說,這是一種自我提高的方法,通過不停地提升自己對於“完美”的定義閾值,讓自己越來越“完美”。

本文由 落格博客 原創撰寫:落格博客 » 完成一幅畫——堅持寫完整的程序

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/1596.html

關於作者

R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

發表評論

您的電子郵件地址不會被公開. 必填字段標 *