深藏若虛

2015 年 6 月到 10 月紀錄

From Jun. to Oct of 2015

自上次寫部落格,已經是六月初的事了。接下來就開始準備期末考、期末考後就開始正式接實驗室專案,然後一路忙到了現在。這段時間忙到時間都不是自己了,但也盡量在這段期間做了些改變。在此紀錄自己這段時間做的事以及對自己的改變吧。

實驗室專案

這部分應該算是我忙碌的主因吧。我負責的實驗室專案預計在 2015 下半年要改版,然後要在年底釋出正式版。所以在六月時我開始搜集廠商(客戶)對於新版希望增加的功能或改善的項目,並且寫成改版計畫書。到了七月則開始繪製 Protoype,這裡我是用 OS X 提供的 Keynote 製作。

到了八月則開始研究要怎麼去寫,原本就是用 Visual C# + .NET Framework 的 Winform 去實作,但因為客戶希望能在介面上更加專業點(嗯?好像客戶都很喜歡這樣形容自己想要的介面),基於 WPF 在使用者介面渲染能力較 WinForm 的能力較強,我開始研究 WPF,也算是趁這個機會學學新的東西。基本上 WinForm 和 WPF 我都沒有碰過,直接碰 WPF 的成本不會高多少,況且我又是網頁出身的,WPF 提供使用 XAML 編寫介面對我來說比 WinForm 的 Deisigner.cs 友善的多。

不過在這邊我遇到的瓶頸反而不是 WPF 的 XAML 該怎麼寫,而是在於原本 Visual C# + .NET Framework 的程式編寫上我經驗不足、不習慣使用 IDE(Visual Studio)做開發,加上原本的程式碼歷經各個學長的編寫(研究所實驗室的專案,通常都這樣,一到兩年就會換一組開發人員),既沒有一致的風格,也沒留下完整的文件,讓我吃了不少苦頭。

在使用 WPF 刻 UI 介面上顯得輕而易舉,難的是在邏輯的部份要怎麼跟原本方案中的相依專案做串接,還有要怎麼寫才能夠彈性的擴充。於是我的研究方向從 WPF 轉向了架構,開始研究各個 Pattern,最後被 MVVM 給吸引住,也看了很多範例與實作,學了很多新知識。最後也終於成功實作這部分。也對微軟發表的 prism 感到興趣,尤其是 Shell 和 Dependency Injection 的概念,讓我眼界大開,也希望導入這種風格在新版的介面。但最後遇到了不少瓶頸,遲遲未導入。儘管在知識上已經逐漸融會貫通,但在進度上仍停留在介面不知道怎麼跟舊有的邏輯整合而停滯。

到了九月初,承受客戶壓力的老闆,認為我這邊的進度太慢了,跟我詢問原因。或許是表達不夠清楚,老闆認為我進度停滯的主因在於 WPF,於是下了決定宣布說,放棄 WPF,改用 WinForm 去做。聽到這個決議的當下其實我很震驚,一個月研究的成果就這樣被扼殺,其實我是感到憤怒與心灰意冷的。原版連 GUI 介面都刻的和 Prototype 幾乎相近了,現在卻要我改用 WinForm 重刻,還要求介面要一樣「專業」。

隨後老闆又找了兩個大四的學弟,整個專案變成 4+2 個成員,然後老闆要求我們把我當初估需要四個月的進度,壓縮到兩個月內要完成。於是整個九月我就陷入了加班潮,全心全力的投入專案的趕稿。

雖然八月的研究成果被截斷了,但其中得到概念仍深深影響我,比如說善用 Data Binding、MVVM、Shell 與 Dependency Injection 等,雖然還沒有熟練,但也嘗試在用 WinForm 時也導入這些概念。包括把各個功能都分成個專案,最後再導入取名 Shell 的專案,讓 Shell 專案單純當個 Shell,不包含太多邏輯。使用 MVVM 加上狀態機,去控制按鈕的狀態。也在專案中使用前人都未使用的 NuGet 去管理相依套件等。

直到十月初,整個專案的趕工期在算是有些趨緩。我也必須抓緊時間完成 PHPConf 2015 的演講準備。於是跟實驗室告了假,專心去準備演講,這部分會在後面補述。

演講完後到現在,也是陸續在整合功能。也是在這個月開始使用 Resharp 這個套件,他讓我在整理舊有程式碼風格上省下很多時間,也讓我寫的程式能夠有一定的品質,根本是開發 Visual C# 的神兵利器。整個開發大概會在十月底告一段落,接下來就是不斷的測試和 Debug,我也打算在十一月漸漸放手,將自己的部分寫好文件、交接給學弟,之就要開始將重心放在論文上了。

在這次專案的負責上,也是摸索、學習了不少,從一個 Web 起家的 Programer,到現在算是正式涉獵到視窗程式設計(雖然大學有修過課,但是都是寫小玩具)。碰到了許多新觀念,也了解到業界趕進度時到底會怎樣發展。中途雖然也和老闆有過爭論,最後也都逐漸妥協。雖然在這個專案的中,我的角色算是一個比較複合型、主要的位置,從收集客戶意見、想法寫成文件、設計介面以及功能呈現概念、負責整體架構的設計以及與模組的整合,但最終這個專案的總負責是老闆,要和客戶扛責任的也是老闆,這不是我自己的專案,我所能做的也就是在盡量苦中作樂的在其中挖掘學習的樂趣以及趕著進度,好讓我在十一月時能開始準備我的亂文。

