從畢業生到程式設計師:使用C#開發商業軟體

從畢業生到程式設計師:使用C#開發商業軟體

本書的初衷就是幫助企業建立新人在入職2年多的時間中關於解決職場新人面臨的編程技術技能缺乏、軟體行業思想、職場規劃等很多問題的系統培養理念和制度。因學生在學校里開發的軟體是學習和學術性的軟體,本書也能幫助畢業生們能儘快地從學習型的軟體開發轉換為商業性的軟體開發,儘早形成實際生產力,這對畢業生和企業都是有好處的。

基本介紹

  • 書名:從畢業生到程式設計師:使用C#開發商業軟體
  • 作者:袁永福
  • ISBN:978-7-121-18842-8
  • 定價:69.00元
  • 出版時間:2013年1月
內容提要,精彩節摘,前言,目錄,

內容提要

本書的初衷就是幫助企業建立新人在入職2年多的時間中關於解決職場新人面臨的編程技術技能缺乏、軟體行業思想、職場規劃等很多問題的系統培養理念和制度。因學生在學校里開發的軟體是學習和學術性的軟體,本書也能幫助畢業生們能儘快地從學習型的軟體開發轉換為商業性的軟體開發,儘早形成實際生產力,這對畢業生和企業都是有好處的。
本請抹埋書並不想成為面試寶典之類的書;面試寶典是應試教育在企業面試中的延伸,只是為了應付幾十分鐘的面試考試,治標不治本。本書確實想幫助畢業生順利地度過兩年的程式設計師職場新手階段,讓更多的職場新星確定正確的方向,少走彎路,早日騰飛。

精彩節摘

1.1 高校畢業生就業途徑
目前高校畢業生就業除了求職找工作外,筆者還觀察到以下幾個途徑:
(1)在父母等親屬的幫助下就業。這或多或少地涉及社會公平的問題,而且對於大多數人這蒸擊種途徑無法找到理想端疊射符的工作。
(2)考研考博,延長在學校中的時間,拖延就業問題。讀取更高的學歷而成為高端科研人員只能是少數人,否則就不叫高端科研人員,而叫大眾科研人員。這種拖延實際上是暫時逃避最終不可迴避的就業問題,對於大多數人這種方式不可取。
(3)考公務員。對於絕大多數人,考公務員基本上難如登天,比買彩票致富更不靠譜。
(4)出國留學。出國耗資巨大,是大多數家庭所無法承受的,而且在很多情況下是將涉世不久的年輕人扔到萬里之外過著放羊甩廈閥艱式的生活,這存在難以控制的風險。對於大多數人這種方式不可行。
(5)創業。國家和學校對大學生創業提供了很好的政策甚至資金支持。但在有中國特色的社會主義市場經濟環境下,大學畢業生沒積累、沒經驗、沒關係,自主創業成功率很低,筆者估計不會超過5%。因此大學生創業不會解決多少就業問題,不過筆者還是建議有條件的大學畢業生創業,創業無論勝敗都可以給人生鍍上一層金,有著莫大的好處。
(6)嫁人。對於女大學生可以嫁人逃避就業問題。不過筆者認為這是把自己人生的幸福完全建立在另外一個人的基礎上,風險比較高,嫁人需謹慎。還是自己爭取就業來實現炒櫃霸生存和發展的風險比較小。嫁人這種逃避就業的方式不能普及。
(7)下基層。大學畢業生可以回響國家號召,去西部,下基層當村官。其實筆者個人覺得有條件的話回老家當村官還是不錯的。不過這種就業觀念得不到普及,而且制度上基層比一線城市更不公平,因此大多數畢業生並不願意下基層。
因此求職找工作將成為大多數大學畢業生解決自身就業問題的主要途徑,而且解決就業問題主要靠自己,無法完全依賴其他幫助。
由於中國經濟仍處於發展階段,相對於上千萬的大學畢業生、數億的勞動人口,能提供的就業崗位比較少,人力資源供過於需的問題較為嚴重,於是形成了巨大的失業人口量,這是至少10年內所難以根本解決的;而高校畢業生主要通過人才市場求職找工作的方式實現就業,於是招聘會上形成火爆場面。
人力資源較為嚴重的供大於需,失業人數巨大,這是中國基本國情;目前學校的教育談不上素質教育,與企業的實際需求有一定的差距,這是中國教育的基本情況。由於歷史積累的往屆高校畢業生和應屆畢業生的立翻霉數量太過巨大,因此高校畢業生的就業問題至少在10年內是難於解決的。所謂“畢業即失業”的現象將普遍存在,相信在未來很長一段時間內,就業將成為高年級大學生最為焦慮的問題。
根據筆者調研,發現很多軟體企業招不到中意的畢業生,存在招到一批畢業生不久又開樂檔騙除一批的現象;而畢業生卻在茫茫就業機會中找不到合適的工作,雙方都存在矛盾。發生這種情況的原因比較複雜,其中至少一半的原因就是現有的正規學校教育與社會實際需求的脫節,這個矛盾也將長期存在。
在這種大背景下,筆者沒有能力系統而完整地解決高校畢業生就業問題,只能對高校畢業生實現就業提供一些通過個人多年從事計算機軟體開發職場經驗總結而成的指導建議,希望能對高校畢業生順利就業提供一些幫助。
1.2 計算機專業畢業生的就業問題
這裡首先討論當下比較嚴重的畢業生就業問題。畢業生就業問題比較嚴重。
畢業生就業問題也是由於畢業生本身引起的。筆者對南京的軟體公司做過一些調查,企業管理者對畢業生最為頭疼的不是技術能力,而是其思想意識,特別是其敬業精神和團隊合作精神嚴重不足。尤其是現在開始出現90後畢業生,他們中有一些人思想前衛獨立,桀驁不馴,以自我為中心,對工作單位是想來就來想走就走,企業管理起來很頭疼,這讓企業對畢業生用怕了,因此即使招不到合適的人也不大願意使用唾手可得的畢業生。
出現這種問題,畢業生和企業雙方都有原因,本書是面向畢業生的,因此主要說明畢業生如何解決這個問題。
所謂敬業精神就是把工作作為事業來做,而不僅僅是為了賺錢餬口。
一些企業使用大學畢業生大致會有以下步驟:首先是在人才市場和學校中招聘實習生或畢業生,很多畢業生沒有實際的能力,而且還需要派老手培訓他們,這些都是不小的成本,而且企業還必須為這些畢業生開工資,因此工資不高,也就幾百元一個月。
經過一段時期的適應和培訓,畢業生們開始具有一定實際的能力了,此時雙方產生了利益衝突。
從企業的角度看,由於前期畢業生培訓已經投入了大量的成本,此時即使畢業生具有一定的實際生產力,也不大願意給畢業生開出較高的工資,很可能低於市場行情。
從畢業生的角度看,由於其已經具有一定的能力,具有一定的自信心,此時企業開出的工資低於市場行情,就會導致畢業生跳槽,而且現實中確實有很多畢業生抱著先就業再擇業的思想乾第一份工作,忠誠度不夠,也容易出現跳槽。
這個時候畢業生跳槽,這使得企業將培訓畢業生的投入變成為其他企業做嫁衣了,因此企業不大願意做畢業生培訓,而更願意招聘有工作經驗、有實際能力的人;而畢業生沒有工作經驗就沒有實際能力,這樣就形成一個充滿矛盾的循環“企業只找有經驗的人→畢業生找不到工作→人才市場無法補充有經驗的人士→企業招不到合適的人”。
由於存在企業和畢業生的利益之爭,就造成企業和畢業生雙向選擇不搭配的情況。
對此,筆者建議畢業生首先清楚自己的問題,一定要逐漸建立起自己的敬業精神和團隊合作精神,這樣就能解決就業的主要問題。現在招人的大戶是中小民營企業,是有著比較公平的職場競爭環境的,不是“拼爹”,而是拼自己的實力。有能力、有良好職場精神的畢業生一定能很快被企業所發現和重用。
對於這個問題,企業、學校、畢業生三者中,畢業生需要做出最多的努力,因為只有自己才能根本解決自己的問題。指望企業、學校替畢業生解決這些問題是不切實際的。

