你可以 CRUD,但你不是 CRUD 程式設計師!

程式設計師cxuan發表於2020-08-10

什麼是務實

務實程式設計師他們總是在面臨問題時,透過問題看到本質,從具體的場景出發,從大局著想,瞭解整個問題的來龍去脈,他們會對自己的行為負責,在專案面臨問題時,他們不會撒手不管或者任由風險一步步擴大直至無法維護。

大多數人都不是務實的程式設計師,因為成為務實的程式設計師並不滿足 短期的利益,需要長期的打磨和持續不斷的學習、思考反思。大多數人不是務實的程式設計師的原因只有一個:惰性使然

程式設計師是有戾氣的,許多人向我抱怨

  • 工作很久了,年齡也比較大了,感覺工作這些年以來在技術方向上沒什麼提升

對這些人我有話說:沒有及時反思,可能也是由於工作一直很忙,沒有停下來靜心思考。因為我相信任何有時間思考的程式設計師,都不會有這種想法。善於反思自己你會及時調整最近的狀態,系統化的學習,提高自己的核心競爭力,讓自己成為公司不可輕易替代的人才。

  • 整天 CRUD,專案技術棧用的比較老舊,想要接觸新專案,想要去網際網路

對這些人我有話說:整天 CRUD 不是你找理由的根本!CRUD 的業餘時間完全有時間提升自己!我也是 CRUD,但我不是一個 CRUD 程式設計師!千萬不要給自己扣各種 CRUD 的帽子。專案技術棧用的比較老舊,我想說,計算機世界發展了 60 多年到現在,仍然只能識別 0 和 1 ,要專注於不變的根本。如果你學完作業系統,你就知道軟體最終離不開作業系統,你就知道管程是怎麼回事,作業系統實現不同排程演算法的抉擇時什麼。我曾經說我喜歡技術,想要接觸新的技術棧,當我被問及你知道哪些 hibernate 思想到現在仍然流行,mybatis 哪些思想仍然很老舊的時候,你就會發現,技術的新潮只是一時的,沒有永遠不過時的技術!我聽很多前輩講起,在零幾年的時候誰說自己進了網際網路那完全是等著被人嘲笑的!為什麼網際網路現在流行?因為它符合我們大眾的訴求!無現金支付,工作之餘的放鬆,餓了就不想自己去買飯,實體購物又麻煩而且還要化解和各種店員的尷尬!!!但是網際網路是無法落地的,在發展到一定規模和平臺後,網際網路也是最重要被淘汰的!而硬體、晶片、通訊這些才是永遠新潮的技術,只不過無法獲取眼前的 feedback,很多高素質人才也不想從事罷了!

  • 我應該學哪些技術

對這些人我有話說:這個問題本身就沒有意義!沒有人能夠指導你學哪些技術!問這句話的目的就是想走捷徑,但是學習是沒有捷徑的!學你想學的,學和你工作相關的,學能夠讓你提升核心競爭力的!如果非要讓我說出要學什麼話,我建議學基礎,學基礎,學基礎,基礎就是計算機組成原理、作業系統、網路、編譯原理

針對上面這些人,我認為他們只是難以接受改變,我認為這類人是 煮熟的青蛙。這個故事你一定聽說過,它說的就是把青蛙放在慢慢加熱的鍋爐裡面,剛開始青蛙感覺溫度很舒適,隨著慢慢加熱,青蛙已經無力跳出鍋爐了!

而另外一種人是 把青蛙仍在滾燙的鍋爐裡 的人,它肯定想盡辦法跳出來,這類人會想盡一切辦法克服困難。

不要給自己的人生設限

李小龍曾經說過:我活著不是為了滿足你的期望,正如你也不是因為我的期望

說的喪一點就是 諸君看我多裝逼,我料諸君應如是

軟體開發行業絕對是最吃香的行業,因為我們收入頗豐,因為我們可以選擇我們想要的工作,我們可以選擇辦公地點,我們可以實現財務自由,但這些前提是你要有能力。

