
有人問我,程序員是干什么的?
我說:就是敲代碼的,工作很辛苦。
之前的很長一段時間我都是這么認為的,直到今天我聽到一位老師關于數據分析的一些話(無意中聽到的,而且是瑣碎的一點一點積累的,不好組織語言,所以這里就不展開說了,之后會開一個數據分析相關的專題具體討論),才回過頭來重新審視程序員這個職業(yè),發(fā)展自己過去的2B回答和認識是多么地可笑和愚蠢,可笑是因為我把大部分人對程序員的一些或是自嘲或是貶低的看法當成了常態(tài),愚蠢在于自己都工作三四年了還是沒有學會獨立思考,停留在原地打轉沒有進步,真是愚蠢至極呀!
接下來,我從大體的業(yè)務流程和應該具備的個人能力兩方面展開敘述。
一:業(yè)務流程,總結為五點
1.需求
也就是產品需求和UI
2.設計
項目框架的設計,包括設計模式的選擇,功能模塊的設計,界面布局的設計等。
目標是用最少的代碼量寫出最穩(wěn)定的產品,設計出一套完整的相對最優(yōu)的實現方案
3.編寫
具體的代碼實現,包括選擇編程語言,選擇編程工具。
目標是將上面的設計方案用代碼實現。
4.測試
將寫好的代碼,運行正常,打包,交由測試人員測試(前提是自己要大體上運行正常,沒有特別明顯的bug,也是對他人負責)
5.優(yōu)化
包括修改bug,將之前邏輯寫的不夠清晰,有更好的實現方案的地方進行調整。
具體工作中并不局限于以上這幾種工作業(yè)務,不同的公司還有別的業(yè)務流程,比如:需求評審、代碼評審等一些必不可少的工作。
二、個人能力,總結為四點
1.理解能力
要理解具體的項目需求,自己想的或許跟需求方要求的千差萬別,必須要反復討論直至明確。
2.溝通能力
程序員不僅僅是自己寫代碼,還需要跟產品、UI、測試等相關部門聯系,這時候高效愉快地溝通是必不可少的。
3.快速學習能力
解決問題的過程中,會遇到各種各樣的問題,這時候就需要查資料,向他人詢問等,快速地自我學習能力是完成工作的保障。
4.反思提升能力
項目做完了,不是就完事兒了,還需要反思總結完成項目的過程中遇到的問題,通過斯沃特分析進行總結,以便更好地提升自己。
這樣分析下來,程序員的工作還僅僅是敲代碼嘛?
最后,我再加一點對程序員出路的一些簡單思考:
一個有能力,能夠不斷學習進步的程序員,無論外界環(huán)境如何變化,總是能夠找到自己的位置,并且他的收入只會越來越多,他的發(fā)展也會越來越好。
一個沒能力,只會抱怨,止步不前的程序員,只能在外界環(huán)境好運氣好的時候混碗飯吃,他的收入或許會因為運氣而有著緩慢的增長,可以肯定的是將來的他一定會被淘汰。
以上這些觀點都是自己現階段總結出來的,肯定有不完善的地方,以后回過頭再來看或許還會覺得自己的觀點是膚淺愚蠢的,這次寫下就當做是一次記錄吧。