前言

隨著高等院校的擴招,高校畢業生也越來越多,此時大學生從過去的天之驕子跌落成為如今的芸芸眾生,這是一個殘酷的現實。社會新增的工作機會不多,而畢業生的就業需求日趨增大,此時應屆畢業生、往屆畢業生、已有工作經驗人士等,數百萬的人湧入人才市場追逐著相對短缺的就業機會,競爭日益激烈。
更進一步的,很多企業不想直接招聘高校畢業生,在當前巨大的成本壓力下,寧願高價招聘具有工作經驗的做事可靠的求職者,也不願意招聘價格相對低廉的高校畢業生。於是形成了一邊是大量的高校畢業生找不到合意的工作,甚至長期處於失業狀態;而另外一邊企業招不到中意的人才。這是一個不小的社會矛盾,既抬高了失業率,又造成了教育資源的大量浪費。
高校畢業生的就業問題由來已久,隨著近年來全球範圍的金融危機乃至實體經濟危機的影響,中國社會出現一些變化和轉型,此時這個問題凸顯出來,成為一個廣受關注的社會問題。
從經濟的角度上看,高校畢業生就業問題是一種商品供應錯位的問題。
高校和企業存在供需關係。高校培養畢業生,滿足企業的用人需求。而企業接受這些畢業生,滿足其自身的用人需求。因此高校的核心工作應該是滿足企業的用人需求,高校的核心利益是建立在企業用人需求的基礎上。受到企業歡迎的高校是成功的高校,必然能得到長久持續的良性發展;而沒得到企業認同的高校是不成功的高校,也不會有長久的經濟效益。
然而,現實情況剛好相反,一些高校並不是以企業的用人需求為核心工作目標,而是熱衷於教育產業化,無論是學校管理層還是教師個人,都在尋求短期的經濟利益,並且以各種手段快速地提高表面就業率。這最終不會為企業所認同,造成供需錯位,損害了雙方的利益,加劇了高校畢業生就業問題。
要比較好地解決這個問題,得從根本上解決當代高校教育機制以及社會人力資源利用機制,不過這方面超出筆者的能力範圍,因此不想細說。
筆者只想在能力範圍內儘量做出一些工作,那就是回顧個人11年的計算機軟體開發行業工作經驗,發現問題,分析問題,多方比較,為緩解畢業生就業問題提出一些實用可行的建議。希望能幫助畢業生提高人才市場競爭力,順利地進入職場並可持續性的發展。
筆者畢業後一直從事著計算機軟體開發工作,使用了C#程式語言。因此根據筆者的個人能力,對有志於進入計算機軟體開發的高校畢業生和新手提出一些經驗的總結,並以C#語言為核心展開了一些技術培訓內容,包括軟體開發和管理的思想,C#的運用,並介紹了一些在當前和未來一段時間內都很實用的技術,使得菜鳥們能較為迅速地勝任C#軟體工程師的角色,從而開始了使用C#開發商業軟體的職場之路。
筆者幫助菜鳥的同時,希望也能對軟體開發企業有好處,希望此書能幫助企業對接收過來的畢業生和菜鳥們順利地展開訓練,使得他們能儘快擁有實際生產力,迅速進入工作狀態,從而使得這些新人早日給企業創造經濟效益,實現企業的利益最大化。
本書並不想成為面試寶典之類的速成書籍,因為筆者認為,卓越的能力是長期紮實的工作鍛鍊出來的,高超的技藝是通過經常性的學習和獨立思考而造就的,突出的貢獻是緊密的團隊共同協作出來的。
在此特別感謝一些人,包括柯凌雲,她根據自己從事高校教育的寶貴工作經驗,給我帶來了啟發;陳朕,他對C#以及資料庫開發的部分提供了一些信息;王清培,新科微軟MVP,也對這部書提出了一些意見。有了這些人的幫助,使得這本書增色不少,在此深表感謝。
在本書的編寫過程中,參考了許多相關的書籍、資料和網際網路發布的信息,編者在此對這些參考資料的作者表示感謝。同時還要感謝電子工業出版社在本書出版過程中給予的支持和幫助。
高校畢業生就業和培訓問題是一個複雜的問題,因筆者水平能力有限,書中難免存在錯漏和不妥之處,望讀者指正,以利改進和提高,幫助作者進步。
袁永福
2012年11月於南京