雖然學習了不少,但這段時間我其實沒有很愉快、充滿挫折的,甚至被負面情緒填滿,生活開始無趣。老闆說,其實這就是業界的殘酷現實。我不清楚是不是業界都是這樣,但是在這過程中,研究與開發的樂趣,仍然無法抵抗一種工程師不被尊重(比如說建議不被採納、估算時程沒被相信)的挫敗感,以及整日重心全部都在趕工上,沒有太多時間在其他的領域或生活的痛苦,尤其是與開源社群沒時間接觸的枯竭感,越讓我心中沒了熱枕與衝勁。

值得高興的事,這五個月我還是有所成長,而且專案也算是趨向穩定,我也將和老闆提出他當時答應的事,開始讓我在十一月專心弄論文,自己的時間總算是開始回歸,我想對未來的期望會讓我逐漸走出這段時間的迷惘與憂鬱吧。嘛,樂觀一點,苦過之後會更好。

附註:因為這邊帶有情緒的紓發,為避免誤會,這邊要做個聲明。在對開發專案上,難免會遇到想法不同的時候,爭論在所難免,並不是壞事,畢竟每個人都有不同的角度、困難、立場與信仰。我們做的只是討論出一個彼此能接受的平衡點,把這件事做完,或是選擇離開。我在這篇幅所表述的只是自己主觀的感受、單方面說詞,並沒有爭吵或是刻意批評,請不要過度解讀。或許十年後我回來看這邊,會有不同的看法,或是仍感到如此。但是只少這時的感受的確就是這樣,我只是想紓發、做個記錄,僅此而已。

自身生活的改變

大概是六月中旬的時候,我搬家了。從學校附近搬到了市區,主要是自己要開始治療自己的一口爛牙,住市區取得醫療資源比較方便,除此之外,與生活相關的各式項也方便很多。自己也搬到了一個有流理台的房間格局,可以自己烹煮正餐,避開充斥油炸的外食。也算是一個新的開始。

而原本不愛吃水果的我,也因為搬到市區後,取得蔬果變得非常方便(全聯就在家裡車程不到五分鐘的地方,附近還一堆水果店),開始嘗試吃水果,去改善自己的偏食習慣,也讓水果去取代宵夜,減少垃圾食物的攝取。

家裡附近也一條沿溪步道,全長 3.6 公里,我搬家後最愛的就是晚上走完步道一圈,邊走邊好好沈澱、思考。七月下旬後的每晚,我都這樣散步、沈澱心情。之後也發現了當地青年活動中心的健身,在八月中旬開始培養了上健身房的習慣,雖然在十月中旬因為忙碌有點斷斷續續,但這個習慣我想會在十月下旬繼續保持吧。體重也降到了 80 以下,期望儘早將到 70 以下,降低脂肪肝對我身體健康的危害。

最後,就是開始如上述的治療我的一口爛牙吧。展開幾乎每週的定期回診,從跟管、牙雕到牙冠,陸陸續續的療程。這也造成我自我經濟上的負擔,不過我認為這是我自己以往不重視刷牙這件事,導致的結果,不應該讓父母負擔這個費用,所也是私下透過友人介紹接點程式的案子作為外快存錢做這件事。到現在已經鮮有牙痛的問題,且已經將右上的三顆根管過的牙齒都做了牙冠,接下來就是繼續存錢做左邊的牙齒了。希望能在畢業前徹底解決我牙齒的問題。

基本上,自從搬家後,對自身的改變是好的,雖然因為專案趕工的關係,熬了不少夜,但隨著即將交接開始弄論文,我想之後會越來越好的。

PHPConf 2015

十月十號,禮拜五,第二次擔任 PHPConf 的講者。

這次是仍是講 Docker,不過這次主打是 Docker Compose。感謝這次大會仍給我有機會上去演講。雖然時間有把握好,順利講完,但是問答時間讓我知道我火候沒到,比起去年演講更遜一籌。我沒有抓到現在會眾對於這部分最想知道的疑問,也就是如何將架設開發環境從 Vagrant 轉移到 Docker-Compose,而只是單純敘述 Docker-Compose 是幹嘛的、有什麼用?而無法深深地將價值深植聽眾的心上。

看了其他議程,也發現 PHPConf 的議程也真是越來越貼近使用以及活潑,相比之下我還停留在純粹講技術面就顯得有些枯燥,較無法帶動。這部分也是我深深反省的,也是未來要改進的。尤其要在一個語言的 Conference 下講 DevOp 為主的議程,要怎麼結合一直我在思考的部分,但我在 PHP 開發上的經驗近年是不如以往,與社群的接觸也因為忙碌的關係較少,使得我這次沒辦法將 Docker-Compose 的演講講得更貼近,這部分也是未來需要加強的。

反省之後,接下來就是花時間研究 Vagrant 以及目前大家的痛處,再重新寫一篇文章講述這個議題。如此,我想心裡有好過很多,不愧對買門票來聽演講的會眾們吧。

後記

其實我一直很喜歡透過寫文章的方式抒發心情,他會讓我混亂的思緒沈澱下來,讓我知道我自己要的是什麼,該做的是什麼。從中學開始寫部落格後,這方式一直都對我很有安撫效果。最近真是越覺得自身思緒渙散、無法凝聚,感到無力與痛苦。還好,我還可以寫點文章,嘗試找回自己。


General