1. 程式人生 > >在公司的頭兩年 C/C++程式設計師成長之路

在公司的頭兩年 C/C++程式設計師成長之路

IT企業普遍有個特點,“把女人當男人用,把男人當**(此處略去2個字)用。”有句俗話說,“男怕入錯行”,我想這句話其實也同樣適用IT女生。我們可以做個小測試工,就是問自己一百遍“喜歡當程式設計師嗎”,如果你的回答總是肯定的,那麼好的,開始認真學吧;如果發現50多次後面,自己不再那麼確定了,那麼就為自己打打勁,在後續的學習中多加努力;如果沒幾次就懶得回答這個問題了,那麼可能就真的應該好好想想,是否有必要在一個自己不喜歡並且無法投入的行業中浪費寶貴的幾年時光呢。有人會說,不試一試又怎麼知道喜不喜歡呢,這種看法,也有一定的道理,但我想說的是,認真思考,果斷決定,為自己負責,為企業負責。

關於C/C++語言的學習,我個人有以下幾點感受:

首先,做C/C++語言相關業務開發應該學什麼?

1、C語言

這好像不用想,必須學的。

2、C++語言

配合對OO的學習,也是必須的。

3、UNIX下的C程式設計

學習了C和C++的語言後,因為我們的應用程式一般都是在UNIX環境下執行,所以,學習UNIX環境下的相關技術也是非常必要的。

4、SHELL命令及程式設計

要把程式在UNIX環境下執行起來,肯定需要和SHELL打交道。其實,不僅僅是編寫SHELL指令碼,在做UNIX環境下的日常維護系統時,需要的常用命令也要熟練掌握。

5、ORACLE

資料庫方面業界的老大,我們的應用基本上都使用ORACLE資料庫,又怎麼不學呢。

6、JAVA等頁面開發技術

至少知道它們能做什麼吧。

7、質量體系

公司有管理方面的質量體系文件,包括過程管理類、專案管理類、工程管理類、支援類等4大類質量體系文件,從到公司開始,就應該學習它、掌握它、精通它。

8、編輯工具、系統工具等各種工具

包括sourceinsight、UE、PD、FTP、CRT、office、TOAD、PLSQL、Xmanager、CC等,統統都應該瞭解、掌握、會使用。

9、溝通能力

“茶壺煮餃子,有嘴倒不出”是技術人員的通病。如何瞭解使用者的需求,如何掌握設計人員的想法,如何知道測試人員的意圖等等,甚至包括日常工作、生活的方方面面,都需我們良好的溝通。

10、本部門的業務,及其他部門的業務

“技術是磚,業務是樓”,我們要利用手中的磚去蓋什麼樣的樓呢?如果我們不知道業務想要實現什麼,又怎能將業務需求做好,業務需求沒做好,客戶憑什麼要付錢買單?瞭解其他部門的業務,就是為了做出更合理的設計。

其次,上述10點,說多不多,說少不少,應該如何去學?

1、C語言

記得在大學期間學資料結構的時候,書上說,資料結構加演算法就是程式。要實現一個演算法可以有多種語言,但我們選擇的是C。

C語言是基礎中的基礎,打好堅實的基礎,我們的技術根基才紮實。怎麼做呢?我的建議是,找出譚浩強的《C語言程式設計》,將每個章節的練習題逐個在UNIX環境下做一遍,效果要達到編譯成功、執行結果沒有問題。這種基礎性的練習一定要做,不要偷懶,別怕麻煩,更不要僅僅因為認為自己已經會了而不屑去做。俗語道“熟能生巧”,最起碼你也可以練習指法,縮短完成程式碼的時間長度。說“細節決定成敗”,你敲鍵盤的速度比別人快,也是細節,即所謂“磨刀不誤砍柴工”。我個人認為,這本書作為基礎性教材還是很不錯的。

程式設計師的工作,每天需要面對的是文字檔案及文字檔案的記錄,所以,就要求我們熟悉對檔案、字串操作的相關函式。比如,清楚掌握open、close、read、write、fopen、fgets、fclose、fwrite、fprintf等函式;知道open和fopen的區別;對於strcpy、strstr、strcmp、strncmp、strcasecmp、strcat、memset、memcpy等字串的操作熟練。指標在C語言中的重要性不言而喻,分配了空間,就不要忘記了釋放;有malloc函式,就要關心free的地方;還有,free後一定要將指標設定成NULL。

2、C++語言

