程式設計師職業素養之讀後感

仇諾伊發表於2018-10-10

程式設計師的職業素養

花了幾個小時,把《程式設計師的職業素養》看完了,剛開始以為是一本講程式碼規範什麼的,看了才發現,內容很給力,挺乾的。 我覺得工作以來,自己絕對算不上一個稱職的程式設計師,也很不專業,一直想往專業的方向去發展,卻總是事與願違。 一路走來,發現了很多自身的不足以及太多需要學習的知識,看到自己還有那麼多不懂得,真棒,又可以學習新知識了。

簡單記錄下觀書筆記,以便日後檢視:

  • 專業主義
  • 說“不”
  • 說“是”
  • 編碼
  • 測試驅動開發
  • 練習
  • 驗收測試
  • 測試策略
  • 時間管理
  • 預估
  • 壓力
  • 協作
  • 團隊與專案
  • 輔導,學徒期,技藝

最初接觸程式設計,除了興趣愛好之外,就是覺得coding是一件很酷炫的事,在暗黑的終端敲擊著綠色白色的程式碼,做出各種各樣的網站,還能編寫app……但如果帶著這樣的心思工作,就很糟糕了,心猿意馬,隨心所欲,今天對這個感興趣,學一點,明天對那個感興趣,再學學,很不專業了,最後什麼也做不好。

專業主義

專業程式設計師

對於程式設計師來說,沒有什麼稱讚比專業更讓人興奮了。但是想要成為一個專業的程式設計師,對我來說,還有很長的路要走。

專業意味著責任,工作上的每一個承諾,每一件自己的任務,都要百分百負責。

這個深有體會,剛來公司那會兒,由於之前的公司就我一個技術人員,對待工作就很自由,其實那時候就應該意識到自己的錯誤,這樣的散漫對一個剛畢業沒多久的人來說,是很致命的。 來到現在這家公司,當時進來負責一個開發票的模組,pm說這個需求很重要,關係到財務等各個方面,務必做好,同時也給了我一個期限,問我可不可以?對於當時的我來說,從沒接觸過這這方面的業務,對於技術框架也不熟悉,業務流程也不是很瞭解,但是還是說應該可以吧。最後的結果和書裡說的大部分例子一樣,完成的很糟糕,可以說非常糟糕。 最初完成開發階段之後,簡單測試了幾個,就提交給QA了,結果QA那邊測試出各種問題,老實說,被QA說bug的時候,真的非常尷尬。而且客戶測試的時候也出現各種各樣的問題,除了資料的問題,最大的問題就是在開發完成之後沒有對自己的程式碼負責,沒有做極致的測試。如果開發後,對程式碼進行細緻的測試,考慮各種情況的發生,就不會出現後面一系列的問題了。

很多想成為專業人士的程式設計師,都把以下幾點作為小目標:

  • 讓QA找不到任何問題
  • 要確信程式碼正常執行
  • 自動化QA

最初看到自己寫的那一大段程式碼,真的不想在上面繼續修改,但事實上是應該要修改,保持自己的軟體靈活可變。專業的開發人員對自己的程式碼和測試都極有把握,他們敢隨心所欲的修改、拆分、重新組織。他們會把switch語句改成墮胎結構,或者將繼承層次重構成一條“命令鏈”。

職業道德

工作以來,接觸的很多人,對當下的工作其實很不滿,但是又無力改變現狀,於是在遇到問題或者無所事事的時候,開始抱怨,各種抱怨。我也不例外,當時從舒適區換到一個新的工作環境時,對業務的不熟悉,對技術的不瞭解,處理事務的不成熟,都讓我整日抱怨,希望公司能夠對自己進行職場培訓,希望有機會去學習…… 其實這些想法是很消極和偏激的,對於僱主來說,他們沒有義務對你進行培訓,學習是自己的事情,和公司或者他人都無關。公司發放薪水,作為員工來說,必須明白每個禮拜有7.5*5=37.5個小時是解決公司的問題,而不是個人的問題。除此之外的時間可以合理安排自己去學習,去戀愛,去陪家人朋友。 當處理好這些時間之後,就會發現,無論是工作還是生活,都會非常的充實,而不是各種抱怨,因為之所以抱怨,一方面是對自己的不滿,但是卻又不願去做改變和學習,一方面是太閒了,當忙碌起來,根本沒時間抱怨。要明白和公司之間的關係,公司是工作的地方,不是學習和成長的場所,個人的職業成長充電是需要付出額外的時間。

