有意義的新人訓
到新公司快滿兩個月了,距離新人訓結束也過一個月了,來記錄一下新人訓的心得。
公司報到的第一天上午,領到筆記型電腦,聽取大略的公司介紹,下午開始安裝新人訓需要的環境設定。
預定計畫是從報到的隔天開始,每天開始上班時要在群組內回報今天預計執行的內容、期望完成的題號,下班前寄信回報今天實際執行內容,如果與早上預期的不符則需補充進度延後的原因。第一階段是前端(jQuery)13題和關聯式資料庫(MS SQL)25題,為期6.5天,如果發現無法在期限內完成須盡早告知並說明原因。
除此之外,不能把程式當成寫完就好,符合標準即可的題目,而應該當成客戶委託的產品,應考慮到使用者的操作體驗以及可維護的結構,因此設計、效能、程式的可讀性以及註解都是需要考慮的一環。
對於以前開發純後端+非關聯式資料庫的我來說,這第一階段的兩部分幾乎都是從零開始。
兩部分題目各是一個專案,jQuery部分是13+1個html檔(其中一題有兩個檔案),顯示的畫面相關部分都已經寫好了,剩下使用者畫面操作時畫面應如何改變等部分需要作答,例如選擇顏色後點按鈕切換文字的顏色、在兩個訊息框新增/刪除訊息,或者將一筆訊息在兩個訊息框之間傳遞。
第一天寫得很辛苦,總共只寫了三題,過程中不斷上網查語法,也多次詢問坐在旁邊的同期。後來隨著經驗增加,掌握到語法的規律之後寫起來越發順手,就在此時碰到的下一題又使用了前面沒用過的功能,需要再花時間研究,整份題目不斷經歷上述的循環。
1~3題是較為簡單的情境,需要學會的知識大約是基本語法如何使用,怎麼修改畫面上元素的程度;4~6題情境較為複雜一點需要經過較前三題更多的組合和設計才能完成;7~9題是使用ajax連接公司特定主機傳輸的資料取得並用於顯示;10, 11題是表單的欄位驗證,只不過第10題是純手工,自己寫程式對每個欄位做檢查,第11題則是使用指定的套件,把檢查的工作交給套件完成題目需求;剩餘的12題是另一種套件的使用,13題則是單純的演算法做個小遊戲,有些非本科的新人在這似乎花上比前幾題更多的時間。
中途發現題目有這樣漸進的難度設計,而且在必要的題目有放上相關的官方文件連結可做為參考,而實際上除了一開始要先查過基本的語法如何使用之外,剩下各題需要學習的部分都可以透過官方文件完成,光是照著順序完成就能確實的累積知識,甚至可以說整份題目就是經過設計的教學內容,對我來說很有收穫。
MS SQL的25題使用的環境是微軟官方公布的測試資料庫「northwind」結構,題目各是不同情境的需求,請理解關聯是資料庫的特性和用法,使用語法取得期望的資料。
這份題目其實是一個visual studio專案,執行後可以在網頁介面中各題的部分輸入資料庫語法,專案程式會試著執行之後與答案比較確認是否正確。關於執行專案的部分當時一到一些問題導致過程有點坎坷,這裡就先不提,把重點放在答題上。
總共的25題中,各題之間沒有關聯,難度也不像jQuery一樣循序提升,不過自己挑著從看得懂的題目開始作答的過程中,也可以學到資料庫的用法,如果查了網路上的資料,得到關於某種功能的語法,確認確實可行之後再從頭理解一次程式並標上註解,理解「為什麼這樣的寫法是可行的」,再和同期互相討論交流,也算是很有收穫。
雖說其中也有為了可讀性用比較多分行的因素在,但是資料庫的題目難度跨度真的很大,從不滿五行到超過百行的題目都有。超過百行的是需要用類似遞迴的邏輯產生暫存的資料表,光是這題就花了將近兩天在查資料和嘗試寫法。
現在還不知道實際的專案開發會不會用到這種特殊的技巧(大量更新資料的時候更可能會使用batch write吧),不過在學習的過程中根據用法也理解了一些資料庫設計的特性,以及可用的辦法,說實話比起大學時選修一學期學到的內容還要多。
學習的來源不只是題目本身,同儕的刺激也很有效果。
在新人訓的期間有其他新人加入,除了少數相關工作經驗的人之外都要寫這份同樣的題目。某天猛然發現他們的進度比自己前幾天快得多,也就是之前寫過的這個部分↓
新人訓的期間,因為一點事件讓我開始懷疑起自己的學習效率和是否有時間閒置的問題,因此開始每天寫工作紀錄,在進公司上班的這段期間,我到底都做了些什麼,以一小時為區間,每小時做了什麼,開發過程中遇到什麼問題,查了哪些有幫助的網路文章,將自己期間的歷程盡可能記錄下來。
從結果來講,認知到「本科出身的也沒什麼特別」、「記錄學習歷程的重要」對我來說也是不錯的刺激。
不過我相信自己走過的路不會是浪費時間,抱怨「培訓課程太多導致競爭變激烈」這種原因我說不出口,多花了幾年如果被人輕易追上只能說是自己的問題,找出原因發揮自己的優勢才是最重要的,畢竟業界很現實,不管是想賺錢的公司,還是想被雇用的求職者。
總地來講,這次的機會除了讓我學習到以前不會的技術之外,在題目的設計和順序安排上也有一些啟發,加上參考其他人的能力和對自己的認識,說來慚愧,過程中也想過「要是試用期沒過的話,職涯的這段時間也不會是白費」這樣的消極想法。
今後如果有帶新人或者是其他做教學的情況,也希望自己能設計出這種「對當下能力而言,需要有點努力,加上一點提示就能透過自行努力學會並找出答案」的題目型教材。