目錄

第1章 一畢業就面臨的問題 1
1.1 高校畢業生就業途徑 1
1.2 計算機專業畢業生的就業問題 3
1.3 求職之路 4
1.3.1 抉擇 4
1.3.2 興趣和志向 4
1.3.3 順趨勢者昌,逆趨勢者亡 5
1.4 中國軟體行業的特點和趨勢 6
1.4.1 盜版 7
1.4.2 嵌入式開發 7
1.4.3 移動開發 8
1.4.4 SAAS及雲計算 9
1.5 行業套用軟體開發 11
1.6 求職戰略方向 12
1.7 求職戰術手段 12
1.7.1 接觸用人企業 12
1.7.2 求職過程 13
第2章 初入職場 15
2.1 從學生期到職場期的變軌 15
2.1.1 人生的節日 16
2.1.2 團隊意識 16
2.2 積累與創新 22
2.3 技術之害 24
2.4 關於薪酬 25
2.5 關於買房 26
2.6 關於自信心 28
2.7 小結 28
第3章 商業軟體開發基礎 29
3.1 學習型軟體開發和商業軟體開發 29
3.2 項目軟體和產品軟體 29
3.2.1 契約軟體 30
3.2.2 產品軟體 30
3.2.3 自營軟體 31
3.3 商業軟體開發基本概念 31
3.4 商業軟體開發的平衡點 31
3.4.1 軟體開發時間 32
3.4.2 軟體質量 32
3.4.3 軟體功能 33
3.5 過程和質量控制 33
3.6 新舊技術的權衡 34
3.7 商業包裝 34
3.8 商業軟體開發人員的工作環境 36
3.8.1 對於客戶 36
3.8.2 對於市場銷售人員 37
3.8.3 對於管理層 37
第4章 開發者眼裡的Windows 39
4.1 Windows Service 39
4.2 管理Windows Service 40
4.3 事件查看器 42
4.4 遠程桌面 44
4.4.2 連線遠程桌面 45
4.5 任務管理器 47
4.5.2 管理進程 49
4.5.3 查看系統性能 50
4.5.4 查看網路 50
4.5.5 管理正在登錄的用戶 51
第5章 C#程式開發 52
5.1 C#語言簡介 52
5.2 .NET框架簡介 53
5.2.1 託管應用程式 54
5.2.2 微軟中間語言規範 55
第6章 C#基本語法 57
6.1 C#套用系統模組邏輯框架 57
6.1.1 套用系統 57
6.1.2 程式集 57
6.1.3 命名空間 58
6.1.4 類型 59
6.1.5 類型成員 60
6.1.6 功能語法塊 60
6.2 數據類型 61
6.2.1 基礎數據類型 61
6.2.2 數組 63
6.2.3 自定義類型 64
6.3 數據類型轉換 72
6.3.2 as類型轉換 73
6.3.3 is類型判斷 74
6.4 可訪問級別 74
6.4.1 private私有的 75
6.4.2 protected受保護的 75
6.4.3 internal內部的 75
6.4.4 public 公開的 76
6.5 類型樣式 76
6.5.1 static class 靜態類 76
6.5.2 abstract class 抽象類 77
6.5.3 sealed class 密封類 78
6.6 類型成員 79
6.6.1 構造函式 80
6.6.2 欄位 80
6.6.3 屬性 81
6.6.4 方法 81
6.6.5 事件 82
6.6.6 索引器 82
6.6.7 靜態成員 84
6.6.8 實例成員 86
6.6.9 常數成員 87
6.7 面向對象編程 87
6.7.1 類 87
6.7.2 封裝 87
6.7.3 繼承 88
6.7.4 重載 88
6.7.5 重寫 89
6.8 表達式 90
6.8.1 數學表達式 90
6.8.3 位運算表達式 91
6.9 執行結構 92
6.9.1 順序執行 92
6.9.2 條件判斷 92
6.9.3 循環結構 95
6.9.4 異常處理結構 99
6.10 C#轉型建議 103
6.10.1 從VB到C# 103
6.10.2 從C/C++到C# 105
6.10.3 從Java到C# 107
第7章 第一次C#體驗 108
7.1 第一次使用VS.NET集成開發環境 108
7.1.1 選單欄 109
7.1.2 工具條 109
7.1.3 工具箱 109
7.1.4 主工作區 109
7.1.5 解決方案資源管理器 109
7.1.6 屬性編輯器 110
7.2 C#程式類型 112
7.2.1 Windows應用程式 113
7.2.2 ASP.NET Web應用程式 113
7.2.3 命令行應用程式 113
7.2.4 其他類型的應用程式 114
第8章 開發第一個Windows應用程式 115
8.1 建立C# Windows應用程式項目 115
8.2 WinForm控制項工具箱 116
8.3 WinForm窗體設計器 118
8.4 Windows窗體設計概念及原則 122
8.5 Main函式 130
8.6 解決方案資源管理器 132
8.7 解決方案資源樹狀列表 132
8.7.1 解決方案 132
8.7.2 程式工程 133
8.7.3 引用 135
8.7.4 程式檔案 136
8.7.5 資料夾 137
8.8 解決方案資源管理工具條 139
8.8.1 屬性按鈕 139
8.8.2 添加新解決方案資料夾按鈕 142
8.8.3 顯示所有檔案按鈕 142
8.8.4 刷新按鈕 143
8.9 控制項屬性編輯區域 144
8.9.1 控制項名稱下拉列表 144
8.9.2 屬性列表工具條 145
8.9.3 屬性項目列表 147
8.10 設計用戶界面 150
8.11 用戶界面事件處理原理 154
8.11.1 滑鼠事件 155
8.11.2 鍵盤事件 156
8.12 編寫事件處理代碼 156
8.12.1 讀寫系統配置 159
8.13 調試 161
8.13.1 執行代碼 161
8.13.2 查看和修改變數值 163
8.13.3 命令視窗 165
8.14 測試和運行Windows應用程式 165
8.15 小結 166
第9章 開發第一個ASP.NET應用程式 167
9.1 ASP.NET概念 167
9.1.1 B/S架構 167
9.1.2 HTTP傳輸協定 169
9.1.3 HTML文檔規範 173
9.1.4 ASP.NET伺服器端架構 174
9.1.5 ASP.NET Web伺服器控制項技術 178
9.1.6 ASP.NET客戶端開發架構 182
9.2 建立C# ASP.NET應用程式項目 183
9.3 ASP.NET頁面設計器 186
9.3.1 ASP.NET頁面工具箱 186
9.3.2 Web頁面內容編輯器 187
9.4 ASP.NET控制項工具箱 188
9.5 設計用戶界面 189
9.6 編寫後台代碼 189
9.6.1 輸出JavaScript 192
9.7 測試和運行ASP.NET應用程式 196
9.8 部署ASP.NET應用程式 196
9.8.1 準備運行環境 197
9.8.2 準備應用程式目錄 197
9.8.3 創建虛擬目錄 197
9.8.4 配置虛擬目錄 201
9.9 其他部署相關技術手段 204
9.9.1 Aspnet_regiis.exe 204
9.9.2 IISReset.exe 204
9.9.3 配置ASP.NET賬號許可權 204
第10章 開發第一個Web Service程式 207
10.1 Web Service原理 207
10.2 軟體功能需求 208
10.3 建立C# Web Service應用程式項目 208
10.4 編寫Web方法 210
10.5 發布Web Service 216
10.6 使用Web Service 216
10.7 在Windows應用程式中使用Web Service 216
10.7.1 添加Web引用 216
10.7.2 使用Web Service 217
10.8 在ASP.NET應用程式中使用Web Service 222
10.9 Web Service原理 225
第11章 開發第一個ADO.NET資料庫應用程式
11.1 ADO.NET資料庫訪問概述 228
11.2 建立C#應用程式項目 229
11.2.1 快速讀取數據 229
11.2.2 數據源綁定 233
11.2.3 修改數據 236
11.3 類型使用參考說明 253
11.3.1 System.Data.IDbConnection接口類型 253
11.3.2 System.Data.IDbCommand接口類型 253
11.3.3 System.Data.IDataReader接口類型 254
11.3.4 System.Data.IDataParameter接口類型 255
11.3.5 System.Data.DataTable類型 256
11.3.6 System.Data.DataColumn類型 257
11.3.7 System.Data.DataRow類型 258
第12章 開發第一個JavaScript應用程式 259
12.1 JavaScript基本概念 259
12.2 HTML DOM 261
12.3 JavaScript語法 263
12.3.1 數據類型 263
12.3.2 運算符 264
12.3.3 條件判斷語法結構 266
12.3.4 循環語法結構 267
12.3.5 異常處理語法結構 268
12.3.6 其他語法結構 270
12.4 系統預定義對象 271
12.4.1 系統實例對象 272
12.4.2 系統全局對象 274
12.5 JavaScript代碼檔案 282
12.5.1 文本編碼格式 283
12.6 JavaScript調試 285
12.6.1 設定IE 285
12.6.2 插入斷點 285
12.6.3 調試 287
12.7 JavaScript套用實例 288
12.7.1 走馬燈 288
12.7.2 網頁對話框 289
12.7.3 日曆對話框 293
12.7.4 數據驗證 294
12.9 小結 302
第13章 開發第一個XML應用程式 303
13.1 XML套用框架 303
13.2 XML的發展歷史 304
13.3 XML基礎知識介紹 305
13.3.1 XML基本語法知識 305
13.3.2 W3C國際標準組織 307
13.3.3 國際標準的意義 307
13.4 微軟.NET框架對XML的支持 308
13.4.1 流式處理模型 308
13.4.2 DOM處理模型 308
13.5 輸出XML文檔 310
13.5.1 PageUseXmlTextWriter.aspx 311
13.5.2 PageUseXmlDocument.aspx 316
13.6 類型使用參考說明 318
13.6.1 System.Xml.XmlTextWriter類型 318
13.6.2 System.Xml.XmlDocument類型 319
13.6.3 System.Xml.XmlElement類型 320
13.7 小結 321
第14章 開發第一個檔案系統操作應用程式
14.1 檔案系統操作概述 322
14.1.1 檔案和目錄 322
14.1.2 檔案路徑 322
14.1.3 文本檔案和二進制檔案 323
14.1.4 .NET的檔案系統開發 323
14.2 建立C#應用程式項目 323
14.2.1 設計主窗體 323
14.2.2 瀏覽目錄 325
14.2.3 瀏覽檔案 329
14.2.4 查看、編輯文本內容 331
14.2.5 查看圖片內容 339
14.2.6 訪問檔案內容 342
第15章 關係型資料庫開發基礎 344
15.1 主流資料庫介紹 344
15.1.1 MS Access 344
15.1.2 MS SQL Server 353
15.2 SQL語言 372
15.2.1 查詢數據 373
15.2.2 新增數據 377
15.2.3 修改數據 378
15.2.4 刪除數據 378
15.2.5 視圖 379
15.2.6 存儲過程 380
15.2.7 觸發器 381
第16章 商業軟體開發規範 382
16.1 C#代碼書寫規範 382
16.1.1 代碼縮進 382
16.1.2 空行 383
16.1.3 換行 383
16.1.4 空格 385
16.1.5 定義類型 385
16.1.6 大小寫 387
16.1.7 名稱 388
16.1.8 名稱空間 390
16.1.9 語句 391
16.1.10 注釋 391
16.1.11 代碼檔案目錄結構 392
16.2 C#軟體開發原則 392
16.2.1 盡晚創建,儘早釋放 392
16.2.2 單入口,單出口 394
16.2.3 最小許可權原則 395
16.2.4 儘早暴露錯誤原則 397
第17章 面向對象軟體開發方法 401
17.1 發現問題 401
17.2 分析問題 401
17.3 解決問題 402
17.3.1 任務分解 402
17.3.2 過程控制 403
17.3.3 知識重用 403
17.3.4 代碼重用 405
17.4 面向對象開發 406
17.4.1 封裝 406
17.4.2 繼承 407
第18章 團隊開發管理 408
18.1 項目管理 408
18.1.1 項目啟動 409
18.1.2 需求開發 409
18.1.3 項目計畫 410
18.1.4 系統設計 410
18.1.5 開發實施 412
18.1.6 系統測試 412
18.1.7 發布部署 413
18.1.8 試用驗收 413
18.1.9 項目結項 413
18.1.10 項目移交 414
18.1.11 項目管理 415
18.1.12 QA 415
18.1.13 CM 415
18.2 原始碼管理 416
18.2.1 原始碼管理的原理 416
18.2.2 VSS原始碼管理軟體 419
18.2.3 使用VSS客戶端軟體 419
18.2.4 在VS.NET中使用VSS 435
附錄A 關於企業培訓 442
附錄B 關於盜版 445
人力資源較為嚴重的供大於需,失業人數巨大,這是中國基本國情;目前學校的教育談不上素質教育,與企業的實際需求有一定的差距,這是中國教育的基本情況。由於歷史積累的往屆高校畢業生和應屆畢業生的數量太過巨大,因此高校畢業生的就業問題至少在10年內是難於解決的。所謂“畢業即失業”的現象將普遍存在,相信在未來很長一段時間內,就業將成為高年級大學生最為焦慮的問題。
根據筆者調研,發現很多軟體企業招不到中意的畢業生,存在招到一批畢業生不久又開除一批的現象;而畢業生卻在茫茫就業機會中找不到合適的工作,雙方都存在矛盾。發生這種情況的原因比較複雜,其中至少一半的原因就是現有的正規學校教育與社會實際需求的脫節,這個矛盾也將長期存在。
在這種大背景下,筆者沒有能力系統而完整地解決高校畢業生就業問題,只能對高校畢業生實現就業提供一些通過個人多年從事計算機軟體開發職場經驗總結而成的指導建議,希望能對高校畢業生順利就業提供一些幫助。
1.2 計算機專業畢業生的就業問題
這裡首先討論當下比較嚴重的畢業生就業問題。畢業生就業問題比較嚴重。
畢業生就業問題也是由於畢業生本身引起的。筆者對南京的軟體公司做過一些調查,企業管理者對畢業生最為頭疼的不是技術能力,而是其思想意識,特別是其敬業精神和團隊合作精神嚴重不足。尤其是現在開始出現90後畢業生,他們中有一些人思想前衛獨立,桀驁不馴,以自我為中心,對工作單位是想來就來想走就走,企業管理起來很頭疼,這讓企業對畢業生用怕了,因此即使招不到合適的人也不大願意使用唾手可得的畢業生。
出現這種問題,畢業生和企業雙方都有原因,本書是面向畢業生的,因此主要說明畢業生如何解決這個問題。
所謂敬業精神就是把工作作為事業來做,而不僅僅是為了賺錢餬口。
一些企業使用大學畢業生大致會有以下步驟:首先是在人才市場和學校中招聘實習生或畢業生,很多畢業生沒有實際的能力,而且還需要派老手培訓他們,這些都是不小的成本,而且企業還必須為這些畢業生開工資,因此工資不高,也就幾百元一個月。
經過一段時期的適應和培訓,畢業生們開始具有一定實際的能力了,此時雙方產生了利益衝突。
從企業的角度看,由於前期畢業生培訓已經投入了大量的成本,此時即使畢業生具有一定的實際生產力,也不大願意給畢業生開出較高的工資,很可能低於市場行情。
從畢業生的角度看,由於其已經具有一定的能力,具有一定的自信心,此時企業開出的工資低於市場行情,就會導致畢業生跳槽,而且現實中確實有很多畢業生抱著先就業再擇業的思想乾第一份工作,忠誠度不夠,也容易出現跳槽。
這個時候畢業生跳槽,這使得企業將培訓畢業生的投入變成為其他企業做嫁衣了,因此企業不大願意做畢業生培訓,而更願意招聘有工作經驗、有實際能力的人;而畢業生沒有工作經驗就沒有實際能力,這樣就形成一個充滿矛盾的循環“企業只找有經驗的人→畢業生找不到工作→人才市場無法補充有經驗的人士→企業招不到合適的人”。
由於存在企業和畢業生的利益之爭,就造成企業和畢業生雙向選擇不搭配的情況。
對此,筆者建議畢業生首先清楚自己的問題,一定要逐漸建立起自己的敬業精神和團隊合作精神,這樣就能解決就業的主要問題。現在招人的大戶是中小民營企業,是有著比較公平的職場競爭環境的,不是“拼爹”,而是拼自己的實力。有能力、有良好職場精神的畢業生一定能很快被企業所發現和重用。
對於這個問題,企業、學校、畢業生三者中,畢業生需要做出最多的努力,因為只有自己才能根本解決自己的問題。指望企業、學校替畢業生解決這些問題是不切實際的。

