CodeGym /Java Blog /Toto sisi /新手程式設計師常見錯誤分析,pt。2
John Squirrels
等級 41
San Francisco

新手程式設計師常見錯誤分析,pt。2

在 Toto sisi 群組發布
大家好!我們將繼續考慮年輕且不成熟的程式設計師在他或她的第一份工作中可能面臨的問題。第一部分可以在這裡 找到。新手程式設計師常見錯誤分析,pt。 2 - 1我們繼續吧。

13. 不遵守編碼風格指南。

開發團隊通常堅持單一的程式設計風格。也就是說,個體開發人員遵循某些書面或不成文的規則,以確保他們的編碼風格與其他人沒有不同。不要試圖用獨特的程式設計風格讓自己與眾不同:這不會讓你看起來很好。如果您是專案的新手,您應該立即查找是否有任何定義通用編碼風格指南的文件。您的特定專案可能有一些樣式文件,您需要請求並將其匯入到 IDE(例如 IntelliJ IDEA)中,以便 IDE 可以提供正確的編碼樣式提示。例如,樣式可能需要盡可能使用 Final 修飾符。樣式檔案允許 IntelliJ IDEA 以黃色突出顯示任何不遵守此規定的變數。

14.因錯誤而灰心喪氣

新手程式設計師常見錯誤分析,pt。 2 - 2錯誤是你必須習慣的事。他們過去是、現在是、將來也是。無論您是初學者還是認真的建築師,您總是會犯錯。你犯的錯誤的數量和嚴重程度可能會改變,但它們將伴隨你整個職業生涯。有時候,你整個星期都在努力讓某件事發揮作用,你犯了一個錯誤,然後到了周五晚上,你像一隻被打敗的狗一樣溜回家,卻無法糾正那個該死的錯誤。這是一種難以形容的感覺,但不該讓你氣餒。畢竟,經驗豐富的開發人員和新手之間的另一個重要區別是他們如何處理錯誤。有經驗的開發者不會把它們放在心上,而是把它們當作經驗。沒有人會因為你犯了錯而責罵你。這是正常的——每個人有時都會陷入混亂。同樣,你可以向同事尋求幫助。並且不要忘記像專案經理 (PM) 這樣的人。如果你遇到困難,你應該立即聯繫 PM。他或她可以幫助您找到問題領域的專家。無論如何,PM 需要隨時了解您在專案中遇到的任何問題。PM的工作是幫助解決各種問題,包括團隊成員之間的溝通和互動。總結一下:錯誤發生了,不要讓它們殺死你。相反,接受它們作為對你和你的技能的挑戰。最後,這只是工作的一部分。

15. 未能實現線程安全。

沒有什麼好事是輕易創造出來的。每個開發人員都需要了解,編寫特定的功能,無論是模組還是方法,都需要製定關於要做什麼和如何做的計劃。通常,在開發任何複雜的功能時,您都需要遵循以下流程:
思考->分析->制定計畫->寫程式->測試程式碼->重構
新手程式設計師編寫的程式碼中出現的許多錯誤都與此過程中的步驟有關。當然,你不能排除有些時候你需要一看到任務就毫不猶豫地快速編寫程式碼。但這通常只適用於某些次要任務和方法,其實現是顯而易見的,不需要太多思考。上述的開發過程更適合複雜且可分為子任務的大型任務。在沒有清楚了解要編寫的內容的情況下開始編寫程式碼並不是一個好主意。首先,你需要仔細思考和規劃一切。抓起一張紙和一支鉛筆並嘗試勾勒出您的實施想法也很有幫助。在規劃複雜的功能時我總是這樣做。程式設計師的大部分時間不是在編寫程式碼,而是在思考如何建立所需的功能。事實上,一旦你計劃並考慮了一切,編寫程式碼就變成了一個無憂無慮的純機械過程。

16.過度勞累

新手程式設計師常見錯誤分析,pt。 2 - 3
選自電影《搏擊俱樂部》(1999)
也許每個初學者都認為,透過工作到深夜,他或她將開始完成更多的任務,並被賦予更多的責任。我以前也這麼認為,但現在不這麼認為了。我注意到,當你達到極限時,就會達到一個臨界點,此時你將無法充分思考。你開始變得相當遲鈍並經歷精神迷霧。如果你的頭腦清醒的話,你可以在 10 分鐘內完成的事情需要一個小時才能完成。幾乎無一例外,當你跨過這條疲勞線之後,你會遇到一些看似無法克服的問題。但第二天早上來上班的時候,眨眼間就解決了。所以當你覺得自己已經到了這一步的時候,就不要熬夜了。回家好好休息吧。畢竟,如果你在辦公桌前待到深夜,你不僅不會在這段時間的煎熬中取得特別出色的成果,同時你還會面臨在下一個工作日之前休息不佳(不足)的風險。會再次搞砸的。想想你的健康:在你職業生涯的初期就這樣破壞它值得嗎?我想不是。這是一個生病的昂貴時間。想想你的雇主。如果你自己過度勞累,不僅會讓你自己的情況變得更糟,也會讓你的雇主變得更糟。誰需要一個永遠昏昏欲睡、因精疲力竭而無法實現最簡單的排序演算法的員工?是的,毫無疑問,有時候你會遇到緊迫的截止日期,有時一切都會出錯,有時——這是我個人最喜歡的——「我們昨天就需要這個」。但這些情況通常很少見,一旦你經歷了這些情況,你需要坐下來仔細考慮它們是如何發生的以及將來如何避免它們。

