小白經驗貼:思考問題的方式比“經驗”之說更重要
本文轉載自公眾號“讀芯術”(ID:AI_Discovery)
不要僅以經驗去評判一名開發人員,這遠遠不夠。正如谷歌CEO所說:“我雇傭了比你們更有經驗的開發人員,但你們在這里的工作效率比我雇傭的任何人都要高,取得的成就也更多。”
不管你是有20年的實際工作經驗,還是剛剛進入科技行業,沒有實習經驗只有一個大學學位。無論是過去還是現在,當涉及到效率、生產力和原始編程天賦時,多年來積累的知識并不絕對重要。以資歷去判斷一名開發人員的聰慧程度或他是否值得尊重,這并不科學。
筆者剛進入Salesforce開發顧問行業時,完全不知道如何為這個平臺實現解決和集成方案。現在,筆者正在創造公司的記錄,我被認為是行業中最有前途的開發人員之一,經常被招聘人員和其他企業主聯系,幾乎完全依靠自己的力量來設計解決方案,并且沒有失敗過。
在進入這個行業后,筆者只用了三個月的時間就超越了同行。在最初的三個月里,我們幾乎都在堅持不懈地訓練和學習。
- 我沒有天分,不算是有天賦的開發人員。· 我不是很懂編程。
- 我無法憑直覺在一瞬間找到解決方案。
- 我還有很多要學。 以上這些大多數人擁有的特質,我都具備。
在本文中,筆者將確切地告訴你,是什么讓我脫穎而出成為一名開發人員,并最終以驚人的速度完成編程任務和項目——其他更有經驗的開發人員無法跟上的速度。
盡早建立最佳編碼實踐
回顧為獲得計算機科學學位所花的全部時間,筆者認為自己是一個不合格的程序員,我幾乎不知道如何解決實際的編程問題。
筆者非常想解決編程項目分配的任務,現在我可以輕松用一個晚上的時間完成。對筆者來說,理解實現一個解決方案所需要的邏輯,甚至理解完成一項任務所需要的面向對象原則,都是非常困難的。如果沒有谷歌,筆者肯定不會繼續鉆研計算機,而是會去攻讀哲學或商業學位。
但某一個時刻,筆者開始發現自己的技能出現轉變。通過開始觀察編程語言實際工作的方式、具體設計原則的使用和實現方式、設計代碼時要避免的事情以及所采用的最佳實踐,筆者注意到了自己處理問題方式發生的轉變。
筆者開始用所學到的原則來設計和思考解決方案,這讓我以一種更有目的性和方向性的方式來組織我的想法。
圖源:unsplash
從編程的角度來說,對筆者最重要的書籍是Robert C. Martin的《干凈代碼:敏捷軟件工藝手冊》,強化了這些原則并將它們深記于心。
其中函數命名、簡化代碼以及構造類的方式,在開發方式中發揮了很大的作用。讓我真正地退后一步,思考所寫的內容,思考該如何組織代碼的——注意內容是否合乎邏輯,是否具有可讀性。
關于可讀性、設計簡單性,更重要的是解決一個需求往往引發快速生產不會過時、可重用、可擴展的代碼。也就是說,作為一名程序員,我們應該了解最佳編碼實踐、所使用的語言或框架的限制、可靠的原則、設計模式和快速應用。
僅僅編寫有效的代碼是不夠的,還需要編寫容易理解的、模塊化的、能夠經受時間考驗的代碼。這需要更多的思考,但它將會使你不斷地構建并為你創建的應用程序產生更多的價值。
將編程視為創作藝術的工具
編程常常被視為一種神話般的技術——幾乎就像一種外語,很難翻譯,只有受過良好訓練的人才能優美地書寫它。但事實并非如此,你需要重建對編程的看法,不僅僅把它看作是一門技術工藝。
我看待代碼的角度,與畫家看待畫筆、機械師看待它的扳手、木匠看待它的錘子一般。代碼是一種工具,可以通過它推動實現最終目標和架構解決方案。
偉大的藝術家區別于常人的是他們運用工具的能力,這些工具與他們的思想和想象力相結合。那個藝術家和一個藝術家在同一個位置開始,使用同樣的工具——空白畫布、顏料和畫筆。請記住,當你茫然地盯著空白的IDE時,試著編寫第一行代碼。
重要的是如何使用這個工具,對筆者而言,有效的不是簡單地理解代碼的語法和理論術語,而是做一些事情,不斷提高使用這個工具的技能。
思考能做什么、能完成什么、應該走什么路以及想要達到的目標,這些恰恰會激發筆者將代碼視為使用工具,專注地設計出最終解決方案。在這一點上,唯一能限制我的是使用代碼解決所面對的特殊解決方案的思維和個人能力。
這就是為什么筆者不會浪費時間去學習一種語言的所有語法,也不會無休止地閱讀文檔,只是試圖記住一種語言或框架必須提供的所有內容。筆者發現最大的價值在于理解基于經過測試的原則、設計規則和理論來構建和設計代碼的不同方法。
圖源:unsplash
我不是什么都會,但可以進行學習 這也是我不浪費時間去瀏覽和記憶文檔、不去看學習編程語言的綜合教程、不去花大量的時間去學習的另一個原因。
如果筆者真的有超能力,就能以最快速度進行學習和模仿。但事實是,我也確實會失敗,徹底失敗。但我經常能夠通過失敗總結經驗,豐富自己的知識,直到對一個主題有一個完整的理解。
筆者通常不需要用一堆技術和初步信息來開始工作,我能通過大量研究、在過去處理類似問題和失敗時積累的經驗來推動編程。我按照計劃學習,用具體的細節和方法來填滿腦袋。我們處理的每一項任務對于想要達到的目標都是完全主觀的。
如果有的話,谷歌搜索引擎問題就是我需要立即試圖解決的問題。如果不能通過谷歌搜索找到需要的所有東西,筆者就會向CEO提出一些問題,試圖解決一些更復雜的問題。然后,將以定制的方式調整發現的信息以滿足當前需求。
我不會因為不知道解決辦法而放棄。相反,我會盡他所能去弄清楚什么是可能的。這種思維模式和方法與將代碼插入筆者自己理解的特定設計原則密切相關,并且我還會用代碼作提出解決方案。
筆者不是什么都知道,也不想知道所有的事情。編程令人興奮的部分原因在于它是一段不斷學習和不斷創造與思考的旅程,只看得到特別的方式或方法。而筆者可以看到阻礙你作為一名程序員所需得想象力和潛力的事情。
圖源:unsplash
筆者堅信,無論其技能、天賦或經驗,任何人都有能力被認為是獨一無二的偉大程序員。真正需要做的是轉變思維方式和方法,以建立自己專屬的解決方案,并在職業生涯中保持謙遜。謙遜會讓我們保持初學者的心態,充滿渴望和好奇心,不斷學習和適應日新月異的編程環境。
作為程序員,我們在生活中體現了不斷學習的精神,打破了以前認為不可能的障礙。如果你沒有這一理念,那么你可能將無法在現有基礎上提升技能。
請謹記,任何人都有能力成為偉大的人,不管你已經在這個領域干了20年,還是才剛剛開始。





















