實驗室趣談
前言
大四上學期結束,也就意味著專題正式告一段落(這句話怎麼有故莫名的熟悉感)。當初大三下結束誤以為整個專題活動已經結束(雖然課表上有這門課,但教授通常會放人),於是就先寫了本blog的第一篇文章: 關於大三專題我學到的十件事
當時想說技術&雜談方面的文章稍後就寫,後來開學才得知大四上專題還要繼續,於是這篇文章就被擱置了。
擱置的原因一方面是當時還繼續在開發,二方面是為了推甄的事情還有求於教授們。而現在學期結束,與教授沒有任何關係了,我也比較能安心的寫下這些我對實驗室的觀察。(可以開臭囉)
專題開發介紹
我加入的是基於虛擬整合技術的智慧醫療實驗室,主要開發能應用於醫療上的遊戲。我們實驗室根據不同計畫對象提出的要求去開發,而這些對象包括: 醫院、學校、政府單位等。
當時的情況是專題生被平均分配到不同計畫底下去做開發。通常計畫底下都有一位碩二生、一位碩一生與1~2位專題生。
而我加入的計畫要求的內容是幫助開發一款給原鄉老人玩的運動遊戲。
有待改進的事情
以下觀點皆是從我個人出發,難免有些主觀,不過我會盡量用客觀的事實來敘述我所看到的事情。
1. 開發上沒有統一規範
在正式開發前期實驗室學長有給遊戲開發的框架,教授們也希望遊戲開發上可以遵循框架的規則下去開發。
然而遊戲開發框架的檔案不僅版本過時,而且說明文件也不夠完善,對於剛加入實驗室的專題生來說很頭痛。
幸好跟我一起合作開發的碩一、碩二生決定不使用遊戲框架,也因為我們開發的遊戲剛好不需要紀錄其他的資料所以沒有被限制必須使用。
我後來才知道不僅框架的使用沒有統一,連開發的程式碼&專案都沒有統一管理。例如: 我們計畫共同開發是用實驗室架設的Gitea平台,但有的組別則是完全在本地端開發,互相不清楚開發的進度與狀況。
2. 開發說明文件平台沒有統一管理
實驗室上的計畫多是延續之前研究生or專題生開發過的東西去做修改or改進,但弔詭的是專案的開發卻沒有可以讓後人快速上手的開發文件(類似ReadMe等檔案)。能參考的東西只有先前的原始檔&專題生的專題說明文件😅(類似期末報告的PDF),對於一個以開發為主的實驗室居然會有這種狀況,真的很可怕。
這件事情還沒完,我參加整整兩個學期的專題會議,聽著另外一位專題生報告說他將開發上遇到的困難都寫在hackMD(一個以markdown文件作為基礎的協作平台)上,也說若有相關問題可以向他要開發筆記。我原本也不疑有他,結果到了大四上(第三個學期)的期中我才發現,實驗室有共用的wiki 🤬。當下真不知道該怎麼吐槽,要馬是學長姊沒有告知專題生有wiki,要馬就是到了這個時間點才創建。(但很顯然是前者,因為我找到兩年前的測試留言)
3. 實驗室設備無管理
在統一管理的事情上,前面兩點算是我對於開發上的一些意見,就算不做也不會有多大的障礙,頂多效率不佳罷了。但接下來要談這件事情真的超誇張,我實在是想不懂這種沒有好好規範的行為到底為什麼可以容許....
實驗室設備無管理! 無管理! 無管理!
與那些主要在做AI或雲端運算相關的實驗室不同,我們lab的計畫會使用到各種實體的設備,例如: VR設備、webcam、Android TV、sensor等不下五種設備&相關裝置。在設備這麼多的情況下,實驗室不僅沒有弄一個登記借用系統出來,反而將設備到處亂放。我到現在還記得實驗室門口進來的第一個座位沒有坐人,而是堆滿各種數據線材&小裝置,而旁邊的走道則放滿各種裝置的箱子。
如果說開發的項目是連接到電腦的設備那還好說(畢竟會一直連接著電腦),但像我開發上會使用到bike sensor體積較小,很容易弄丟。當時就曾發生學長幫忙買完設備不久後就找不到設備的蠢事,好在當時我有事先預留sensor,才不至於又要花時間去買。
4. 計畫互相不相關
這一點就比較直觀了,因為實驗室接了許多計畫,而這些計畫彼此可能沒有任何相關,以至於不同計畫的參與者無法互相幫忙。而每個計劃的要求、開發狀態、特殊形況都不同,在沒有好好記錄的情況下教授要對每個計劃都問題要全盤理解幾乎是不可能的。因為計畫互不相關,這也間接導致後面兩點問題。
5. 教授沒有指導作用?
雖然我沒有親身經歷過碩士生的日常,但在詢問過碩班學長後才發現碩士生與我們專題生並無太大的差異。都是針對計畫的內容下去做開發。然而與專題生不同的是碩士生為整個計畫的實際負責人,除了開發外也要與計劃端的人開會回報開發進度。簡單的來講,老師把計畫接回來之後,開發上就全部交由碩士生來負責。
而我們與教授的meeting就是大家輪流報告自己本周的開發進度。為何我會說"教授沒有指導作用"? 因為教授完全無法提供任何開發上的幫助,反而還會提出一些天馬行空的改進。比起老師,我認為用"老闆"來比喻反而更貼切。 而實際上老師的確就是拿學生完成的開發去對外取得一些計畫,我也是後來才意外得知這件事。
緊急修改
某一天學長很緊急的找我做先前開發成果上的改進,希望我能幫忙修改專案。我心想: 「不對阿,這project是因為先前的設備已不可用,在老師的建議之下改成使用實驗室購買的設備運行,應該已經完成了阿? 」
當時的情況是這樣,儘管感覺專案之後都不會再使用,但因為鄰近期末要收尾了就順便把修改給完成了~~(順便水個進度)~~。我認為整件事情告一段落,於是過後就被我忘了。
- 我:「為什麼需要修改?」
- 學長:「老師要拿這專案的執行檔去DEMO。」
- 我:「???」
- 學長: 「我也不知道,老師突然跟我說這周末他要展示這個遊戲,可能又要拿去接什麼計畫吧?」
- 我: 「為什麼....那個遊戲前的設置明明就超難用.....」
- 學長: 「我也知道,但老師就需要拿去展示.....」
聽完後我也只能硬著頭皮幫忙修改我已經不想再碰的專案,畢竟整個實驗室只有我了解原先專案的核心程式碼。
專案問題
說回專案開發,在meeting的過程中我漸漸發現教授不了解為何當初開發上會遇到困難,盡管計畫負責的學長不厭其煩地解釋好幾遍。不論是設備、技術等問題都告知過教授,但我猜教授的心態可能是: 原本可以做到的事情,為什麼現在不行? 這也間接導致我在專題開發上逐漸心灰意冷,因為我清楚明白自己白白投入了不少時間,去完成一個其實不需要存在的需求。以我的角度來看,我認為當初開發的東西既不好玩,也不好用。而礙於現實考量,我卻不得不為了學分而低頭。
6. 組織像一盤散沙無向心力
計畫很多但整個實驗室感覺很混亂,這個狀態從meeting 就可以略之一二。老實說儘管聽了三學期的meeting,我還是對其他人開發的項目不是很了解,畢竟每周開發進度都是專題生自己決定的。連我都不清楚其他計畫實際的開發情況了,更不用說教授了。
相信有不少人跟我一樣發現這件事,我也觀察到"部分人"每周的進度報告內容文字逐漸空洞起來。"解決XX上的bug","研究XXX部分"之類的文字開始多了起來。不過這也不能怪他們,畢竟你內容準備的再認真,頂多也只會換來: 「很不錯,繼續加油」之類的話。老師根本不在乎你開發上的細節,他只在乎成品能達到的效果。所以只要每周的報告只要看起來像是有進度就好,我甚至感篤定偶爾拿前一周的開發進度來報告也沒有人會發現(沒錯,就是這麼混亂)。
在這種混亂的情況下,把已經完成的進度分成兩周來報告根本是家常便飯。這時候有人可能會說那計畫的負責人碩士生呢? 很抱歉,他們也不是全部都清楚專題生的狀況,畢竟他們手上可能同時負責1~2個計畫開發,更不用說還有無數的會議&碩士論文,能擠出時間回復專題生就真的要謝天謝地了。
講了這麼多,反正整個實驗室給我的感覺可以用四個字 "各取所需" 來總結。老師接一堆計畫來賺錢,碩士生為了文憑與每個月微薄的薪水來幫老師開發,而專題生就是為了學分的免費勞工。在這種狀況下,開發出來的遊戲(產品)的品質能高到哪裡去? 就算計畫端那邊能接受開發出的軟體,我也受不了自己寫的醜code。
總結
以上就是當初在實驗室的一些所見所聞拉,雖然有太多事情值得我吐槽了,不過也是因為我對於現況不太滿意,所以才會注意到以上幾點,倘若根本不在乎的話也不會洋洋灑灑地寫下這麼多字了。現在的我總算明白學長姐說的: 我們系上的專題風氣(比起前面的學校)不太好是怎麼一回事。但我自認為還是挺幸運的,這三個學期下來學到挺多的(軟硬實力都有),比起被教授完全放生的同學,我至少有學到不少事?
PS: 有聽說部分教授一個月才與專題生meeting,有的甚至跟學生玩躲貓貓呢XD。