程式設計師的職業素養(一)

java06051515發表於2020-04-21

一、專業與素養

1. 專業人士的核心能力

成為專業人士的核心包括:解決問題的方式(怎樣分析問題、找哪些資料、怎樣設計方案、方案利弊分析等等),步驟(怎樣執行方案、怎樣控制風險、怎樣快速解決故障等等)以及反思(出現問題,如何避免同樣錯誤再次發生)

2. 職業素養

那麼,什麼又是職業素養呢?不是天賦,也不是技藝高深,而是持續積澱的結晶。一方面它體現了能力和素質;另一方面,強調持續的 積累和養成。擁有良好的職業素養,會讓你變得更加專業。

作為職業開發人員,基本技能不夠熟悉,當然談不上職業素養。但是僅僅能夠迅速編碼,卻不關心程式碼背後的意義,不能迅速判斷、解決程式執行中的各種問題,不能自信滿滿地為自己交付的程式承擔責任,同樣是沒有職業素養的表現。

二、培養自己的職業素養

1. 職業是件嚴肅的事

首先,要明白自己的責任和義務,視公司的利益如同個人利益。

假如,你程式碼裡的bug給公司造成100W損失,這些損失全部由你來賠償。你還會提交沒有經過測試的程式碼嗎?

2. 擔當責任

自己犯的錯誤,一定要承擔起責任。並且事後,要進行復盤,反思有哪些地方需要改進。

自己許諾的事情,一定要做到,哪怕加班趕工。

3. 不行“壞事”

作為軟體開發人員,能做出什麼“壞事”呢?從純軟體的角度看,他可以破壞軟體的功能與架構。不行“壞事”,就需要學會對自己的錯誤、不完美負責。如何避免做“壞事”呢?

  1. 讓QA找不出任何問題。充分的功能自測和單測;
  2. 確信程式碼能正常執行。設計易於測試的程式碼,要求每一行程式碼都要測試(參考 測試驅動開發);
  3. 自動化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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章