- C程序員從校園到職場
- 周兆熊
- 2718字
- 2019-07-23 11:25:29
前言
在剛入職的時候,我與一個工作多年的老員工之間有以下一番對話。
老員工:“你的C語言功底如何?”
我:“還可以,考試考了九十多分。”
老員工:“你覺得編碼規范重要嗎?”
我:“什么編碼規范?我之前沒聽說過呢。”
老員工:“你覺得把代碼寫完并運行通過,你的工作就算結束了嗎?”
我:“差不多吧,在學校里面程序運行沒問題就OK了。”
老員工:“對于測試,你是怎么理解的?”
我:“測試就是看程序運行是否正常,看輸出結果是否正確。”
也不知道當時那位老員工聽了我的回答,是什么感受。如今回憶起來,那時的我對自己將要從事的工作的理解是很不成熟的。
本書寫作目的
在工作的過程中,我發現我們在學校里面學到的很多東西比較片面膚淺,根本達不到崗位的要求。像編碼規范、研發流程等學校里幾乎不提及的知識,在實際的軟件開發項目中卻恰恰是異常的重要。
在學校里面,我們欠缺的教育主要包括以下幾個方面。
第一,對編碼規范的要求。在計算機編程課上,老師只要求學生能夠編寫程序實現既定的功能即可,幾乎不會對編碼規范提出要求,而編碼規范是一般軟件項目中最基本的要求。
第二,對動手能力的要求。學校里面學完一門課程之后,只要考試通過就行了,至于這門課程有什么實際的用途,很少有人關心。這就導致很多人考試得了高分,但讓他們動手編寫一個程序卻出現了困難。一般的軟件公司對個人的動手能力是十分看中的,這就是為什么他們喜歡招有工作經驗的人的原因。
第三,對研發流程的講授。軟件開發并不僅僅是編寫代碼那么簡單。學校里的老師只會教學生怎樣寫出代碼,但很少會教他們一個實際的軟件項目是怎么回事。其實,編碼只是軟件研發中一個很小的部分,而諸如設計、測試等還會占據很大一部分時間。
第四,對團隊精神的培養。老師一直教導我們要獨立完成作業,考試的時候不要交頭接耳。而公司里面,我們是在一個團隊里面工作,我們要與各個成員合作來完成任務或解決問題。在很多時候,我們編寫的模塊要與其他模塊配合來實現特定的工作,這也是在考驗團隊之間的協作是否有默契。
第五,對情商的培養。學校的一個主要任務是讓學生學到專業知識,讓學生有一技之長,除此之外的其他方面都是次要的。但在工作崗位上,除了工作,我們要與不同的人打交道,還會遇到很多問題,這些都是對個人情商的考驗。很多人在學校里面表現得很優異,但在工作中一遇到困難就怨天尤人、哀聲嘆氣的,這就是因為缺少在情商方面的鍛煉。
當然,我也是一樣,在走出校門的時候躊躇滿志,以為世界盡在我手中。但在工作上遇到一系列問題之后,我逐漸改變了自己對軟件開發的很多看法。作為過來人,我有義務將所學到的經驗分享給大家,讓大家在軟件開發這一條道路上走得更順暢一點。
本書組織結構
本書主要包括以下章節的內容。
第1章 概述。本章對C語言的發展歷史和主要特點進行了簡單的介紹,之后對實際工作中軟件開發工程師常用的工具軟件進行了詳細的說明。
第2章 學校到職場。走出校門,意味著一個漫長的學習過程的開始。本章首先以一個不規范的程序代碼為例來讓大家意識到自己所學C語言知識的不足;然后講述了在從事實際的軟件開發工作之前,我們需要破除哪些錯誤觀念;最后描述了除專業技能之外的一些影響個人工作和發展的技能。
第3章 程序的樣式。程序樣式是給代碼閱讀者的第一印象。本章對頭文件(.h文件)和源文件(.c文件)的樣式,空格、空行、大括號和注釋的使用進行了詳細的描述。
第4章 變量和函數。本章首先介紹了基本數據類型的重定義;然后對變量和函數的命名進行了詳細的說明;最后用程序示例講解了一類特殊變量——靜態變量的用法。
第5章 內存操作。本章詳細描述4組與內存操作相關的函數的用法,它們是:memset和memcpy、strcat和strncat、strcpy和strncpy、strcmp和strncmp。
第6章 文件。文件在實際的軟件開發中有著極其廣泛的應用,本章首先介紹了常用文件操作函數及其用法,然后描述了與實際工作聯系緊密的配置文件和makefile文件的使用方法。
第7章 指針和結構體。指針是學習C語言的難點所在,熟練掌握指針和結構體的用法是對每個軟件開發工程師的基本要求。本章基于實際的程序,對指針和結構體進行了詳細的描述。
第8章 算法和協議。算法是實現軟件需求的方法,協議是多個模塊通信的基礎。本章分別詳細介紹了軟件項目實踐中的算法和協議。
第9章 程序重構。對程序進行重構,幾乎是每個軟件開發工程師都會遇到的問題。本章介紹了程序重構的原因、原則和流程,并用實際的程序示例講解了重構的整個過程。
第10章SQL語句和Shell命令。對于經常與數據庫打交道的軟件,需要在程序中嵌套SQL語句。而對于基于Linux的程序開發者來說,幾乎不可避免地要與Shell命令打交道。本章介紹了在C語言中執行SQL語句和Shell命令的方法。
第11章 程序問題排查。程序難免會出現問題,而在解決問題的過程中,程序開發者的能力也得到了鍛煉和提升。本章首先介紹了日志,然后用4個示例來詳細描述了程序問題排查的整個過程。
本書特色
本書組織架構清晰,內容簡潔明了,主要有以下特色。
第一,各個章節內容條理清晰,通過豐富的圖形和示例來講述,以更加直觀的方式來加強讀者對C語言的理解。
第二,書中有諸多的源代碼,均是嚴格按照編碼規范進行書寫,這有利于讀者參照它們來規范自己的相關程序代碼。
第三,本書并不局限于對C語言的講解,同時也對實際的軟件開發項目(如測試、問題排查等)進行了描述。讀者可以通過本書,對軟件開發有一個全面的了解。
本書目標讀者
作為一本入門級的軟件開發指南,本書的目標讀者主要包括以下3類。
第一類 在校計算機專業學生。通過對本書的學習,可以加強對相關課程的理解,并提前對軟件開發工作有一定的認識。
第二類 計算機專業應屆畢業生。本書可以為你的面試或培訓添磚加瓦,讓你在就業或求職的道路上快人一步。
第三類 剛步入職場的應屆畢業生。通過對本書的閱讀,你可以提前了解軟件開發項目對編程規范的要求以及項目中存在的一些問題,讓你的工作更加得心應手。
作者聯系方式
在閱讀本書的過程中,讀者有任何的疑問或建議,都可以通過以下方式與本人交流:
CSDN博客:http://blog.csdn.net/zhouzhaoxiong1227?viewmode=contents
郵箱:zhouzxi@126.com
QQ(微信):245924426
微博:http://weibo.com/zhouzxi?topnav=1&wvr=5
IT行業發展到今天,軟件種類繁多,不同種類的軟件之間差別相當大,沒有一種規范適用于所有的軟件開發項目。而本書中的內容提煉于作者本人所從事的軟件開發工作,因此必然會存在局限性。加之作者本人的水平有限,本書中的內容難免會有所紕漏,還請各位讀者和同行海涵。對于大家針對本書提出的寶貴的意見,作者將洗耳恭聽并盡量采納。大家可以通過上面的任何一種方式表達你們的建議,作者保證會在第一時間給予回復。
“活到老,學到老”,這句話對于軟件工程師來說,是再恰當不過的了。那就讓我們一起學習,一起經歷工作中的酸甜苦辣,一起書寫不一樣的程序員人生吧!
雄關漫道真如鐵,而今邁步從頭越!
- Getting Started with ResearchKit
- Python入門很簡單
- 簡單高效LATEX
- 劍指JVM:虛擬機實踐與性能調優
- VSTO開發入門教程
- 精通軟件性能測試與LoadRunner實戰(第2版)
- Learning Firefox OS Application Development
- 計算機應用基礎實踐教程
- NGINX Cookbook
- 從Excel到Python數據分析:Pandas、xlwings、openpyxl、Matplotlib的交互與應用
- Kotlin進階實戰
- The Statistics and Calculus with Python Workshop
- R語言實戰(第2版)
- Java面向對象程序設計教程
- C#網絡編程高級篇之網頁游戲輔助程序設計