為什麼有人喜歡抱怨呢?因為他們不曾想著改變,Martin Fowler 說過 你可以去改變組織,或者讓自己換一個組織,總的來說,你是自由的,你可以做你想做的。

不知道你聽過 墨菲定律 沒有?最簡單的表達形式是越怕出事,越會出事,拿我們老祖宗的話就是 怕什麼,來什麼,但是在軟體開發中,出現問題是再正常不過的事情了,就算你有完善的需求、設計文件,完備的自動化測試流程,多輪測試迭代,還是會出現問題,推遲交付,未曾預料的問題的出現。

所以,不要懼怕問題,因為問題任何時刻都會出現,當問題出現時,我們應該依靠我們的專業性去解決問題,我們犯了錯誤要勇於承認,我們必須坦誠。

勇於承擔責任,不要把問題歸咎於別人或者其他事情上,也不要尋找藉口,不要把問題歸功於環境、程式語言、時間或者同事,這些因素可能影響你,但不是讓你找的藉口

設想一下,比如銀行職員、超市售貨員、汽車修理工搪塞或者敷衍你的時候,你是什麼反應?是不是恨不得想他了他們的門店?你會如何看待他們的公司?那如果是你呢?你的上司或者甲方會怎麼看你?

破窗效應

破窗效應說的是,如何把一座富麗堂皇的別墅變成一片廢墟?也許你只需要一扇破窗,這就是破窗效應的威力。

那麼為什麼破窗效應的威力這麼強大呢?一扇破窗,如果一段時間不去修理和修復,別墅中的主人就會潛移默化產生一種這座別墅很老舊的想法,久而久之更多的窗戶也慢慢積滿灰塵,不去打理,直到整個別墅成為廢墟。

拿到軟體開發中就是,如果一扇破窗(糟糕的設計、錯誤的決定、沒有註釋的程式碼,混亂的邏輯)不去修理,慢慢的就會有更多人作出破窗決定,導致整個專案混亂不堪,無法維護。俗稱一塊臭肉壞了滿鍋的湯。

編制合理的謊言

有三個在戰場中的戰士已經很久沒有吃飯了,他們看完前面有個村莊,但是村莊裡面沒有人,但是士兵沒有氣餒,他們燒了一鍋水,小心翼翼地在鍋裡放了三塊石頭,詭異的村民們都出來圍觀,然後戰士就說:這叫石頭湯,你們就在湯裡放這個?嗯,是的,士兵回答道,但是有點胡蘿蔔味道會更好,一個村民就跑回家把自己家裡的胡蘿蔔拿來了,隨後士兵又說,如果有牛肉那就更好了,又一個村民跑回家把牛肉拿過來了,最後,他們煮了一大鍋湯,士兵把石頭扔掉,最後和村民們一起吃了一頓美餐。

這在軟體開發中同樣適用。你可以通過一個小改動入手,漸漸的擴充全域性,但是一定要注意方式和方法,一定要假裝你不在意,這時候應該坐下來,等他們開始向你問你要不要加些你原本想要的功能。加入一個推進中的成功專案更容易一些。

讓使用者參與評審和設計

你是否經歷過這種,你做的東西拿給使用者看後發現這並不是他麼想要的,每次都需要打回重做。但是沒辦法,那是你的使用者,你們的共同職責就是做出一個雙方都滿意的軟體。為了達到這種目的,溝通就扮演了至關重要的作用。或者說,你還不夠了解你的使用者,要多和他聊聊,這或許是程式設計師的短板。多讓你的使用者參與評審,多問他們這樣怎麼怎麼樣。

如何學習知識

知識理財

