2010-01-29 148 views
11

下週開始實習。他擁有計算機科學學位,但在.NET或SQL Server中沒有真正的開發經驗。我們希望讓他達到在C#和SQL Server中至少是半生產率的地步。關於如何最好地在C#和SQL Server中開始培訓他,您可能會有什麼建議,經歷過這些?我想爲他和我們創造一個良好的體驗。實習生培訓 - 最佳方法?

+4

社區Wiki? – 2010-01-29 15:22:41

回答

10

我從這兩方面得到的一些最好的體驗是兩種方法。

第一次 - 產品培訓。向新開發人員展示他將從事的產品是什麼以及從最終用戶的角度出發。它有助於爲背後的代碼構建上下文。這是一件通常被忽視的東西;然而,它非常有幫助,因爲它還可以幫助新開發人員更加自信地測試他或她正在處理的代碼,而不是絆倒代碼。

二 - 結對編程/陰影/輔導。讓開發人員與一位更有經驗的人一起工作,在一對輕鬆的指導方面進行編程。這將有助於衡量開發者的真實技能,並及早爲團隊的習慣提供糾正措施。它還爲他們學習提供了一種方式,而不用擔心用問題打斷退伍軍人,而不是那樣。

一旦完成,開始餵養新人更小的任務或更容易的錯誤,並從那裏建立起來。

+0

完成這些事情絕對是一個好主意,因爲這讓實習生感到他與團隊的其他成員有牽連。但是,只有當他具有C#和SQL的一些基本知識時,這纔會起作用,根據問題他似乎沒有這方面的知識。否則,他不會完全理解配對/代碼評審期間向他顯示的代碼。所以在我看來,首先讓他加快一個寵物項目,然後使用你的方法。 – 2010-01-29 15:28:49

+0

@tomlog這是真的;然而,很難完全假定實習生在問題中的知識範圍。我見過的大多數CS學位都有基本的編程和sql類,所以我假設他有一些基礎知識,在這些知識中,輔導/配對不僅可以幫助他獲得知識,還可以將他塑造成團隊標準。如果實習生有0門編程知識,那麼我會嚴重質疑當時的CS學位。 – JamesEggers 2010-01-29 15:38:41

3

說到有人誰是實習了兩個不同的公司,最好的方式之一,讓他加快速度是給他的導師一個小寵物的項目來監督他的進步。這將使他開始熟悉他將與之合作的技術,而導師可以引導他以教他公司慣例和程序的方式。

後他得到足夠熟悉C#和SQL Server,你就可以開始讓他做真正的開發工作。在輕微的錯誤修復之後,讓他從小處着手,然後提高難度,直到你可以稱他爲一名成熟的開發人員。幸運的是,你甚至不會在一兩個月內給他打電話給實習生。

1

如果您有任何「寵物」類型的項目(你的公司永遠無法真正證明上花費時間,但將是有益的和非常簡單的項目),我把那個給他們。

這將是一個開始學習材料的好方法,因爲它是實際的工作(學習東西總是很難,記住材料,如果它只是一個示例程序而不是真正有用的東西)。學習如何在問題/教程中使用谷歌以及通過提問來與您的團隊建立關係將是一個良好開端。從那裏開始,他們應該有足夠的背景來開始處理實際應用。

如果寵物項目足夠小,您可能希望讓他們再次訪問該應用程序向實習結束時重新寫/提高應用程序。他們很可能是在他們已經在實習

1

啓動的過程中撿起什麼感到驚訝識別容易一些領域中的複雜性和清楚地確定每個任務的目標是什麼。給他們一個商業/領域的感覺,讓他們瞭解如何融合在一起。一旦任務完成,讓他與全職開發人員一起審查它,以確保它符合要求並找出可以使用更好實踐的任何薄弱環節(這提供了指導/教育機會)。

