時間也是過得很快,不知不覺又過了一年。這一年發生了很多事,但是好像又過的很平淡。回想起來自己好像做過好多事,但好像又沒做過什么事,在這里我再次回顧一下去年的一些狀態、然后展望一下未來,接着立一下對應的flag。
去年的目標總結:
我去年好像說過要好好鍛煉的,這個基本放棄了,或者說從來沒有開始過,但是體重好像也算是控制助理,沒有想象中漲的那么快,去年120,今年130。當時給自己定下的是140后開始鍛煉。這個算是不了了之了。
之前好像說過要嘗試着自己做飯,但是后來找到理由說服自己了:買菜10分鍾、洗菜10分鍾、做飯可能20分鍾、飯后洗碗10分鍾,吃飯10分鍾,這么算下來好像做飯很虧的樣子,所以這個也就不了了之了。
這么算下來自己當初定下的一些小目標好像都沒有實現過。而關於讀書這個我統計了一下,包括現在正在看的一本,好像總共17本,未達到當時定下的20本的目標。
在對照着之前寫的2017的總結那篇文章上的目標好像自己完成的不多,但是我感覺這年在手機的使用時間上卻是是降下來了,每天大概在1小時左右。這個降下來還主要是由於加班太多了。從6月份開始好像就很少能在10點之前到家的。
工作總結
今年我正式接手了公司主要項目——Web掃描器的維護。在剛接手這個時候我也是被它里面有如此多的爛代碼所震驚:2萬行代碼的函數、大量重復的代碼、大量的宏定義(包括許多無用的宏)、大量的全局變量、與界面綁死的界面、大量不知所雲的局部變量。項目經歷過不同的維護人員、不同的維護人員不同的代碼風格全在里面,而且沒有文檔(不是沒有詳細的文檔、而是壓根沒有文檔)。就靠面對面的口述來進行交接。
這是面臨的主要問題,當時我想過進行重構,但是項目代碼實在太多了,代碼里面的很多邏輯我還沒搞明白,而且只有我一個人,重構肯定是不現實的。后來我自己采取折中的措施,將我自己能看懂的部分進行重構,但是很多地方關聯的太緊密,經常就是改了這塊測的沒有問題,結果臨近發布新版本了,發現另外一個原先沒有的問題,每次大改必定會帶來新的bug,這樣搞了幾次我實在是身心俱疲,放棄了。轉而向之前的維護人員那樣,慢慢加功能就好了,其他的不管了。這樣做之后,好像一切都正常了,再也不挨批了,偶爾還能得到辦事能力強,能迅速完成老板要求的這么一個好評。
既然不能重構、那么寫寫文檔吧,把之前沒有的文檔都補起來,這個想法是我在6月份想起來的,但是后來經歷了一系列的事,一直沒有時間實踐。
我在自己的另一份年中總結上寫過,公司很多老員工都走了,我也從小X轉變為了X哥了,慢慢的手下也有幾個人,開始帶一些人接手新項目。在10月份我開始帶着幾個新人開始新的項目。開始時我想按照軟件工程上的方式,從需求到分析、到設計、再到編碼實現與測試、當時也強調過要手下的人學會寫單元測試,這是我帶隊的第一個項目,自然希望將它做好,但是我發現時間是真的不允許,項目總工的時間是1個半月,我發現從我開始調研需求到形成原型圖、開會討論需求、到最后生成需求文檔這一系列就用了兩周,還有一個月還沒開始編碼。這個時候我有點慌了,將最重要的設計工作的時間壓縮到一周,白天維護掃描器,晚上加班加點進行對應的設計工作。一周結束之后我發現我完成了對應的架構設計,知道系統應該分為幾個模塊,每個模塊該實現什么功能,至於如何實現具體功能、如何進行模塊間通信與管理,這些根本沒有時間,只有讓手下幾個人倉皇上陣。最后的結果可想而知,很多早期設想由於手下的人沒有時間做最后砍掉了,最后一遍遍精簡,形成了一個最簡單的系統。由於編碼時間有限我后續沒有要求進行單元測試,只進行了最后的內部統一測試,測試時問題百出,有少數bug在短時間內無法解決,最后在不影響系統功能的情況下作了相應的精簡。而且項目不得不延期。
總體來說,我第一次帶的這個項目是失敗的,雖然我早期對它的設想很明確,先需求分析、再概要設計、然后詳細設計、編碼的同時進行單元測試、每個功能模塊完成后有對應的功能測試與代碼的review、並在最終完成之后進行對應的統一測試。並最終形成對應的需求分析文檔、概要設計文、詳細設計文檔、數據庫文檔、測試文檔、驗收報告等等。並制定了相應的編碼規范,前期甚至計划每天按照規范review他們提交的代碼。但是最終並沒有按照這條路走。針對這個項目我總結出來大概有這么幾個原因:
- 自己的維護工作與帶隊工作沒有規划好,經常就是忙於處理掃描器bug、而無法兼顧這個新項目,這個問題公司中有人已經警告過我,讓我盯緊、但是被我以維護工作忙等原因給忽略了
- 自己水平問題,我不知道一般專業的項目經理或者團隊的架構師在做需求和設計大概需要多久,我總體進行需求分析與概要設計大概花了有3周時間,從項目的時間周期來看我感覺這個時間偏長
- 自己管理問題,前期雖然指定了一些列的編碼規范、搭建了gitlab作為項目管理的工具,但是后期我基本沒看過他們提交的代碼,也沒有做到每天查看進度,甚至在后期編碼的時候已經沒有進度計划了。我發現我自己在給自己制定計划的時候很從容,而且后續也基本能夠按照進度走,而為團隊制定計划的時候,我總會考慮團隊成員的水平,總擔心他們水平不行,能不能在工作時間內做完,如果逼的太緊會不會影響他們的正常作息,一直沒法給出一個合適的計划表。當然這也跟后續詳細設計沒好好做有關,當時設計上有4個模塊,按照每周一個的進度簡單的定了一個計划,但是后續並沒有嚴格執行,沒周最后我詢問進度時,下面總反應有難度,然后就延期。當然也有未延期的,但是我沒有時刻緊盯進度,所以具體啥時候完成了模塊我也不太清楚。
- 手下水平問題,這次項目中我感覺明顯有部分人是在拖后腿的,由於是實習生,我本來沒對他們報太大的希望,只希望他們能完成打雜的工作就好,寫寫前端頁面、幫忙弄弄數據庫、搭測試環境啥的。但是我發現有的連這些都完成不了,還得團隊其他成員幫忙完成這些。有的實習生好像是抱着來學習的態度在做事,有問題了直接問,自己從來不搜索,不嘗試自己解決問題。當時招進來的時候確實也感覺到能力不怎么樣,但是看着還未畢業,想着可以來慢慢培養。通過這次我發現,招實習生也得招那些能做事的,培不培養另說,至少要能做事。
總說理想很豐滿,現實很骨感。項目剛剛接過來我跟領導信誓旦旦的保證完成,但是后續在實施過程中遇到許多困難。從這次項目中我學到了許多、知道程序員沒有想象中那么輕松,那些管理崗位並不是只要發號施令就OK、還得要合理的進行相應的規划、合理的發號施令。而且還要盯緊下面的人,有的人只有盯緊了才能發揮全部能力,否則總會缺斤少兩,總想偷懶。自己需要擺脫老好人的思維方式,多為項目考慮,而不要過分考慮團隊中其他人的感受。適當基於壓力不一定是壞事。
當然在工作中最成功的還是自己獨立寫出來一個facebook爬蟲,項目的細節我已經在我另外一篇博客中詳細的寫了出來。這個項目中使用了新的JS解析工具、並且翻譯了它的中文文檔。在這個項目中,被許多人叫做大神,甚至有人給我打賞,請求幫忙解決一些問題。這些都讓我的虛榮心得到滿足。而且也拿到了項目獎金。或許這個項目是今年最成功的項目。
學習總結
在學習上好像之前也立過不少flag,但是執行的都不怎么樣。當時總是信誓旦旦的說要學習網絡原理,要看完TCP/IP協議這本書。但是后來慢慢的就將它拋之腦后。后續腦袋里面冒出過很多想法,有很多要學的東西,但是很多都做到一半就結束了。這年的狀態經常是這樣的:
- 這個技術好,我要好好學學,用它寫一個XX程序出來
- 然后是找視頻或者看書
- 前面的好像很簡單,不用細看了,快速閱讀吧
- 基本語法我都會了,開始寫項目吧
- 這個東西好像沒有什么好的界面庫,還是用B/S架構把
- 前端技術好像不怎么會,學學這個吧
- HTML 標簽我都知道,直接學CSS吧
- CSS 這些都很簡單,看看JS吧
- JS的語法跟C很像,不看了,用的時候再查吧
- 網上找一個前端界面,自己從頭開始寫
- 這個JS代碼我看不懂,還是轉回去學學JS吧
- 最近看了一下這個前端框架,先用上吧
- 這個框架好像要求懂HTML + CSS + JS,還是好好學一下這些吧
- 從頭折回去學那些東西
- 最后正式開始寫的時候又發現,好像用另一門技術或者語音更容易寫類似的程序,先學一下新技術吧
這一年似乎都是這么一個死循環,結果專業術語了解不少,但是代碼明顯寫的少,很多書買了一堆、各種在線教育平台的課程買了一堆,后續因為看上了另外的技術而放棄了前面的內容。結果時間花出去了,錢花出去了。但是仍然一事無成。看似很努力,但是沒有什么結果。最近看到一篇微博上寫的大意是這樣的:在學習上有真正使你進步的,還有就是讓你以為你進步了的。我感覺我這一年應該屬於第二類。感覺很努力應該比那些天天刷抖音、快手的強。但是仔細想想可能還不如這些人,畢竟我時間也花出去了,結果與這些人水平無異。
在學習上我完成的只有之前定下的,VC的高級編程與Windows驅動編程的內容,我想我能完成這些在於這些是當時剛立下flag的時候進行的,那個時候還是很有毅力的,還有就是這些我手上的資料比較少,只能看那個。而且沒有什么要完成項目的想法,僅僅只是學習防止日后有用。
我發現對我自己而言很多別人很好的建議在我面前都沒有什么很好的效果,比如說很多人建議的,在學習過程中以結果為驅動,以完成某個項目作為驅動,但是在實踐中我發現,我自己在寫項目的時候容易發現自己的不足,轉而去學習另外的東西,結果導致什么都沒學會,項目也沒有完成。還比如很多人建議的,廣泛閱讀資料,在這條我會發現自己很多不會,轉而又去關注不會的東西,而把原來的任務拋之腦后。
針對這些問題,我想今后的解決方案是這樣的:
- 在寫項目的過程中,只關注那些與具體技術相關的內容,而像界面這些東西,能直接拿來用就行,不用太關注。
- 在學習新技術的時候,不要看某些東西簡單就挑過,也不要因為某些東西看不懂就轉而去研究這些看不懂的,而是在所有內容看完后在回過頭來,關注那些不懂的。有時候不懂的那些是因為另外的技術不懂,這時候可以把不懂的新技術作為下一階段的學習目標
總結與flag
不管怎么說2018已經過去了,在怎么追悔都無濟於事,我想做總結的目的不在於一件件的數那些成績,然后沾沾自喜,也不在於一遍遍數落自己的缺點大罵自己沒用。總結的意義在於發現自己的好,來年繼續堅持。發現自己的不足,來年爭取改正。在這里我給自己再立一下flag:
- 讀書(20本)
- 寫博客(一周一篇)
- 學習計算機的基礎內容(算法、數據結構、編譯原理、網絡協議)
- 學習新語言(GO、JavaScript、PHP)
- 學習Web安全的基礎內容(XSS、SQL注入等等)
這次學聰明了點,flag不能立太多,我覺得能把這些完成就算不虛度年華了。
最后祝所有朋友在新的一年越來越好、單身的早日脫單。。。。。