前言

隨著高等院校的擴招,高校畢業生也越來越多,此時大學生從過去的天之驕子跌落成為如今的芸芸眾生,這是一個殘酷的現實。社會新增的工作機會不多,而畢業生的就業需求日趨增大,此時應屆畢業生、往屆畢業生、已有工作經驗人士等,數百萬的人湧入人才市場追逐著相對短缺的就業機會,競爭日益激烈。
更進一步的,很多企業不想直接招聘高校畢業生,在當前巨大的成本壓力下,寧願高價招聘具有工作經驗的做事可靠的求職者,也不願意招聘價格相對低廉的高校畢業生。於是形成了一邊是大量的高校畢業生找不到合意的工作,甚至長期處於失業狀態;而另外一邊企業招不到中意的人才。這是一個不小的社會矛盾,既抬高了失業率,又造成了教育資源的大量浪費。
高校畢業生的就業問題由來已久,隨著近年來全球範圍的金融危機乃至實體經濟危機的影響,中國社會出現一些變化和轉型,此時這個問題凸顯出來,成為一個廣受關注的社會問題。
從經濟的角度上看,高校畢業生就業問題是一種商品供應錯位的問題。
高校和企業存在供需關係。高校培養畢業生,滿足企業的用人需求。而企業接受這些畢業生,滿足其自身的用人需求。因此高校的核心工作應該是滿足企業的用人需求,高校的核心利益是建立在企業用人需求的基礎上。受到企業歡迎的高校是成功的高校,必然能得到長久持續的良性發展;而沒得到企業認同的高校是不成功的高校,也不會有長久的經濟效益。
然而,現實情況剛好相反,一些高校並不是以企業的用人需求為核心工作目標,而是熱衷於教育產業化,無論是學校管理層還是教師個人,都在尋求短期的經濟利益,並且以各種手段快速地提高表面就業率。這最終不會為企業所認同,造成供需錯位,損害了雙方的利益,加劇了高校畢業生就業問題。
要比較好地解決這個問題,得從根本上解決當代高校教育機制以及社會人力資源利用機制,不過這方面超出筆者的能力範圍,因此不想細說。
筆者只想在能力範圍內儘量做出一些工作,那就是回顧個人11年的計算機軟體開發行業工作經驗,發現問題,分析問題,多方比較,為緩解畢業生就業問題提出一些實用可行的建議。希望能幫助畢業生提高人才市場競爭力,順利地進入職場並可持續性的發展。
筆者畢業後一直從事著計算機軟體開發工作,使用了C#程式語言。因此根據筆者的個人能力,對有志於進入計算機軟體開發的高校畢業生和新手提出一些經驗的總結,並以C#語言為核心展開了一些技術培訓內容,包括軟體開發和管理的思想,C#的運用,並介紹了一些在當前和未來一段時間內都很實用的技術,使得菜鳥們能較為迅速地勝任C#軟體工程師的角色,從而開始了使用C#開發商業軟體的職場之路。
筆者幫助菜鳥的同時,希望也能對軟體開發企業有好處,希望此書能幫助企業對接收過來的畢業生和菜鳥們順利地展開訓練,使得他們能儘快擁有實際生產力,迅速進入工作狀態,從而使得這些新人早日給企業創造經濟效益,實現企業的利益最大化。
本書並不想成為面試寶典之類的速成書籍,因為筆者認為,卓越的能力是長期紮實的工作鍛鍊出來的,高超的技藝是通過經常性的學習和獨立思考而造就的,突出的貢獻是緊密的團隊共同協作出來的。
在此特別感謝一些人,包括柯凌雲,她根據自己從事高校教育的寶貴工作經驗,給我帶來了啟發;陳朕,他對C#以及資料庫開發的部分提供了一些信息;王清培,新科微軟MVP,也對這部書提出了一些意見。有了這些人的幫助,使得這本書增色不少,在此深表感謝。
在本書的編寫過程中,參考了許多相關的書籍、資料和網際網路發布的信息,編者在此對這些參考資料的作者表示感謝。同時還要感謝電子工業出版社在本書出版過程中給予的支持和幫助。
高校畢業生就業和培訓問題是一個複雜的問題,因筆者水平能力有限,書中難免存在錯漏和不妥之處,望讀者指正,以利改進和提高,幫助作者進步。
袁永福
2012年11月於南京

