我究竟為什麼要每天埋頭寫代碼?
作為程序員,你有想過每天的編程工作對自己有什麼影響嗎?本文的作者認為,正是編程,幫助他成長為了一名強大、自信的開發人員。
以下為譯文:
在成為專業的軟體開發人員之前,我曾在一家公司的技術部門工作,當時我只是Javascript愛好者,渴望成為一名真正的開發人員。
當時,我是一名大學剛畢業的學生,對業務組成的各種原型還抱有天真的想法,而讓我感到震驚的是,程序員的做事態度與其他同事的態度截然不同。大多數時候,在我眼中那家公司的文化充斥著阿諛奉承,各種角色的職能也一塌糊塗,工作氛圍總是讓人倍感緊迫與壓力。
為了表現努力工作,你需要表現得惶惶不可終日。儘管嘴上不說,但內心深處大家都知道說『我不知道』是無能的表現,會令高層人士不滿。
但是,程序員似乎不同。如果有人氣勢洶洶地衝到一個程序員的辦公桌前,報告了一個bug,然後怒吼道:「為什麼會發生這樣的事?!」應該對此負責的程序員只是有氣無力地坐在那裡,然後說,「你去寫票吧,我們會做調查。」
哇,我當時想——「我們會做調查」,他們沒有費盡心機討好權威,沒有慌慌張張地做解釋,而我想成為他們那樣的人。
對我來說印象最為深刻的是,雖然當時我可能不敢說那樣的話,但是技術部門對負責的工作信心滿滿。
這些人很聰明,所以有信心也是自然的,但是原因不僅如此。當時我有一種感覺,軟體開發人員的工作與現實緊密相連,而其他崗位則沒有。當然這樣說可能對那些在其他職位的人來說並不公平,不過這些開發人員工作的成敗有明確的定義標準,而且他們完全有能力達到這些標準。
我不是指企業強加給人的那種不切實際的標準。我說的是:「我的單元測試通過了嗎?」、「我的應用程序在載入的時候會崩潰嗎?」、「我改好了每個人都擔心的bug了嗎?」這些標準完全是客觀的、非政治性的。
相反的例子是,成功與否的標準定義模糊,通過貶低他人的成功來表現自己——這種情況下你需要把自己的信仰託付給有影響力的某個人,而無需對任何真實情況負責;強調做作和夸夸其談,而不重視誠實和行動。而且在程序員的這邊也沒那麼多扯淡的事兒。
儘管現在我已經意識到:
我上面描述的這些現象其實極其罕見,可能僅限於我曾經工作的那家公司;
這些信仰可能更多地表現了我對我當時的角色的不滿,而不是任何「客觀性」的真實情況;
如果其他專家能夠定義出難以定義的「成功的標準」,那麼這並不總意味著完全沒有標準;
我也認識到,在軟體開發領域,雖然理論上來講不應該有任何扯淡的事兒,但實際中也並不是完全一塵不染的。
在我成功獲得夢寐以求的轉職之後(感謝一些人,直到今天我都心存感激),我發現了一些獲得自信的技巧,而在以前我只有羨慕別人的份兒。
首先我意識到,如果程序員是公司里最冷靜的人,那麼這種生理激勵就像是讓你寫好代碼的氪石一樣。充滿壓力會限制你的專註力,導致你無法思考抽象的事物。在任何緊急情況下,我都要學會在不提高我的心率的前提下提高思維水平——我需要學習不被他人的壓力影響。
我學到的第二件事就是假設測試相對於試錯而言的重要性。假設你需要用一個值對一個變數進行初始化,而且你知道這個值應當是幾個可能值中的一個。你可以在頭腦中模擬系統,直到你知道哪個才是正確的值(假設),或者試驗每個值,直到程序正常運行(試錯)。
後者可能更快、更「容易」,但很明顯前者才對你的掌控能力有幫助,更不用說長遠來看前者能增強你以後解決類似問題的能力了。針對正確答案建立假設並驗證需要一點「靈感」,相反,無意義地試驗集中選項並隨機選擇一個則無需任何思考——你應該避免那種被代碼孤立的感覺,開發者的工作是告訴機器該怎麼做,而不是像個機器一樣做事。
相反,你的目標應該是發展你的思維模式,使得你認為寫代碼是一種表達的形式,就像奧威爾提倡的寫散文時的觀點一樣。
不過這裡的「靈感」和「孤立」這兩個詞我想多談一點。
幾年前我讀過馬斯洛的《Towards a Psychology of Being》一書,書中他提到了安全感和成長之間的根本的對立。他的理論認為,童年時期或以後任何重要時期的個性養成,都是基於「靈感」的積累。有時這可能是通過某種自發的行為,在不可能的情況下成功操縱了世界的某一小部分造成的結果。因此,成長是事業擴展的一部分,能夠逐漸培養對成功的感覺。
但這個概念也與價值和天賦有關。例如,馬斯洛的書中,可能「親吻某個人能帶來比親吻其他人更多的靈感」,他繼續描述這種「通過靈感獲得成長」的結果:
這樣,我們能學到我們擅長的東西,喜愛或不喜愛的東西,我們的口味、判別能力和接受程度。一言以蔽之,這就是我們發現自我並解答那個終極問題的方法:「我是誰?我是什麼?」
關於孤立,馬斯洛是這樣說的:
當孩子能夠意識到時,與主觀靈感(信任自己)相反的,是他人的意見(愛,尊重,認可,仰慕,來自他人的獎勵,相信他人而不相信自己)。對於無助的嬰兒和孩童而言,他人極其重要,因此失去他人(即失去他人提供的安全感、食物、愛和尊重等)是極其可怕的危險。
因此,當孩必須在自我靈感和他人的認可中二選一時,他們必然會選擇他人的認可,然後壓抑自己的靈感,或者乾脆消滅之,或無視,或者下意識地約束。一般來說,這會造成對自我靈感的否定,或者對其產生害羞或神秘感,最終造成無法表達這種靈感。
我認為這正是他人尊重(特別是來自權威的尊重)和個人信仰之間的對立,讓我被技術圈的那些冷靜自信的人所打動。自我的發展,包括自信,可以認為是一系列「自我靈感」的結合,每個靈感都在前一個的基礎上發展,就像土壤不斷增長成小山丘一樣。而且這種發展出現在對世界的直接認知過程中,而不會被他人的認知和價值觀所影響。
也許正是我的認知失敗,使我選擇了編程的路。我的能力不足以讓我用自己的眼睛和耳朵去認識世界;我也「無法去表達」自我靈感。這讓我想起了希伯來聖經中的一段:
異教徒的崇拜是金子和銀子,以及人們雙手的工作。
他們有嘴,但他們不說;有眼睛,但不看。
編程給我帶來了一個方便、決定性的微觀世界,在這個世界中我可以得到控制感、精通和對世界的直接認知,而這正是我的一生中失去的東西。新發現的「信任自己的判斷」的能力,將我的世界的中心從他人的判斷上(一種高度的「自我監視」狀態)移動到自己身上。
我發現,在我實施「假設測試」方法之後,某些人認為的冰冷、抽象的原則,對於我來說卻十分有意義。如果程序與之前做過的假設相關,那麼理解程序(或者任何事物)的行為會更容易記憶,而且特點更明顯,產生更多的「靈感」。這樣,儘管操縱屏幕上的游標的藝術對於嬰兒來說並沒有「靈感」科研,但對於成人來說則是個人成長和自信的快車。這就是我的情況。
用自己的眼睛和大腦去決定何為「好的軟體程序」,能夠導致更少地依賴別人。自己對真實判斷負責,能夠讓你對好的東西負責。我認為「生活方式設計」行動就是個很好的思維成長的例子。它能鼓勵你忽視慣例,批判性地評估你的生活方式,並根據你對自己和你的偏好了解的內容進行調整,讓這些學習影響你現在和將來的選擇。
關於這個話題我還要說最後一件事。馬斯洛理論的中心,也是他看到的主要增長障礙,就是對拋棄的恐懼。為了冒險進入操場,孩子需要確保母親正在等待並且自己能隨時返回。再次引用馬斯洛的話:
如果維持自我的唯一方式就是失去他人,那麼一般的孩子會選擇放棄自我。
這段話表明,艾默生在編寫《Self-Reliance》一書時頭腦中想到的最終技巧,並不是讓我們所有人都成為程序員。 這當然不是我想在這篇文章中傳達的信息,儘管喬布斯這樣推薦過。自信可以通過各種方式實現,而編程恰好是我的方式。更重要的是提醒自己這樣一件事:
你永遠是人類家族的一員,長期有效且不可撤銷。
正是這種信念促使你無所畏懼地生活。它為你帶來了探索未知的能力,並賦予你天生的自發性和自然而然的成長,同時保證你不會成為局外人,不會被驅逐。
有了這種信念,一個人才能安全地追隨「頭腦中的那道閃光」,才能在一群人之中維持「孤獨的獨立」。我還認為這種信念與人們所說的「自我接受」強烈相關,它可以幫助你擺脫最深刻和最原始的恐懼。
試試吧,結果會很有啟發的。
原文:https://medium.com/the-polymath-project/programming-for-personal-growth-64052e407894
作者:Matt Oxley,程序員,專註於設計、音樂科技。
譯者:彎月,責編:郭芮
※梅西自強成「霉球」,阿根廷「可能」折在半路,今年的世界盃……
※圍攻微軟,AI 何罪?
TAG:CSDN |