17. 忽視英語技能

許多有抱負的開發人員優先考慮學習技術,而推遲學習英語。這是一個嚴重的錯誤,因為程式設計師通常非常適合初級職位(或實習),但由於英語技能薄弱而無法獲得這份工作。是的,當然,有些情況下你不需要英語也能過得去。通常,這些人在非英語國家的計畫中受僱於當地。但本地公司支付的工資與外國公司不同。即使隨著時間的推移,獲得體面的薪水也將非常非常困難。這就是為什麼你不應該忽視英語。您需要學習英語才能立即專注於英語項目,而不是將英語放在次要地位。事實上,想想──英語目前是國際商務語言。無論你去哪個國家,如果你懂英語,你就能找到與他人的共同語言。開發項目也是如此。無論項目位於何處:德國、澳洲、法國或其他地方,所有溝通、所有任務、文件等都將使用英語。如果您想一想,您就會同意這非常方便,對吧?

18.追求潮流科技

當開發人員開始他們的道路時,他們經常嘗試跟上最新的技術。這是正確的做法嗎?一方面,是的:最新的技術、項目……但是值得將其作為重中之重嗎?也許為您所在領域的專家尋求“經典工具包”更好?新固然好,但你不能忘記你所在領域的基礎技術。只有這樣,在您獲得了一些基礎知識的經驗和深入的了解之後,您才可以嘗試新的東西。還要考慮到新技術可能在某些微妙的方面表現出色,但它們可能會在其他方面失去優勢。在新手開發人員理解這些權衡之前,最好堅持使用經過時間考驗的解決方案。例如,如果程式設計師正在開發與某些資料互動的應用程序,那麼不要因為最新的 NoSQL 解決方案很流行就急於使用它。一個普通的、經過驗證的 SQL 資料庫(MySQL、PostrgreSQL 等)很可能在 StackOverFlow 上有針對任何潛在問題的詳細文件和解決方案:)

19. 同時學習幾種不同的技術和/或語言

我們上面談到了初學者嘗試學習流行技術的情況。那麼,同時學習多種技術或語言呢?顯然,您聽說過了解不只一種程式語言並掌握多種技術的程式設計師。但我很快就會指出,這些人對程式設計來說遠非新手。這些人背後都有多年的經驗。他們掌握了自己原有的技術,然後越走越遠。想要同時掌握所有內容的初學者應該記住這句優秀的諺語:“追兩隻野兔,一隻也抓不到。” 結果可能是你不能很好地掌握任何科目,而只是學到了表面知識。與對所有語言都了解一點的專家相比,對精通一種語言的專家的需求將會更多。因此,如果您想了解多種語言和技術,您需要明智地接觸它們。首先,您需要選擇一種必須深入學習的基本核心語言。只有這樣你才可以開始研究其他領域。例如,成為 Java 大師,然後學習 Python 作為第二語言。之後,您可能會了解一些關於前端的 React/Angular 的知識。在這種情況下,我們討論的是不可互換的技術,例如 C# 和 Java,而是互補的技術,可以擴展您的職業機會。但我再次重申:你不應該嘗試一次學習所有內容。您需要按順序進行。可以這麼說,一次捕捉一隻兔子。

20. 目標設定不正確

你如何為自己設定目標?成為一名出色的開發人員?永遠記住這一點:你需要設定具體的目標,或者換句話說──可實現的目標。我在說什麼?例如,你給自己設定了目標:「我想變得富有」。但你怎麼知道你是否已經實現了這個目標?或者你如何衡量你距離實現這一目標還有多遠?好吧,如果你設定目標“我想賺一百萬美元”,那就更清楚了,不是嗎?一旦您賺到了 10,000 美元,您就離目標又近了 10,000 美元——只剩下 990,000 美元了。還有很多事情需要實現,但是您可以感受到自己的進步並了解終點線在哪裡,因此您將有動力繼續前進。就你的職涯而言,為自己設定一個更具體的目標呢?例如:我想成為團隊領導者。或是高級開發人員。或最終成為建築師。好吧,每個大任務都需要分成小子任務。您不會在職涯之初就成為團隊領導。如果可能且適當的話,設定最後期限,並專注於當前階段。
  1. 如果我們談論成為高級開發人員,那麼第一個小目標就是在公司找到實習或初級開發人員的工作。
  2. 接下來,您可以設定目標來加深對某些技術的了解。對於Java,您可以準備Oracle的1級認證。我們為準備和實現目標制定了時間表。
  3. 然後,例如,您可以設定一個目標,將您的英語提高一個等級(例如,從 B1 到 B2)。我們制定學習計劃,安排時間,朝著目標前進。