目錄

第1章 一畢業就面臨的問題 1
1.1 高校畢業生就業途徑 1
1.2 計算機專業畢業生的就業問題 3
1.3 求職之路 4
1.3.1 抉擇 4
1.3.2 興趣和志向 4
1.3.3 順趨勢者昌,逆趨勢者亡 5
1.4 中國軟體行業的特點和趨勢 6
1.4.1 盜版 7
1.4.2 嵌入式開發 7
1.4.3 移動開發 8
1.4.4 SAAS及雲計算 9
1.5 行業套用軟體開發 11
1.6 求職戰略方向 12
1.7 求職戰術手段 12
1.7.1 接觸用人企業 12
1.7.2 求職過程 13
第2章 初入職場 15
2.1 從學生期到職場期的變軌 15
2.1.1 人生的節日 16
2.1.2 團隊意識 16
2.2 積累與創新 22
2.3 技術之害 24
2.4 關於薪酬 25
2.5 關於買房 26
2.6 關於自信心 28
2.7 小結 28
第3章 商業軟體開發基礎 29
3.1 學習型軟體開發和商業軟體開發 29
3.2 項目軟體和產品軟體 29
3.2.1 契約軟體 30
3.2.2 產品軟體 30
3.2.3 自營軟體 31
3.3 商業軟體開發基本概念 31
3.4 商業軟體開發的平衡點 31
3.4.1 軟體開發時間 32
3.4.2 軟體質量 32
3.4.3 軟體功能 33
3.5 過程和質量控制 33
3.6 新舊技術的權衡 34
3.7 商業包裝 34
3.8 商業軟體開發人員的工作環境 36
3.8.1 對於客戶 36
3.8.2 對於市場銷售人員 37
3.8.3 對於管理層 37
第4章 開發者眼裡的Windows 39
4.1 Windows Service 39
4.2 管理Windows Service 40
4.3 事件查看器 42
4.4 遠程桌面 44
4.4.2 連線遠程桌面 45
4.5 任務管理器 47
4.5.2 管理進程 49
4.5.3 查看系統性能 50
4.5.4 查看網路 50
4.5.5 管理正在登錄的用戶 51
第5章 C#程式開發 52
5.1 C#語言簡介 52
5.2 .NET框架簡介 53
5.2.1 託管應用程式 54
5.2.2 微軟中間語言規範 55
第6章 C#基本語法 57
6.1 C#套用系統模組邏輯框架 57
6.1.1 套用系統 57
6.1.2 程式集 57
6.1.3 命名空間 58
6.1.4 類型 59
6.1.5 類型成員 60
6.1.6 功能語法塊 60
6.2 數據類型 61
6.2.1 基礎數據類型 61
6.2.2 數組 63
6.2.3 自定義類型 64
6.3 數據類型轉換 72
6.3.2 as類型轉換 73
6.3.3 is類型判斷 74
6.4 可訪問級別 74
6.4.1 private私有的 75
6.4.2 protected受保護的 75
6.4.3 internal內部的 75
6.4.4 public 公開的 76
6.5 類型樣式 76
6.5.1 static class 靜態類 76
6.5.2 abstract class 抽象類 77
6.5.3 sealed class 密封類 78
6.6 類型成員 79
6.6.1 構造函式 80
6.6.2 欄位 80
6.6.3 屬性 81
6.6.4 方法 81
6.6.5 事件 82
6.6.6 索引器 82
6.6.7 靜態成員 84
6.6.8 實例成員 86
6.6.9 常數成員 87
6.7 面向對象編程 87
6.7.1 類 87
6.7.2 封裝 87
6.7.3 繼承 88
6.7.4 重載 88
6.7.5 重寫 89
6.8 表達式 90
6.8.1 數學表達式 90
6.8.3 位運算表達式 91
6.9 執行結構 92
6.9.1 順序執行 92
6.9.2 條件判斷 92
6.9.3 循環結構 95
6.9.4 異常處理結構 99
6.10 C#轉型建議 103
6.10.1 從VB到C# 103
6.10.2 從C/C++到C# 105
6.10.3 從Java到C# 107
第7章 第一次C#體驗 108
7.1 第一次使用VS.NET集成開發環境 108
7.1.1 選單欄 109
7.1.2 工具條 109
7.1.3 工具箱 109
7.1.4 主工作區 109
7.1.5 解決方案資源管理器 109
7.1.6 屬性編輯器 110
7.2 C#程式類型 112
7.2.1 Windows應用程式 113
7.2.2 ASP.NET Web應用程式 113
7.2.3 命令行應用程式 113
7.2.4 其他類型的應用程式 114
第8章 開發第一個Windows應用程式 115
8.1 建立C# Windows應用程式項目 115
8.2 WinForm控制項工具箱 116
8.3 WinForm窗體設計器 118
8.4 Windows窗體設計概念及原則 122
8.5 Main函式 130
8.6 解決方案資源管理器 132
8.7 解決方案資源樹狀列表 132
8.7.1 解決方案 132
8.7.2 程式工程 133
8.7.3 引用 135
8.7.4 程式檔案 136
8.7.5 資料夾 137
8.8 解決方案資源管理工具條 139
8.8.1 屬性按鈕 139
8.8.2 添加新解決方案資料夾按鈕 142
8.8.3 顯示所有檔案按鈕 142
8.8.4 刷新按鈕 143
8.9 控制項屬性編輯區域 144
8.9.1 控制項名稱下拉列表 144
8.9.2 屬性列表工具條 145
8.9.3 屬性項目列表 147
8.10 設計用戶界面 150
8.11 用戶界面事件處理原理 154
8.11.1 滑鼠事件 155
8.11.2 鍵盤事件 156
8.12 編寫事件處理代碼 156
8.12.1 讀寫系統配置 159
8.13 調試 161
8.13.1 執行代碼 161
8.13.2 查看和修改變數值 163
8.13.3 命令視窗 165
8.14 測試和運行Windows應用程式 165
8.15 小結 166
第9章 開發第一個ASP.NET應用程式 167
9.1 ASP.NET概念 167
9.1.1 B/S架構 167
9.1.2 HTTP傳輸協定 169
9.1.3 HTML文檔規範 173
9.1.4 ASP.NET伺服器端架構 174
9.1.5 ASP.NET Web伺服器控制項技術 178
9.1.6 ASP.NET客戶端開發架構 182
9.2 建立C# ASP.NET應用程式項目 183
9.3 ASP.NET頁面設計器 186
9.3.1 ASP.NET頁面工具箱 186
9.3.2 Web頁面內容編輯器 187
9.4 ASP.NET控制項工具箱 188
9.5 設計用戶界面 189
9.6 編寫後台代碼 189
9.6.1 輸出JavaScript 192
9.7 測試和運行ASP.NET應用程式 196
9.8 部署ASP.NET應用程式 196
9.8.1 準備運行環境 197
9.8.2 準備應用程式目錄 197
9.8.3 創建虛擬目錄 197
9.8.4 配置虛擬目錄 201
9.9 其他部署相關技術手段 204
9.9.1 Aspnet_regiis.exe 204
9.9.2 IISReset.exe 204
9.9.3 配置ASP.NET賬號許可權 204
第10章 開發第一個Web Service程式 207
10.1 Web Service原理 207
10.2 軟體功能需求 208
10.3 建立C# Web Service應用程式項目 208
10.4 編寫Web方法 210
10.5 發布Web Service 216
10.6 使用Web Service 216
10.7 在Windows應用程式中使用Web Service 216
10.7.1 添加Web引用 216
10.7.2 使用Web Service 217
10.8 在ASP.NET應用程式中使用Web Service 222
10.9 Web Service原理 225
第11章 開發第一個ADO.NET資料庫應用程式
11.1 ADO.NET資料庫訪問概述 228
11.2 建立C#應用程式項目 229
11.2.1 快速讀取數據 229
11.2.2 數據源綁定 233
11.2.3 修改數據 236
11.3 類型使用參考說明 253
11.3.1 System.Data.IDbConnection接口類型 253
11.3.2 System.Data.IDbCommand接口類型 253
11.3.3 System.Data.IDataReader接口類型 254
11.3.4 System.Data.IDataParameter接口類型 255
11.3.5 System.Data.DataTable類型 256
11.3.6 System.Data.DataColumn類型 257
11.3.7 System.Data.DataRow類型 258
第12章 開發第一個JavaScript應用程式 259
12.1 JavaScript基本概念 259
12.2 HTML DOM 261
12.3 JavaScript語法 263
12.3.1 數據類型 263
12.3.2 運算符 264
12.3.3 條件判斷語法結構 266
12.3.4 循環語法結構 267
12.3.5 異常處理語法結構 268
12.3.6 其他語法結構 270
12.4 系統預定義對象 271
12.4.1 系統實例對象 272
12.4.2 系統全局對象 274
12.5 JavaScript代碼檔案 282
12.5.1 文本編碼格式 283
12.6 JavaScript調試 285
12.6.1 設定IE 285
12.6.2 插入斷點 285
12.6.3 調試 287
12.7 JavaScript套用實例 288
12.7.1 走馬燈 288
12.7.2 網頁對話框 289
12.7.3 日曆對話框 293
12.7.4 數據驗證 294
12.9 小結 302
第13章 開發第一個XML應用程式 303
13.1 XML套用框架 303
13.2 XML的發展歷史 304
13.3 XML基礎知識介紹 305
13.3.1 XML基本語法知識 305
13.3.2 W3C國際標準組織 307
13.3.3 國際標準的意義 307
13.4 微軟.NET框架對XML的支持 308
13.4.1 流式處理模型 308
13.4.2 DOM處理模型 308
13.5 輸出XML文檔 310
13.5.1 PageUseXmlTextWriter.aspx 311
13.5.2 PageUseXmlDocument.aspx 316
13.6 類型使用參考說明 318
13.6.1 System.Xml.XmlTextWriter類型 318
13.6.2 System.Xml.XmlDocument類型 319
13.6.3 System.Xml.XmlElement類型 320
13.7 小結 321
第14章 開發第一個檔案系統操作應用程式
14.1 檔案系統操作概述 322
14.1.1 檔案和目錄 322
14.1.2 檔案路徑 322
14.1.3 文本檔案和二進制檔案 323
14.1.4 .NET的檔案系統開發 323
14.2 建立C#應用程式項目 323
14.2.1 設計主窗體 323
14.2.2 瀏覽目錄 325
14.2.3 瀏覽檔案 329
14.2.4 查看、編輯文本內容 331
14.2.5 查看圖片內容 339
14.2.6 訪問檔案內容 342
第15章 關係型資料庫開發基礎 344
15.1 主流資料庫介紹 344
15.1.1 MS Access 344
15.1.2 MS SQL Server 353
15.2 SQL語言 372
15.2.1 查詢數據 373
15.2.2 新增數據 377
15.2.3 修改數據 378
15.2.4 刪除數據 378
15.2.5 視圖 379
15.2.6 存儲過程 380
15.2.7 觸發器 381
第16章 商業軟體開發規範 382
16.1 C#代碼書寫規範 382
16.1.1 代碼縮進 382
16.1.2 空行 383
16.1.3 換行 383
16.1.4 空格 385
16.1.5 定義類型 385
16.1.6 大小寫 387
16.1.7 名稱 388
16.1.8 名稱空間 390
16.1.9 語句 391
16.1.10 注釋 391
16.1.11 代碼檔案目錄結構 392
16.2 C#軟體開發原則 392
16.2.1 盡晚創建,儘早釋放 392
16.2.2 單入口,單出口 394
16.2.3 最小許可權原則 395
16.2.4 儘早暴露錯誤原則 397
第17章 面向對象軟體開發方法 401
17.1 發現問題 401
17.2 分析問題 401
17.3 解決問題 402
17.3.1 任務分解 402
17.3.2 過程控制 403
17.3.3 知識重用 403
17.3.4 代碼重用 405
17.4 面向對象開發 406
17.4.1 封裝 406
17.4.2 繼承 407
第18章 團隊開發管理 408
18.1 項目管理 408
18.1.1 項目啟動 409
18.1.2 需求開發 409
18.1.3 項目計畫 410
18.1.4 系統設計 410
18.1.5 開發實施 412
18.1.6 系統測試 412
18.1.7 發布部署 413
18.1.8 試用驗收 413
18.1.9 項目結項 413
18.1.10 項目移交 414
18.1.11 項目管理 415
18.1.12 QA 415
18.1.13 CM 415
18.2 原始碼管理 416
18.2.1 原始碼管理的原理 416
18.2.2 VSS原始碼管理軟體 419
18.2.3 使用VSS客戶端軟體 419
18.2.4 在VS.NET中使用VSS 435
附錄A 關於企業培訓 442
附錄B 關於盜版 445

相關詞條

熱門詞條

聯絡我們