前言:中文期刊網精心挑選了程序員培訓總結范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
程序員培訓總結范文1
軟件心理學的發展史
軟件心理學發展大致可分為兩個階段[7],第一階段是軟件心理學的創立和初探階段,第二階段為軟件心理學的豐富和發展階段。兩個階段的主要區別是理論基礎、研究對象和研究方法不同。20世紀70年代為軟件心理學研究的第一階段,研究學者主要由計算機科學家組成。1971年,Weinberg出版了《程序開發心理學》一書,開辟了軟件心理學的新領域。該書從人類行為、社會行為和個人行為等3個角度審視程序開發。但是溫伯格坦言,該書中的許多思想未找到“科學依據”,沒有很好的理論基礎。該階段采用實驗手段研究的代表是Shnei-derman,他采用內省、案例研究和實地研究等手段,對編程風格、項目組織、團隊進程、程序員能力傾向和人格特質因素等方面進行了探索[4]。但是,Shneiderman的實驗缺乏認知模型的支撐,面臨設計問題簡單、編程環境失真等問題。20世紀80年代至今為軟件心理學發展的第二階段,吸引了計算機科學家、心理學家和人素工程學家的參與。該階段以認知模型的構建為特征,采用客觀的行為分析作為嚴格試驗方法的補充。從認知心理學引進理論框架,并將其研究成果引入到軟件工程中,以促進軟件工具的研發,改進編程活動。該階段彌補了第一階段的不足:研究對象擴展到專業程序員,而第一階段的研究對象幾乎都是學生;考慮了軟件開發的集體性及協作性;所涉及的活動不只是編碼,也研究需求規格說明及軟件設計;考慮了語言和編程范式對編程活動的影響??v觀軟件心理學的發展史,軟件心理學的研究方法漸趨成熟、研究內容逐漸豐富、研究學者日益多元化。軟件心理學的發展過程是軟件工程與心理學融合程度逐步提高的過程。
軟件心理學研究體系
從學術文獻來看,軟件心理學研究的熱點主要集中在7個領域:程序設計的認知機制、程序理解理論、專家與新手的差別、程序員人格特質與績效的關系、程序員情感與績效的關系、程序員能力傾向測試和人機界面設計。筆者分析了各項研究內容之間的關系,如圖1所示。軟件心理學的研究從3個層面展開:第一層面為認知活動機理層,第二層面為根源因素層,第三層面為應用層。第一層面從軟件生命周期的核心活動出發,研究其認知機制,主要包括軟件設計活動的認知機制,以及編碼、測試、維護中的程序理解機制。第二層面在第一層面的基礎上,研究影響主體績效的根源因素,一方面研究情感、人格特質對主體績效的影響;另一方面從“主體的能力是由學習和訓練得來的”這一觀點出發,研究專家與新手在知識、策略和元認知方面存在怎樣的差別。第三個層面是將前兩個層面的研究成果應用到軟件工程相關的活動中,如將根源因素層的研究成果與心理學測量方法相結合,研究程序員能力傾向測試,用于選拔適合從事軟件開發的人員。將程序員的行為和認知機制的研究結果用于指導軟件開發環境的人機界面設計。將專家與新手的差別的研究成果應用于軟件工程人員的教育與培訓。軟件心理學在人機交互中主要應用于用戶建模及可用性的設計與驗證,關注用戶描述,對用戶的感知、認知和動作進行建模,并構建感知-認知-動作的集成建模。該方面的應用旨在了解和支持人與計算機的交互,使設計的軟件或系統的可用性更高。該領域是軟件心理學與計算機科學結合最成功的研究領域,存在的評述較多。本文接下來對前6個領域的研究現狀及其對軟件工程領域的啟發展開論述。
主要研究進展
1程序設計的認知機制
研究進展程序設計認知機制主要包含3類元素:知識、策略和過程組織。程序設計知識分為句法知識、語義知識和圖式知識[5]。前兩類知識與程序語言緊密相關,而圖式知識是程序設計的核心。圖式(Schema)是主體內部的一種動態的、可變的認知結構單元,是由舊知識組成的無意識的心理結構。圖式理論的核心思想是,將主體過去的經歷形成模式,在解決問題的時候無意識地匹配和調用與目前情況相符的模式。圖式的存在使得人類的認知具有自動加工的特點,同時也是認知失誤的重要原因[6]。程序設計圖式包括編程圖式、結構圖式和問題域圖式[13]。編程圖式是編程領域特有的圖式,包括編程基礎知識和算法知識等。結構圖式是生成和理解文本的重要知識,如1個功能程序的結構圖式由3個角色組成:輸入、計算和輸出。問題域圖式是程序要解決的特定問題的領域知識。根據圖式理論,程序設計的核心活動是相關圖式的激活。程序設計過程就是程序員激活儲存于記憶中的適合解決當前問題的若干圖式,并對這些圖式進行組合的過程。以圖式為核心的程序設計模型以Adelson模型[7-9]和Détienne模型[10]為代表,將程序設計認知活動視為圖式檢索、圖式匹配、解決方案評價、調試和通用化[7,8]的過程。程序設計的策略[11-13]包括:①自頂向下和自底向上。自頂向下是指將總體問題逐層分解為小問題解決的策略,自底向上是從細節到總體逐步構造的策略。②向前和向后。向前設計模式即程序解決方案按照執行方向設計,向后設計模式即程序解決方案按照與執行相反的方向設計。③廣度優先和深度優先策略。廣度優先策略是先解決完一個層面的所有問題,再解決低一個層面的問題,深度優先策略是將一個問題從上到下解決完成后再解決其它問題。④過程式和聲明式策略。若編程方案是規程控制,則是過程式的。若編程方案用于聲明靜態屬性,如對象、角色等,則是聲明式的。⑤心理模擬,用于評價問題解決方案。程序員在不同情境下會使用不同的策略,策略的觸景包括編程語言的認知維度[14]、編程環境特征、問題類型和程序員自身思維方式和已獲得的圖式,程序員趨于選擇自己熟悉和使用頻率高的策略[15]。程序設計的過程組織有兩種方式。一種為結構化組織方式,認為程序設計是按照自頂向下、寬度優先的方式組織的。但是實驗發現,實際的程序設計過程并不是嚴格按照這種結構化的過程進行的。程序員設計或編程過程中會出現機會性的偏離[16],即程序員(設計師)以實現目標為第一要務,不受規則的限制,自頂向下和自底向上、深度優先和寬度優先策略都會用到,取決于具體的情景。存在許多支持該模型的實驗研究結果,如程序員有時會優先實現他認為最重要的功能。這種認知策略會被多個因素觸發,如資源限制。當工作記憶超出容量時,結構化的工作模式就會失效,由寬度優先策略跳變為深度優先策略,產生機會主義偏離,即機會主義組織方式。
應用與啟示從程序設計認知機制可以看出,良好的知識結構(設計模式)、恰當的策略和過程組織將促進設計工作的開展?;诖?,可設計出更適合程序員使用的軟件開發工具。在軟件開發環境中提供可視化的結構圖式和知識圖式支持,對程序員具有重要的輔助作用。如在面向對象編程工具中提供一個通用化的對象圖式,包括創建、初始化、讀、寫、輸入和輸出功能;在開發工具中提供控制流、數據流和功能分解圖等。同時,領域知識庫的構建對軟件開發具有重要意義,也是軟件開發工具面臨的一個新挑戰[17]。程序員機會偏離現象說明,編程環境不能過分強制程序員按照自頂向下的方式編程[18]。編程環境應提供相對靈活的導航工具,以便程序員在不同對象之間快速切換。在支持機會主義偏離的情況下,同時也要提供未完成任務的追蹤功能,因為發生機會主義偏離后,被中斷的任務擱置后容易被遺忘。
不足與展望程序設計的一個重要特點就是解決的問題是“不明確的問題”(ill-definedproblem)[13,18],存在需求描述不清晰、缺失等問題;并且,一個問題可能存在多個解決方案,無法通過單一的標準進行評價,甚至無法評價。因此,對所要解決的問題的表征(representation)非常重要,問題表征中生成的情景模型直接影響設計方案的生成,也與設計方案共同演化,是造成個體差異的重要活動之一[19]。而目前的研究都是假設所有程序員對問題的表征是一致的,缺乏對程序員問題表征的研究。分析程序員的問題表征,將其集成到程序設計認知模型中,是未來的研究趨勢[13,19]。目前的認知模型將設計的核心活動簡化為圖式檢索、匹配和評價的過程。而實際項目中,程序員可能面臨知識不足的問題。因此學習成為程序設計中一項重要的認知活動。學習中理解和集成圖式將占用大量的工作記憶資源(germaneload)[20],對程序設計的其它活動存在重要影響。而目前的認知模型均缺乏對學習活動的研究,這將是未來研究的一個重要內容。最后,人類認知的一個重要特性就是具有主動監控和調節的高級能力,即關于“認知的認知”———元認知能力。元認知能力與認知失效調節及問題解決能力密切相關[21],而目前的認知模型幾乎都沒有考慮這一全局性的認知活動。研究程序設計元認知能力對程序設計其它活動的影響機理及其評價和訓練方法,對程序員的選拔和培訓具有重要應用價值,將是未來一項重要的研究方向[22]。
2程序理解機制
程序理解可謂是程序開發心理學最古老的課題之一。它解決的核心問題是,程序員如何處理源代碼和構建高效的軟件系統[23]。研究程序員程序理解的行為和策略,以此指導軟件可視化編程環境的開發[24]。
研究進展程序理解理論最初從文本理解理論借鑒而來。文本理解是通過信息加工構造表征的過程。該過程翻譯文本中包含的顯式信息,并調用經驗知識得到推斷信息,再將兩類信息綜合為一體。即信息加工過程的信息有兩個來源:外源,編碼在文本中的信息;內源,存儲在記憶中的知識。Letovsky模型[25]使用知識庫、心智模型(內部表征)和同化過程,從較高的抽象層次描述了這一過程。程序理解模型包括3類:功能方法,理解程序等價于利用知識圖式;結構化方法,理解程序等價于構造關系網;心智模型方法,理解程序等價于構造詳細的情景表征。功能方法的核心假設是,程序理解就是激活和實例化知識圖式。程序理解的活動包括:激活儲存在記憶中的圖式,利用從程序代碼中提取的索引,并從援引的圖式出發推斷程序所包含的某些信息。功能理解模型的主要代表是Soloway模型[26]。結構化方法認為,理解程序就是構造命題之間的關系網。程序可以用順序、迭代和條件等控制結構的基本單位來描述。專家利用結構圖式識別結構單元(順序、迭代和條件),然后構造不同層次的表征。結構化方法的模型主要有Shneiderman&Mayer模型[27]。心智模型方法認為,程序理解就是構造情境表征。這就需要區分兩類模型:程序模型和情景模型。程序模型與自然文本理解中的命題模型和文本庫概念類似,反映程序在命題層次包含什么內容。而情景模型反映問題領域的實體及其關系,即問題目標及數據流。程序的理解首先需要構造程序模型,這依賴于結構化知識,特別是編程語言的語義和句法知識;在此基礎上,構建情景模型,從而達到對程序的理解。心智模型主要有Pennington模型[28]。Mayrhauser集成元模型[29]將Soloway模型和Penning-ton組合起來,并且實驗證明,程序員在3個理解過程中轉換。該模型由4個部分組成:自頂向下、情境模型、程序模型和知識庫。前3個部分反映理解過程,知識庫是構建其它3個部分的必要因素,為程序理解過程提供相關信息并存儲推斷得出的新信息。
應用與啟示對程序理解原理的研究,可指導程序理解輔助工具的設計[30]。如在程序瀏覽方面,對于自頂向下的理解過程,需要提供從頂層的抽象信息到底層的細節信息的瀏覽;對于自底向上的理解過程,需要提供控制流和數據流瀏覽;工具還需要同時提供寬度優先和深度優先的瀏覽,才能同時滿足專家和新手的要求。除此之外,工具代碼及注釋檢索功能將大大提高程序理解效率[31]。同時需要提供能夠讓程序員詢問變量角色等的詢問功能。最后,應考慮為程序理解提供一些其它認知支持手段,如為專家提供外部便簽薄,為新手提供教學輔助,使其能夠實時地獲得語言和領域知識。集成領域知識將提高程序理解效率[32]。
不足與展望首先,在實際的軟件項目中,維護人員很可能不是程序編寫者,程序理解過程中通常伴隨新知識的學習。因此,隨著編程人員和技術的變化,終端用戶相關的學習理論將成為一個研究趨勢。第二,從理解模型可以看出,領域知識在程序理解過程中發揮重要作用。領域知識的集成是一大難點,也是未來的重要研究方向之一。第三,目前程序理解理論主要研究個體的認知機制,程序理解將向社會化組織化的方面擴展,同地合作和分布式合作方面將受到關注。第四,在工具方面,未來程序理解輔助工具將向快速改進、綜合化、集成建議和搜索功能、接口高適應性、可視化、支持團隊合作等方向發展[30]。
3專家與新手的差別
研究進展程序員的技能在很大程度上是一種習得性能力,因而研究專家與新手的差別對程序員的教育和培訓有著重要意義。專家和新手的差別主要表現在4個方面:知識、策略、熟練程度和元認知[33]。專家與新手在領域知識和編程知識方面存在較大差別。Adelson&Soloway[7]和Burkhardt等人[34]發現,新手在領域知識方面的欠缺將導致其在構建情景模型方面存在困難,但是并不影響其構建程序模型。Schraagen[35]發現,即使都是有經驗的程序員,領域知識欠缺的程序員的解決方案也會比領域知識豐富的程序員給出的方案差。因此,區分專家與新手的一個重要因素就是領域知識的掌握情況。在編程知識方面,Rist[36]發現新手更關注語言句法等表面細節信息,而專家更關注于語義信息或設計模式等深層次的信息。Soloway和Adelson等人發現[7],專家在解決模式化問題時的表現比新手好,而在解決非模式化問題時卻不存在顯著差別。Wiedenbeck[37]同樣發現專家傾向于記住程序的語義等抽象表征信息,而新手傾向于記住程序的函數和語義等具體信息。Ye[38]指出,專家比新手擁有更大的圖式組塊(chunks),在他所研究的樣本中,與新手相比,專家在C語言方面的概念塊更抽象,組成元素更多。由于知識的組塊,對新手是多個圖式,對專家卻可能只是一個圖式,這使得專家的工作記憶能夠調用和處理更多的信息。專家與新手除了在知識的數量與組織結構上存在差別之外,在知識的使用策略方面也存在顯著差別。經驗豐富的程序員傾向于使用自頂向下、寬度優先和向前的策略,而新手傾向于使用自底向上、深度優先和向后的策略[7,33,40,41];并且專家的編程策略可以在不同的問題上重用。Schraagen[35]指出,即使面臨新的問題,良好的策略也能保障他們以較為結構化的方式解決問題。Ko[42]發現,即使在陌生的編程環境中,也不會影響專家程序員的問題理解策略。專家與新手在元認知方面存在重大差別。研究[33]發現,專家能夠更好地意識到所犯的錯誤,并及時對生成的問題解決方案進行驗證。專家元認知能力也表現在專家更善于利用外界記憶輔助設施(如筆記)作更多的注釋[43]。
應用與啟示專家和新手不只是存在知識占有多少的差別,在知識的組織、知識的使用策略、熟練程度和元認知方面也存在差別,這對軟件工程人員的培訓和學習以及專家系統的設計有重要指導意義。對程序員的培訓不能只灌輸編程語言規則等顯性知識,還需要啟發其分析知識之間的關系,以及不同解決方案使用的場景,進而形成高層次的圖式;還需對知識使用策略和元認知進行訓練;在培訓的方式上,僅采用書本和授課方式是不夠的,由于專家具有實用主義和自動化的特點[44],因此需要設計具體的任務對其進行實戰訓練。
不足與展望在弄清專家與新手的差別,特別是找到新手存在的缺點后,新手的學習和教育就成為重要的研究課題[45,46]。面向對象編程教育及可視化教育工具的開發成為近年來的一個研究熱點[47]。
4程序員人格特質與績效的關系
大量證據表明,軟件開發中程序員的生產率和能力存在著巨大差別。具有相似背景的程序員在編程績效方面存在巨大差別,學者們猜想,只有存在某種“固有的人格特質”才能解釋這種差別。該領域的研究對程序員的選拔具有重要指導意義。
研究進展目前軟件心理學領域主要采用邁爾斯-布里格斯類型指標(MBTI)和五因素模型[48]來研究人格特質類型與程序員績效之間的聯系。根據MTBI理論分析[49]:①在思考(thinking)/情感(feeling)維度方面(T/F),要檢測和修改編程錯誤,克服語言錯誤,編程工作需要邏輯和分析能力,思考型比情感型更能勝任編程工作。②在感覺(sensing)/直覺(intuiting)方面(S/N),感覺型人更傾向于一步一步達到目標,對工作和細節更有耐性;而直覺型人工作更依賴于預感和直覺;但是直覺型人對復雜任務更感興趣,感知型人更適合簡單任務。③外向型(extrovert)/內向型(introvert)維度(E/I),內向型人更注意細節,在行動前喜歡徹底思考事情;外向型人思考問題傾向于表面化。在E/I維度的實證研究方面:David研究了MBTI與代碼審查能力之間的關系,實驗證明,E/I維度與代碼理解能力之間存在強關聯關系[50];Capretz[51]研究結果表明,軟件工程人員大部分都是內向型性格;Chandler等人[52]發現,計算機專業的研究生主要都是內向、感知和判斷型的;在程序員人格特質調查中,Turley發現軟件行業樣本中90%是內向型人[53]。在SN維度實證研究方面:Bishop[54,55]發現直覺型人在解決問題中表現得更好;Whitley[49]發現直覺型的學生確實更具編程潛能;Capretz[56]研究發現,他的專業程序員樣本中直覺型人所占比例遠遠超過一般人群,他認為直覺型、思考型,特別是直覺-思考型在編程相關任務中能夠工作得更好;Devito研究了MBTI與代碼審查能力之間的關系[57],發現直覺型人比感知型表現好,直覺-思考型表現尤其好。在TF維度實證研究方面:Bishop[55]認為,完成軟件開發中的一些任務(特別是問題解決相關領域的任務),需要在規定的限制條件下執行標準化過程,需要進行客觀的邏輯的分析,思考型人更能勝任;Turley和Bieman[53]的研究表明,他們的樣本中85%是思考型人;Capretz的專業程序員樣本中81%是思考型;Chandler等人的計算機專業學生中86%是思考型;Myers研究表明,思考型人更適合于與邏輯思考有關的任務[58]。
應用與啟示在現代軟件人員選拔和項目管理中,人員的性格因素不容忽視。人員選拔需要根據角色的任務特點,選擇適宜性格的人員,如直覺-思考型人普遍更適宜作編程工作;而需求分析更偏重交流能力,外向型性格比內向型性格更為適宜。實驗表明,如果IT企業能夠根據雇員的性格特點和潛能進行優化組織,生產效率和質量都可能得到提高[56,59]。
不足與展望正如Whitley所說[49],人格特質與績效方面的研究是相關性研究,而不是本質上的實驗研究,不能得出因果關系推論,不能說編程潛力、態度和行為的差別是由于人格類型導致的。需要對這種相關關系進行深入的機理研究,給出人格特質與績效之間的相關關系的合理解釋,這將是未來的一項重要的研究內容。在找到性格類型與能力偏好的關系的基礎上,對于一個特定任務,如何選擇和搭配團隊成員以形成更加和諧、高效和多樣化的團隊也是未來一項重要的研究內容[48]。
5程序員情感與績效的關系
情感(moods)是指“心境或主要情緒的意識狀態”[60]。Merriam-Webster字典將情緒(emotion)定義為“意識的情感方面,一種感覺狀態,是一種有意識的心智反應(如憤怒或恐懼),對特定對象的強烈感覺體驗,一般伴隨有身理的和行為的變化”。情感和情緒都是感情狀態。情感持續的時間更長,引起的原因沒有情緒明確。情感可以持續一兩天或者更久,而情緒在幾分鐘或者幾秒鐘之內發生或者消逝。大多數心理學家認為情緒和情感在本質上是一樣的。幾乎所有的日?;顒佣际艿角榫w的影響,從駕駛飛機到編程,無一例外都能感受到正面或者負面情緒。情緒可能破壞日常任務,通常會對精力、睡眠和思維造成干擾,嚴重的可能導致疼痛。研究發現,情感會影響人類的多種活動,如創造性、記憶、推理、行為、認知加工、信息加工、學習、決策和工作績效[60]。
研究進展雖然情感與績效關系方面存在大量研究,但是很少有針對IT專業人士的情緒研究。近年心理學領域開展了情緒對行為的影響研究,情緒對IT專業人士的影響的研究卻很少[60]。情緒心理學相關研究表明,情感影響推理。而推理是編程的必要元素,如果情感能影響推理能力,那也可能會影響程序員的績效。Khan[61]設計了實驗來測試情感對程序員調試任務的影響。其方法是讓程序員在開始調試任務之前,先觀看幾組激發特定情緒的錄像帶,比對各組任務績效。結果表明,情緒的覺醒水平對調試任務存在重大影響,而情緒的效價對任務的影響卻不明顯。即程序員檢測和改正錯誤的能力依賴于情緒的覺醒水平。Good等人[62]意識到情感對程序員績效的影響,在計算機實驗室中引進了表達和監控學生情緒的設備。實驗表明,此設備有助于學生的情緒表達、交流與修復,進而促進學業成績,獲得了良好的反饋。
應用與啟示情感對編程績效存在影響,該領域的研究對程序員的管理有著重要指導意義。如情緒的覺醒水平對調試任務存在重大影響,企業管理中就需要盡量避免員工情緒出現大幅波動,過于高興或悲傷都對工作不利。需要避免員工帶著負面情緒工作,思維受到影響可能引入嚴重的軟件缺陷。情感波動對編程績效存在較大影響,組織在選拔程序員過程中可參考此因素,優選那些情緒穩定型人格特質程序員負責關鍵性任務。可用大五人格測量中的神經質維度(neu-roticism)問卷衡量情緒穩定性。
不足與展望針對程序員情緒的研究目前還處于實驗室研究階段,這與實際工程項目中程序員的工作環境存在巨大差別;并且情緒具有實時性和積累效應,如何在不侵擾程序員編程工作的條件下,實時地檢測程序員情緒進而幫助其調節情緒是未來的發展趨勢。文獻[63]提出通過程序員使用鼠標和鍵盤的信息來監測程序員的情緒。文獻[64]提出通過增加人機界面的情感意識(emotionawareness)設計來促進用戶的正面情緒。
6編程能力傾向測試
眾所周知,有些人認為學編程很困難,而有些人卻覺得很簡單。要可靠地將這兩類人識別出來卻是一個大問題。編程能力傾向測試旨在解決這樣的問題。
研究進展Wilson&Shrock[65]研究了12個預測因子后發現,有3個預測因子與編程能力有著重要的相關關系,依次是:舒適水平、數學和歸因(把成功歸因于運氣的學生編程能力較差)。Beise等[66]考察了年齡、種族和性別與編程入門課程之間的關系,從統計學上表明,性別和年齡都不是有效的預測因子。Nathan等人發現學生的預期是一個重要影響因素,那些預期自己能得“A”的學生更容易成功[67,68]。Lister等[69]、Fincher等[70]、deRaadt等[71]、Simon等[72]、Tolhurst等[73]指出,在編程入門課程中表現差的學生缺乏問題解決能力。Stuart實驗發現,系統商數(SQ)-移情商數(EQ)與編程存在強正相關[74]。Simon等人[75]、Sue&Gary[76]、Tolhurst等人[73]都發現,學生的空間觀想能力與編程能力存在正相關,地圖描繪實驗中畫俯瞰圖的學生在課程中得分更高,畫路線圖的學生成績比俯瞰圖的差,畫路標圖的學生成績最差??臻g觀想能力與代碼導航能力有關,進而關系到程序心智模型的構建。
應用與啟示編程能力傾向測試可以提供學業和就業方向咨詢,選擇那些適合學習編程的學生,提高編程課程的通過率,減少計算機學生的退學率[77];為企業選拔更適合編程的員工,并識別哪些員工需要進行計算機相關訓練。
不足與展望可以看出,目前該領域的研究未能取得公認統一的結論。學者們對預測因子的選取具有較大隨意性,各自提出的預測因子繁多且缺乏系統性。究其原因,研究者們未能對軟件工程中各種角色所需的認知能力進行機理層面的分析。相關性分析不能說明因果關系。學生在某種任務中的績效與編程績效相關只能說明該項任務與編程任務在所需的認知活動上存在某種程度的交疊。因此,用這些因子預測學生將來的編程表現是不夠合理的。作為編程能力潛力的預測因子,需要選取與編程認知活動密切相關且相對穩定的因素。本文前幾節的分析和總結對編程能力傾向測試的未來研究方向具有重要啟發:1)編程能力在很大程度上是習得性能力,知識與經驗的差異是程序員個體差異的最主要原因。因此在個體經歷和其它條件相同的情況下,學習能力的差異是影響程序員未來編程能力的一個重要因素。同時,學習能力是一項較為穩定的能力,可作為編程潛力預測因子之一。2)軟件工程的核心認知活動是問題解決(problemsol-ving),而元認知對問題解決活動進行監控與調節。元認知能力的高低對問題解決績效起著重要影響[78],并且元認知能力也是較為穩定的高級能力[21],可作為編程潛力預測因子之一。3)情緒、動機(motivation)等因素對認知活動存在較大影響。同樣,在外界刺激條件下,人格特質是個體情緒動機差異的決定因素,且人格特質具有長期穩定的特點,可探索部分人格特質維度作為編程潛力的預測因子,如情緒穩定性??傊幊棠芰A向測試的未來研究應著眼于分析軟件工程的任務活動特征,識別那些對編程活動有著因果關系且較為穩定的因素作為預測因子,才可能達到“潛力測試”的效果。
結束語
程序員培訓總結范文2
技術
我在學校里學的是電氣自動化,程序基礎僅限于c基礎課程的一些知識,后來由vb、html轉向asp,在asp上花費了不少時間,對asp比較熟悉,后來由于公司業務需要,將開發平臺轉向,開始對不是很感冒,以為就是asp的一點擴展(那時還不知道三層架構,數據數據訪問全在頁面里——!),后來招來幾個北大青鳥的過來終于意識到的強大之處,經過個人的努力已經逐步掌握了,現在層次上只能講個人覺得是入門而已,原因是多方面的,待會兒會講到。
相信從面向過程轉向面向對象的同學都有一種感覺:面向對象開始真的有點別扭,涉及到屬性,尤其是類之間的各種關系,那時老想用面向過程傳遞參數多方面啊。于是老在想對象這種東西,從概念中跳中來,以自己的方式去理解才逐漸體會到頁面對象的精華來,分層次展現、分級別訪問、封裝對象之間各種關系逐漸真正理解了,尤其是對象之間的關系,如對象a與對象b兩者之間的關系,有些需要完全公開,有些需要隱藏,有些需要通過第三方傳遞,有些需要給自己的下級可見,有些需要讓下級去完成具體操作——這不是現實的實際模型嗎?應該這么理解,面向對象來源于現實,它不是一種憑空空想出來的理論,這些對象之間的關系可以將其還原為父子、夫妻、領導下屬、同事、朋友之間的關系。相比之下,頁面過程往往像是一股腦全部推給用戶使用,其中的數據與數據訪問方法層次不清晰,在模擬現實上它與面向對象相比更易于入門理解,實質上難于準確直接地表述。
面向對象上另一方面是它的設計模式,在之前的面向過程中對這個設計模式并沒有清晰地提出來,面向過程優秀的代碼要求高內聚低耦合,從個人的理解上,這僅是對軟件開發方法“技”上理論總結;設計模式是達到了“道”的層次,因為它從更大的方向、更抽象的層次來去表述具體的代碼模塊之間的關系,可以認為設計模式是完全從實際的應用來不斷總結得來的經驗,之間并沒有這種術語,但相信前人肯定也使用到這種思想,它從實際應用于來,當然要應用于實際工作中,認真思考不斷總結每個人都會有自己的“設計模式”,可以借鑒前人的思想來去提升自己,不可去為“設計模式”而設計模式。
具體到的實現模型中,真正理解它的機制與方法也就不難理解,記住b/s中離不開post或get,所有的autopostback、selectedindexchanged……都是去調用form傳值,加上runat=server的服務器控件打開它生成的源文件也是普通的html標簽,微軟的讓軟件開發更容易的思路是很好的,時代在前進,很多年前你使用c寫出mis證明你很牛,很多年之后你不在使用c去寫“學生管理系統”、“圖書館管理系統”那只能說明你的腦子少一根筋,開發語言都有長處與不足的地方,因為它們適用的場合不同,類似不能拿匕首去跟炮彈比,也不能拿c與php比,程序員都有一種偏執的心理,但一點要記住,你面對的用戶才有最終發言權,程序能不能滿足需要,易用性、穩定性、成本才是應當首先放到重要位置來去談的。
管理
最開始擔任管理一職時開發團隊加我在內只有四個人,那時只是抱著接受挑戰的心理去做管理,加上我本人比較重感情,團隊之間關系相處都不錯,但嚴重的問題逐漸顯露出來:工作的隨意性、團隊精神薄弱、工作方式蠻干,印象深刻的是有幾個開始承諾項目不能完工,于是最后天天加班,一直做到早上6點,睡一會7點半接著上班,幾個同事都是年齡差不多的小伙子,干勁十足。后來隨著時間的推進,問題越來越擺在眼前:項目遲遲不能完工,又由于公司待遇方面讓新員工感覺不值得,于是形成了老板抱怨員工也抱怨的狀況,我在中間兩點都要去“消火”,這期間是我們部門相對最累的時間但也是相對感覺最充實的時候,后來,之前的員工跟我說“再也找不到那種感覺了”,這是我能想像的。這期間主要是老總對我十分信任,工作上主要是管理方法上對我指點了不少。后來我逐步體會到,管理應該是“大家定規則去遵守”,而不應該是“人管人”。
人管人很容易陷入一個誤區:領導去時時刻刻關注每個員工,這樣最后往往后造成員工對領導的敷衍了事,管理松了員工會責任下下降,管理緊了造成員工與領導關系緊張,另一方面領導時間精力有限必然耗費大量的精力在日常的監督中而不能投入到全局的管理中。
于是“定制度-定分工-定進度”,明確日常所有的規章制度,這期間除了公司主要的工作規章制度外其他的日常工作紀律、日常管理等規章制度都是我本人制訂,然后征求大家意見最后去貫徹執行。中間也遇到了不少問題,比如開始我們內部是允許使用qq的,后來員工用qq閑聊的時間增多,大大影響了工作效率,最后決心禁止,開始阻力較大(貌似程序員都喜歡掛上幾個qq去到群里搞個群主,雖然群里大多都是菜鳥),最后多次開會,逐個談話,闡明道理,形勢逐漸好轉。
項目分工上針對技術水平明確分工,制訂項目開發計劃,由于開始技術都不是很成熟,不少時間我這邊強勢要求,使用野蠻方法,完不成加班——我陪著加班,這段時間能感覺到員工對我稍有怨言但總體還是認可的。
這期間公司新招人員,人員的增多更使我意識到團隊管理的重要性,這期間版本控制、編碼規范、文檔管理、bug管理等諸多問題都得到一一解決,技術水平上主要是我個人利用空余時間學習新知識充電,然后展開各種培訓,主要是photoshop、css、js、sql等方面,培訓一方面提升了員工的技術水平,一方面我本人在學習培訓的過程中得到的最多,因為這個時候個人要求去思考的會更多,加上我本人對技術興趣比較深厚,所以后期工作慢慢踏入良性循環。
待遇低、條件艱苦、工作時間長、工作壓力大是團隊中最大的難題,這方面公司在某些方面決策層有著嚴重的錯誤思想,造成技術人員對公司埋怨增多,在這方面我本人只能以勸架婆的身價去安慰身邊的兄弟,因為我明白現在公司的問題與當前中國軟件行業的通病一樣,盲目追求利益最大化,不求質量,但求速度,整個社會風氣造成軟件行業良莠不齊發展,整個中國三四個人的開發團隊組成的公司數不勝數,整個程序員階層生存狀況可想而知,瘋狂加班、代碼質量低下、維護成本大、穩定性差、用戶體驗差……。當然我們本身不能去逃避這個現狀,對于個人來講任何假大空的口號都是沒有意義的,程序員作為技術人員最重要的是心態,以良好的心態去面對各種問題,發現問題、解決問題,發現問題抱怨是解決不了問題的(“it民工”是我個人認為it人最沒有正確的自我定位的一個稱謂,試想一個人連自己都看不起自己的職業,他能做好自己的工作嗎?),最主要是解決問題。
程序員培訓總結范文3
總結主要寫一下重點的工作內容,取得的成績,以及不足得出結論,下面就讓小編帶你去看看程序員季度個人總結報告范文3篇,希望能幫助到大家!
程序員季度總結報告1
我是一名程序員,在過去的一年里,軟件研發部團結協作,以及在公司這充滿奮斗的環境下,我以嚴肅認真的工作態度和百折不饒的精神,努力的完成了公司的各項工作,在軟件研發、團隊協作和個人成長上也取得了一定的成績。在公司一年的工作已經結束,特向公司總結匯報如下:
一、軟件研發
根據公司的安排,項目的需要。在自身的努力、伍經理的幫組,團隊的合作下,克服重重技術困難,增長了工作經驗,收獲豐盈:
1、asp開發
以前我在其他公司也做過一些開發,但是底層和架構與頁面樣式我都是沒有涉及到的。通過這一年在本公司的的這些項目程序中的鍛煉,我成長了,我學會了很多很多。
首先,面向對象語言的收獲。對于當前編程的主流思想是對象,任何事物都可以用對象來表示。以前理解這些話很費解都是從表面上理解,沒有從中的體會,通過這次asp項目的開發,不管是數據還是外部一些條件我們都可以抽象成對象,都可以用對象來表示,具體可以用語言中的類方等。asp如此,c#如此java也同樣如此。
其次,具備獨立完成vb知識方面的能力。以前沒有做過vb的東西,加上這次asp的做,這次涉及到的領域也非常廣,常用的重要的都有涉及,并且還補充__ml,java實際操作中空白的部分。通過這一年的開發,我能勝任這方面的工作,能獨立完成這方面的工作。
再次,c#方面存在一些不足。LocALhOST通過c#這次軟件的開發,也發現自己的不足,如基礎知識掌握不牢,缺乏編程整體思想。這些都是需要在工作中完善和改進的。
2、數據庫開發
數據庫是伴隨著項目以來用的最多最平凡的技術。以前對數據庫只是會一些簡單常用的操作,經過這一年項目的實戰,對數據庫的操作增加了一些豐富的經驗。為以后的工作和經驗的積累都奠定了堅實的基礎。同時在項目中還用到了oracel與access數據庫,這是我的收獲。
優點:
能熟練的運用數據庫技術進行開發。特別是對sql數據庫的操作,經過這么長時間的積累,基本上能合理的設計和新建數據庫,同時在數據結構上也加強了對數據庫的理解。通過項目的實踐現在能熟練使用和編寫多種sql語句。還掌握了一些關于數據庫優化sql語句優化的方法,能進行一些簡單的優化。
缺點:
數據是一門比較先進的技術,并不是你會寫一些sql語句,能建幾個數據庫你就是數據庫工程師。要成為一個好的數據庫管理員是要經過長時間的工作積累。針對自己的不足,在以后的工作和學習中多接觸,多運用新的知識點。充實自己的經驗和知識儲備。
二、團隊協作
上面的成功與收獲,除了自身努力外,以及公司的支持。是這個團隊鑄造了我。我們這個團隊也是因為有了我們這些拼搏協作的隊員,使得它成為一個具有務實、拼搏、創新精神的團隊。我與軟件研發小組是一個整體,這里的團隊總結也就是我在這個團隊中的收獲。
務實:公司下發的任務,下發的工作,件件都是用心去做的。我們這個團隊中沒有一個人在工作的時候做了工作以外的事情,都是實實在在的做跟工作相關對公司有益的事情。相信在伍經理的帶領下現在是這樣,以后同樣也是這樣。
拼搏:公司給的每一個任務不管它多難,如果工作沒有完成我們會晚上加班,也要盡可能的完成當天的工作。如果工作實在忙,為了趕進度我們放棄周末休息時間也要盡可能的使項目提前。
創新:現在我們開始項目的時候都會進行研討,一般都會進行一個效率和邏輯的分析與討論,保證程序正確的前提盡可能的提高程序的效率。
互助:我們小組內只要任何一個人出現技術或其它的問題,我們都會彼此都會盡可能的去幫助他。不會因為某一個人而拖住整個項目滯后。
交流:我們在項目中會及時溝通自己的收獲,特別是一些針對性的技術問題。這樣可以省了很多重復研究的時間,這是一筆很可觀的時間。
在交流中只要我會的,我懂的,我不會去吝嗇。我會積極的去與你交流,我的團隊名言“人強團則強,人弱團則削”。
三、個人成長
通過公司這快一年的鍛煉與學習我真的進步了很多,不管從技術上還是做事上,都不像以前那樣了。我在公司學到的懂得的使我飛速成長。
技術上:不管從語言上還是做事的邏輯上都得到了很大的的提高?,F在在軟件小組里面自己能獨立完成一部分工作,承擔自己的責任。
程序員季度總結報告2
光陰如梭,一年的工作轉瞬即將成為歷史,伴隨著新年鐘聲的臨近,我們依依惜別碩果累累的過去,滿懷熱情的迎來即將到來的新的一年。在這年終之際,現對來公司一年的時間里所作的工作總結如下:
一、____項目的編碼工作
從了解____項目的背景、及計劃安排,熟悉____公司制度及業務流程,再到熟悉新能開發模式,之后我根據需求調研報告,從基本的數據庫創建,到編碼,完成了銷售部、生產部、采購部、質檢部四個模塊的基本單據的制單、審核、選單、查詢、打印等系列的編碼工作;完成了____項目的模塊測試及流程測試。
通過這段時間的努力,使我個人的耐心、細心程度及對工作的合理安排得到了鍛煉,學會了在繁忙之中找條理,危難之中找希望。同時自己也有一些不足之處,一些細節地方技術上還不太成熟,還需加以學習與鉆研。
二、erp項目的實施工作
從__月初開始進行____項目的實施,每天早起趕在企業上班前趕到企業進行erp的實施。實施期間主要是軟件的安裝實施及對企業的erp系統的使用人員進行軟件使用培訓;紀錄客戶使用過程中出現的問題,晚上下班后加班加點將每天的小錯誤及客戶變更修改完畢。通過這項工作,使我原本欠缺的業務能力得到了很大的提高,并學到了很多與客戶交流的技巧及業務上的知識,更加明晰了erp系統的流程。但離一個成功程序開發人員的標準還差得很遠,在今后工作中,定會多多注意,加以改善。
三、幫助和使用手冊文檔的編寫
幫助的編寫使我熟悉了____的使用,為后期的oa開發也奠定一定的基礎,使用說明的編寫,使我更加加深了項目開發的整體思路與技術要點,總結了前期開發和實施中碰到的問題,并又一次的對軟件整體進行了測試,對暴露出的小bug進行了最后的修改。
四、利用工作之余的休息時間加強學習
注意收集有關____方面的資料文件,提高自己的處理新問題和解決新問題的能力,并加強學習java及oa方面的知識,為后期的工作打好基礎。
展望臨近的新一年,我會更加努力、工作上認真負責,再接再厲,更上一層樓。相信自己會完成新的任務,能迎接新的'挑戰。
程序員季度總結報告3
在過去的一年中,我擔任公司開發部的一名程序員,主要從事著____項目的開發工作,這一年來我低調努力工作著,不求閃亮顯眼和光芒四射,只為平靜和淡定;這一年中所做的成績如下:
一、獨立開發方面
____項目中本人獨立負責開發會計處的三個子系統:會計人員信用查詢系統。記賬機構信用查詢系統。會計人員網上報備系統。這三個子系統上線后,方便了社會各界查驗會計人員的真實信息、方便了查詢合法的記賬機構信息,以及方便了各單位對會計人員的報備。
二、團隊開發方面
餐飲行業項目,在團隊開發項目中直接參與了____餐飲有限公司總部的信息綜合管理平臺項目,主要負責的系統有:房屋租賃合同管理系統。短信收發管理系統。會員管理系統?;A信息管理系統和人事管理系統的部分功能模塊。系統應用后,____在管理全國各門店房屋租賃合同上,一定程度上提高了管理效率,并且及時有效提供了相應預警信息;短信收發系統方便了總部及時傳遞各項信息;會員系統更好的管理全國各門店的會員信息;人事系統在管理中減少工作量等。
三、項目管理方面
金融行業項目,我參與了____銀行____分行,企業轉賬管理系統中的部分模塊開發。本系統方便了企業快速實現大量和復雜的轉賬工作。____項目正在負責和開發的是住房貨幣化補貼網上申報審核系統。本項目采用了新技術,使界面更加大方美觀,很大程度上改善人機交互平臺的效果。
四、總結不足
程序員培訓總結范文4
關鍵詞:軟件開發;編程規范
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)26-6409-02
Studying on Code for Programming Standardization
HE Cheng-ju1, GUO Wei2
(1.Nanning Municipal Public Security Bureau, Nanning 530022 China;2.Nanning City Personnel Testing Management Office, Nanning 530022, China)
Abstract: There are something to focus on when using c# language programming, according to author's many years experience on software developing, this paper mentions several points need to concentrate on when programming and gives a way to resolve the problems base on practical examples.
Key words: software developing; programme criterion
隨著軟件行業的日益發展,C#作為軟件開發語言中的后起之秀,在軟件開發領域中的地位日益提高。目前,已成為面向對象開發中僅次于JAVA和C++的開發語言。本文探討了運用C#語言開發軟件中需要注意的編程事項,包括變量命名規則、方法格式、語句長度等方面需要注意的細節。
1 我們對軟件開發有一定的認識
經歷過大大小小的成功,也經歷過不少的失敗。對于軟件編程,只有在有一定的編程水平和經驗積累的情況下,才能寫出質量較高的代碼。一部完善的軟件規范可以對程序員的工作起到事半功倍的作用,因此,需要有一套較為完善的軟件編程規范來對程序員的編程行為進行約束。
那么,對于代碼規范都需要注意哪些方面呢?
1.1 同一項目組中,需要統一的編程規范
在軟件規模和大小不斷擴大的今天,個人單打獨斗完成一個軟件編碼工作的情況已經越來越少,更多的軟件開發需要以團隊合作的形式完成。這樣就需要在項目開發之前,制定出一套相應的規范,方便程序員之間進行交流,在一個程序員離開項目組后,新加入項目組的程序員能夠很快接手工作,進行新的功能開發。
在編程規范的制定當中,倘若項目組中之前從未制定編程規范,那么可以考慮以網上較為成熟的代碼規范基礎,結合核心程序員的編程習慣,制定出項目組的編程規范。這樣既保證了核心程序員不至于因為編程規范的大規模變動而影響工作效率,也對新加入項目組對員工以及新入職的員工起到了良好的規范作用。如果項目組公司已有編程規范,那么則需要對新入職及新加入項目組的員工進行培訓,以讓新員工盡快將編程規范運用到工作中,在編寫代碼的過程中熟悉和掌握編程規范。
1.2 命名規則
變量、方法名、類名及接口名稱的命名必須清晰明了,能夠讓人很快知道該變量的含義,避免容易被主觀解釋和難懂的名稱。類似x、y、a1、b1這樣的命名方式,不能讓人很快理解該對象的含義,應盡可能使用于短循環索引中。
在變量命名時,必須采用英文名稱命名變量。推薦在類屬性中不要包含類名,例如Color.blackColor,應該命名為Color.black。
在類名、枚舉類型、枚舉值、事件、接口、只讀靜態字、接口、方法、命名空間、屬性中應使用Pascal大小寫規則,對于方法參數、方法變量應采用Camel規則。
在大小寫規則中在,對于C#語言最重要的兩個規則是Pascal和Camel規則。Pascal大小寫規則的含義是“將標識符的首字母和后面連接的每個單詞的首字母都大寫”,例如,GetColor();Camel大小寫規則的含義是“標識符的首字母小寫,而每個后面連接的單詞的首字母都大寫”,例如blackColor。這樣方便開發人員理解變量及類名的含義。
對于ASP頁面中的ASP控件,命名時采用控件名簡寫+英文描述的方式進行命名,采用Camel規則進行命名,英文描述首字母大寫,這樣便于區分控件類型,提高代碼的可閱讀性。
1.3 代碼格式
在同一項目中,代碼的編寫格式需統一,每行代碼的開頭統一縮進四個空格,代碼需要垂直對齊左大括號和右大括號,格式如下:
If (x == 0)
{Response.Write("必須輸入用戶編號!");}
不允許以下格式出現:
If (x == 0) {
Response.Write("必須輸入用戶編號!");}
對于if、while這些控制軟件流程的語句,必須跟隨大括號,這樣不易產生混亂。同時,大括號需要另起一行,不能與語句并行。
由于一般開發人員所用的電腦顯示器尺寸為17寸4:3比例的顯示器,分辨率為1280*1024像素,因此每行代碼列寬大約控制在110個字符左右,這樣既基本滿足了Visual Studio開發軟件的布局寬度,又滿足了17寸顯示器在顯示上的需要。在代碼超出規定列寬后,請在逗號后換行或者這操作符前換行。
為了區分代碼塊,方法與方法、類與類,以及方法中的邏輯塊之間、類的屬性與屬性之間、屬性與方法之間需要增加空行,以方便程序員閱讀和熟悉代碼,在發現Bug的時候,也能很快定位到相應代碼處進行修改。
方法中的關鍵詞和左括號、等號與變量以及賦值結果都必須以空格隔開,方法中的每個參數除了以逗號隔開外,必須在逗號后添加一個空格。。在Visual Studio運用較為熟練的情況下,完成方法里的最后一條語句之后,刪除方法的右大括號,然后自己添加一次,所有必須的空格均可由Visual Studio2008/2010自動添加。上述方法同樣適用于為ASP頁面編寫的JavaScript函數。
對于方法而言,每個方法最好僅僅完成一項功能。若對代碼進行分層,每層代碼必須僅僅完成一種類型的功能。這樣的架構不僅滿足了面向對象編程中抽象和封裝的概念,也提升了代碼的可閱讀性。每行最多只有一條語句,超過一條語句會讓代碼顯得不美觀。對于方法中代碼的行數,如果是按照某些大公司的要求,每個方法體中代碼行數不要超過40行,但是對于 C#編程,尤其對于新入職的員工,很難達到這一要求,那么也應盡量控制代碼的行數,以盡量簡潔和高效率的代碼完成功能的編寫。
對于新人而言,在編寫代碼中很容易犯的一個錯誤是將別人寫的代碼移植到自己的代碼中時,會將與實現功能不相關的代碼一起拷貝到自己的文件中,甚至會由于執行不相干的功能而降低后臺文件運行的效率。那么,必須在代碼移植之后,仔細檢查一遍代碼,若是不必要的功能,需要盡可能的精簡掉,以免影響代碼效率。
1.4 代碼分層
在軟件規模不斷擴大,開發工作日益加重,尤其是以JAVA、為代表的網絡編程發展不斷加快,技術手段日新月異的今天,軟件代碼分層的重要性不斷體現。軟件架構分層不僅提高了代碼的可讀性和優雅型,更是大大提高了代碼執行效率。
目前,網站開發通用的MVC(Model、View、Controller)架構就是一個很好的分層架構例子。在此基礎上,通過對Controller層的進一步細化,可將該層分解為頁面控件控制層(主要是JavaScript函數)、后臺邏輯層、數據庫訪問層、數據模型層等架構,在這其中,頁面控件控制層控制前臺頁面的樣式,通過WebService調用后臺邏輯層的運行結果。后臺邏輯層通過調用數據庫訪問層的代碼,獲得從數據模型層中返回的操作數據庫結果。這樣的分層結果,使得每一層次的代碼只能調用自己下一層次的方法獲得返回結果,層層調用,層次分明,大大提升了代碼的效率和可讀性。
1.5 代碼注釋
代碼注釋是軟件編程中一個非常重要的問題。程序員在編寫代碼的過程中,如果能多花半分鐘編寫代碼注釋,在后續開發中將大大提高代碼的可讀性和可重用性。
例如,如下一段代碼:
if ( 1 == 1 )
{statement;}
相對于初學者或者新加入項目組的程序員來說,對于“1 == 1”這個判斷條件的理解就會產生歧義,但是如果在if語句后加上注釋,如下所示:
if ( 1 == 1 )// always true
通過注釋語句,明顯可以知道,該判斷條件的意思是每次該語句的判斷結果均為true,每次程序運行至此都將進入該判斷語句下的方法體中。
如果是初學者,在不熟悉代碼注釋格式的情況下,可以考慮采用Visual Studio的Visual Assist X插件來統一注釋的格式。在日常開發工作中,對該插件的注釋功能應用較多,但是其他功能相對使用較少。該插件可以自行編輯注釋的格式,也可以對注釋及代碼拼寫進行校正。該插件也可以對Visual Studio的編程界面進行更改,讓程序員在工作的時候更為舒適。
1.6 代碼優化
對于 C#網頁編程,代碼效率的高低主要體現在循環語句和分支判斷語句的使用上,尤其體現在數據庫操作和DLL文件的引用調度上。良好的編程規范,能夠大大提高代碼的運行效率。
對于循環語句,需要減少一切不必要的循環操作。當頁面邏輯完成必要的循環操作后,如果還未達到循環體語句規定的循環次數時,為了減少不必要的服務器資源消耗,提高頁面反應速度,必須跳出循環。對于分支判斷語句,例如if()...else if()...else...以及switch ()...case “xxx”:...,需要將命中次數較多的條件放在判斷語句序列的前列,命中次數較少的判斷語句放在判斷序列的末尾。以
上的編程規范在網站訪問量較少的時候體現不明顯,但是當網站的訪問用戶達到一定數目之后,將會對服務器負載產生較大影響。
在完成一套軟件的開發之后,如果有時間,必須反復不斷的對源代碼進行重新閱讀和檢查,在檢查過程中可以不斷發現源代碼中可以優化的部分。提高了軟件效率的同時,也提高了自己的編程水平,積累了更多的經驗,一舉兩得。
2 結論
總之,上述幾點是我們對于軟件代碼規范中的一些小小的看法。對于編程來說,需要不斷地在實踐中總結經驗,時刻將編程規范運用于軟件開發中,通過實踐,不斷提高自己的編程水平,養成良好的編程習慣,提升代碼的運行效率,增強代碼的優雅性。
參考文獻:
[1] 石曉寧.C/C++風格軟件的編程規范與穩健性探討[J].雷達科學與技術,2005(6):346-349.
[2] 劉洋.編程規范與交流能力是國際化嵌入式軟件人才基本素質[J].電子設計技術,2008(5):143.
程序員培訓總結范文5
撰寫人:___________
日
期:___________
xx年程序員個人工作總結
轉眼這一年又將過去,盡管受到金融危機的影響,但我們部門,我們小組卻是相當辛苦的一年,就感覺從年頭馬不停蹄地忙到了年尾。業務開發,技術能力以下總結下這一年中工作的情況。
【門禁系統】
年初辦公室來安裝了門禁系統,我也折騰了幾個來回。主要是新的門禁系統跟我們舊的打卡系統的共存問題。我建議門禁系統僅僅使用它的門禁功能,不使用他附帶的考勤功能,以免產生系統移植等額外開發開銷問題。幸虧我記錄了老的考勤系統的引腳接線,門禁系統的安裝者沒有接好老的考勤系統的接線,導致老的考勤系統無法使用。幾經聯系往復終于讓兩個系統能夠共存,順利正常的使用。
【視頻設備】
隨后日方提供了Web會議系統,為軟件園開TV會議提供了方便,不用來回奔襲了。Web會議需要的硬件的采購任務交給了我。經過精挑細選選購了價廉物美的設備。在Web會議的調試上也費了周折,起初的幾次應該是由于設置原因導致跟日方的聯絡中回音過大,影響會議效果。在不懈努力之下,終于現在勉勉強強還算過的去,效果還行。
【數據庫講解】
期間有幸給學生們講過一次數據庫的安裝課程。把常用到的sql
server數據庫的安裝,以及oracle的安裝作了演示和簡單講解。在講授的過程自己也有些許領悟。
【xx軟件站】
心里最大的一塊石頭要算xx軟件站了。這個任務可以算是上一年的計劃,一直都沒有得以實施,在xx老師的敦促下決定一定要把這個網站弄出來。一方面現在服務器的資料越來越多,資料都比較分散。新人裝機沒有一個指導很難找到要裝的東西在哪里。老人裝軟件等也很難找,非常有必要有這么一個導航,至少是個方便的列表告訴大家急需的軟件在哪里。經過一段時間的奮斗,這個網站終于“猶抱琵琶半遮面”.雖然比不上什么花哨功能強勁的大站點,至少對于這個網站我也傾吾所學,運用flash,Dreamweaver,ps等技巧灌注心血弄起來了。應該給大家帶了些許方便,在之后的一些系統更新,xx的軟件更新我都及時在了這個內部使用的網站上。期間也感謝xx老師常帶來一些有用實用的軟件資料。
【新人培訓】
今年的新人培訓我依然是培訓的擔當者,感受頗多,有自己的感受,也有對新人的想法??傮w說來是很累的,一方面我擔當一塊的培訓由早年的一周延長到兩周,時間內容都增加了。并且放棄了很多休息時間來關心下新人。自我覺得應該是講的比以往都詳細。于是感慨來了,新人是公司的后備力量,我們培訓的責任更加重大。新人很注重第一感覺,倘若教的不對,錯了,很容易這錯誤的信息便先入為主。我最大的感覺是,有的知識點講過了,解釋過了,舉例子了,演示了,好了,問了都說懂了。立即過一會兒再來問下馬上又說不會了。汗。我覺得兩方面都要總結,新人自身要總結牢記,熟記技術點精髓自身要非常努力。另一方面我們培訓者,可能也要注意方式,方法,講解技巧。有的東西我們是有經驗的,用起來寫起來都曾經有過感官的體驗,但是新人不一樣,新人沒有經歷過這些,一味的填鴨,他們忘的很快。他們需要時間積累,我們在他們入門的時候還要多點關心,多多指導,糾正他們的錯誤。我體驗到了,給新人一定要多講幾遍,講一遍是絕對不行的!且最好講授之間要自己總結些典型的例子,讓新人看一看。
另外年尾也曾去xx院作過兩天review的支持吧,感覺自己也要與時俱進啊。
【服務器配置】
今年我依然是部門這里的服務器總負責。自從服務器越來越多,測試用的,數據的,功能的等等服務器越來越多。對服務器的統籌管理尤為重要。服務器一出問題,好了大家手頭的工作全部都會中斷。重中之重啊!服務器多,管理維護也帶來壓力,所以在討論研究之后,各組的服務器由各小組出人維護負責,我總負責及擔當本組的服務器維護更新備份任務。一年來相安無事。對于日方要求更新的軟件環境等,我都第一時間常常加班加點先自己試點是否成功,成功了則制作教程,在軟件站上,之后全員公告。最有印象的是大夏天超熱的一個周6,日我一人在辦公室由于沒有空調,汗流雨下,索性赤膊上陣。Zc裸衣斗服務器!
【上網權限】
今年對網絡加強了管理,特別對外網的訪問進行了一系列的措施。我覺得效果還是有的,杜絕了員工上班時間上無關緊要網站,提高了工作效率。我對上網權限的管理進行了實施。對誰要開通網絡,進行文檔化地登記,定時開通關閉,做好記錄。
【申請服務器資料】
以上說到服務器越來越多,但是總的來說服務器多歸多,也都有相應的用處。
程序員培訓總結范文6
關鍵詞:offshore;軟件測試;軟件質量
1 日本軟件開發流程
要想在對日軟件外包方面有大的發展,必須深入的了解日本的文化,真正的理解日本軟件的開發流程。日本軟件開發流程分為需求分析、基本設計、詳細設計、編碼、單體測試、結合測試、系統測試、系統導入、運用與維護等步驟。
1.1 需求分析
需求分析是軟件開發的第一步,必須和最終客戶進行接觸,了解客戶的需求,在熟知客戶業務流程的基礎上對客戶進行需求進行定義。本階段工作基本由日方擔當。
1.2 基本設計
基本設計人員需要和客戶進行反復溝通來確定系統的具體功能,包括系統的各個畫面輸入輸出的設計,數據庫設計。本階段一般由日方擔當。
1.3 詳細設計
是編碼之前的最后設計階段,是為實現基本設計各個功能而進行的畫面,模塊及邏輯等的詳細設計。基本上程序員可以根據詳細設計完成編碼。本階段一般由中方擔當,也有些項目由日方擔當。
1.4 編碼
程序員根據詳細設計書進行程序的編寫。在編碼過程中,為了增加程序的可讀性及可維護性,需要適當的增加日文注釋。本階段一般由中方擔當。
1.5 單體測試
單體測試又稱為白盒測試,是編碼完成后,對每個模塊或者畫面,檢測是否符合設計書所要求的功能的測試。該階段需要先根據詳細設計書的功能做成單體測試式樣書。測試者需要嚴格按照測試式樣書來檢測程序是否完成了系統需要的功能以及是否有錯誤。本階段一般由中方完成。
1.6 結合測試
結合測試又稱為IT或者黑盒測試。是單體測試完成后,把各個功能模塊,畫面結合起來進行的測試。使用業務數據來檢測各個模塊,畫面之間是否能夠正常運行,功能是否實現。本階段一般由中方擔當,也有些項目由日方擔當。
1.7 系統測試
系統測試也稱為ST,是將已經完成的軟件,作為整個計算機系統的一個元素,與計算機硬件,外設,數據等元素結合在一起,在模擬實際的運行環境下,對系統的一系列測試。主要用來驗證軟件是否與需求定義不符,以及功能和性能是否滿足要求。本階段一般由日方擔當。
1.8 系統導入
系統導入是系統開發及測試完成后,做成系統導入文檔交付給客戶或實際到客戶現場對客戶進行系統導入及培訓。
1.9 運用與維護
對客戶實際使用過程中出現的問題進行對應。
2 問題及對策
2.1 加強日語學習
對日軟件外包公司最需要的是日語。開發人員對日方提供的設計資料的理解程度直接影響著開發進度和質量。良好的日文讀寫能力起到了至關重要的作用。
2.2 加強交流
由于需求分析和基本設計由日方擔當,正確理解日方的設計思想非常重要。由于在理解上分歧和偏差,導致開發不斷變更不少見。加強雙方交流能有效減少分歧。
2.3 加強文檔管理
日本軟件業極為重視文檔。把每個細枝末節都要以文檔的形式記錄。軟件業發達的印度,文檔管理也相當完備。
日本軟件公司對文檔管理有自己的特點,但大體上相差不大。例如質問票,由中方發給日方的。當設計書內容不清晰時,通過質問票中寫出疑問點發給日方,然后由日方回答,里面有對疑問的詳細解釋。另一種就是指摘,由日方發給中方的。和其他軟件公司一樣,日本人把程序中比較明顯的問題叫做bug,而一些模棱兩可或理解有差異的問題他們叫做指摘,不算作bug。
一般來說,任何外包軟件企業都會采用一些專門管理工具來管理相應的文檔,例如SVN等。
2.4 加強測試
對于日本外包來說,測試是其中非常重要的組成部分,測試的好壞直接影響軟件的質量。尤其是日本人,對軟件質量的要求非常高,這就更加凸顯了測試的重要性。為了提高測試質量,首先要根據設計書做成完整的測試式樣書及測試用例,保證case的全覆蓋及針對性,保證測試的結果和預期的結果完全一致。其次要不斷的進行回歸測試。開發人員對應bug后的代碼要執行回歸測試,保證此次修改的代碼不會影響其他的功能。
[參考文獻]
[1]國家服務外包人力資源研究院.軟件外包概論.l清華大學出版社,2012年1月.