程式設計師的職業素養(一)
一、專業與素養
1. 專業人士的核心能力
成為專業人士的核心包括:解決問題的方式(怎樣分析問題、找哪些資料、怎樣設計方案、方案利弊分析等等),步驟(怎樣執行方案、怎樣控制風險、怎樣快速解決故障等等)以及反思(出現問題,如何避免同樣錯誤再次發生)
2. 職業素養
那麼,什麼又是職業素養呢?不是天賦,也不是技藝高深,而是持續積澱的結晶。一方面它體現了能力和素質;另一方面,強調持續的 積累和養成。擁有良好的職業素養,會讓你變得更加專業。
作為職業開發人員,基本技能不夠熟悉,當然談不上職業素養。但是僅僅能夠迅速編碼,卻不關心程式碼背後的意義,不能迅速判斷、解決程式執行中的各種問題,不能自信滿滿地為自己交付的程式承擔責任,同樣是沒有職業素養的表現。
二、培養自己的職業素養
1. 職業是件嚴肅的事
首先,要明白自己的責任和義務,視公司的利益如同個人利益。
假如,你程式碼裡的bug給公司造成100W損失,這些損失全部由你來賠償。你還會提交沒有經過測試的程式碼嗎?
2. 擔當責任
自己犯的錯誤,一定要承擔起責任。並且事後,要進行復盤,反思有哪些地方需要改進。
自己許諾的事情,一定要做到,哪怕加班趕工。
3. 不行“壞事”
作為軟體開發人員,能做出什麼“壞事”呢?從純軟體的角度看,他可以破壞軟體的功能與架構。不行“壞事”,就需要學會對自己的錯誤、不完美負責。如何避免做“壞事”呢?
- 讓QA找不出任何問題。充分的功能自測和單測;
- 確信程式碼能正常執行。設計易於測試的程式碼,要求每一行程式碼都要測試(參考 測試驅動開發);
- 自動化QA。完備單測和整合測試;
4. 不破壞結構
(1)易於修改的原則:設計良好的軟體結構,就會很靈活,也更易於修改。
因此,所有軟體專案,軟體結構的指導原則就是:軟體要易於修改。如何建立靈活可維護的結構。這方面的設計原則和模式很多,網上可以查到很多資料。
(2)隨時最佳化結構:跟隨著專案的迭代,要不斷調整程式碼的結構,以適應易於修改的原則。最好的狀態是,每次提交程式碼,就做點簡單的修改,來改進結構。點滴改善的積累,會讓你從中受益。
調整結構的前提,需要有變更模組的充足自動化測試,以保證你調整結構後,可以快速驗證。
5. 職業道德
工作要認真做。每週的40小時,是為僱主工作,你要付出時間和精力,因為僱主付了錢。工作之餘,每週要再抽20小時來為自己的職業發展工作,保證自己在職場中立於不敗之地。
(1)瞭解你的專業領域
設計模式、設計原則、方法、實踐、工具使用等等方法面面。
(2)堅持學習
擴充套件自己的技術。看看文章,關注技術部落格,讀書,甚至學學別的語言。
(3)練習
練習常見演算法,或練習某類工具的使用,讓自己更嫻熟。
(4)合作
專業的軟體開發,往往更願意與他人一起程式設計、一起練習、一起設計、一起計劃,這樣可以從彼此身上學到很多東西
(5)輔導他人
教學相長,教會別人,成長自己。
(6)瞭解你的業務領域
瞭解自己開發的解決方案所對應的業務領域。瞭解同領域下別人的方案,最好能讀兩本相關領域的書籍。
(7)與僱主/客戶保持一致
僱主的問題就是你的問題。你必須弄明白這些問題,並尋求最佳的解決方案。
(8)謙虛
多聽取他人建議,思考能否改進。
三、該說“不”時就說“不”
“能就是能,不能就是不能,不要說 ‘試試看’ ”—— 這關乎你的職業素養。
專業人士對一件事情有準確的預估。當無法達成對方要求時,應該懂得說“不”,而不是“試試看”,“試試看”是不專業的表現。只有敢於說“不”才有可能真正做成一些事情。
1. 對抗難於避免
無論是產品經理,還是業務方。他們都有自己的工作目標,也都會竭盡所能地捍衛目標。而作為開發的我們,同樣也有自身的目標,也需要去捍衛。但是,多數的開發把自己設定為弱勢群體, 被(業務、產品)逼著做出不可能的承諾,然後默默忍受。於其冒險一試,承擔不可預期的後果,反而不如與施壓者聊一聊。最好的結果就是找到大家共同的目標,這有賴於協商。
如果你答應對方 “試一試”。最終沒有完成,那麼你就是失職。
如果你堅持說 “不可能,辦不到”。這樣才是你盡職的體現,才有機會去協商。
協商的過程可能會很愉快。比如聊聊哪些功能點可以砍砍?時間點可不可以延長一點,等等。沒有必要給對方解釋“為什麼”不行,“為什麼”遠不如“事實”重要。有時候解釋太多細節,反而會招致更多的麻煩,讓對方參與到微觀管理,更容易偏離協商的目標。
如果對方真有技術背景,協商有結論後,解釋一下細節也無妨。另外,非技術人員,也沒必要去了解太多技術上的細節。
2. 高風險時刻
要知道,開發軟體,其實也是一件高風險的工作。專案程式中,隨時可能出現不可預見的風險。專業人士對風險需要有控制力。遇到可控風險,要及時同步團隊成員,以便獲得決策的快速響應,矯正專案方向到安全軌道上。而對於難以控制的風險,也需要及時通知相關方。
當發現專案存在風險需要延期時,要及時向相關方同步結論。不然,相關方會以為你的專案可以按時保質的上線。一旦到了deadline,你的專案還沒有完成,這時候再告訴相關方。我相信,你會被噴的很慘,而且,也會承擔巨大的責任和職業失信。
3. 所謂團隊精神
具備團隊精神,意味著恪盡職守,意味著當其他隊友遇到困難時你可以援手相助。有團隊精神的人,會頻繁與大家交流,關心隊友。也會說出自己遇到的困難,尋求幫助。
有團隊精神的人不會總是說“是”,而是會根據自己的專業,去否定不可能完成的事情。
只考慮一己之利,隨意承諾,並且一個勁地鼓吹別人做不可能完成的事情,是沒有團隊精神的表現,因為他不是為團隊努力,而是在損傷團隊。
(1)拒絕“試試看”
“試試看”,就意味著你要“額外付出”,同時還得承擔失敗風險,對團隊協助是不利的。
(2)拒絕消極對抗
當有人“逼你”做不可能完成的任務時。不能消極對抗,心裡抱怨:“等著出問題吧”。這時候更應該主動協商,千萬不能任其發展,走向懸崖。
4. 那些不靠譜的陷阱
(1) 這個需求很簡單
當你聽到這句話時,一定要謹慎,防止自己直接允諾對方。可能這個允諾,會讓你陷入痛苦的加班趕工中。
對方所說的簡單,有可能是因為對需求理解不夠深刻導致。你需要透過自己的專業知識去分析原始需求。
有時候,你的領導或者產品經理,也會不經過你的確認,直接允諾需求,這種做法很不靠譜,應該拒絕
(2) 這個需求很重要
還有一些需求被提出來的很突然,完全是規劃外的事情。記得去具體問題具體分析。存在不靠譜時,就與對方協商,而不是盤算著怎麼“擠出”更多時間來完成任務,這會讓你痛苦不堪。
通常,臨時增加的需求,是價值很低的需求。開發完成後,就會閒置或使用率很低。這種無關緊要的需求,讓你付出很多,卻價值很低。專業程式設計師一定要學會識別需求的價值,因為僱傭你真的很“貴”。
5. 只為寫出好程式碼
(1)多與相關方溝通
多與你的相關方溝通。開發工作中會涉及多個角色合作:產品、測試、前端、後端。你需要確保,大家的認知是持續跟進的。
多溝通,也是發現不合理需求的一種手段,對不合理需求及時說“不”;
定時(每日或每兩日,按自己的習慣)確認功能與約定一致;
約定變動,需要快速同步,以便快速得到響應;
(2)不可以追求榮譽
別逞能去當“救火隊員”,體驗“救火”的光榮。“救火”意味著你要接受可怕的加班,犧牲個人時間與精力。而且,高壓狀態下,你會打破自己養成的專業習慣。
(3)拒絕打破專業習慣
避免讓自己進入“時間很趕”的狀態,這樣,你會寫破壞軟體結構的程式碼,讓你的系統不可維護;你會忽視測試;你會心存僥倖,以為只改了一點程式碼不需要回歸。這樣做,倒黴遲早發生,要學會拒絕那些打破你專業習慣的事情。
四、只說“是”不說“試一試”
1. 承諾
(1)承諾
口頭上說。心裡認真。付諸行動。
口頭上說自己將會去做。心裡認真對待做出來的承諾。真正付諸行動。
(2)識別“缺乏承諾”的表述
需要/應當:“我需要減肥”。通常只是嘴上說說,沒有具體行動方案的說說,都只是說說。
希望/但願:“希望明天能完成任務”。沒有完成任務的決心,說明沒有足夠的掌控力。
讓我們(而不是讓我):逃避責任的常見手段,把個人責任,嫁接到團隊成員上。
(3)真正的承諾
“言必信,行必果”。幾種導致食言的原因和避免辦法:
- 之所以沒成功,是因為我寄希望於某某去做這件事。
只承諾自己能完全掌控的事。如需要跨團隊配合,不妨先理一下依賴,然後向對方承諾會採取的行動,以保證最終整合。 - 之所以沒成功,是因為我不太確信是否真能完成得了。
有必要讓對方知道,你可以給的最大支援,但確實沒法完成。即使目標無法完成,你仍需要全力前進,離目標更近一些。 - 之所以沒成功是因為有時候我真的無能為力。
無法兌現諾言,就需要儘早向你的承諾物件發出預警,越快越好,越早越好。如果你不盡早告訴他人可能的問題,就錯失了讓他們幫助你達成目標、兌現承諾的機會。
2. 不說試一試
試一試的另一面,往往隱藏著風險。一定要堅守自己的原則,承諾自己能做到的,捍衛自己的目標。
作者:劉洋
為研發提效,全是技術乾貨的滴滴雲技術沙龍報名中!
馬上關注滴滴雲公眾號:
回覆「上課」獲取免費報名資格
回覆「伺服器」免費獲得雲伺服器入門1個月體驗
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2687467/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 成長之路--論程式設計師的職業素養程式設計師
- 程式設計師職業素養之讀後感程式設計師
- 程式碼整潔之道:程式設計師的職業素養(十三)程式設計師
- 《程式碼整潔之道——程式設計師的職業素養》讀書筆記(一)程式設計師筆記
- 程式設計師的職業病(職業素養)之一:動手寫業務程式碼之前先考慮異常處理程式設計師
- IT人的職業素養與規劃
- 程式設計師職業生涯程式設計師
- 程式設計師的職業規劃!程式設計師
- 作為技術人的職業素養
- 【專業技能】程式設計師的軟體工程素養之畫好 UML 時序圖程式設計師軟體工程時序圖
- 美工和程式設計師的職業病程式設計師
- 一個野生程式設計師的自我修養程式設計師
- 談一談程式設計師的職業發展路線程式設計師
- 程式設計師是一個需要天賦的職業嗎?程式設計師
- 程式設計師的基本常識——職業篇程式設計師
- 養生吧,程式設計師!程式設計師
- 關於程式設計師這個職業程式設計師
- 程式設計師如何成為一名自由職業者程式設計師
- 淺談軟體工程師的程式碼素養軟體工程工程師
- 程式設計師的打怪升級之路,程式設計師未來職業規劃全路線程式設計師
- @程式設計師,再不養生就晚了程式設計師
- 程式設計師的技能樹,決定了一生職業的高度程式設計師
- 淺談程式設計師職業生涯規劃程式設計師
- 程式設計師如何規劃職業路線?程式設計師
- 程式設計師職業規劃-實踐篇程式設計師
- 程式設計師,以職業安身,以技能立命程式設計師
- 程式設計師職業發展方向有哪些?程式設計師
- 程式設計師的科技道德修養 - idlewords程式設計師
- 27歲程式設計師職業生涯的“中年危機”程式設計師
- Java程式設計師的五個職業發展方向Java程式設計師
- 找兼職程式設計師程式設計師
- 淺談前端/軟體工程師的程式碼素養前端軟體工程工程師
- 七年之癢!一個 PHP 程式設計師職業生涯的自述PHP程式設計師
- 程式設計師的8個職業發展方向,瞭解一下!程式設計師
- 很認真的談一談程式設計師的自我修養程式設計師
- 程式設計師、架構師…,IT職業都有哪些晉升方向?程式設計師架構
- 談談一個程式設計師本該具備的素質程式設計師
- 程式設計師“求包養”攻略揭秘程式設計師