曾幾何時,我多少次吐槽自己接觸的專案,數落它們的種種不是,專案檔案結構混亂、程式碼層次不清晰、嚴重的程式碼冗餘、巨型程式碼塊、缺少註釋和日誌、散落在各處的靜態配置項、混亂的資料校驗和異常捕獲、脆弱的穩定性和擴充套件性,每一次功能升級和問題解決,都是膽戰心驚的。
這些問題僅僅是後端開發階段可能出現的問題,加上需求分析、功能確認、介面設計、架構設計、技術選型、測試等階段,會有更多問題暴露出來,每個階段都是相互遞進、相互補充的,需要得到大部分同事的認同才可以往下執行,過程中,需要反覆的溝通和討論,團隊成員要合理劃分、有所成長,專案成本和進度也要合理的控制。
可見,對於一個大專案,寫好多不容易。
我的問題和想法
我主要做Java後端開發,工作有5年了,遺憾的是沒有寫過令自己滿意的程式碼,開始說的問題多多少少都會有,另外,對自己開發過程中使用的技術也不是特別深入,遇到一些特殊的問題時,也是無從下手。
究其原因,總結有2點:
- 沒想清楚「做完一個專案」或「解決一個問題」能夠獲得什麼?
- 浮於技術的表面,深度不夠;
記得之前發過一個空間說說:“遇到一個問題時,如果能夠嘴角上揚,那是很高境界了”,確實,當遇到問題時,特別是線上緊急問題,內心會有排斥和壓迫感,一方面肚子裡沒水,沒有相關的積累和經驗,更重要的是心態不對,沒想清楚問題解決之後,能夠獲得什麼。
其實,做完一個專案,最直觀的收穫是:會使用一些技術了,但如果是已經會的而且很熟的技術呢,還能獲得什麼?更不用說到處copy程式碼了。
所以,不能僅僅關注功能實現了,對自己來說,實現的過程和質量才是最重要的,一步一步遞進,穩步執行,不斷總結,慢慢形成自己的方法論。
另外,面對問題,多想想自己從中獲得的經驗和積累,就不會有排斥心理了,而會很用心的完成它。
有方法、好心態是前提,很重要,想要很好的實現,就需要技術功力了,功力不夠,在面對一些特殊的線上問題,或是考慮系統的可用性、效能、高訪問量、擴充套件性時,就會很棘手。
所以,對於經常使用的技術要深入、專一,才能更好的實現系統功能,應對各種問題。
以上是我的現狀和反思,希望自己能有所改進。
關注點
現在的我覺得資料結構和演算法等基礎很重要,雖然實際開發中很少用到,但對於理解JDK核心類庫或框架等的實現和設計思路,有很大幫助,這恰恰又是我相對薄弱的地方,一定要慢慢補回來。
在處理高併發時,多執行緒、IO是基礎、網路,多執行緒使你能夠並行處理一個任務,IO使你能夠在各個服務和元件中互動,網路是連線的基礎,共同完成一個業務操作,掌握它們,對高併發的優化、相關框架的理解有很大幫助。
另外,清晰的專案檔案結構和程式碼層次,統一的程式碼規範和版本控制,一致的資料校驗和異常處理也很重要。
最後是考慮系統的可用性、高效能、易擴充套件、高吞吐量等,使用領域驅動的思想進行整體設計,深入瞭解常用的框架和元件,靈活運用各種設計模式。
團隊協作和專案管理也很關鍵,它們是專案真正實施的有力保障,想轉向管理的我,要多向身邊的人學習。
以後的工作過程中,應多關注以上方面的積累,重視每一個需求點和問題,因為這是積累最好方法。
想到能夠獲得這麼多,你還會排斥嗎 ~
隨著網際網路的發展,專案會不斷變大,要求會越來越苛刻,技術也會不斷變化,寫好一個專案更不容易,要明確自己的關注點,時刻學習和實踐。
歡迎掃描下方二維碼,關注我的個人微信公眾號 ~