當前位置:
首頁 > 科技 > 如何才能成為優秀的程序員?這10個準則值得深思

如何才能成為優秀的程序員?這10個準則值得深思

我最近在接受採訪時被問:如何才能成為優秀的程序員?這是一個有趣的問題,我認為如果我們應該遵循一些準則:無論我們的天賦如何,我們都可以成為偉大的程序員。事實上,這些準則不但適用於程序員,而且適用於所有專業人士。


1.學會如何提問:

這些類型的程序員提出問題時的情況:

完美主義者:特別是在詢問一些開源工具的問題時,他們可能已經通過代碼調試並找到了問題的真正原因。但即便沒有,完美主義者會寫一個問題的介紹,重現的步驟,甚至是一個建議的解決方法。事實上,完美主義者沒有問題,只有答案。

懶人:這是代碼。哪裡出錯了?大家幫幫忙吧。

經理:對於這種類型,時間就是金錢。問題必須簡短。因為必須保持問題簡短,大多數情況下,很多重要的細節都會缺失,這隻讓程序員諮詢他細節的詳情。然後,經理(自然感到失望,因為答覆的不是答案,而是一個新問題)將再次發送一條簡訊,並要求更加好的答案。這可以來回走了很長一段時間。最後,可能需要1-2周才能真正得到答案。

只會抱怨的人:這類人不會提問,他們只會抱怨,直到問題消失。

到目前為止,應該清楚的是,一個準備充分的問題(簡潔,但有足夠的細節)將產生更好的答案。


2.學會如何避免提出問題

事實上,大多數情況下,最好避免提問。我們可以自己搞清楚。當然,並非總是如此。許多事情,根本無法得知,通過詢問領域專家,你會找到最快捷,最有效的成功之路。但通常,嘗試自己學習有一些好處:

學習它是「艱難的方式」,這是更好的記憶的方式 -,我們會更好記住我們學到的東西。

為自己學習一些東西更有意義。

通過推遲提問(至少一段時間),可以收集更多相關信息,這些信息可以提供給可能能夠回答你問題的人。想想「完美主義者」。花更多的時間先尋找細節,然後回答問題。

通過學習後再提出問題,你會更好地提出問題。而這需要更多的時間。


3.不要在質量上妥協

Reddit最近發表了一篇非常有趣的文章,是關於破窗效應的。文章的意思是永遠不要在質量上妥協。永遠不要變成懶人。這是文章的引用:

「當我們採取某些捷徑來在最短的時間內交付一些東西時,我們的代碼會反映出我們的粗心大意,我們的開發人員(來自同一個團隊或者未來的團隊)會想:我們生產的代碼質量差一點馬虎一點沒關係。一點一點地,我們的應用程序將開始不可阻擋地惡化。「

事實上,這不是為了完美。有時,破窗效應可能會被推遲。但通常情況下,允許窗戶被打破並保持斷裂,我們會產生一種沒有人重視的感覺。不是我們的程序員,不是我們的客戶,不是我們的用戶,不是我們的項目經理。這是一種態度,因此是專業的核心。本傑明富蘭克林怎麼說呢:

「在低價的甜蜜被遺忘之後,質量低劣的苦味仍然存在。」

這對所有事情都是如此。


4.程序應該是確定性的。

assertTrue(「ABCDE」.contains(「BC」 ));

預期的結果總是相同的。所有狀態將對此計算完全沒有影響。這是確定性的。

CREATE INDEX upper_first_name ON customer(upper(first_name));

--Deterministicfunctionhere:-----------^^^^^^^^^^^^^^^^^^

所以,這是一個規範問題。


5.不要畏懼出現意外問題

墨菲定律是我們程序員應該始終關注的東西。作為軟體工程師,我們知道它程序會出現意外或者會出錯。因為我們的世界本來就不是確定的,所以我們正在做的業務要求也不是。我們會不可避免地進入非決定論的世界(「現實世界」),那裡的東西會出問題。所以,不要畏懼。訓練你內心的悲觀主義來預見各種各樣的事情就行。


6.永遠不要迷信權威。

很多程序員喜歡將自己視為數學家,只有最純粹的思想才能存在,而且他們必然是正確的。

但那是錯的。我們的專業是建立在數學上的,但除非你進入類別理論或關係代數的世界,不然我們就處於現實世界商業要求的實用世界。坦率地說,這非常不完美。讓我們看看一些最流行的編程語言:

