Ⅰ 程序員管理制度
會計電算化內部管理制度
第一章 總 則
一、
會計電算化管理是會計電算化工作的重要內容,為推動集團公司會計電算化工作的健康發展,保證會計信息處理和存儲的合法、安全、准確、可靠,根據>和財政部>、財政部>、財政部>以及廣州市財政局會計電算化的有關規定,特製定本管理辦法。
二、開展會計電算化工作,是促進會計基礎工作規范化和加強財務管理水平,高經濟效益的重要手段和有效措施。各單位要把會計電算化作為提高會計工作質量和建立現代企業制度的一項要工作來抓。
三、逐步提高會計人員的電算化操作水平,使一部分會計人員能夠負責會計軟體的維護,並培養部分會計人員逐步掌握會計電算化數據分析工作。
四、講求效益,處理好及時更新技術設備與勤儉節約的關系,既不盲目追求最新技術和先進設備,也不忽視技術的發展趨勢,造成設備過快陳舊過時。
五、統一應用財務管理軟體。為適應財務管理網路化,提高企業管理水平的要,我集團公司所屬單位統一採用「金蝶k3系統」作為財務管理軟體。並為以後與其他信息系統的聯網做好准備工作,逐步建立以會計電算化為核心的集團公司信息管理系統,做到單位內部信息資源共享,充分發揮會計電算化在經營管理中的作。
第二章 替代手工記賬驗收條件
一、
採用電子計算機替代手工記賬,是指應用會計軟體輸入會計數據,由電子計算機對會計數據進行處理,並列印輸出會計資料。替代手工記賬是會計電算化的基本目標。
二、集團公司獲得市財政局授權成立會計電算化驗收小組,自行驗收集團公司所屬單位的會計電算化工作並報市財局會計處批准。
三、替代手工記賬的單位,應具備以下條件;
1、 配備了「金蝶k3系統」財務軟體、相應的計算機硬體及機房空調設備;
2、
配備了相應的會計電算化工作人員。所有會計從業人員必須具備會計電算化初級培訓資格,使用網路財務軟體單位必須至少具備一名以上會計電算化中級維護員;
3、 執行集團公司內部管理制度;
4、
「金蝶k3系統」(下稱k3系統)與原總公司自行開發的會計核算軟體(以下稱舊軟體)或手工帳表(未電算化單位)並行3個月以上,且新舊核算軟體的結果數據相一致;如果新舊軟體核算結果不一致,並且不一致原因不屬人為錯誤,可由專人查明原因,並向驗收小組提供書面報告;
5、 新舊軟體並行期間,新舊軟體所有核算結果會計資料都必須裝訂成冊,作為會計檔案保存,並作為驗收的主要依據。
6、 記賬憑證類別使用統一記賬憑證,以適應會計電算化工作的需要;
7、 提前一周填寫廣州市財政局會計處規定的標准格式申請表向集團公司會計電算化驗收小組提出書面申請。
第三章 會計電算化崗位責任制
一、 建立會計電算化崗位責任制,要明確每個工作崗位的職責范圍,切實做到「事事有人管,人人有專責,辦事有要求,工作有檢查」。
二、會計電算化崗位可設電算主管、軟體操作員、審核員、電算維護員、電算審查員、數據分析員和出納崗位、檔案管理員。
1、 電算主管:全面負責集團公司會計電算化工作,制訂電算化發展規劃、總體方案及操作人員的許可權控制;
2、
軟體錄入員:編制記賬憑證,並負責記賬憑證和原始憑證等會計數據的輸入工作,輸出記賬憑證、會計賬簿、報表,進行部分會計數據處理工作,要求達到會計電算化初級知識培訓的水平;
3、
審核員:負責對輸入計算機的會計數據(記賬憑證和原始憑證等)進行審核,操作會計軟體登記機內賬簿,對列印輸出的賬簿、報表進行確認;
4、
電算維護員:負責保證計算機硬體、軟體的正常運行,管理機內會計數據;對軟體所需的維護和升級負責同軟體供應商進行聯絡;對財務部門無法解決的硬體問題負責同計算機中心聯系;
5、 電算審查員:負責監督計算機及財務軟體系統的運行,防止利用計算機進行舞弊,此崗位由計算機中心和審計室有關人員兼任;
6、 數據分析員:負責對計算機的會計數據進行分析,提供有關分析資料供領導決策參考。
7、 出納:只能使用「現金管理」模塊。
8、 檔案管理員:負責財務軟體和會計資料檔案的管理。
三、各單位可根據實際情況,在不違反內部牽制制度的前提下,交叉設置各崗位,但要保持相對穩定。出納只能使用「現金管理」模塊,錄入員和審核員必須分設。
第四章 會計電算化操作管理制度
一、 明確規定上機操作人員對財務軟體的操作工作內容和許可權,對操作密碼要嚴格管理,杜絕未經授權人員操作財務軟體;
二、操作人員離開機房前,應執行相應命令退出財務軟體;
三、凡需要修改財務軟體,必須書面提出修改理由、修改內容,報集團公司財務部,由財務部統一向金蝶公司協商;
四、一切修改操作必須在界面菜單下操作,嚴禁擅自打開資料庫強行修改。
五、審核通過或已登帳的機內憑證,系統不提供修改功能。發現已經錄入並審核通過或已登帳的記賬憑證有誤時,只能採用留有痕跡的修改。
第五章 計算機硬體管理制度
一、
計算機硬體及機房網路設備由具有電腦硬體基礎知識的程序員負責管理,集團公司電腦室設兼職計算機病毒監察員對整個集團公司的計算機病毒進行監測。
二、
計算機房工作時必須自覺保持清潔,不得將與工作無關的其他物品(尤其是對電腦正常工作有害的物品及易燃物品)帶入電腦機房。嚴禁在電腦機房內吸煙。嚴禁隨意拔插電腦機房的電源設備。
三、 電腦機房必須配備空調設備,保持適當的溫度、濕度環境。
四、
上機前應首先檢查電源和設備運行是否正常,如發現問題應及時報告,經過電算維護員檢查認可、才能使用。尤其是在計算機設備發生嚴重故障時,不得隨意自行檢修,應及時報告電腦室,等候檢修。
五、 限定伺服器操作權,不得隨意改變伺服器的設置。
六、 遇到突發性停電時,應立即退出系統、關機、關電源;
七、 下班前,必須檢查機器設備是否已關好,關切斷所有電源。
第六章 軟體和數據管理制度
一、會計核算軟體必須有獨立的硬碟或子目錄。不得與其他軟體混淆放置;
二、計算機硬體和軟體出現故障時,電算維護員在確認有關數據已作備份後,可進行排除障礙的有關措施;如無法解決,可根據情況通知計算機中心或金蝶公司有關人員,尋求解決辦法;
三、軟體操作員根據審核通過的原始憑證編制記賬憑證並及時列印,附上原始憑證並經審核員進行二次審核正確後存放保管,以備裝訂存檔;
四、每次輸入的會計憑證都必須備份存檔,月底結賬後即應把當月會計數據備份入磁碟或光碟中儲存管理;
五、科目匯總可以分期或按月進行,其中,八欄式本期科目匯總表可替代總賬賬簿使用;
六、現金、銀行存款日記賬按月列印;其他賬簿每年列印兩次:第一次在上半年結束後30天內列印;第二次在年度結束後45天內列印。根據實際情況,發生業務少的,可滿頁列印,但應保證每年至少列印一次。
七、會計報表的編制、列印輸出要根據財務制度的規定設置公式編制。各種報表需經軟體操作員、審核員、電算主管簽章確認後方為正式報表。報表必須通過設定取數公式編制,不得用非正常手段進行填制;報表的數據必須與結賬結果相符,表內表間數據的勾稽關系必須正確無誤,取數公式一經設定,必須保持不變,如需修改,需保存書面報告。
八、輸出數據未經本單位財務主管許可,嚴禁擅自攜帶外出和外借。
九、確保會計數據和會計軟體的安全保密,防止對數據和軟體的修改;對磁性介質存放的數據要保存雙備份:一份存放檔案室,一份存放財務部;
十、對正在使用的應用會計核算軟體進行修改、升級和計算機硬體設備進行更換等工作,必須保證實際會計數據的連續和安全;由電算維護員辦理審批手續,經過電算主管和計算機中心有關負責人同意後,由電算主管、電算維護員、計算機有關人員進行監督,並要求軟體供應商協同操作;
十一、為防止外來病毒感染,在未進行有效病毒檢測前,任何人不得使用外來磁碟在會計核算用電腦上進行任何操作。不得隨意將會計用磁碟在其他電腦上操作。
十二、會計檔案包括會計資料和會計軟體。存檔的會計檔案,要每年進行檢查、復制,防止由於磁性介質損壞而使會計檔案丟失;
第七章 附則
一、本「管理制度」適用於集團公司正式實行會計電算化的單位。由財務部負責解釋。
二、本制度在執行時如與上級有關財務制度和會計電算化規定有出入,則以上級規定為准。
三、本制度自通過驗收之日起執行。
Ⅱ 系統程序員,主要學會那些技能,如何做好一個系統程序員,需要注意事項有哪些
程序員是一種技術工作,在IT的發展中有相當重要的地位,從底層硬體通訊協議的建立, 到數據傳輸層的處理,到操作系統的建設,到資料庫平台的建設,一直到應用層上各種數 據營銷平台的搭建,程序員在裡面都扮演著舉足輕重的角色並為IT事業的發展做出了巨大 的貢獻。 中國有很多精於編碼的人,但是中國軟體行業,尤其是網路應用開發方面誤區很大,很難形成有規模的軟體開發力量和產品能力,不但比美國差距甚遠,和印度相比也是頗有不如。這些問題不是在於中國程序員的智商和工作努力狀況,也不是在於國家和民間對開發的投入程度,而是很大程度上,有一些對技術,對程序開發,對項目設計方面的思想誤區,這些誤區,導致了軟體行業的產品化能力不足,缺乏規模化和大型復用系統研發能力,可以說,改變認識誤區,是解決軟體行業小作坊模式和個體英雄模式所帶來的局限性 的重要工作。 中國有很多小朋友,他們18,9歲或21,2歲,通過自學也寫了不少代碼,他們有的代碼寫的很漂亮,一些技術細節相當出眾,也很有鑽研精神,但是他們被一些錯誤的認識和觀點左右,缺乏對系統,對程序的整體理解能力,這些人,一個網上的朋友說得很好,他們實際 上只是一些Coding fans,壓根沒有資格稱為程序員,但是據我所知,不少小網路公司的 CTO就是這樣的coding fans,拿著嚇人的工資,做著嚇人的項目,項目的結局通常也很嚇 人。 程序員基本素質: 作一個真正合格的程序員,或者說就是可以真正合格完成一些代碼工作的程序員,應該具 有的素質。 1:團隊精神和協作能力 把它作為基本素質,並不是不重要,恰恰相反,這是程序員應該具備的最基本的,也是最重要的安身立命之本。把高水平程序員說成獨行俠的都是在囈語,任何個人的力量都是有限的,即便如linus這樣的天才,也需要通過組成強大的團隊來創造奇跡,那些遍布全球的為linux寫核心的高手們,沒有協作精神是不可想像的。獨行俠可以作一些賺錢的小軟體發點小財,但是一旦進入一些大系統的研發團隊,進入商業化和產品化的開發任務,缺 乏這種素質的人就完全不合格了。 2:文檔習慣 說高水平程序員從來不寫文檔的肯定是乳臭未乾的毛孩子,良好的文檔是正規研發流程中 非常重要的環節,作為代碼程序員,30%的工作時間寫技術文檔是很正常的,而作為高級 程序員和系統分析員,這個比例還要高很多。 缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇 到極大的麻煩。 3:規范化,標准化的代碼編寫習慣 作為一些外國知名軟體公司的規矩,代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮 進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和 糾錯,也有助於不同技術人員之間的協作。 有些coding fans叫囂高水平程序員寫的代碼旁人從來看不懂,這種叫囂只能證明他們自 己壓根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質需求。 再看看整個linux的搭建,沒有規范化和標准化的代碼習慣,全球的研發協作是絕對不可 想像的。 4:需求理解能力 程序員需要理解一個模塊的需求,很多小朋友寫程序往往只關注一個功能需求,他們把性能指標全部歸結到硬體,操作系統和開發環境上,而忽視了本身代碼的性能考慮,有人曾經放言說寫一個廣告交換程序很簡單,這種人從來不知道在百萬甚至千萬數量級的訪問情況下的性能指標是如何實現的,對於這樣的程序員,你給他深藍那套系統,他也做不出太極鏈的並訪能力。性能需求指標中,穩定性,並訪支撐能力以及安全性都很重要,作為程序員需要評估該模塊在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險和惡意攻擊的可能性。就這一點,一個成熟的程序員至少需要2到3年的項目研發和跟蹤經 驗才有可能有心得。 5:復用性,模塊化思維能力 經常可以聽到一些程序員有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復寫 一些沒有任何新意的代碼,這其實是中國軟體人才最大浪費的地方,一些重復性工作變成 了熟練程序員的主要工作,而這些,其實是完全可以避免的。 復用性設計,模塊化思維就是要程序員在完成任何一個功能模塊或函數的時候,要多想一些,不要局限在完成當前任務的簡單思路上,想想看該模塊是否可以脫離這個系統存在,是否可以通過簡單的修改參數的方式在其他系統和應用環境下直接引用,這樣就能極大避免重復性的開發工作,如果一個軟體研發單位和工作組能夠在每一次研發過程中都考慮到這些問題,那麼程序員就不會在重復性的工作中耽誤太多時間,就會有更多時間和精力投 入到創新的代碼工作中去。 一些好的程序模塊代碼,即便是70年代寫成的,拿到現在放到一些系統裡面作為功能模塊 都能適合的很好,而現在我看到的是,很多小公司軟體一升級或改進就動輒全部代碼重 寫,大部分重復性工作無謂的浪費了時間和精力。 程序員應具備的素質中 6:測試習慣 作為一些商業化正規化的開發而言,專職的測試工程師是不可少的,但是並不是說有了專職的測試工程師程序員就可以不進行自測;軟體研發作為一項工程而言,一個很重要的特點就是問題發現的越早,解決的代價就越低,程序員在每段代碼,每個子模塊完成後進行認真的測試,就可以盡量將一些潛在的問題最早的發現和解決,這樣對整體系統建設的效 率和可靠性就有了最大的保證。 測試工作實際上需要考慮兩方面,一方面是正常調用的測試,也就是看程序是否能在正常調用下完成基本功能,這是最基本的測試職責,可惜在很多公司這成了唯一的測試任務,實際上還差的遠那;第二方面就是異常調用的測試,比如高壓力負荷下的穩定性測試,用戶潛在的異常輸入情況下的測試,整體系統局部故障情況下該模塊受影響狀況的測試,頻發的異常請求阻塞資源時的模塊穩定測試等等。當然並不是程序員要對自己的每段代碼都需要進行這種完整測試,但是程序員必須清醒認識自己的代碼任務在整體項目中的地位和各種性能需求,有針對性的進行相關測試並盡早發現和解決問題,當然這需要上面提到的 需求理解能力。 7:學習和總結的能力 程序員是人才很容易被淘汰,很容易落伍的職業,因為一種技術可能僅僅在三兩年內具有 領先性,程序員如果想安身立命,就必須不斷跟進新的技術,學習新的技能。 善於學習,對於任何職業而言,都是前進所必需的動力,對於程序員,這種要求就更加高 了。 但是學習也要找對目標,一些小coding fans們,他們也津津樂道於他們的學習能力,一會學會了asp,一會兒學會了php,一會兒學會了jsp,他們把這個作為炫耀的資本,盲目的追逐一些膚淺的,表面的東西和名詞,做網路程序不懂通訊傳輸協議,做應用程序不懂中斷向量處理,這樣的技術人員,不管掌握了多少所謂的新語言,永遠不會有質的提 高。 善於總結,也是學習能力的一種體現,每次完成一個研發任務,完成一段代碼,都應當有 目的的跟蹤該程序的應用狀況和用戶反饋,隨時總結,找到自己的不足,這樣逐步提高, 一個程序員才可能成長起來。 一個不具備成長性的程序員,即便眼前看是個高手,建議也不要選用,因為他落伍的時候 馬上就到了。 具備以上全部素質的人,應當說是夠格的程序員了,請注意以上的各種素質都不是由IQ決 定的,也不是大學某些課本里可以學習到的,需要的僅僅是程序員對自己工作的認識,是 一種意識上的問題。 那麼作為高級程序員,以至於系統分析員,也就是對於一個程序項目的設計者而言,除了 應該具備上述全部素質之外,還需要具備以下素質: 第一,需求分析能力 對於程序員而言,理解需求就可以完成合格的代碼,但是對於研發項目的組織和管理者, 他們不但要理解客戶需求,更多時候還要自行制定一些需求,為什麼這么說呢? 一般而言,進行研發任務,也許是客戶提出需求,也許是市場和營銷部門提出的需求,這時候對於研發部門,他們看到的不是一個完整的需求,通常而言,該需求僅僅是一些功能上的要求,或者更正規些,可能獲得一個完整的用戶視圖;但是這都不夠,因為客戶由於非技術因素多一些,他們可能很難提出完整和清晰,或者說專業性的性能需求,但是對於項目組織者和規劃者,他必須能夠清醒認識到這些需求的存在並在完成需求分析報告的時候適當的提出,同時要完整和清晰的體現在設計說明書裡面,以便於程序員編碼時不會失 去這些准則。 程序設計者必須正確理解用戶需求所處的環境,並針對性做出需求的分析,舉例而言,同樣一個軟體通過ASP租用方式發布和通過License方式發布,性能需求可能就是有區別的,前者強調的是更好的支撐能力和穩定性,而後者則可能更強調在各種平台下的普適性和安 裝使用的簡捷性。 第二,項目設計方法和流程處理能力 程序設計者必須能夠掌握不少於兩到三種的項目設計方法(比如自頂至下的設計方法,比 如快速原型法等等),並能夠根據項目需求和資源搭配來選擇合適的設計方法進行項目的 整體設計。 設計方法上選擇不當,就會耽誤研發周期,浪費研發資源,甚至影響研發效果。 一個程序設計者還需要把很多功夫用在流程圖的設計和處理上,他需要做數據流圖以確立 數據詞典;他需要加工邏輯流圖以形成整體的系統處理流程。 一個流程有問題的系統,就算代碼多漂亮,每個模塊多精緻,也不會成為一個好的系統。 當然,做好流程分析並選擇好項目設計方法,都需要在需求分析能力上具有足夠的把 握。 第三,復用設計和模塊化分解能力 這個似乎又是老調重談,前面基本素質上不是已經說明了這個問題嗎? 作為一個從事模塊任務的程序員,他需要對他所面對的特定功能模塊的復用性進行考慮,而作為一個系統分析人員,他要面對的問題復雜的多,需要對整體系統按照一種模塊化的分析能力分解為很多可復用的功能模塊和函數,並針對每一模塊形成一個獨立的設計需求。舉個例子,好比是汽車生產,最早每輛汽車都是獨立安裝的,每個部件都是量身定做的,但是後來不一樣了,機器化大生產了,一個汽車廠開始通過流水線來生產汽車,獨立部件開始具有一定的復用性,在後來標准化成為大趨勢,不同型號,品牌甚至不同廠商的汽車部件也可以進行方便的換裝和升級,這時候,汽車生產的效率達到最大化。軟體工程也是同樣的道理,一個成熟的軟體行業,在一些相關項目和系統中,不同的部件是可以隨意換裝的,比如微軟的許多桌面軟體,在很多操作模塊(如打開文件,保存文件等等)都是復用的同一套功能模塊,而這些介面又通過一些類庫提供給了桌面應用程序開發者方便 掛接,這就是復用化的模塊設計明顯的一個佐證。 將一個大型的,錯綜復雜的應用系統分解成一些相對獨立的,具有高度復用性的,並能僅 僅依靠幾個參數完成數據聯系的模塊組合,是作為高級程序員和系統分析員一項最重要的 工作,合適的項目設計方法,清晰的流程圖,是實現這一目標的重要保證。 第四,整體項目評估能力 作為系統設計人員,必須能夠從全局出發,對項目又整體的清醒認識,比如公司的資源配置是否合理和到位,比如工程進度安排是否能最大化體現效率又不至於無法按期完成。評估項目整體和各個模塊的工作量,評估項目所需的資源,評估項目可能遇到的困難,都需要大量的經驗積累,換言之,這是一種不斷總結的累計才能達到的境界。在西方一些軟體系統設計的帶頭人都是很年長的,比如4,50歲,甚至更老,他們在編碼方面已經遠遠不如年輕人那樣活絡,但是就項目評估而言,他們幾十年的經驗積累就是最重要和寶貴的財富。中國缺這么一代程序員,主要還不是缺那種年紀的程序員,而是那種年紀的程序員基本上都是研究單位作出來的,都不是從專業的產品化軟體研發作出來的,他們沒有能積累 那種產品化研發的經驗,這也是沒有辦法的事情。 程序員應具備的素質下 第五,團隊組織管理能力 完成一個項目工程,需要團隊的齊心協力,作為項目設計者或研發的主管人,就應當有能 力最大化發揮團隊的整體力量,技術管理由於其專業性質,不大同於一般的人事管理,因 為這裡面設計了一些技術性的指標和因素。 首先是工作的量化,沒有量化就很難做到合適的績效考核,而程序量化又不是簡單的代碼 行數可以計算的,因此要求技術管理人員需要能真正評估一個模塊的復雜性和工作量。 其次是對團隊協作模式的調整,一般而言,程序開發的協作通常分為小組進行,小組有主 程序員方式的,也有民主方式的,根據程序員之間的能力水平差距,以及根據項目研發的 需求,選擇合適的組隊方式,並能將責權和成員的工作任務緊密結合,這樣才能最大發揮 組隊的效率。 一個代碼水平高的人,未必能成為一個合格的項目研發主管,這方面的能力欠缺往往是容 易被忽視的。 綜上可以看到,作為一個主管研發的負責人,一個項目設計者,所需要具備的素質和能力並不是程序代碼編寫的能力,當然一般情況下,一個程序員通過不斷的總結提高達到了這種素質的時候,他所具有的代碼編寫能力也已經相當不簡單了,但是請注意這裡面的因果關系,一個高水平的項目設計者通常已經是代碼編寫相當優秀的人了,但是並不是一個代碼相當優秀的程序員就可以勝任項目設計的工作,這裡面存在的也不是智商和課本的問題,還是在於一個程序員在積累經驗,逐步提升的時候沒有意識到應當思考哪方面的東西,沒有有意識的就項目的組織和復用設計進行揣摩,沒有經常性的文檔習慣和總結習 慣,不改變這些,我們的合格的項目設計者還是非常欠缺。 另外,為防止有無聊的人和我較真,補充一點,本文針對目標是作商業化的軟體項目和工程,那些科研機構的編程高手,比如演算法高手,比如圖象處理高手,他們的工作是研究課題而非直接完成商業軟體(當然最終間接成為商業產品,比如微軟研究院在作的研究課題),因此他們強調的素質可能是另外的東西,這些人(專家),並不能說是程序員,不 能用程序員的標准去衡量。 最後補充一點東西,一個軟體項目研發的設計流程是怎樣的呢?以通常標準的設計方法為 例,(不過筆者喜歡快速原型法)。 第一個步驟是市場調研,技術和市場要結合才能體現最大價值。 第二個步驟是需求分析,這個階段需要出三樣東西,用戶視圖,數據詞典和用戶操作手 冊。 用戶視圖是該軟體用戶(包括終端用戶和管理用戶)所能看到的頁面樣式,這裡麵包含了 很多操作方面的流程和條件。 數據詞典是指明數據邏輯關系並加以整理的東東,完成了數據詞典,資料庫的設計就完成 了一半多。 用戶操作手冊是指明了操作流程的說明書。 請注意,用戶操作流程和用戶視圖是由需求決定的,因此應該在軟體設計之前完成,完成 這些,就為程序研發提供了約束和准繩,很遺憾太多公司都不是這樣做的,因果顛倒,順 序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。 需求分析,除了以上工作,筆者以為作為項目設計者應當完整的做出項目的性能需求說明 書,因為往往性能需求只有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或 公司市場部門)能夠有真正的溝通和了解。 第三個步驟是概要設計,將系統功能模塊初步劃分,並給出合理的研發流程和資源要求。作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這種方法是因為涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是並不是說詳細設計說明書不重要,事實上快速原型法在完成原型代碼後,根據評測結果和 經驗教訓的總結,還要重新進行詳細設計的步驟。 第四個步驟是詳細設計,這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把具體的模塊以最』干凈』的方式(黑箱結構)提供給編碼者,使得系統整體模塊化達到最大;一份好的詳細設計說明書,可以使編碼的復雜性減低到最低,實際上,嚴格的講詳細設計說明書應當把每個函數的每個參數的定義都精精細細的提供出來,從需求分析到概要設計到完成詳細設計說明書,一個軟體項目就應當說完成了一半了。換言之,一個大型軟 件系統在完成了一半的時候,其實還沒有開始一行代碼工作。 那些把作軟體的程序員簡單理解為寫代碼的,就從根子上犯了錯誤了。 第五個步驟是編碼,在規范化的研發流程中,編碼工作在整個項目流程里最多不會超過1/ 2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提高,編碼時不同模塊之間的進度協調和協作是最需要小心的,也許一個小模塊的問題就可能影響了整體進度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發過程中都出現過。編碼時的相互溝通和應急的解決手段都是相當重要的,對於程序員而言,bug永遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候 嗎?從來沒有! 第六個步驟是測試 測試有很多種: 按照測試執行方,可以分為內部測試和外部測試 按照測試范圍,可以分為模塊測試和整體聯調 按照測試條件,可以分為正常操作情況測試和異常情況測試 按照測試的輸入范圍,可以分為全覆蓋測試和抽樣測試 以上都很好理解,不再解釋。 總之,測試同樣是項目研發中一個相當重要的步驟,對於一個大型軟體,3個月到1年的外 部測試都是正常的,因為永遠都會又不可預料的問題存在。 完成測試後,完成驗收並完成最後的一些幫助文檔,整體項目才算告一段落,當然日後少 不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟體的運營 狀況並持續修補升級,知道這個軟體被徹底淘汰為止。 寫這些步驟算不上賣弄什麼,因為實話講我手邊是一本《軟體工程》,在大學里這是計算機專業的必修課程,但是我知道很多程序員似乎從來都只是熱衷於什麼《30天精通VC》之類的,他們有些和我一樣游擊隊出身,沒有正規學過這個專業,還有一些則早就在混夠學 分後就把這些真正有用的東西還給了老師。 網上現在也很浮躁,一些coding fans亂嚷嚷,混淆視聽,實際上真正的技術專家很少在網上亂發帖子的,如筆者這樣不知天高地厚的,其實實在是算不上什麼高手,只不過看不慣這種對技術,對程序員的誤解和胡說,只好挺身而出,做撥亂反正之言,也希望那些還 沉迷於一些錯誤人士的coding fans們能認真想想,走到正途上,畢竟那些聰明的頭腦還 遠遠沒有發揮應有的價值。
Ⅲ 程序員怎樣才能走上管理崗位
想接受挑戰首先要認識自己,看自己是否適合做管理不防考慮以下幾點:對待問題是否公平公正,是否能夠犧牲自我的利益顧全大局,是否有洞察力,是否能夠了解組員的想法,是否能夠做出正確的決策在沒有條件許可的前提下……另外在該職責裡面有兩個重要的事情要做,一件事情是幫著老闆幹活,另一件事是替組員說話幫助他們爭取相應的權益,所以夾心層的處理方式是處理好承擔與託付,即責任的承擔和信任的建立。
技術管理者的技術不是最資深的,但應該具備專業的能力,並且是某個領域的技術和業務專家,因為一個人的能力是有限的,管理上有所建樹便註定了技術道路上深度有限,但他有自己的技術見解並能夠在需求把控、產品設計、架構設計中給予建設性意見並作出正確的決策,也只有這樣才不會變成空中樓閣的大領導,擁有良好的技術基礎是贏得你的團隊信任的前提,也是自己能夠建設一個可信任的團隊的前提。作為管理者只有得到大家的認可,大家的信任,才能進而營造一個可信任的團隊,使得各個部門之間互信,協調一致。而得到大家的信任作為管理者必須要有一定技術基礎,也只有基於該基礎才能做出正確的判斷力,才能夠確保團隊整體方向的正確性。
建議每個技術人員能夠經歷項目經理的角色,嘗試一下管理團隊,看一下有哪些問題要解決,換一種角度思考你所參與的項目,培養自己的大局觀,大局觀重要性在於能夠讓個體將一個事物分析的更清晰,只有站得高才能看得遠,大局觀對個人而言很重要,擁有大局觀會使個體在把握處理事情上更公正清晰,並更有利於作出正確的決策使得工作向良性方向發展。對於技術學習本身也需要融會貫通、舉一反三,這也是一種意義上的大局觀,所以思考角度決定著自己在其發展方向前進的遠近,不要只是將自己局限於技術細節當中。
認識自己很重要,因為只有自己做了擅長的事情才能夠事半功倍,游刃有餘,改變一個人太難,與其效果甚微的改掉缺點不如發揮自己的優勢。國外有一種創新的思維,認為缺點和優勢其實是相輔相成的,你的缺點正好反映出了你擁有它對應的優點,換一個角度揚長避短,真的就事半功倍了。想一想對於組員又何嘗不是呢,與其說服改變一個人不如知人善用,揚長避短。
Ⅳ 怎樣做一名高效率程序員
很多人問我,你怎麼效率那麼高,工作很忙,又要帶娃,還寫博客,還有時間運動。今天就寫寫這個話題:程序員如何提高工作效率
保持高工作效率,我覺得主要有一下4個方面,希望能對大家有幫助。
集中目標
工作列表
不論是開發還是設計,還是其他職業,工作列表都很重要,工作目標很明確。工作的時候才能格外專注,才不會走神。
用自己最熟悉的工具(我用Evernote),把待辦工作列表(今天要做什麼)記錄下來,很重要的一點是記錄分解後的小目標(分解任務也是一個很重要的能力)。同時也保持工作中產生的新的問題(任務),經常性地調整當前工作任務列表,根據重要性對這些任務進行劃分,經常想著那些最重要的問題。
專注目標
專注目標不是那麼容易做到的,需要學會分離與當前無關的任務/問題,工作中經常會碰到的問題可以首先尋找簡單可用可靠的方案,並將心中的疑慮記錄下來,集中成一個列表,工作之外翻翻書,系統思考和學習,而不會因為這個問題而叉開思路對相關的內容研究一番。總之,專注當前的任務,把新問題記錄下來,回頭再專心攻克。
學會避繁就簡,在基本功的增強後,會發現很多問題可以簡單閱讀或查找文檔,或瀏覽問題相關的庫的源碼解決;
學會簡化問題
無論是在廣義的工作方法/工作態度上,還是在針對具體問題上,很重要的一個個人能力就是化繁為簡了。化繁為簡是所有工作方法/軟體設計的核心。將那些可以砍掉的工作砍掉,做到盡可能地簡單。
從工作方法和態度上來講,真正需要去做的工作才值得去做,大力砍掉那些不應該在當前工作中處理的事情。例如不必要的優化,不必要的擴展性,不必要的性能,不必要的功能,可以不要的技術,不必要的流程,不必要的文檔,統統砍掉,一切可以沒有的全都不能有。
工作中也可能遇到非關鍵的難題,通常繞過它們,使用更簡單的方案就是了。糾纏於這些不重要的難題,最容易浪費時間。
從設計/實現來講,最好的方案就是最簡單直接、一眼就能看懂的方案。而且通常最簡單直接的方式,通常性能也最好。
基本功
基本功的內容十分復雜。
第一項基本功是對整個計算機體系的理解,對操作系統/虛擬機/資料庫本質的理解,對語言基礎類和庫的理解,這些是核心基本功。
第二項基本功是學習能力。通過快速閱讀核心文檔理解核心思想,然後其他的東西總是能從文檔中查到就行。細枝末節的東西,即學即用,學過就忘可也。
第三項基本功是文檔、代碼、資料的搜索和收集,技術問題建議大家用Google搜索,有意識的整理出自己的代碼庫。
工具
選擇工具核心標准,就是簡單樸素可信賴,如果一個工具出幾次詭異現象,那就乾脆丟掉它。
熟悉工具,實際上我們工作中,就是和各種各樣工具打交道,各種IDE,編輯器,版本管理工具,命令行終端,TODO工具等等。要想在工作中如行雲流水,一定要熟悉工具,包括工具快捷鍵,命令,原理等等。
寫自己工具,很多時候,我們需要重復的做一件事情,當你做第2遍,第3遍的時候,就應該想一想,能不能自動化,很多簡單的幾句shell就可以搞定,麻煩的一點的,可以先記錄下來。比如,我就寫了非常多的腳本:一個命令反編譯APK並查看源碼、提取當前版本號打git tag並提交等等。很多時候幾分鍾到幾十分鍾的事情可以壓縮到幾秒鍾完成,也避免了對工作的打斷。
Ⅳ 作為一名程序員,從事技術管理工作,應該注意哪些事情
應該要注意向團隊之中的前輩學習,因為團隊之中的前輩在編程方面具有很多的技巧可以向他們進行相映的討教,其次,在數據方面一定要認真仔細,因為數據層面涉及到的獲取數據,數據書寫以及數據修改等這些相應的東西都一定要校準,最後在流程方面一定要認真仔細,要多做筆記,因為這樣才能夠去更好的熟悉流程。
在編程這個行業裡面,程序員需要學習的東西非常的多,但是最為重要的東西還是必須要向前輩學習,因為編程的內容和其他行業具有很大的區別,基本上在團隊裡面的前輩擁有著很多的經驗,在編程方面能夠授予很多的技巧性的東西。尤其是針對於公司內部的編寫規范,基本上這些東西都存在著很多非常復雜的細節,所以作為公司的新人首先要做的就是要向公司的前輩請教,究竟哪些東西是不需要去弄的,做好這些相應的東西才能夠在前輩的幫助之下學會自己該掌握的技能,才能夠在有技巧的東西之上,形成自己的新東西。
一名優秀的程序員一定要學會方方面面的內容,更是要再踏入公司的時候向前輩學習相關的經驗,因為只有這樣才能夠讓自己得到更快的成長,才能夠在時間的積累之下,成為一名優秀的程序員。
Ⅵ 怎樣管理軟體開發團隊
高效軟體開發團隊的特徵
高效的軟體開發團隊是建立在合理的開發流程及團隊成員密切的合作的基礎之上的,成員共同的迎接挑戰、有效的計劃、協調和管理各自的工作以至完成明確的目標,高效的開發團隊具有如下特徵:
1、 具有明確且有挑戰性的共同目標 一個具有明確的而且有挑戰性目標的團隊比目標不明確或不具有很大的挑戰性目標的團隊效率高得多,通常技術人員往往會因為完成了某個明確的任務,而且這個任務的完成具有挑戰性的意義而感到自豪,反過來團隊成員為了獲取這種自豪的感覺而更加積極的工作從而帶來團隊開發的高效率,如作為系統設計人員很清楚的知道在什麼時候要做到什麼,什麼時候開始做,什麼時候必須完成,為了完成工作必須面臨哪些挑戰,怎麼解決這些困難等為設計出一個高質量的軟體項目提供了重要保證,而模模糊糊的去設計一個系統或模模糊糊的就去編寫代碼是非常危險的,而且會為此付出高昂代價,因此高效的軟體開發團隊具有挑戰性的共同目標。
2、 團隊具有很強的凝聚力 在一個高效的軟體開發團隊中,成員們凝聚為一個整體共同進行工作,他們是相互支持、互相交流、互相尊重的,而不是相互推卸責任、保守、相互指責的,在一些散亂的開發團隊中往往存在這樣的問題,一些程序員是比較保守的,明明知道另外的模塊中需要用到一段與自己已經編寫完成但有些難度的程序代碼,他也不願拿出來給其它程序員共享,不願與系統設計人員交流,這樣給項目的進度造成了些不可度量的因素。
3、 具有融洽的交流環境 在一個開發團隊中,每個人行使自己的職責,如需求分析人員制定需求規格說明、系統設計人員做系統概要設計和詳細設計、項目經理配置項目開發環境並且制定項目計劃等,但每個人的工作不可能做到完美的,如系統概要設計的文檔可能有個別地方詞不達意,做詳細設計的時候就可能會造成誤解,項目經理制定計劃時可能忽略了某種風險的存在而造成執行者過於緊張的壓力等等情況都需要大家通過交流、反饋的手段然後協商解決的,因此高效的軟體開發團隊是具有融洽的交流環境的,而不是那種簡單的命令執行式的。
4、 具有共同的工作規范和框架 高效軟體開發團隊具有規范性及共同框架的工作,對於項目管理具有規范的項目開發計劃,對於分析設計具有規范和統一框架的文檔及審評標准,對於代碼具有程序規范條例,對於測試有規范且可推理的測試計劃及測試報告等等。並且所有成員都明白自己的職責,知道必須完成什麼計劃?由誰來完成?什麼時候開始?什麼時候結束?按什麼順序?等,總之一個高效的開發團隊無論是工作內容還是工作流程都具有不同程度的規范性和標准風格的框架。
5、 採用合理的開發過程 軟體的開發不同於一般商品的研發和生產,開發過程中會面臨著各種難以預測的風險,比如需求的變化、人員的異動、技術的瓶頸、同行的競爭等,高效的軟體開發團隊往往是採用了合理的開發過程去控制開發過程中的風險、提高軟體的質量、降低開發費用,這樣的團隊會根據自身的必要程度決定要執行哪些工作?如配置管理、資源管理、版本控制、代碼控制等,團隊還合理的分劃並定義開發過程的里程碑,決定每項活動內容的底線和審評標准,決定各項活動的先後關系或迭代的關系等。總之高效的軟體開發團隊的開發過程的原則是高效率、高質量、低成本。
Ⅶ 外包與小公司的程序員如何逆襲程序員該如何規劃自己的職業生涯
我認為程序員需要做好自己的人生規劃和職業規劃,同時也需要在上班初期就有屬於自己的目標。
對於每個程序員來說,程序員找到自己的工作之後,因為程序員在工作初期的待遇會比較好,所以很多人可能會徹底放鬆下來,同時也沒有屬於自己的職業規劃。在這種情況之下,程序員的年齡變大的時候,程序員就會發現自己的競爭能力在不斷減弱,同時也會遭遇所謂的30歲危機和35歲危機。對於任何一個程序員來講,程序員首先需要了解自己的真實優勢,同時也需要根據自己的優勢來制定屬於自己的職業生涯。
除此之外,我覺得每個程序員都需要盡可能做好相應的技術積累,特別是在自己面臨換崗或者換工作的情況下,一定的技術積累可以幫助自己度過職場危機。
Ⅷ 剛當上項目經理,如何與組內的程序員進行有效溝通
溝通是一門學問,如何有效的溝通更是門必修課。模仿、聆聽、真誠、注意肢體語言、就事論事、保持情緒這些方面在和人溝通的時候都要注意。鑒於你剛剛當上項目經理,有很多東西需要與組內成員磨合,所以進行有效的溝通是很必要的,我簡單的提供下幾點幫助,希望能對你有用。
4、戒講假話。有喜報喜,有憂報憂,如實反映情況,不隱瞞自己的觀點。
5、戒講臟話。文明禮貌語言美,在任何場合都不講罵人的話、粗魯的話、低級趣味的話。
6、戒講文理不通的話。說話要合乎邏輯、合乎語法,講究修辭,積極維護祖國語言的純潔和健康。