可能有的同事首先想到的是《C++ Primer》,我個人認為,這本書更適合達到一定程度的同事,否則的話還是建議從譚浩強的《c++面向物件程式設計》開始。同樣,練習題要認真做。熟練後有精力的話再看《C++ Primer》,可以有選擇性地看。當然,那麼厚的一本書,學習它還是需要一定的時間和方法的,所以,也不必在新人培訓期間急於求成,可以把它作為技術支援類的書籍,在日後工作中遇到實際問題時,有針對性地深入學習。

《Effective C++》和《More Effective C++》應該作為必讀書目,雖然不一定要完全照做,但書中的主旨思想還是要深入理解,即使當時無法一下子吃透,也要儘量記在頭腦中。還有《Thinking in C++》也應該認真翻看,不知是否有人要抓狂了,但經典牛書又怎能不看?

下面要介紹的是《C++標準程式庫》,與vector、list、set、map、string,相關的iteror如何使用,寫程式的時候insert()、find()、erase()、push_back()、push_front、make_pair()基本上都要用到。

3、UNIX下的C程式設計

記得當年我就是捧著《UNIX 平臺下 C 語言程式設計》這本書,開始了我的第一個程式的編寫。程式是一個主控程序,用到了對目錄的操作、訊號量、管道等。個人認為,那本書的各個部分都堪稱經典,比如除上述內容外還有程序、共享記憶體、程序間通訊、socket、多執行緒等,真正學好這些,想不成高手都難。現在的話,也可以看《UNIX環境高階程式設計》這本書。如果涉及到網路相關程式,那麼《UNIX網路程式設計》就是首選了。

4、SHELL命令及程式設計

《LINUX與UNIX Shell程式設計指南》我一直用它。內容包括ls–ltr、find、grep、tar、gzip、ftp、top、cp、mv、chmod、chown、useradd、env、vi、more、cat、paste、diff、tail、head、history、split、df、wc等等。其中,vi命令要熟練使用;man命令是我們的幫助手冊,無論是命令還是程式的系統函式都可以進行查詢。

5、Oracle

Oracle的書太多了,我們平時使用的sql並不太深,就推薦《Oracle基礎教程》。如果想往DBA發展,這個還是請公司DBA回答,我就不班門弄斧了。

6、JAVA等頁面開發技術

在這個時代,你想不知道JAVA都難。推薦看一下基礎的JAVA、JSP、SPRING、STRUCTS、Hibernate書籍。

7、TD-OSSP

在公司的過程財富庫中,找到組織標準過程,就可以看到相關文件了。剛到公司的新員工,應該先學習相關的編碼規範,學會看懂需求、設計文件。

8、編輯工具、系統工具等各種工具

SourceInsight,C/C++編輯工具,個人推薦使用,一般的語法錯誤都可以檢查出來,而且速度快。而Eclipse CDT網上的口碑不好,就沒去試用,感覺有點複雜有點慢。UE日常辦公必選編輯工具。

PowerDesigner是物理模型、資料模型的設計工具,檢視資料庫表結構,表和表之間的關係。PD支援匯入匯出建表指令碼,支援按模板匯出word格式,方便構建資料字典。ER-WIN也是很好的模型設計工具,它在描述實體關係時更清晰。

FTP工具,將原始碼放到主機。我一般就用TotalCommander了,注意,使用ASC模式上傳下載原始碼,否則,^M在unix環境下會給我們搗亂。

SecureCRT終端模擬程式,PC機和主機的橋樑,登入到主機上完成相應的開發、維護工作。

Office套件及open office相關Word的排版、Excle的函式、PowerPoint的動畫、Visio的各種流程繪圖,都有很大學問的。

Toad、PL/SQL,訪問ORACLE的工具,Toad是大而全的ORACLE工具,尤其在監控管理ORACLE資料庫方面更突出。PL/SQL除錯儲存過程比較好。“蘿蔔白菜,各有所愛”。

XManager包含圖形化的遠端登入視窗介面,遠端安裝ORACLE就需要它了。

Clearcase是我們使用的配置管理工具,與ClearQuest做整合後,方便流程的管理。在CC中連線到一個專案,複用相應的開發流,在開發流上建立本地檢視,對目錄、檔案這些元素進行操作,包括加入源控制、更新操作、檢出、檢入、撤銷檢出、合併、處理hijack檔案、deliver操作、打基線、CQ中建立activite(CC中的defect)等,這些基本操作都需要清楚。還有就是檢視檔案版本樹,檢視個人檢出的檔案等。

9、溝通能力

有很多大師級的書,我就不輕言了。例如,餘世維的《有效溝通》等等。個人的建議是,平時多注意別人好的溝通方式進行學習。對於不同的人,溝通方式也是不同的。學會站在對方的角度考慮問題、全面考慮問題,更利於達成一致意見。