本傑明富蘭克林說過:投資知識,收益最高 。知識和經驗確實是你最需要的資產。投資知識在某種程度上和 理財 是一樣的。什麼?這兩種毫不相關的概念怎麼會扯到一起去的?彆著急,且聽我慢慢給你分析。

  • 首先,理性投資者具有周期性投資的習慣,週期性投資就是定投
  • 理性投資者會衡量或者說平衡高風險高收益和穩定收益的組合
  • 採取多樣化是打持久戰成功的關鍵因素
  • 投資者最核心的準則就是低買高賣獲得最大的回報
  • 定期審查、反思自己的理財組合

為什麼說學習知識和理財一樣呢?

定期投資

就像金融定投一樣,你必須定期為你的技術棧找到合適的學習組合,即使數量有限。

風險管理

不要把所有的雞蛋都放在一個籃子裡,你要學新潮的框架同時也要專注於永恆不變的基礎知識。這樣會讓你不止於思考框架,同時也會讓你跟進時代的進步適應這個社會。

多樣化

你知道的越多,你的作用、你的價值也就越大。如果你是一個只專注於某個業務的程式設計師,一定要從整體把握,不要侷限在自己的一畝三分地中。如果你不喜歡業務,那你就要從整體考慮用到什麼技術,計算機技術變化迅猛,今天的熱點技術可能明天就會被廢棄。你要多熟悉技術,成為 T 型人才。T 這個字的寫法一定是先橫著寫再豎著寫的,知道廣度後,才有可能選擇一個切入點深入進去。

低買高賣

你在 Java 流行之前絕對不會想著去學習 Java,但是當 Java 流行之後,那些早起的使用者已經積累了相當豐厚的回報。

重新評估

重新評估你的技術棧,推陳出新,查漏補缺。

知識組合

這裡有一些對你學習知識的幾種組合方式,也是一些建議:

  • 每年學習一門新的程式語言:培養自己從不同的角度思考語言這回事,權衡語言的利弊,解決了什麼樣的問題
  • 每月讀一本技術書:這個可能有些費勁,因為一本黑皮書你不可能一個月就讀完了,除非你什麼都不做,天天只看書,但是有的實戰類的書還是可以看完的。這裡只是告訴你一個大致的讀書週期
  • 讀技術書:你的人生不僅僅只有計算機,還有生活,計算機也是通過人類製造出來的,你要站在人的角度思考問題。
  • 上課:去本地大學上課是一件很不錯的事情
  • 參加城市技術圈子交流:不要只當聽眾,要參與進去,瞭解其他人都在做什麼
  • 與時俱進:還是那句話,關心一下你的技術棧,閱讀相關的新聞和技術帖子,這是一種很好的方式。

持續投資非常重要,計算機不是一件速成的事兒。

碎片學習的機會

你要如飢似渴的學習,如果你無法找到問題的答案,去尋覓有能力找到答案的人,而不是要讓問題 沉寂下去。和其他人交談有助於構建你的人際網路,而且你會很驚訝的發現,在你尋找答案的這個過程中,你會不斷擴大你的知識面。

所有的閱讀和研究都需要時間,而時間是永遠不夠的。所以你需要時刻準備好,確保在無聊的時候有東西可以讀。在醫院排隊也不要忘了放棄閱讀的好機會 --- 一定要帶上自己的 kindle 或者電子閱讀器

批判性思維

最後一個要點是要具有批判性思維,批判性地思考讀到和聽到的東西。

網路不是那麼幹淨的。永遠不要低估商業的力量。他會把黑的說成白的。

網路搜尋引擎會把熱門的東西放在前列,而不僅僅是正確的東西,也並不是對你有用的東西。書店會把一本書放在顯眼的位置,但並不能說明這是一本好書,有可能包裝好,有可能封面好,有可能只是標題吸引人,有可能這本書很流行或者很暢銷。

批判性思維有五個你需要思考的方向

  • 重複性的問 為什麼
  • 誰能從中受益,瞭解資金流的轉向
  • 什麼背景下發生的這件事情
  • 開始後會發生什麼,結束後會發生什麼
  • 為什麼這是個問題

相關文章