瞭解自己的領域

什麼是N-S圖表? 知道米利型和摩爾型這兩種狀態機的差別麼? 能不查閱演算法手冊寫出一個快速排序程式麼? 知道變換分析麼? 如何用資料流圖進行功能分解麼? 什麼是臨時傳遞資料? 耦合性是什麼? 什麼是parnas表? ……

對於程式設計師來說,每天都要面臨著技術的日新月異,新技術層出不斷,行業發展迅速,每天都需要學習,不僅是學習新知識,還要了解過去的知識,基礎的,經驗的。剛入行的時候,對於我來說,很少去了解領域中的知識,每當交談的時候,總會對很多名詞一臉懵逼,這就是很不專業了。

書中列出了每個專業軟體開發人員要精通的事項(僅供參考)

  • 設計模式,必須能描述GOF書中的全部24種模式,同時還要有POSA書中的多數模式的實戰經驗。
  • 設計原則,必須瞭解SOLID原則,而且要深刻理解元件設計原則
  • 方法,必須理解XP,scrum,精益,看板,瀑布,結構化分析及結構化設計等
  • 實踐,必須掌握測試驅動開發,物件導向設計,結構化程式設計,持續整合和結對程式設計
  • 工件,必須瞭解如何使用UML圖,DFD圖,結構圖,Petri網路圖,狀態遷移圖表,流程圖和決策表

堅持學習

只有堅持廣泛學習才不至於落伍,否則跟不上時代

練習

業精於勤

合作

團隊協作

輔導

教學相長

瞭解業務領域

要了解自己公司的業務領域,否則對需求就不能有很好的分析。

與僱主/客戶保持一致

站在僱主的角度思考問題

謙遜

接受自己的不足

說“不”

能就是能,不能就是不能,不要說“試試看”-尤達

面對不合理的需求和安排,要根據自己的實際情況作出拒絕,否則將會一直處在被動並且糟糕的狀態。

不過我個人理解,如果要說“不”,前提是對需求或者安排的任務以及自身的實際水平和專案有足夠的瞭解,否則連說“不”的資格都沒有。因為連自己都說服不了,怎麼去拒絕別人的要求。

所以還是要做到對自己的工作負責,熟悉相關領域,才能做出合理的安排,對於不合理的需求或者安排才可以通過分析去拒絕。而不是一味接受最後發現完成不了草草了事敷衍交差,然後不停修補bug。(比如我最開始工作時,老闆說的都是對的,按照老闆說的來做,最後一個都沒做好,因為老闆一天一個想法,一拍腦袋一個需求)

說“是”

當承諾一件事情的時候,就要不惜一切代價去完成,因為是你承諾的,就要對這負責。沒有藉口,如果發現自己兌現不了,就需要及時的說出,而不是藏著掖著最後耽誤的更多。早點發出預警,還可以採取其他措施挽救。

說是=對自己將會做某件事做了清晰的事實陳述,而且還明確說明了完成期限,針對自己。

關於編碼

編碼這部分讓我感觸最深的就是測試驅動開發,以前很少寫單元測試,後來接觸多了,越發的覺得測試是很重要的,不,非常重要。(!!!) 千萬不要在心煩意亂和心情不好的時候編寫程式碼,親身體會,一塌糊塗。 還有就是保持睡眠充足! 還有就是保持睡眠充足! 還有就是保持睡眠充足! 重要的事說三遍!!! 切身感受,剛進公司後,有一個月沒睡好,睡得太晚,睡不好,那些天不僅記憶力衰退,整個人萎靡不振,每天上班不在狀態,就感覺行屍走肉一樣,實在是太可怕了,更別提coding了。所以睡眠很重要。

時間管理

安排好每天的時間 可以借鑑番茄工作法,我覺得這個比較適合我,因為我經常注意力不集中,會被各種事情干擾。番茄的25分鐘,還是有點效果的,主要還是靠自己自覺。

相關文章