本文翻譯自Medium上的一篇文章,原文標題:How To Be A Good Junior Developer. 點擊文末的閱讀原文可以跳轉到英文原文。
到明年,我的職業編程生涯即將滿15年。15年!哇!
回想起來,我仍然記得成爲初級開發人員的第一天,走過燈火通明的小隔間,腦袋裏塞滿了SAP、算法、數據結構、SQL和C++,甚至知識管理和項目管理等更廣泛的主題。我擁有所有的知識,而我唯一沒有的就是有信心在需要的地方使用這些知識。
我花了很多年才獲得這種信心,那時,我意識到實際上我只需要做到兩件事就可以成功。
-
學習新事物的態度。
-
有能力將所學知識付諸實踐。
這兩者都是養成技能,不僅需要努力工作,而且還需要謙虛地承認自己的無知並與合適的人交往以消除這種無知。這就像某個故事中的三個建造圍牆的工人。
問及第一個人他在做什麼。他說,他在鋪磚。無論他做的是對還是錯,他都不會擔心或煩惱。第二個工人說他正在建造一堵牆,但是他不確定建造這堵牆的目的。第三位眼睛放光充滿熱情的工人說,他正在建造一座大教堂。他爲自己在大教堂的建設中所扮演的角色,雖然很渺小,而感到驕傲。
優秀的初級開發人員就像那第三個工人。他們保持與大局一致,同時保持學習自己的方法。他們知道自己正在解決什麼問題,並且爲參與較大的大教堂建築(軟件開發)項目感到自豪。最重要的是,你必須謙虛,低頭工作。你將到達目的地。這就對了!
以下是我從初級升到高級軟件開發人員過程中學到的一些好東西。
審視自己的無知
埃爾伯特·哈伯德(Elbert Hubbard)曾經說過:
永遠無知的祕訣是:對您的見識感到滿意。
你是初級開發人員,所以沒人期望你懂得所有的東西,這沒關係。即使是在該領域工作多年的高級開發人員也不是懂得所有知識。無知不是很大的缺點,而掩蓋自己的無知纔是罪過。
會議上、討論中、代碼演練期間,你一定會碰到一些不瞭解的事。不要點頭並假裝自己理解了 - 問。如果你不開口,那將錯失一次的學習機會,最終將危及自己的職業生涯。
經歷了多年蠢驢似的職業生涯,我每天仍在問很多問題。請記住,沒有什麼是愚蠢的問題,問一個愚蠢的問題並加以澄清比整天坐在電腦屏幕前要好得多。
加快獲得缺失知識的最佳方法是在每一個機會中審視自己的無知。
寫代碼之前閱讀代碼
拉希德·奧貢拉魯(Rasheed Ogunlaru)曾經精闢的說過:
How you look at the code is pretty much how you’ll see it
我記得我的第一個編碼任務。我必須爲現有功能編寫一段退出代碼,然後我在上面花了50個小時。星期一,當我自豪地向我的技術主管展示時,她就說了一句。
我們已經寫了一個類完成這樣的功能。你可以使用它,快速完成。
我的錯?我沒有閱讀現有代碼就開始編碼。現實世界中,與實際編寫代碼相比,開發人員在閱讀代碼上花費的時間更多。即使在添加新功能或改錯時,也需要了解現有代碼。這裏沒有捷徑。閱讀閱讀再閱讀!
閱讀代碼還可以知道其他人是如何編寫代碼的,以及哪些代碼庫可以複用。注意
-
編碼標準
-
命名約定
-
設計模式
-
註釋
-
使用測試腳本,測試用例等
永遠記住,聰明的開發人員不會重蹈覆轍。他們總是儘可能地重用並構建現有功能。這不僅節省時間,而且在共享代碼的開發人員之間建立了一種友情。
也許你正在嘗試解決的問題已經有了答案。因此,當你嘗試完成任務時,請檢查是否有人已經解決了該問題。這不是偷工減料。
尋求建設性批評。
Elbert Hubbard提到了避免批評的最佳方法。
爲了避免批評,什麼也不說,什麼都不做,然後什麼也不是。
我們都希望被讚賞,當有人讚賞我們的工作時,我們會感覺良好,這是對的。但是,作爲初級開發人員,除了讚美之外,你還需要建設性的批評才能繼續前進。良藥苦口利於病。
我記得我的第一次代碼審查是由一位高級開發人員完成的。在40分鐘內,他拆解了我的代碼,在令人不安的會議結束時,評論比代碼還要多。付出這麼多的努力,我當然感到非常難過。但是這次會議確實幫助我發現不足,並展示了可以改進的地方。這引導着我前進。
也就是說,獲得建設性批評的最簡單方法之一就是提出要求。我曾與許多高級開發人員一起工作,但到目前爲止,無論他們多麼忙,都沒有人拒絕過我的要求。當然,你需要根據時間表來安排有意義的會談。
請記住,如果一位高級開發人員花時間審查你的代碼,並提供一些改進建議,那意味着他真的對你的進度感興趣。不要錯過這個機會,感謝上帝吧。
正如安迪·馬克斯(Andy Marks)所說的。
如果你對自己的代碼感到自豪,它將在代碼展現出來。如果你不這樣做,它也會顯露。認識到你自豪感的人就是你想要與之共事的人。”
尋求大局。
穆拉特·伊爾丹(Murat Ildan)說過。
要看到更廣闊的景色,請走出黑暗的山谷,爬到陽光明媚的山頂!
還記得先前的故事中的第三位工人,他知道他正在建造一座大教堂嗎?專注於大局正是如此。作爲初級開發人員,大多數時候,你將只編寫一小段代碼,或者解決現有代碼中的某些問題。你忙於完成分配的工作;沒錯。但是,如果你想參與整個項目,你需要花點時間找出項目的全部內容。
你需要擴大視野,並詢問有關代碼如何適合整個系統上下文的問題。
爲什麼使用特定的設計模式?
爲什麼用特定語言編寫?
有什麼缺點?它可以與當前的代碼庫一起使用嗎?
此代碼將來是否易於維護?
等等...
最好和最簡單的方法是在指導你學習過程的導師的幫助下。技術指導員可以幫助你更快地發展技能,併爲更大的項目打下牢固的基礎。沒有明確方法去尋找技術導師,也許在食堂喝杯咖啡可能有助於打破僵局!
大多數初級開發人員由於對功能的誤解或對項目目標想當然而犯了錯誤。花時間瞭解現實世界中的事情是如何工作的,這有助於成爲更好的開發人員。
最後,一個優秀的高級開發人員不僅瞭解編程
很長一段時間裏,我認爲一個好的高級開發人員就是擁有多年的技術經驗(Java經驗5年、Python經驗7年等等)。技術專長越多,高級開發人員就越好。
我錯了。一個優秀的高級開發人員不僅對編程瞭解很多。他們極富好奇心。他們是非常棒的導師。最重要的是,他們具有不可思議的編碼意識,可以知道什麼時候不做某事。例如,他們知道僅爲了可讀性而從頭開始重寫庫,或者將團隊使用的舊框架切換到最新框架,並不總是明智的選擇。他們不是逃避風險。他們只是謹慎地進行正確的戰鬥。
並非每個人都能真正成爲他或她的職業中的高級。一個好的高級開發人員不僅應具有正確的經驗,而且還應具有正確的態度以及在將來應用這些經驗的態度。資歷與能力有關,而不與年齡有關。
正如凱文·德萊昂(Kevin de Leon)所說的。
如果你什麼都不做,資歷就沒有任何意義。