2008-08-26 85 views
11

我的老闆從CompSci公司聘請了一位新開發人員,負責相當數量的技術債務。這將是我的任務,讓這個人加快速度,儘快做出體面的貢獻。有關如何最好地做到這一點的任何建議?任何第一手的經驗,如何不準確地做到這一點?如何使新招聘加快現有項目的速度?

我的直覺是對他正在替換的開發者編寫的代碼進行一些代碼評論,對正在編寫的新代碼進行編程,或者與他一起編寫他將要繼承的代碼的單元測試。

回答

11

在他的第一天,和他坐在一起,幫助他建立自己的發展環境。如果他剛上大學,他可能並不熟悉IDE,使用版本控制,使用的任何應用程序框架等。

在第二天,讓他愚弄任何你認爲值得學習的東西。例如,你說你希望他做單元測試,如果他沒有做到這一點,但使用第2天讓他加快速度。

第三天讓那個男孩上班。通過實踐學習。至少在前幾周內,他絕對要對他寫的每一件東西進行一次代碼審查,然後從中繼續。

3

當我開始我的第一份工作時,我因爲一些較小的任務而陷入了火中。這包括創建對項目有輔助作用的次要控制,但仍然需要使用一些與團隊其他人一起使用的更高級技術(ORM訪問等等)。我還得到了一些數據庫清理任務,這使我很好地理解了項目必須處理的所有數據是如何在數據庫中進行處理的。

我建議不要讓他無所事事,只能閱讀文檔或做廣泛的代碼審查。他會感到無聊,並且可能不會記得他在兩週內所做的很多事情。請記住,他申請這份工作是因爲他想寫代碼。太多的維護工作將會推動他離開。

0

親身體驗這裏。不要僅僅發送它們來閱讀文檔。這可能是一項非常艱鉅的任務,特別是如果該項目規模很大。

要做的更好的事情是讓他真正跳入代碼並開始使用它。

1

給他一個升級一些現有代碼的任務。這個任務不應該非常困難,但它應該需要知道代碼。有問題,但不要告訴僱員如何去做。修復程序編碼完成後,請與程序員坐下來查看解決方案。

允許程序員在編寫代碼時有一定的自由度是很好的。這可能會在系統中引入新方法,幫助您成爲更好的程序員。

只要確保能幫助新人學習一些貴公司的編碼標準。這些總是很痛苦的學習。

1

在我目前的工作中,我的第一項任務是更新用於構建和部署我們的webapps的工具。這實際上是一個好主意,原因如下:

  • 現有的工具已經過時了,無論如何都需要一些新功能。
  • 我學會了如何組織各種項目和代碼庫。
  • 它給了我一個適應公司編碼風格和實踐的機會。

所以,是的,我想這是有點令人失望,我沒有工作的實際產品馬上,但我認爲這是肯定要走正道。

我相信每個公司都有一些低優先級的工具或項目,沒人有時間去處理。把這個項目交給新人,給他一個寫一些新代碼的機會,然後看看每件事情是如何實現的。在最壞的情況下,這個項目是失敗的,但是對生產代碼沒有損害。

1

同伴輔導是一種非常好的方式來爲新員工加快速度,查看websiteassociated book瞭解更多信息。這項技術是在微軟開發的(我相信),也被其他公司所採用。

我目前正在閱讀這本書,裏面有很多有趣的想法,其中的分配旨在幫助您思考您和您的學徒(新員工)如何更願意溝通,做一個輕量級和簡單的過程來做到這一點。

編輯:我不隸屬於這本書的作者,我只是喜歡他的想法,並由我現在的僱主介紹給它。

2

我建議不要閱讀文檔(除非你有一個很好的簡短文檔給出了系統設計的完整概述),代碼評論或我最喜歡的 - 「熟悉代碼庫」。

當你是一個項目的全新品牌時,所有這些事情都很難保持專注。如果沒有的一些系統的先驗知識,代碼評論是沒有用的。

理想情況下,我會給他一個非常小的本地化任務,他可以自己工作並根據需要提出問題。這讓他開始了你的開發過程,源代碼控制等,同時做實際的代碼。