10、業務的學習

多看相關的規範,根據規範理解我們的程式是如何實現的。提高業務能力的有效方式就是多做需求。在做開發過程中,經常與導師及需求分析人員進行溝通。瞭解需求,不要僅侷限於當前要實現的需求,對原始碼中發現的功能、與需求相關的業務等都要進行學習。比如,做累賬的需求,就可以對批價的業務進行了解,掌握哪些詳單表彙總到了賬單表。多做需求是我們提高能力的捷徑,剛開始的時候不要怕犯錯,不要怕被批評,“多年媳婦熬成婆”,大家都是這樣過來的。多問問題,嚮導師問,老員工問,向每一個可以教你知識的人問。經歷多,才能成長快。多做需求,就多學業務、多練習技術、多進行溝通,能力自然就提高了,有好的能力,就會被安排做更多的、更高級別的需求,從而進入一個良性迴圈。

提示一下:其實,上述內容,只是簡單地談論了我們主要使用的技術、工具和能力,在公司的《職位差異能力詞典》則對各能力項的要求進行了詳細的說明,大家可以參照學習、提高。

最後,討論一下學到什麼程度吧。這裡想說的就是,如何合理地安排計劃,逐步提高我們的能力。

在學習的過程中,建議選擇2到3門不同型別的書,交叉看,這樣不會造成對某門課程產生極度厭倦情緒的不良後果。

C和C++,可能我們在大學期間都學過,所以,這兩門課串起來學習大概只需要2個月左右的時間。因而,在此期間,可以配合學習一下shell的相關知識。所以,登入主機,vi編輯;make、gcc編譯程式;檢視日誌;gdb除錯解決問題等。這一套下來,C/C++語言和主機命令就應該能夠熟練掌握了。這部分的學習一定要紮實,以有效減少我們在以後的程式設計中出現bug的數量。bug數量少,最直接的效益就是可以節省我們自己的時間。其效果甚至不可估量。因為,隨著發現bug的時間的推後,浪費的時間將呈幾何級地增加。多一個bug,測試組就需要多一個人去測試,而後是,測試人員再和開發溝通,開發修改bug升級程式,接著是再測試。所以,軟體工程裡有介紹,返工的工作量,不計入開發的工作量。再試想,如果發現bug的時間一直推後到現場,是由使用者測試反饋回來的,那情況又該如何?首先,影響使用者滿意度,其次,得重新開發、測試、釋出。神啊,救救我吧,讓我遠離這些“臭蟲”吧。

兩個月過去了,不知道那些工具你是否已經上手,只是,編輯、編譯、ftp、CRT的都用過吧。時間也應該到9月中旬了,再花1個月時間瞭解一下oracle的基礎吧,就是sql語句什麼的,如果你能力足夠,可以自己安裝一個linux,再在上面安裝oracle,即可謂牛人一個。實在不行,就找人幫忙安裝一個windows版的oracle,就是在關機的時候別忘了先停oracle服務。

一個月的時間很快,還有十一要過,不知道你的C語言在頭腦中還留存多少。這時,你的領導已經安排你看寫文件和程式碼了,那就好好研究一下吧。程式碼也許很多,先按有框架程式碼和業務程式碼分。在框架程式碼中包括對日誌、共享記憶體、常用函式、規則解析、資料庫連線、檔案等相關函式。對於這些函式,需要自己寫例子,達到熟練應用。框架中對共享記憶體和表資料的封裝,是有一套模型支撐的,相關實體的作用,需要熟練掌握。達到可以部署相關程式碼,並正常執行的程度。三個月的時間,我想應該學習這些內容吧。

半年的時間過去後,新的一年就要開始了。這時候,技術上的儲備應該完成了百分之六七十。接下來,就是讓技術為業務服務,進行為客戶創造價值、實現自身價值的初始階段。做需求時,不斷學習業務,提高溝通能力,熟練應用技術,綜合性提升和完善自身的全面能力。在理解使用者需求時,最好直接與提出原始需求的人進行溝通,瞭解需求的來龍去脈,以便於掌握更多主動權,從而為使用者提供更好的解決方案。做需求的過程中,更是需要與方方面面的人進行溝通,比如:與客戶溝通需求;與自己的領導溝通設計實現方案;與小組內相關人員討論程式碼實現,進行單元測試,發現bug,處理問題;與測試人員溝通程式功能,完成系統測試,等等。這個過程中,同時也對相關的系統工具進行了學習,TMS、CC、CQ、開發工具、測試工具等。如果你的學習踏實有效,大約半年到九個月的時間,應該就可以基本掌握上述能力。當然,由於各專業的業務複雜程度不同,時間長短會有相應的差異。