你不想要的是將它們發送給一堆事物,然後發現代碼不符合標準。至於數據庫,要小心。限制權限(即woops,我並不是指DELETE/DROP那!),或者希望你有一個專門的開發環境,在這個環境中,嚴重的事情不會從破壞中恢復過來。也許是一個帶有樣本數據庫的副項目,在將工作結合到實際環境中之前進行測試。

0

我們在我們的團隊中有一個實習生約6個月。我僱用他,這真的是良好的經驗。當我採訪他時,你的答案完全是CS問題,但是當他開始與我們合作時,它是可怕的所有最壞的做法 - 提交破損的代碼,鎖定svn文件,copypasting每個地方和所有內容,命名空間,長長方法與巨大的箭頭頭反模式內。我見過 終於最好的C#代碼:

bool b = DoSomeThing(); 
switch(b) 
{ 
case true: 
    Do(); 
    break; 
case false: 
    DonotDo(); 
    break; 
default: //!!! 
} 

我唯一的建議是控制他

+1

ahahahhahaahahhaahhaah – 2011-01-13 22:53:11

+0

+1對於DonotDo! – abhilash 2011-04-17 09:47:05

1

已經有一些很好的建議,但我會補充一點,讓他坐在其他開發者的代碼評論上。他可以從傾聽他人代碼的過程中學到很多東西。

除了從您的生產數據庫中選擇以外,不要授予他執行任何操作的權利。讓他做腳本中的所有sql編碼和更改,並讓他將它們添加到源代碼管理中。確保代碼審查他所做的一切。

雖然可能最重要的是給他一個或多個真正的任務來完成(同時確保花費大量的時間來監視他正在做的事情,以防止他在錯誤的道路上走得太遠)。當你知道你已經完成了一項任務繁重的任務,而且沒有人打算實際執行任務時,你的學習就不會太多。

如果您一直想要轉移到您有更多自動化測試但尚未能找到時間爲現有代碼編寫測試的環境,那麼您可以設置它來完成其中的一部分。這是一個有用的做法,風險相對較低,當真實代碼在他的一次測試中死亡,並且他發現一個沒有人知道的錯誤時,會產生真正意義上的幫助。這也要求他開始瞭解業務需求,以及如何閱讀現有的代碼和測試以及其他許多概念。

對於一名實習生來說,學習使用源代碼控制,測試和與他人合作是學習的關鍵技能。

2
  • 小項目,以幫助他睡覺。
  • 讓他審查其他開發人員的代碼項目
  • 點他到內部維基(如果使用)
  • 在線培訓或2-5天的微軟培訓課程(預算申請中)
  • 外的IT部門,確保他建立了自己的業務如何運作/功能知識
  • 確保他獲得一些好的書籍,以及互聯網資源
  • 讓他感覺工作環境舒適,所以,如果他得到卡住了他會問別人的幫助。 (IT開發人員可能非常低調,有時需要幫助)
+0

好想法 - 謝謝。 – 2010-01-29 20:19:16

+1

「牀在」對不起? – 2011-01-13 22:51:14

1

對於初級開發人員,我希望儘快讓他們參與組合。我把我的初級開發人員變成了我們團隊的配置和服務器設置主管。他是讓我們的應用程序啓動並運行的最佳人選。

一個我們跟他做的最好的事情是讓他確切地證明了如何讓開發環境和運行。他必須學習所有關於它的文件,現在我們在新人加入團隊時使用他的文檔。

也許我們只是幸運,但我已經取得了巨大的成功,只是讓他進入代碼。我們根本沒有真正溺愛他。實踐使得完美。這和頻繁的代碼審查等:)

0

讓他創建UML靜態結構圖對於你現有的中等規模的項目之一的代碼庫。這將(1)迫使他對至少一個項目有一個高層次的結構性理解,並且(2)讓他閱讀別人的代碼,這是實習生以前從未做過的事情。

+0

這是這裏最好的答案 – 2011-01-13 22:53:42