如果你已經知道任務的解決方案,那就更好了,這樣你就可以知道他可能問的任何問題的答案並迅速回復他。

編寫單元測試他將繼承的代碼也是一個好主意 - 他將開始編寫代碼並熟悉事物應該如何工作。

2

錯誤修復。

這是迄今爲止學習代碼庫的最好方法。是的,這很糟糕,但這是學習的好方法。

+0

不是。錯誤修復無法幫助您瞭解所有移動塊的概況。它往往只是一個極端沮喪的練習,因爲你試圖尋找系統和子系統去做一些事情。我認爲這是讓程序員加快速度的最糟糕的方式。 – PlexQ 2012-05-21 20:13:34

0

要做的最有用的事情之一是通過他將要維護的程序,並解釋系統如何工作。確保解釋業務流程是第一天討論的重點之一。無論代碼如何工作(或不工作),您都需要了解應該完成什麼。

0

很多都是關於學習你的組織的過程。這不僅僅是學習代碼如何工作。

去年我們聘用了兩位新手。我們確保我們有真正的任務讓他們接受版本控制,bug數據庫,維基等等,給他們儘可能多的監督和幫助,然後再多一些,檢查他們是什麼確實,在兩週之內,我們對他們非常滿意,並相信他們能夠完成工作。隨着時間的推移,他們對我們現有的流程做出了貢獻並對其進行了改進

我們帶着一個實習生今年開始,並給了他更多的監督,包括認真審查他的第一段代碼,並反覆,直到它是正確的。三個月時間裏,他仍然需要一些幫助,但知道什麼時候問,並且已經成長爲一個有用的團隊成員。

如果您決定聘用他們,您已經決定信任他們。給他們一個導師(可能是你),讓他們逐漸接觸你的系統和代碼庫,並從那裏開始工作。

1

結對編程

我與許多在這裏的答案一致,特別是通過瞭解。

  • 工作方項目,以獲得舒適的環境
  • 廷克,讓他們搞清楚這些事情慢慢地隨着時間的推移,在連續代碼審查
  • :我已經讓新員工有許多不同的方式嘗試
  • 輪流對編程與團隊的不同成員,而實際上該項目

我的方式在那裏,如果我是一個新員工的一些建築公司,並與修築城牆的任務是把它的工作一個現有的房子,但沒有在這個房子的前6個月正在開發的過程中,我正確地做事的風險隨之上升。然而,如果在第一天(以及之後的那幾天),他們會和我知道會發生什麼事情的人配對,我會感覺更舒服,我相信公司會感覺更舒服,因爲知道我從某人那裏學習了在...之前完成它,並做到了正確

出了不同的事情,沒有什麼東西像一樣成功。似乎沒有什麼替代品可以幫助某人學習系統/工具/語言/項目/等的入口/出口。這真的不要緊,他們正在努力......是它的新功能,修復bug,邊項目,構建系統等,有事實上有人告訴事情你的工作與顯示你們之間有很大的區別怎麼樣。

2

我最近是這種情況下的新僱員......雖然我確實有過「現實世界」的經歷。

我的老闆和她的代理人總是會說「玩這個系統」或「閱讀文檔」。我發現這真的很煩人。我完成了自己的任務,即設置我所知道會遇到的斷點,然後在系統上執行一個簡單而又核心的操作,並從搖籃到墳墓。

正如我所做的那樣,我畫了一個僞造的設計圖,說明誰在用什麼來調用誰 - 基本上是對這些東西進行逆向工程。然後,我會讓其他開發者中的一位與我坐在一起,糾正我,而我口授給他/她的是我相信每個班級的責任是什麼以及它在做什麼。除此之外,如果你對新人/加侖沒有任何豐富的工作,我會嘗試發明一些短期項目,這些項目並非繁瑣的繁忙工作,但其經驗將有助於他/她有真正的工作要做。

當然,如果有短期的,但有意義的工作可用,就從那開始吧。底線是給一個目標明確的任務。否則,如果他們像我一樣,他們會拿出自己的任務和目標來防止無聊自殺。