時光荏苒,一年到一年半的時間過去後,個人的能力差異可能就會逐漸突顯出來,能力強的,在某種程度上甚至可以帶新員工了。而還有一部分人,則可能仍需要加強基礎性學習。再給大家推薦一本書――《高效能人士的七個習慣》,或許可以從中借鑑。

最後還想談幾句。大學期間,是個人家庭為你付學費,你學了什麼,學了多少,可能更多在於自己的意願。而參加工作後,是由公司為我們出學費,這時,你是否想到公司出資的目的,是否應該在工作上做出相應的回報?為公司的發展負責,同時也為個人的成長進步負責。希望每一位新員工能夠儘快轉化角色,早日真正走出象牙塔,融入公司、融入社會。最後,建議大家早睡早起,吃早餐,多運動,少玩電腦遊戲,過健康向上的生活,開心愉快地渡過這兩年的時光。

相關推薦

公司招聘技術的技巧(程式設計師成長

大公司喜歡專才,越專業越好。 小公司喜歡全才,越全面越好。全棧工程師在小公司很吃香,很受歡迎,而小公司的老闆會載入程式員往全棧方向發展。 要成長為技術大神,一定會經歷過,外包公司、產品公司的洗禮。外包公司就是有一套或者幾套成熟的生產技術,需要進入裡面花費很多的時間學習

公司 C/C++程式設計師成長

IT企業普遍有個特點,“把女人當男人用,把男人當**(此處略去2個字)用。”有句俗話說,“男怕入錯行”,我想這句話其實也同樣適用IT女生。我們可以做個小測試工,就是問自己一百遍“喜歡當程式設計師嗎”,如果你的回答總是肯定的,那麼好的,開始認真學吧;如果發現50多次後面,自

我的程式設計師成長——回顧自己三的工作

        本來不準備寫年度總結的,但是恰逢今天北京同事年會,不禁回首,發現自己已經在程式設計師的職業道路上走了三年,也算初中畢業了,總的來說,自己勤勤懇懇,未曾懈怠,也感謝這三年在我工作和生活中出現的每一個人和每一件事,正是這一切,才有了今日的我。 初生牛犢不

我的程式設計師成長

JAVA這個行業,我也搞了幾年,由於一向懶惰,沒有成為大牛,只是一普通的不能夠在普通的程式設計師,在做JAVA行業以前,我是一名徹徹底底的網路運營人員,那個時候的自己也是溜逛在各大論壇、SNS。做的工作是SEO與網站建設。或許是工作壓力、也或許是薪資待遇吧,總而言之,我已經記不清為什麼轉到了JA

程式設計師成長程式設計師必會單詞

###################################################### January    [ˈdʒænjueri]       一月        &nb

#一個JAVA程式設計師成長分享

我搞JAVA也有些日子了, 因為我比較貪玩,上進心不那麼強, 總是逼不得已為了高薪跳槽才去學習, 所以也沒混成什麼大牛, 但好在現在也已經成家立業, 小日子過的還算滋潤, 起碼頂得住一月近萬元的吃喝拉撒玩各種貸款信用卡 不為金錢過於發愁了。 我特別感謝當初貼吧遇見的那位大神, 雖然每個月也就聊那麼幾

一個JAVA程式設計師成長分享

部落格看到這麼一篇文章,感覺自己已經從事這個行業將近三年的時間了,感覺什麼都沒學會,在公司裡就是做一些分析一下小需求,在service層做一下邏輯處理,用hibernate做個增刪改查,也沒什麼東西了。但是前臺需要自己寫,因為我們公司沒有前臺。。。,前臺用的dojo框架,估計聽說過的人應該挺少吧。在網上找個a

一個非科班出身的程式設計師成長

在CSDN上看了很多程式設計師的成長之路。我也把我經歷寫出來,一供想走向程式設計師這條路的朋友做個參考。 對程式設計師的第一個認識,我記得好像是在1998年。那年我正讀高三,看到一篇文章,介紹是比爾.蓋茨。給我的印象是靠寫程式能獲得巨大的財富。這在當時對我是個巨大的衝擊,從此

看到一個程式設計師成長 一點點感慨

  剛才看到一個程式設計師的成長之路,感慨很多,先開個部落格佔個坑, 記錄一下,同時也鼓勵一下自己,堅持自己的路走下去。 機器學習, my love  例子中, 一個很一般的院校的畢業生,在畢業五年不斷挑戰自己。 我是一個非計算機專業的學生,跨行來搞計算機, 做模式識別

Java程式設計師談一談-----java程式設計師成長

引言 其實本來真的沒打算寫這篇文章,主要是LZ得記憶力不是很好,不像一些記憶力強的人,面試完以後,幾乎能把自己和麵試官的對話都給記下來。LZ自己當初面試完以後,除了記住一些聊過的知識點以外,具體的內容基本上忘得一乾二淨,所以寫這篇文章其實是很有難度的。 但是,最近問LZ的人實在是太多了,為了避免重複回

java初級程式設計師成長

立一個flag在三個月內,畢業之前成為一名合格的初級程式設計師經歷的這些日子找工作的心塞經歷,發現現在對於java程式設計師要求太高,應聘實習生感覺要求跟中高階java程式設計師一樣什麼前端後端要求至少都到懂,精通java基礎,spring \springmvc\spring

分享下多年積累的對JAVA程式設計師成長的總結

我也搞了幾年JAVA了,由於一向懶惰,沒有成為大牛,只是一普通程式猿,不愛玩社交網站,不愛玩微博,唯獨喜歡百度貼吧,潛水很久了,手癢來給新人分享下從新手成長為老鳥的已見,也刷刷存在感,應該不比曝照差吧。首先初識語法的階段,必須要學會怎麼操作物件,操作if和for,操作lis

我的程式設計師成長:EOM簡介2(程式設計師篇)

上篇談到自己程式設計師成長之經歷,也大致談到了EOM來龍去脈,那什麼是EOM呢? 我們發現企業所有活動都可以歸結於企業經營,EOM就是從企業經營這個源頭著手,對經濟生活中的大量企業經營行為進行抽象,並用模型的方式來定義企業經營。(EOM並不僅僅針對企業資訊化,它還在經濟學、企

程式設計師成長(一)

課號: 30240243 學分: 3 課程屬性:_本科必修 開課學期:春季 課程名稱

原創電子書《菜鳥程式設計師成長:從技術小白到阿里巴巴Java工程師》

《菜鳥程式設計師成長之路:從技術小白到阿里巴巴Java工程師》 國慶節快樂!一年一度長度排第二的假期終於來了。 難得有十一長假,作者也想要休息幾天啦。 不管你是選擇出門玩,還是在公司加班,在學校複習,都希望你過好這個長假。 沒有出去玩的也不用羨慕別人,利用這段時間充充電,不比去旅遊看人頭要好的多嗎? 最近終於

程式設計師修煉(三)一個清華大學畢業生做獵的感受(轉)

從來沒有想過自己會加入這一行,從開始自己喜歡的專業通訊,到後來喜歡的管理,幻想過是專業高手,幻想過管理專家,卻從來沒有想過進入這一行,但真的在我剛剛離開校園的時候發生了,短短几天,對這個行業有了一個感性認識,其實最讓自己傷感的不是自己沒有幹這一行的經驗,而是代理的人,要找的人

程式設計師入門

本人是大連某三本學校的學生,大一大二的時候沒怎麼學過習,就在第一學期的C語言課程上認真聽了課,聽到指標的時候就理解不上去了,然後整個大一大二就這樣過去了,非常重要的資料結構一次課都沒聽過,汗顏,到了大三在房地產公司兼職,由於乾的時間長,工作比較努力,由發傳單到管別人發傳單,當時感覺還好,根本

centos7下定時提醒(兩步走,程式設計師健康一小步)

眾所周知,程式設計師經常要在電腦前連續奮戰,但是就坐傷身,最明顯的不過就是對於頸椎,腰肌的勞損,眼睛看久了,也都花了。其實這些也都不是問題,就是長時間維持一個狀態才使得身體吃不消。只要有一個定時提醒的功能,就可以大大減輕這種傷害。 現在改用centos系統,很多軟體用不了,也不理想,所以就想

(北京)中秋程式設計師轉型沙龍活動

眾所周知,人工智慧行業是目前網際網路行業的風口產業,蘊含著巨大的潛力和商機。據領英發布的《全球AI領域人才報告》顯示,中國的AI人才總數僅為5萬人。但國內人工智慧人才缺口達500多萬,供需比例嚴重失衡。而轉型,成了很多程式設計師獲得升職加薪機會的不二選擇。 鑑

【免費贈書】前端程式設計師修煉:積土而為山,積水而為海

  首先插播一條好訊息,新書《》已於9月在各大平臺上架,現免費送出4本(看到大家熱情這麼高漲,幸運人數已提升至4人),具體參與規則如下所列: (1)在文章後面的評論中寫出想要獲取此書的理由,隨便什麼都可以,不限制字數,並且一個使用者的多次評論只算作一次。 (2)活動截止日期為北京時間 2018 年 10