又是一年畢業季,每每到這個時候小編就會感慨時間過得真快,不知不覺我已經變成當初我剛畢業那會眼中的一群“老前輩”了。那我這個“老前輩”就來跟大家聊聊我是如何從一個剛畢業的萌新進階到如今的“老前輩”吧。
如何成為優秀的,這個問題我也曾經問過我自己,可惜我做的還不夠好,經常這么反問自己的話,會提升你對開發流程工藝思考,同時沒事也可以問問身邊的是程序員的同事,我相信你們會引發一些有趣的討論,但是我個人認為掌握下面五個技能非常重要,看看吧,為了我們都成為優秀的程序員。
1,問題分解
編程很大程度上是來解決問題,但是寫代碼之前,需要弄清楚如何解決這些問題。一個優秀的程序員會嘗試把這些問題進行拆分,然后一部分一部分去開發,直到每個部分都可以很容易的解決。但是僅僅做到這些還不夠,一個優秀的程序員會發明一種工作模式,利用現有的標準化邏輯去開發,便于實現和測試。一些很復雜的程序,復雜部分的原因是代碼實施不能完美的解決問題,而且代碼難以理解。
當遇到難題建模,曾經采訪優秀的開發者:“很少有程序是不能修改的,但是如果你看一段代碼,它往往看起來很復雜,很多人覺得無從下手,他們往往這是缺乏思考的一種表現,而我會卷起袖子試圖修復它,慢慢的其實這些都不算困難,而且很容易。”
2,情景分析
好的開發人員有能力考慮許多不同的場景。這既適用于程序中的邏輯,以及內部和外部事件可能發生。考慮不同的路徑的邏輯,他們會問這樣的問題:如果這個論點是零?如果這些條件是真的嗎?這是線程安全的方法嗎?發現軟件需要處理什么類型的事件,他們會問這樣的問題:如果這個隊列變得滿了嗎?如果沒有響應這個請求嗎?如果其他服務器重啟,這個服務器重新啟動嗎?
優秀的程序員會問自己:“這怎么能算結束呢?”說明他們還想測試自己的能力,相比之下,沒有經驗的程序員大多只考慮自己,能夠暫時解決問題就行,當然大部分不可避免的意外情況發生,他們都有方法解決。
3,所示命名
編程在很大程度上由命名的事情:類、方法和變量。如果做得好,程序變得很大程度上是在自我記錄,這意味著程序的功能是非常清楚的執行源代碼。自我記錄的代碼的一個作用是,它自然會導致許多較小的差錯,而不是幾個很大的功能缺陷,因為這些優秀的代碼將存在很多的地方。
想出好名字要困難得多。我喜歡一句話:“計算機科學中只有兩個艱難的事:緩存失效和命名的東西。“部分命名是很困難的,因為它需要清晰的在腦海中每個名字代表什么。有時這是不清楚,但隨著開發的進行才會顯現。因此,重命名命名一樣重要。”
命名的東西也還包括提出的概念,以及這些概念應該叫什么。通過考慮周全,明顯命名概念一致地使用,編寫的程序才會變得更容易。
4,所示一致性
也許在編程的最大挑戰是管理的復雜性。一致性是一種戰斗的復雜性。它減少了一些復雜性,允許我們看到模式和推斷出如何命名,使用和處理。與一致性,我們不需要用腦力來記住異常和隨機變化。相反,我們可以專注于重要的復雜性,而不是偶發復雜性。
一致性是很重要的。它適用于變量名和分組,命名方法,劃分成模塊,目錄結構,GUI,錯誤處理,日志記錄、文檔等。例如,如果某些變量是相關的和一起出現(在聲明,方法調用或列在數據庫中)然后總是使用相同的順序。然后它變得更容易看到如果丟失,或者如果他們一直搞混了。對于一個操作,如果是calleddelete在一個地方,別叫它刪除在另一個地方——堅持相同的名稱。Steve McConnell也有一些好的建議在代碼中使用精確對立完成。例如,開始/結束對立,啟動/停止。不要混合名稱從不同的雙(例如使用開始/停止)在處理相反。
矛盾可以介紹當修改程序。草率的程序員往往不注意如果他們添加是否符合現有的代碼。優秀的程序員在確保看似無情的小細節是正確的,他們知道如何重要的一致性是整體對抗的復雜性。
5,學習
作為一個軟件開發人員,你需要不斷的學習。添加一個新特性之前,你必須理解它應該做什么。將代碼添加到現有的一個項目之前,通常你需要學習什么現有代碼,為了適應新的功能正常。你也必須了解周圍的系統,為了正確的界面。因此,學習能力快讓你更有效的成為開發人員。
此外,由于在軟件工程領域的發展速度是如此之高,有源源不斷的新語言,工具,技術和框架的了解。你可以認為這是好還是壞。弗雷德布魯克斯列出了學習的樂趣之一的將技能變成工藝,這一點我同意。學習新事物本身是令人興奮的。這也意味著生活中作為一個開發人員不會很無聊。
結論
所有上面的技能是通用的,沒有一個特定于任何一種語言,框架或技術。如果你有,你可以快速學習一門新語言或者工具,并編寫好的軟件環境。此外,因為他們在本質上是通用的,因為語言永遠不會滅亡,這些便是我的一些建議如何成為一名優秀的程序員。
那么你想成為一個優秀的程序員嘛?
我自己是一名從事了10年的web前端老程序員,今年年初我花了一個月整理了一份最適合2019年學習的web前端實戰以及基礎教程干貨,從最基礎的到深入的都有整理,免費送給每一位編程小伙伴,這里是小白聚集地,歡迎初學和進階中的小伙伴。專注于Web前端技術學習交流零基礎到項目實戰,每天有直播講解實戰項目,答疑解惑,學習與快樂同在。
免費教程獲取方式:加QQ群:956766604(招募中)