# 工作三年總結
三年,可以讓人從幼稚走向所謂的成熟、也可以讓人變得現實認清所謂的世界。
其實,世界什么樣對我們來說并不重要,而重要的事是我們的心態將如何伸展。
總以為這一天來得不會太快,上學的時候特別希望自己能夠早點步入社會。畢竟對當時的我來說大學或是研究生沒有什么需要去學的內容。想在工作里做出成績來告訴大家什么是對的什么是錯的。可是現實往往和想象差的一條鴻溝,當實際生活并沒有達到期望值的時候,又會寄希望于另一種方式。比如現在領導不認可技術方案的情況下,我又不想去倔。主要原因是領導對我的技術不信任,又實在是找不到離開的理由,反而讀研成了可以逃避現實的一種手段。或許,讀書的意義也在這里——做自己的擺渡人。
話又說回來我也不知道怎么去表達工作的難度,怎么跟做硬件的領導解釋軟件通信、服務端開發、前端開發、網頁設計、自動化編譯部署、系統集成測試、回歸測試等等一系列的工作到底需要多少人月才能完成一個開發周期。總之每次來找我:小趙,客戶要求做個搖桿設備遠程控制水炮,需要做個網關設備通信協議轉發,把提示做成呼吸燈等等。我都是好的,然后兩天搞定。難嗎,對我來說確實不難。
大致內容如下:
1. 拓撲圖標會設計。PS照著實物扣一下三個小時搞定;
2. 拓撲圖背景會設計。CAD把現場施工水圖、電圖畫一下三小時搞定;
3. 網頁也會寫,VUE+SCSS或者原生,寫個websocket通信,來火警拓撲圖標變個樣式,彈個視頻窗口調用一下視頻播放控件一小時搞定;
4. web端的視頻播放器內核也會寫。H5讀視頻流做個視頻回放;
5. 設備通信我也會。netty作為NIO框架,自己寫個私有通信協議做設備通信;
6. 至于網站開發MVC。spring網上大把大把的代碼;
7. 測試、部署、運維。。。jenkins也好,docker、k8s\rancher也罷。真沒什么意思,工具只是提高效率的手段,真正的內容還是看個人水平;
8. 文檔編寫。發明,軟著,使用手冊,產品手冊,接口、開發文檔,通信協議、原型圖等;
做個云平臺無非就是在這基礎上多了百度地圖、mqtt通信協議、中臺管理。很難嗎?本身系統就已經是控制幾百臺現場設備的網站了。就是換了蒙面,控制幾百臺電腦而已。大部分都是我一個人在擼,如果我離開了,有人能頂上來嗎?我保留疑問。至少我覺得按我現在這個薪資范圍內、年齡段,應該是招不到人。這點兒自信還是有的。以上大致做個工作內容小結。
不知何時開始有了寫文章的習慣,內容更多的是泛泛而談,即使總結也只是努力寫得充實一些。突然想起了大學離校時寫得那些總結,順便翻開看了看,不禁有了疑問:喲,我之前能寫出這樣的文章?轉眼過了三年,當初心心念念工作三年經驗的坎如今就在腳下。試問問自己:這三年的努力有沒有撐起了自己的野心、或者說是夢想一類的代名詞,是否成為了曾經艷羨的那個人。還是說已經被現實磨平了棱角接受了自己的平凡,又或者成為了曾經所討厭的那一類人?
一直以為自己沒有變,覺得走在正確的路上漸行漸遠。直到在國網出差時遇到一個和小伙伴性格類似的小姐姐。雙目對視的一瞬間,想起了大學四年的點點滴滴。才發現我已經不再是曾經的少年了。主要還是變得沉穩了,心態發生了變化。畢竟這三年隨著知識、技能、閱歷的增長明白了很多。慢慢地發現了愿意學的始終愿意學,不肯干的就算推也是推一下動一下,有的甚至推了都不想動。很多時候沒必要去強求,也懶得去交流了。遇到過形形色色的人,一眼也就看明白自己有沒有開口的必要。
很多時候都是選擇沉默,因為自己心里明白,一路走來,許許多多的人曾經幫助過我。教過我做人,教過我知識,教過我技能,教過我識人等等。曾經他們施舍予我善意,未來我也施舍予他人。用一句話表達:你認為世界都是泥濘不堪的沼澤、可又曾努力飛過云層看最美的天空?見到更多的是不曾努力,卻又抱怨上天不公。那么這三年的努力我又用在了什么地方?
言歸正傳,下面是技術成長史,技術總結:
軟件的本質:人在日益繁雜的現實世界中為了解決生活困難、提高工作效率、規范做事流程等方面,需要各式各樣的軟件作為工具來幫助他們自己。軟件的誕生依托于具有實用價值。一款優秀的軟件創造過程必然包含以下六個節點:思想的捋順、文檔的表達、流程的展示、代碼的實現、軟件的測試、系統的運維。這六個步驟任何一個環節的缺失都會對軟件的交付產生不可磨滅的影響,這個影響更多的來自于負面。而一部分程序員的關注點僅僅停留在第四環——代碼實現,從不站在問題提出者的角度考慮軟件的設計、也不站在使用群體的方向考慮用戶的體驗。前三點可能獨占了整個開發周期的三分之一到二分之一的時間,剩下的反而是不重要的重要。
第一點:把想法變成文檔,并嚴格按照文檔的指導實現代碼
每個團隊的靈魂程序員(俗稱首席架構工程師)都可以看作畫家,看到橙子皮上的紋理就想找張紙把它畫下來;過了一段看到桌子上蒙了灰橙子皮皺了,又想讓它躍然紙上的沖動我在好多人身上都能看到。在程序員編寫軟件的過程中更是屢見不鮮,甚至是越厲害的程序員越相信自己的能力之大——足以駕馭這種punchline(點睛之筆)所帶來的負面效果。但事實上沒有誰逃得過焦油坑(人月神話),越掙扎陷得越快。無論你是史前猛犸巨像,還是現代大力士,又或者是靈活的小老鼠。而文檔的作用往往就是用來評估可行性,把抽象的思維具象化成文字描述,把個人的靈感轉化為團隊的力量。從而做到指哪,打哪。
第二點:軟件實現的流程,可能是獨舞
首席程序員需要極高的天分、豐富的經驗和應用數學、業務數據處理或者其他方面大量系統知識和應用知識。并且在整個軟件的實現過程中,需要有一個團隊的人來為他進行服務。比如副手,能完成任何一部分工作,但他主要作用是作為設計的思考者、討論組和評估人員。再比如編輯,出于最大透明度的考慮,必須創建各種文檔,無論對內部描述還是外部描述。而內容更多是首席程序員的口述或者是草稿,進行分析和重新組織,通過各種參考信息和書目,并對多個版本進行維護,監督各種文檔的生成等等。一切工作內容其實都是圍繞首席程序員展開。但是目前對我來說,身邊只有一個能寫java,vue能寫一部分的小伙伴。剩余所有一切工作內容都是我自己肝,包括寫這篇工作總結,都是分了好幾次細心裁決出來的。
第三點:寫程序就是要一邊完善,一邊測試
測試也是很重要的一環。它可能達到了開發過程的一半占比。其實軟件在實現的過程中本身就是一邊構件、一邊測試。直到構建的差不多了,接著進行組件化測試,也可以稱為早期系統測試。當所有構件已完成,就進行系統集成測試。但是對于大多數項目,第一個開發的系統其實并不合用。它可能太慢、太大、而且難以使用,或者三者兼有之。因此,為舍棄而計劃,無論如何都需要這樣做。這個階段可以認為是原型開發階段,或者人月神話中所提到的試驗性系統。接下來的工作無論是美化、性能調優、功能完善等內容都可以提上日程,作為二階段開發指標。該階段完成以后再跟一階段開發出來的產品進行集成測試,無論是軟件的兼容性、穩定性、健壯性,都會有一個質的飛躍。
第四點:嘗試在不同環境下測試軟件,把自己當成使用者
軟件的安全性、兼容性、穩定性、性能、健壯性、易用性。第三點里原型開發階段如果可以投入生產環境。程序員可以作為運維工程師對系統整體做評估給出優化方案,無論是軟件設計成本、硬件造價成本、用戶體驗等方面做成記錄,詳細聽取客戶訴求、領導提供的設計方向,三方面信息綜合得出優化報告。從而作為先決條件:優化基準、測試基準來指導二階段開發。在開發的過程中,提出測試用例,改動部分詳細記錄作為回歸測試的依據。自己先整機簡單測試后交由測試人員做系統集成測試,修完BUG后測試再修改再測試無限死循環。因此必須明白什么時候該停下來。心里有一桿尺,測到什么程度可以作為正式版發布。再有bug放到下一版去優化。這塊兒可作為頂級工程師的衡量標準之一:開發人員握在手里的bug數量永遠是涵蓋售后人員以及其他使用者反饋問題的80%以上。換句話講,你使用者還沒發現。我已經發現并且開始優化了,當你發現的時候,我已經測試完成并且已經有了新的版本。不排除特殊問題到現場才被發現。比如之前遇到的一個問題:國家電網的強電干擾導致設備通信波動,tcp包大量丟失造成網絡重發引發網絡風暴。
第五點:擁抱變化
計算機技術是一場革命,一個只屬于我們的時代,早20年或遲20年都不會像現在這樣林林總總。它更多的是變革,讓人又驚喜又害怕。喜得什么呢?每天都有新技術新發明誕生,游戲越來越精良、電子設備越來越好玩、更新頻率越來越快。曾幾何時,買一樣東西至少能用好幾年。現在一部手機用個2,3年都算是老古董了。導致人們漸漸地出現了害怕情緒,害怕跟不上時代,信息大爆炸的時代,越來越容易學到新知識,獲取技能越來越廉價。因此如果想讓自己一直保值的話每天不停地學習就成為了人生必修課。那么想要升值的話,就需要更加努力地學。話鋒偏轉,我們這一代人需要學習的知識是上一代人的好幾倍。所以有人說,這是最好的時代也是最壞的時代。那么對應到軟件行業里,就是軟件版本的不斷更新迭代:計算機語言的升級、開發工具的升級、技術框架的升級、插件的升級等;新技術的誕生、新行業的誕生、新崗位的誕生無時無刻都在引誘著我們的猿們:這個技術崗位給高薪,大家快來啊。導致很多人在各種浪潮中迷失,不知道該學什么。其實只有最最最基礎的,核心四大門才是通向彼岸的階梯。數據結構、計算機組成原理、操作系統、計算機網絡。
第六點:基礎重中之重
其實還有數學,最重要!
說起計算機技術你最想問的問題是什么?在下列list里嗎?這是我同事問過我的幾個問題:
1. 操作系統是什么?
2. 為什么要有數據結構?
3. 計算機組成為什么是CPU、內存等?
4. 電腦之間是如何通信的?或者手機APP是如何通過wifi去上網的?
都用一句話解答:
1. 操作系統是由琳瑯滿目的進程組成的系統,你可以理解成車間各個崗位上的工人。有控制鼠標操作的進程、控制鍵盤操作的進程、控制桌面操作的進程、控制硬盤操作的進程等等。操作進程的系統,簡稱操作系統;
2. 數據多而雜的時候不好存儲和查找,因此分門別類進行了二次抽象。先有結構后又天;
3. 馮諾依曼結構。仿生,類似人的神經系統;
4. 一道經典的面試題:當我們在瀏覽器地址欄里輸入baidu.com按下回車,直到頁面加載出來這段時間里,都經過那些步驟?
這四個問題現在略有心得,不過我覺得還不到正兒八經寫的時候。那么這個總結到這里應該結束了。本文記錄了工作內容,做事的方式,學習的方式。不希望將來自己本末倒置。
正如俗話所說,在汽車出來前,人們只是想要一匹跑得更快的馬。馬并不重要,跑得更快才是核心。而馬就是代碼的實現。
- 2023-4-8__成長之路
- 技術雜談
- 程序員境界
- 走進猿類
- 做一個程序員
- 什么是猿類
- 愛亂吹的猿
- 業余生活
- 我的書架
- 高效程序員的45個習慣
- 敏捷—高效軟件開發之道
- 態度決定一切
- 學無止盡
- 交付用戶想要的軟件
- 敏捷反饋
- 敏捷編碼
- 敏捷調試
- 藝術人生
- 摘自藝術的境界
- 如何欣賞畫
- 《的》
- 我的文檔
- 小白學習前那些說不完的事
- 計算機語言都一樣
- 嘗試理解他人代碼
- 做為旁觀者的思考
- 怎樣才算懂計算機
- 工欲善其事,必先利其器
- 教案日志
- 十天學電腦
- 一,認識計算機
- 二、認識編程語言
- 三、認識程序內涵
- 四,認識數據結構
- 五、認識電腦系統
- 六、認識通信原理
- 七、郵箱管理
- 八、重新審視電腦
- 九、理解終生學習
- 十、感悟三千世界
- c語言
- C語言——我覺得好簡單
- c學好不怕沒飯碗—2014.7.21
- C語言——我想的有點兒簡單
- 或多或少的c語言知識
- c語言初探篇
- 初探c語言底層
- 初探整型和浮點型
- 初探二進制數---原反補移
- 初探有無符號
- 初探c是如何跑起來的
- 初探指針
- 初探數組
- 初探順序表
- 初探棧,隊列
- 初探c語言編程
- c語言進階篇
- c語言自身的那些事
- 結構詳解
- c語言大成篇
- 人類思維——模式匹配
- 論c語言面試
- 數據結構
- 核心概念,沒有之一順序表
- 線性表代碼實現
- Sq_list
- 不存在的鏈表
- 只是一種思想——棧
- 只是一種思想——隊列
- 不存在的樹
- 只是一種思想——二分法
- 不存在的圖
- 算法原理
- 傅里葉變換
- 算法導論
- 算法導論——c語言實現
- 算法導論——java實現
- 組成原理
- 操作系統
- 初探操作系統
- 深究操作系統
- 操作系統如何跑起來
- 進程就像細胞
- 系統就像生命
- 進程樹pstree
- 進程
- 進程何時更名為生命
- 初探進程映像
- 程序如何成為進程映像
- PCB
- PCB解讀之——信號量(p_sig)
- 進程同步
- 進程通信
- 進程調度
- 用戶
- PPDA
- 存儲系統
- I/O系統
- 網絡原理
- 通信簡史
- 通信是網絡基礎
- 趣談網絡
- 自我介紹
- 快遞公司
- 小D的自述
- 網絡架構
- OSI/RM
- 應用層
- 表示層
- 會話層
- 傳輸層
- 網絡層
- 數據鏈路層
- 物理層
- TCP/IP四層模型
- 五層模型
- 網絡劃分
- IP史
- 信息安全
- 社會工程學
- 信息收集
- 誘導
- 偽裝
- 如何成為任何人
- 社會心理學
- 思維模式
- 說服的力量
- 代碼審計
- 災難恢復
- 安全注入
- 網絡工程
- 802.11
- CCNA
- CWNA
- 社會工程
- 社會心理
- 信息誘導
- 身份偽裝
- 系統框架
- web前端框架
- smarty框架
- bootstrap框架
- thinkphp框架
- zend框架
- yii框架
- ci框架
- 網站開發
- 五大難題
- 網站工作原理
- 數據庫原理
- 服務器原理
- 前端開發
- 前端技能基礎
- html
- css
- javascript
- 瀏覽器兼容
- 前端總結
- 后臺開發
- 或多或少的JS
- js初探篇
- 理解Javascript
- JS繼承
- 數組
- 操作方法
- DOM事件
- 數據傳輸
- JS面試題
- 數據對象
- 學生管理系統
- 學生管理首頁
- 粗略學了一遍后的總結
- 零碎知識
- js初探篇第二版
- javascript構成
- 基本類型
- 基本語句與判斷類型
- 基本對象與操作函數
- 基本判斷與甄別數據
- 內置對象與操作函數
- 對象認識與深淺復制
- DOM級別與BOM
- 嚴格模式與混雜模式
- ES5和ES6
- js進階篇
- 上傳圖片
- js實戰篇
- 或多或少的PHP
- 詳解url結構
- html基礎
- html初識
- html-組成頁面的基礎標簽
- ie兼容
- 教學方法
- 論php——編程思想
- 論php——底層實現
- 中華國學
- 易經
- 黃帝內經
- 山海經
- 道德經
- 騙經
- 中華哲學
- 一花一世界
- 道可道非常道
- 一瞬
- 宇宙
- 心得體會
- 電腦叫智能生命體更準確
- 計算機不是漢語模式
- 瑣事日記
- 成長與人性
- 祝單身狗快樂
- 人其實過的很單薄
- 都怪自己不夠優秀
- 那是幾個人的世界
- 認清世界,認清自己
- 陪伴繁華逝去的平凡
- 俯拾仰取
- 技術手冊
- 網站開發
- 準備工作
- firewalld
- mysql
- redis
- 開發流程
- 整體配置
- 環境配置
- tomcat配置
- 數字證書配置
- 項目配置
- 數據設計
- 用戶管理
- 整站設計
- user
- user_group
- user_role
- 服務端
- 了解學習
- quartz
- HelloWorld
- HelloJob
- HelloQuartz
- HelloScheduler
- Job
- JobDataMap
- Trigger
- Scheduler
- properties
- spring
- AOP
- 使用
- svnkit
- svn init
- FSFS
- server
- Java
- 測試
- 任務調度
- 網站架構
- 網站前端
- pc端
- 移動端
- native
- ios
- android
- ipad
- hybrid
- 技術日志
- 2018-9-26
- 2018-11-26
- 資源收集
- UED資源
- 技術架構
- 云平臺
- 工作方面
- 實習工作經驗
- 草稿1
- 草稿2
- 草稿3
- 草稿4
- 草稿5
- 草稿6
- 草稿7
- 大學總結
- 面經
- 一、職能定位
- 細節
- 前端
- 工作總結
- 簡歷
- 職業規劃
- 一年規劃
- 整理歸檔
- 2015/11/10以前
- 2015/11/10
- 2015/11/11
- 2015/11/12
- 2015/11/13
- 2015/11/14
- 2015/11/15與16
- 2015/11/17
- 2015/11/18
- 2015/11/19與20
- 2015/11/21
- 2015/11/22
- 2015/11/23
- 2015/11/24
- 2015/11/25
- 2015/11/26
- 2015/11/27
- 2015/11/28
- 2015/11/29
- 2015/11/30-12/6
- 2015/12/7-2016/4/18
- 2016/4/19
- 2016/4/20~2017/6/27
- 2017/6/28-2017/7/4
- 2017/7/5-2018/1/11
- 2018/1/12
- 2018/1/13-2018/4/19
- 2018/4/20
- 2018/4/21-2018/5/10
- 2018/5/11
- 2018/5/12-2018/5/16
- 2018/5/17-2018/5/30
- 2018/5/30-2018/10/15
- 2018/10/15-2018/10/18
- 2018/10/19-2018/11/17
- 2018/11/17-2018/12/31
- 結束----------------開始
- 2019/2/18
- 2020/7/30
- 2020/9/5
- 2021/5/6
- 回收站
- 以前文件
- 2015-10-17__成長之路
- 2018-10-15__成長之路
- 2020-3-29__成長之路
- 畢業三年總結
- 浙大之旅
- 2020
- 英語
- 基礎3000單詞
- 第一周
- 百詞斬__126
- 百詞斬__126翻譯
- 百詞斬__252
- 百詞斬_252翻譯
- 百詞斬__392
- 百詞斬__532
- 百詞斬__672
- 第二周
- 百詞斬__812
- 聽力
- 新東方演講稿
- 庫克杜克大學演講全文版
- 庫克杜克大學演講演講英文對照版