這就是我們如何一步一步實現我們的最終目標(同時獲得軟體開發經驗)。

21. 沒有實踐的理論

無可爭議的事實是,透過研究新技術並深入研究我們已知的主題,我們可以成為更好的專業人士。但在旅程的開始,開發者很少意識到,如果新知識沒有在實踐中被嘗試,那麼一本又一本地閱讀技術書籍並不會帶來巨大的好處。我個人不只一次遇到這種情況。如果你在一本書上投入大量時間,但沒有從中練習任何內容,那麼幾乎所有新獲得的知識都會被遺忘:你對一切如何運作只剩下一般模糊的記憶。結果就是浪費了很多時間卻沒有任何實際成果。我們為什麼要浪費時間?生命不會永遠持續下去。結論是,當您學習新技術時,您不應該沉迷於理論:在閱讀的同時寫出給定的範例,嘗試新技術。這是讓你的大腦記住資訊的唯一方法。是的,你會更慢地消耗新材料,但你會吸收更多你所讀的內容。更重要的是,如果你很好地掌握了一項技術,那麼掌握下一項技術就會更容易(就像學習語言一樣)。

22. 過度完美主義

大多數開發人員都是完美主義者:力求完美的人。這意味著他們的程式碼也必須是完美的。所以你的程式碼已經被編寫、測試、微調,看起來是時候將它提交到主分支了。但您仍然對程式碼不滿意,因此您開始這樣那樣地修改它,並在這方面花費了大量時間。在這種情況下,時間就是客戶的金錢。新手程式設計師更容易追求完美。經驗豐富的開發人員習慣這樣的感覺:程式碼永遠不會完美,他們應該嘗試寫得更好。但同時,他們不會為了接近「理想」而走極端。因此,請記住學習如何實現一種快樂的媒介:不要馬虎,也不要試圖用程式碼重新創建蒙娜麗莎。

23. 沒有考慮架構

我再說一次:你不應該寫亂七八糟的程式碼。除了可讀性和效能之外,您還需要考慮程式碼可能如何影響整個應用程式的其餘部分。例如,擴展你的程式碼會有多困難,等等。問題是,新手開發人員由於缺乏經驗,可能無法立即意識到他們的新功能將如何影響未來的應用程式。這種遠見當然需要大量的實踐才能發展。但是新手該怎麼辦呢?不會寫程式碼?在這些情況下,各種程式設計範例可以為我們提供協助。例如,SOLID 原則或各種設計模式可以向您傳達有用的實踐。這些範式也應該謹慎對待,不要走得太遠。但是當你做得太過分時,你如何確定這一點?這是由更有經驗的同事進行程式碼審查會對您有所幫助的地方。透過引入新鮮、客觀的視角,你的同事可以為你指引正確的方向。

24.冒名頂替症候群

新手程式設計師常見錯誤分析,pt。 2 - 4冒充者症候群是一種心理現象,在這種現像中,一個人無法將他或她的成就歸因於個人品質、能力和努力。儘管有外部證據表明他們的表現始終如一,但易患這種綜合症的人仍然認為自己是騙子,不值得他們所取得的成功。 許多開發人員都有這種綜合症。也許它給了我們堅持不懈的精神,推動我們向新的知識和技術前進。當你看到更有經驗、更有成就的同事時,你會感到不安,好像你配不上你的薪水。相信我,這不是真的。總會有比你更好或更差的開發人員。別人看著你會感到不安,認為他或她永遠不會變得像你一樣。這是正常的。來自團隊的回饋、程式碼審查和討論有助於緩解這種感覺。相信我,局外人的意見會讓你感到驚喜,但前提是你真的不會忽視你的工作和職涯發展。如果你忽略了這些,那麼你就選錯職業了。在這個職業中,你需要始終學習新的東西並努力做到最好。但我認為聚集在這裡的人們遠非懶惰。相反,這裡的人們正在堅定不移地朝著他們所珍惜的目標前進。如果這描述了你,那麼你就沒什麼好害怕的。

25. 很少做出承諾

記得經常執行提交!請注意,不是每半小時一次。如果您花了一周的時間來實現某些功能,那麼您不應該在周五晚上執行一次提交,而應該執行五次提交。為了方便起見,幾乎任何大型任務都可以分解為較小的任務。所以你完成這些較小的任務並提交。並且不要忘記立即將這些提交發送到遠端伺服器。否則,您可能整個星期都在進行提交,然後您的電腦在周五午餐時間出現硬體故障,然後您就白白浪費了一整週的時間!但是,如果您將提交上傳到遠端伺服器,那麼您只需將上次提交的分支拉到另一台電腦上即可繼續工作。還有一件事:不要在周五晚上向即時生產伺服器提交新功能。相信我。你不需要那個。很可能會出現意想不到的錯誤,而您將花費週末的時間來修復它們。這並不好玩。週末你需要休息。我想這就是今天的全部。 PS最後一個技巧:寫大量程式碼。 PPS編寫大量程式碼,因為這是獲得急需經驗的唯一方法。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION