天天看點

對于全棧工程師的思考

對于全棧工程師的思考

在今年三月份的時候,我就總結了一下軟體工程師應當具備的能力,也就是軟體工程師的核心競争力,現在重新總結,修改如下:

1、出色的技術能力

(1)紮實的程式設計基本功

(2)清晰明朗的程式設計邏輯

(3)良好的算法思想

(4)豐富的架構綜合應用能力和內建能力

2、具備技術深度和技術廣度

(1)背景開發

(2)前端開發

(3)移動端開發

(4)資料庫開發

(5)大資料BI開發

3、具備軟體體系的設計和建構能力

(1)根據項目選用恰當的軟體體系結構,要懂得多種軟體體系的優缺點。

(2)充分了解多種開發技術的優缺點,為項目進行技術選型。

(3)對項目進行子產品化,降低開發和維護難度。

4、具備開發體系的設計和建構能力

(1)選用開發工具,制定代碼規範。

(2)對項目進行版本控制,對項目進行建構、部署、調優。

5、優秀的自學能力和學習意識

6、優秀的分析問題、排查問題、解決問題的能力

7、優秀的專業素養,掌握與軟體開發相關的知識體系

8、良好的溝通能力和表達能力

9、抗壓能力、自調整能力

10、懂得各種養生之道

畢業出來工作迄今已有一年多了,我在工作當中受益良多,接觸了幾個不同開發技術的項目,有很多東西需要總結和消化。就上面總結的核心競争力談一談自己在實際工作當中的心得體會吧。

1、出色的技術能力

(1)紮實的程式設計基本功對于開發工作是不可或缺的。一條語句,到一個分支,再到一個方法,這個方法幹什麼的,是否全面考慮了可能出現的情況,代碼是否易于了解,有沒有更好的寫法…紮實的程式設計基本功能讓你快速編寫高品質的代碼,也能讓你快速了解别人所寫的代碼。高樓平地起,紮實的程式設計基本功就是你躍升的“地基”。

(2)寫代碼就是要解決某一類問題,是以需要有一個清晰明朗的程式設計邏輯。首先,你要清楚你要解決的問題是什麼,然後考慮清楚問題的最優解、解決步驟和關鍵點,最後考慮如何實施你的最優解。所有輸入的資料都是要經過轉化與處理,最後輸出,這一個過程,清晰明朗的程式設計邏輯能讓你獲得一個“制高點”,解決問題就可以變得很容易。

(3)紮實的程式設計基本功和清晰明朗的程式設計邏輯,這兩個組合起來,就是入門的算法思想。算法思想涉及的東西其實很多,有很多也比較難了解。我在大學的時候,掌握了基本的資料結構、排序算法、貪心算法和一些動态規劃算法,算法水準隻能算中等,參加程式設計比賽也沒能拿到好的名次。工作後,用到算法的地方并不多,但良好的算法思想讓我高效地寫完一個低耦合、高内聚的功能子產品,同時也能讓我在整體上了解項目,在局部把控子產品,在實作細節上遊刃有餘。總結起來,算法就是武林高手的“内功”,現在開發領域的技術萬變不離其宗,你的内功越厲害,學習新技術自然不在話下。

(4)現在企業級的開發,都離不開各種優秀且功能強大的架構。工作中我接觸到了很多目前十分流行的架構,背景架構有SSM,SSH等,前端UI架構有Layui、Bootstrap、AdminLTE,JavaScript架構有AngularJS、React-native等… 工作項目當中內建了很多架構,你必須要學會如何應用這些架構,你需要熟悉這些架構的基本原理和運作模式,你需要找資料找文檔找代碼,然後不斷實踐去檢驗知識點。這一個過程會反反複複,因為要學的東西很多,要了解的東西很多,要踩的坑很多,你一定要頂住壓力,在失敗當中汲取教訓與經驗,學會千方百計解決問題。這一個過程,就是在提升架構綜合應用的能力和內建能力,想要技術能力就能上升一個台階,就必須要挺過這個過程。

2、幹軟體開發這行是不能停止學習的,想要更進一步,你就要深入自學主流的開發技術,這個過程是漫長的,一些東西學習後需要長時間的實踐和消化。開發者的經驗就是在實際工作和實踐當中不斷積累的,一方面你要主動地去學習,掌握主流的開發技術,當然,目前開發的技術種類非常廣,我們不可能全部都去學,是以考慮好你自己的職業方向,選取一個方向,然後深入學習這個職業方向需要掌握的開發技術;另一方面,得學會總結經驗和教訓,在開發工作中踩的坑很多,總結經驗和教訓得到的知識點在以後的工作當中是很有用的,它能讓你避免再次踩坑。

3、工作以後發現,其實我們的精力是有限的,很多時候精力都在工作當中被逐漸消耗了,晚上回到家,很難提起要學習知識和技能的興趣和動力。是以,對于開發技術和技能,我們要有選擇地學習和鞏固。那些在工作當中有運用到的開發技術和知識,你應該優先去學習,掌握它,做到能夠熟練運用它,因為這能夠提升你的工作效率,能夠節省你在工作當中耗費的精力。

其次,核心開發技術的學習和鞏固是必不可少的。我經常會問自己:“我的核心開發技術和技能是什麼?我的核心競争力展現在哪裡?我的職業方向是什麼?哪個方向是适合我的?哪個方向是我想發展的?我該怎麼做?” 很多很多問題,都需要我在工作實踐中進行深度思考,然後得到答案。

4、在實際的開發工作當中,我遇到的問題其實是很多的,有因為邏輯考慮不周全導緻的錯誤,有因為API使用不正确導緻的錯誤,有因為執行流程不正确導緻的錯誤,等等等... 當然,錯誤是無可避免的,總是會有錯誤發生的,它會讓你的工作進度卡在那裡,寸步難行,但是我們不要怕,最重要的一點是要找到問題的根源,排查原因,分析原因,對症下藥,然後解決問題。因而,分析問題、排查問題、解決問題的能力在工作當中是非常重要的。

對于全棧工程師的思考

未完待續

繼續閱讀