C

Java的

SQL

你是否真的認為這些語言真的只是偏向數學?如果是這樣,讓我們討論分段錯誤,Java泛型或SQL三值邏輯。這些語言是實用主義者構建的平台。所有這些都有一些非常酷的理論背景,但最終,他們必須完成這項工作。

建立在語言之上的所有東西都是如此:庫,框架, 設計模式,甚至架構。沒有什麼是對的或錯的。一切都是為某些環境設計的工具。在其上下文中考慮該工具。永遠不要將該工具視為一個獨立的存在理由。我們不是為了藝術而藝術。

所以,不要懷疑:

XML

JSON

功能編程

面向對象的編程

設計模式

微服務

三層架構

DDD

TDD

鑒於某種情況,所有這些都是很好的工具,但它們並不總是成立。通過保持好奇心,你將成為一個更好的程序員,並知道何時使用這些工具中的哪一個。


7.去實踐

你怎麼能成為一名優秀的程序員?通過實踐。偉大的軟體不是一天寫成的,受歡迎的人不是我們這個時代唯一的英雄。我遇到了許多沒有人知道的優秀程序員,因為他們過著私人生活,解決小公司的問題。

但優秀的程序員都有一個共同點:他們會去實踐。他們會練習。他們每天工作以變得越來越好。

想要在SQL上變得更好?做吧!嘗試每天編寫一個帶有一些新功能的SQL語句。使用窗口功能。分組集。遞歸。分區外連接。MODEL和/或MATCH_RECOGNIZE子句。它不必每次都使用,但這種做法是值得的。


8.專註於一個方向

可能有極少數「優秀」的完整堆棧開發人員。但相比之下,大多數完整的堆棧開發人員都是比較平庸的。當然,一個小團隊可能只需要其中的一小部分,他們可以涵蓋很多業務邏輯,以快速啟動一個新軟體。但是一切都會非常草率。也許這對於最小的可行產品階段來說已經足夠好了,但從長遠來看,會有更複雜的問題,全棧開發人員沒有時間進行正確分析(或預見!)。

你應該關注一個方向,並且做好它。


9.保持興趣和好奇心

雖然你應該主要關注一個方向,但你不應該完全忘記其他方向。你不可能深刻理解全部的SQL,擴展,低級性能,CSS,面向對象,需求工程,架構等等(見提示#8)。這是不可能的。但你至少應該理解每一個的本質。你應該了解SQL何時是正確的選擇(何時不是)。低級別性能調整很重要(如果不重要)。CSS原則上如何工作。面向對象,FP等的優勢。

你應該花一些時間玩一下這些(以及更多)概念和技術,以更好地理解它們為什麼重要。知道何時應用它們,然後找一個專家來實際執行工作。

通過使用新的範例和技術,你會開始思考完全不同的思維方式,並且很有可能,你將能夠以這種或那種方式在日常工作中使用它。


10.保持簡單

愛因斯坦說:

「一切都應儘可能簡單,即使他們並不簡單。」

沒有人能夠處理巨大的複雜度。不單單是軟體方面,還包括生活的任何其他方面。複雜度是好程序的殺手,因此簡單性對好程序幫助很大。這很容易明白。但難以實施。簡單是需要花費大量時間和實踐才能識別和生成的東西。

最簡單的規則之一是使用只有少量參數的方法/函數。我們來看看。String.contains()方法是合格的。我們可以編寫並且無需閱讀任何文檔,每個人都會立即了解這是什麼以及為什麼。該方法只做一件事。沒有複雜的上下文/設置/其他參數可以傳遞給方法。沒有「特殊情況」,也沒有任何警告。

同樣,在庫中生成簡單性比在業務邏輯中實現簡單要容易得多。我們能實現嗎?也許可以。通過練習。通過重構。但就像優秀的軟體一樣,簡單性不是一天就建成的。

原文標題《10 Tips on How to Be a Great Programmer》,

作者: Lukas Eder

譯者:我就靜靜地看

本文為譯文,不代表雲加社區觀點

—— 完 ——

關注云加社區,回復

3加讀者群

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲加社區 的精彩文章:

一文帶你了解Serverless架構及應用場景
程序員們!七夕快到了,教你用數學方法如何脫單!

TAG:雲加社區 |