關(guān)鍵字:指導 軟件開(kāi)發(fā)新手
老資格的軟件開(kāi)發(fā)設計人員經(jīng)常被要求幫助那些沒(méi)有什么經(jīng)驗的新手。但是,如果這名軟件開(kāi)發(fā)方面的新手在此之前沒(méi)有任何的技術(shù)開(kāi)發(fā)背景的話(huà),這個(gè)任務(wù)就變得相當艱巨了。 作為要幫助別人的人,你所扮演的是一個(gè)非常關(guān)鍵的角色。這是由于你所做的一切將決定這名技術(shù)開(kāi)發(fā)方面的新手是否能夠走上正確發(fā)展的道路。對一名缺乏經(jīng)驗和背景的軟件開(kāi)發(fā)新手來(lái)說(shuō),最需要的就是你的耐心以及豐富的專(zhuān)業(yè)技能和經(jīng)驗。在指導這些新手的時(shí)候,你不但需要檢驗什么是他們已經(jīng)知道的,而且還需要讓這些新手掌握他們以前并不知道的內容,并且要為這些人選擇合適他們的項目。
訓練的開(kāi)始
有這樣一種典型的情況:項目經(jīng)理告訴你,桌面支持小組的Alex將會(huì )加入到你所領(lǐng)導的這個(gè)開(kāi)發(fā)小組。之前,Alex已經(jīng)有了在桌面支持小組中超過(guò)兩年時(shí)間的工作經(jīng)驗,但是他希望能夠變化一下自己熟悉的工作,于是就決定把發(fā)展方面轉移到應用軟件開(kāi)發(fā)的領(lǐng)域中來(lái)。部門(mén)經(jīng)理希望你能夠幫助Alex進(jìn)入這一領(lǐng)域,幫助他學(xué)習如何成為一名軟件開(kāi)發(fā)設計人員。在加入到你的小組之前,Alex將會(huì )參加一個(gè)為期一周的培訓課程,這個(gè)課程能夠幫助他熟悉一下你所領(lǐng)導的小組所使用的開(kāi)發(fā)語(yǔ)言。
你必須首先了解這名新組員的一些情況?梢酝ㄟ^(guò)向他提出如下的問(wèn)題來(lái)掌握這些情況:
他對操作系統熟悉到什么程度?是否能夠自己解決一些操作系統或軟件方面的問(wèn)題?這些問(wèn)題在讓他調試程序或者面對軟件開(kāi)發(fā)所遇到的問(wèn)題的時(shí)候能夠有所幫助。
他對產(chǎn)品的認識程度達到了一種什么樣的層次?如果他已經(jīng)和客戶(hù)一起工作了兩年的時(shí)間,他應該對客戶(hù)在使用這些產(chǎn)品的時(shí)候會(huì )經(jīng)常遇到什么樣的問(wèn)題能夠有比較全面的了解。
他還需要學(xué)習有關(guān)軟件開(kāi)發(fā)的哪些方面的概念?舉個(gè)例子來(lái)說(shuō),他在加入你的團隊之前所接受的為期一周的培訓中應該涵蓋必要的相關(guān)概念。
在這種情況下,Alex在正式加入你的團隊之前必須先參加培訓課程。我們非常推薦在新手加入團隊之前一定要參加必要的培訓課程;這是讓這些新手能夠了解軟件開(kāi)發(fā)所需要的基礎與知識的最佳方法,而且可以避免對你團隊的工作產(chǎn)生影響。你可以在通過(guò)下面這些方法來(lái)更好的幫助這名軟件設計新手:在他正式參加培訓課程以前,應該和他一起討論并瀏覽一下課程的內容。一定要向這名新手明確的指出培訓課程的哪些部分對于將來(lái)參與工作是最為重要的。這么做的目的是為了讓這名軟件設計方面的新手在參與培訓課程的時(shí)候能夠更好的抓住重點(diǎn),以便他在將來(lái)正式加入到團隊中之后能夠更快速的掌握各種要領(lǐng)。在經(jīng)過(guò)這種交流之后,應該可以對這名新手現在的水平有了一定的了解,并且可以對他在參加完培訓課程之后能夠達到一個(gè)什么樣的水平做到心中有數。
為新手確定第一份任務(wù)
新手所接受的第一次工作任務(wù)是非常重要的,所以,一定要選擇合適的項目來(lái)讓他完成。就第一次工作任務(wù)來(lái)說(shuō),你所選擇任務(wù)的類(lèi)型以及你如何幫助這名新手完成這個(gè)項目,都會(huì )影響這名新手對這份工作的感覺(jué)。
一定要在這名新手正式加入到你的團隊中來(lái)以前就為他準備好一份合適的工作任務(wù)。這么做是為了讓這個(gè)新來(lái)者能夠快速的開(kāi)始工作,也能讓他更快速的融入到團隊中去。我喜歡讓新手們完成這樣的工作,比如說(shuō)讓他們把新功能添加到已經(jīng)準備完成的軟件程序中去。這樣的做法能夠給這些新手們帶來(lái)以下的好處:
如果讓這些新手獨自完成編制整個(gè)軟件程序的工作,通常他們都會(huì )因為進(jìn)展緩慢而對這份工作充滿(mǎn)了挫折感。如果只讓他們往現有的軟件程序里邊添加功能則會(huì )容易的多。
這些新手可以通過(guò)完成這樣一件工作來(lái)學(xué)習資深的軟件開(kāi)發(fā)設計人員是如何去解決實(shí)際問(wèn)題的。
這些新手能夠通過(guò)這樣的一份工作接觸到優(yōu)秀的程序編碼范例。
如果你希望讓這些新手對已經(jīng)編制完成的程序進(jìn)行修改的話(huà),你一定要記住下面這些要點(diǎn):
在這些新手完成修改工作的同時(shí)還應該讓他們能夠學(xué)會(huì )新的東西,一定不要讓他們去做過(guò)于復雜的修改工作以避免他們產(chǎn)生挫折感或者感到泄氣。
這份修改工作應該具有針對性,特別針對這些新手的情況。作為一名有經(jīng)驗的軟件開(kāi)發(fā)設計人員,你一定體會(huì )過(guò)這種感覺(jué),就是接受了一份看不到曙光的任務(wù),這會(huì )讓軟件開(kāi)發(fā)設計人員的士氣變得十分低落。
作為新手的指導者,你應該對分配給這名新手的程序編碼非常熟悉。因為在這名新手開(kāi)始工作之后,他肯定會(huì )遇到很多的問(wèn)題,并且作為他的指導者,他一定會(huì )經(jīng)常向你請教有關(guān)這個(gè)程序編碼的問(wèn)題,所以,你如果對該程序編碼非常熟悉的話(huà),解釋起來(lái)會(huì )簡(jiǎn)單一些。
對工作任務(wù)進(jìn)行說(shuō)明
應該通過(guò)解釋該應用軟件的功能并且指明有哪些部分需要被修改來(lái)讓新手們熟悉工作任務(wù)。通過(guò)這種比較高層次的全面介紹,能夠讓負責這項工作的新手知道如何才能開(kāi)始工作。和新手一對一的討論這個(gè)程序中有哪些部分是需要被修改的。這么做能夠讓你知道這名新手在之前的培訓課程中學(xué)會(huì )并掌握了多少內容。在這次一對一的會(huì )談中,你應該注意下面的這些內容:
這名新手對進(jìn)行開(kāi)發(fā)的環(huán)境有著(zhù)何種程度的了解?立即就讓他在這個(gè)開(kāi)發(fā)環(huán)境中開(kāi)始工作對于一名新手來(lái)說(shuō)并不是一件十分容易的事情。
這個(gè)新手對于將要使用的開(kāi)發(fā)語(yǔ)言掌握的到底如何?如果這名新手對于他將要使用的開(kāi)發(fā)語(yǔ)言掌握得并不好,比如說(shuō)他還不了解其中的變量、條件語(yǔ)句以及循環(huán)等等內容,那么軟件開(kāi)發(fā)的工作就跟本不可能進(jìn)行。
一定要注意觀(guān)察這個(gè)新手用多快的速度拿起桌子上的工作說(shuō)明。這是一種肢體語(yǔ)言,能夠讓你了解這個(gè)新來(lái)的開(kāi)發(fā)人員對于你向他描述的項目?jì)热萦兄?zhù)什么樣的感覺(jué)。對于新手來(lái)說(shuō),第一份工作任務(wù)總是令人感到忐忑不安的。但是,你當然不會(huì )希望這個(gè)新手感覺(jué)這份工作任務(wù)對他來(lái)說(shuō)太難于完成。如果這名新手看起來(lái)對這份工作任務(wù)還不是十分的明白,你一定要盡力再向他解釋清楚明白。
讓新手進(jìn)入工作狀態(tài)
當我向新手介紹新的工作任務(wù)的時(shí)候,我喜歡在他們的計算機上打開(kāi)程序編碼,并且直接的向他們指明那些需要被修改的部分。這樣做有很多好處,首先能夠幫助他們確定這些程序編碼是可用的,其次還能夠讓他們知道如何在他們自己的環(huán)境對這些程序編碼進(jìn)行編輯。我還會(huì )幫助他們找出那些需要被修改的部分,并且告訴他們如何對相關(guān)的部分進(jìn)行修改。最后,我會(huì )問(wèn):“你認為我們該如何進(jìn)行修改工作?”
提出這個(gè)問(wèn)題可以讓這些新手認真考慮通過(guò)什么樣的方法來(lái)有計劃有步驟的解決問(wèn)題。對于沒(méi)有從事過(guò)軟件開(kāi)發(fā)工作背景的人來(lái)說(shuō),最需要的就是要獲得有關(guān)項目的足夠信息。讓他們獲得這些足夠信息的一個(gè)好辦法就是直接向他們講解其中的新功能是如何運作的。在你向他們做講解的時(shí)候,要寫(xiě)下一些解決方案的程序代碼或者流程圖。我喜歡通過(guò)這種方式進(jìn)行講解,而且不要忘記在程序代碼后邊加入注釋語(yǔ)句以便在隨后真正開(kāi)始工作的時(shí)候能以實(shí)際的程序語(yǔ)句代替。不要一次講解太多的內容;不要忘記這些程序設計人員都是剛剛步入這一領(lǐng)域的新手,他們不可能一下子就做準備面對全部的編碼工作。
在和新手討論過(guò)工作內容之后,應該問(wèn)一問(wèn)這些新手對于該項目有些什么樣的感受。讓他們進(jìn)行充分的討論并且讓他們提出足夠多的問(wèn)題。當你回答了所有這些問(wèn)題之后,你就可以讓這名新手估計一下他完成這項工作需要多長(cháng)的時(shí)間?赡苓@個(gè)新手無(wú)法明確的告訴你到底需要多少時(shí)間。但是通過(guò)這個(gè)問(wèn)題,你可以讓該名新手針對工作做出一個(gè)時(shí)間計劃。這個(gè)時(shí)間計劃應該是雙方都能夠接受的,并且要把工作分割成階段性的,以便完成每一步驟后都可以向你進(jìn)行匯報。完成工作所需要的時(shí)間應該具有一定的靈活性,因為負責這項工作的是一名新手,所以需要給他時(shí)間以便讓他能夠提升自己的專(zhuān)業(yè)技能。
對新手完成的工作進(jìn)行總結
當這個(gè)新手完成工作任務(wù)以后,你應該坐下來(lái)和他好好的談一談,然后看一看他所完成的程序編碼,并且對這些程序編碼進(jìn)行測試。向這名新手詢(xún)問(wèn)他都克服了哪些困難。當你和他一起檢測程序編碼的時(shí)候,一定要向他指出有哪些部分的程序編碼可以做的更好、更有技巧性。你不要自己動(dòng)手對程序編碼進(jìn)行修改;讓這名新手自己修改他的作品,這對他來(lái)說(shuō)也是一個(gè)能夠學(xué)習更好的編程技巧的大好機會(huì )。
結論
幫助新手步入正軌絕對是一件富有挑戰性的工作。你不但幫助他們學(xué)習編程,而且還需要你幫助他們學(xué)習編制優(yōu)秀程序的技巧,以及解決問(wèn)題的辦法。一下子傳授太多的內容會(huì )讓這些新手們感到力不從心,你提供給他們的應該是他們真正需要的東西。這樣,這些新手就會(huì )快速的成長(cháng)為合格的軟件開(kāi)發(fā)人員,并且成為你團隊中的有用一員。
延伸閱讀
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/