看板 Soft_Job 關於我們 聯絡資訊
※ 引述《vivokerker (vivokerker)》之銘言: : ※ [本文轉錄自 Tech_Job 看板 #1Mo7_bds ] : 作者: poc7667 (poc) 看板: Tech_Job : 標題: [心得] 晶睿通訊VIVOTEK三年多工作經驗 : 時間: Sat Feb 20 23:01:54 2016 : 小弟其實離開前東家 VIVOTEK 也一年左右了, : 先後待過兩個部門 R1 開發Firmware, DQA 開發自動化測試框架平台 : 說真的都離開這麼久了,當初有的不爽不滿,摸摸鼻子就算了! : 但是昨天又聽到前同事『們』最近要被逼得不爽離職的辛酸淚, : 於是來分享當年在這間公司服務的心路歷程, : 給台灣未來優秀軟體青年做參考 : 此文很長,小弟先說結論 : 在 R1部門 我忘了我是一個念過六年CS的人 : 小弟背景113(學)->112(碩), : 在這裡,我痛苦,整天上班就像是坐牢。 : 一開始曾經想努力看看是否適合這個 position, : 後來實在被這種沒日沒夜,擦不乾淨屁股的屎缺磨光耐性, : 尤其當你看到在上面的主管,整天在捧更上面的高高官馬屁, : 這些主管從上面拿到了任務,回頭過來壓榨底層同事 members : 我也忘了從哪天開始我就下定決心擺爛裝廢, : 直到後來被前主管約談,踢到另一個 DQA 部門。 : 在 DQA部門 TD team 我重新找到 coding 的樂趣, : 像是回到大學在寫組合語言 Final Poroject 那種不會想睡覺, : 想熬夜完成自己產品的心境, : 總之你懂的,就是那種自動驅發你去做一件事情的動力。 : 在這裡我學到很多,過得很快樂! : 結論結束了, : 接著陳述我自己在這間公司三年多的經驗 : 進入VIVOTEK 你要有一個認知,底薪奇低無比。 : 我現在工作是以前月薪兩倍多, : 過六位數再多一點,公司經營再怎麼爛,整年拿下來也有一定收入。 : 在一個開心有熱誠的環境,你也不會去自暴自棄擺爛。 : 但是在 VIVOTEK,你真的黑的話, : 當一個RD只拿個六七十萬比作業員還慘,是有可能的! : 由這兩年小弟收集快『一打』的因為吃悶虧不爽的離職前同事, : 被黑的機率,一點也不低 : 這個部門也不過20~30個人而已吧,離職快一打也是不小的比例了。 : 進來R1這個部門,你的工作就是要出 Firmware : Firmware 就是要去把各個系統 module 包好, : 讓整包 Firmware可以正常的運行在 Camera 上面 : 大部分 module 都是前人開發的歷史共業, : 你甚至可以看到 2004, 2006 年留下來的註解, : 這些作者早就離職或者步步高升。 : 很多內部架構,當你實際在翻code,應該會『一個頭兩個大』~_~ : 或許你心裡會OS 可以 refactor 或者是打掉重練 ! : 但是上面高官都會和善的跟你說,時程很趕,而且打掉重練也會有風險, : 你就捏著鼻子,照著這團東西,繼續改下去,得過且過吧。 : 於是乎,你整天就在跟『這坨』東西奮鬥! : Firmware 還有一個重要的模組 - Web UI, : 就是透過網頁UI送 request 去控制Camera的狀態 : 有興趣的人可以自己想辦法去買一台VVTK Camera : 開到 Video page 檢視原始碼, : 裡面的 code 說有多骯髒就有多骯髒, : 比很多大學生寫的網頁架構還『頗ㄏ』 : Camera網頁不外乎有css, js, html擋, : 你常常能看到 html 裡面會 embeded 一些奇怪的 script, : 總是會在驚訝的地方發現這塊code居然蹲在這個角落。 : 同樣一個功能 他可能在 html 裡面被 embeded js code 所影響, : 或者後端的 js file"S" 所『交互』控制。 : 很多時候你在查找某些功能會在哪邊改到, : 你必須去猜測偉大前輩可能用, : 哪些方法去 access 到那個 element, XPATH, ID, .... : 而且該功能也不一定集中在一個地方被控制,而是散落世界各地, : 開啟你的 command line , grep 來 grep 去,你再加上你的補丁 : 反正能解掉就解掉,不能解掉就先貼個 workaround 丟給後面一個人慢慢補。 : 你可能解掉了某個 bug, : 但是你忘了你修改的這個破補丁, : 讓另外一邊功能也受影響了 嘿嘿! : 別妄想什麼自動化測試,沒有什麼 TDD test 拉, : 你就是要憑經驗去測可能受到影響功能就對了。 : 反正主管都覺得這個應該很簡單啦, : 你出錯是你能力低落,怎麼連寫簡單的網頁都會有錯。 : 以小弟我現在的程度來說, : 當初在修改 video 相關的 js files,所花費的時間 : 都夠我去完成我的 side project (https://lazyair.co/) : 重寫好幾次都有找。 : 程式的奧妙之處就在這裡,沒碰過這Firmware web module屎缺之前 : 都不知道那少少幾個沒營養的 js 檔,會讓你 ooxx住套房。 : 總之做了很多事以後,你會需要 svn push 上去 : 然後偶爾莫名其妙 conflict 給你看? : (OS: 好懷念這種上個世代的版本控管產物) : 網頁每一個js檔案常常一兩千行的 爛code 躺在那邊給你看。 : 你要出 Firmware 就是每天都跟上述的那坨東西 fighting : 或許有人會說,這也是一種練功,也是一種鍛鍊。 : 我會說『你開心就好XD』 : 提完了主要工作內容,再來就提一下主管跟我相處的過程 : 首先,我是『黑』人,想當然爾主管不會喜歡我。 : 以下都是夢境發生的了... : 在我的部門下面有好幾個小主管, : 但是基本上部門是開放空間,你很容易知道某個主管在做什麼事情 : 以下是發生在個人身上的經歷,我盡量描述經歷以及我的感受。 : 記得某個網頁的 JS 我曾經留下一個 bug, : 那個時候被 QA, RD, PM team highlight : 在夢境中,我只記得OOXX主管拉我到後面去,數落我一番之外, : 還要我保證往後不能出現這個網頁 Bug : 當下我非常的火,幾乎要跟他吵起來。 : 我念CS念這麼久,如果我可以保證某個東西不出 Bug 那我應該是可以得圖靈獎了。 : 當然主管的意思是,這一塊功能我要捏緊LP,以後不要亂出包。 : 但是要我發誓保證不會出 Bug ,但是即使在夢境我也做不到這種『合理』的要求。 : 突然又夢到,有一次走到QA大樓開會, : 忘了XXOO主管跟我交代了什麼,要想辦法把某次的責任撇到QA上面去。 : 當下心裡是覺得他蠻無聊的,但是後來我到了QA,回想這件事情,會覺得蠻過分的! : 一直到最後, : 我被OOXX主管跟更大的主管,一起約到一個會議室。 : 他們告誡我說因為小弟績效極差,又得罪了QA部門, : QA跟高層反映我這個人很有問題! : 高層決定把我調到QA進行自動化軟體開發。 : 雖然我不太懂為什麼『得罪QA還要被調到QA』 這種邏輯 : 但是當下可以離開這個地方,我心情是輕鬆的。 : 在人事異動過程中,HR大頭也有跟我聊過, : 問我知不知道為什麼被踢過去。 : 我跟他說,據我所知是因為得罪了QA高層, : 後來HR大頭笑笑跟我說,他不知道有這件事情 : 他只跟我說那個OOXX主管, : 私下跟HR反映要把我調離單位,Push的動作已經大概半年了.... : OS: 想起公司要每人掛在嘴上的 Slogan 『誠信、關懷、創新、當責』心頭烏鴉一陣飛過... : 當然,因為我很『黑』,也出過很多包, : 或許這些我遇到的屎事都是可以預期的,都是我應得的。 : 接下來我簡單講幾個我同事的例子 : 他們大都是 113 114 112 電機資訊背景的,所以至少都有基本程度吧? : 某個平常表現不錯的R同事要轉換職場,正值發獎金的時節, : 結果正常都要拿1~2個月以上的獎金,他只拿到了 4~6K (隱藏實際數字) : 他去跟大大大頭反應,該大大大頭跟他說是公司政策。 : 不過奇怪誒,我們QA這邊也剛好有人要走,怎麼他就是拿正常的獎金? : 某Y先生,在我眼中挺認真負責, : 只是他們那一組的風氣就是早上晚點到, : 中午出去吃飯可能也晚點回來 : 但是他是那種『週末』也會為了自己案子來加班的同仁, : 也有入圍敬業員工名單 : 但是也因為可能得罪了方丈, : 年終也是慘兮兮 : (我想Y先生以後來是夾好軟蛋,乖乖準時上下班吧) : 某個J先生,受不了整天無腦的屎缺工作, : 成天都在FB跟我抱怨他的主管在做一些ooxx的行為,只會用嘴巴寫扣亂畫大餅。 : 該主管講的idea 跟做法,都笑破下面members的LP。 : 據說,該主管還被隔壁部門調過來RD嗆過『到底想不想做事』, : 該嗆人的RD我有短暫共事過,很有能力跟熱誠,不過人也走了 心灰意冷啦。 : 想必該主管技術能力跟做官的技術,應該是成反比。 : 總之搞的J先生 整天怨天尤人,最後甚至自暴自棄,靠著酒精麻痹心 : 研替時間一到J先生就飛去米國, : 目前已經錄取美國Google了。 : 可見我相信J先生應該不是太廢,而是他工作真的有點無腦又屎缺。 : 某Z先生,根本就沒有實際交接過某Firmware模組, : 結果可能涼涼的主管們聲稱已經交接完畢, : 要他馬上開始接手該module開始擦屁股 : 一遇到問題就是CC highlight 給很多人, : 發揮寫Email專長的影響力與當責精神 : 某G先生,以前坐在我對面那塊區域, : 到晚期的時候他的主管每天下午就會跟OX罵街一樣, : 噹他噹到整個部門約50坪的空間大家都清楚聽得到。 : 某陽光男孩, : 剛來的時候臉上都是自信陽光笑容, : 每天都被他的主管夾軟蛋,罵得跟狗一樣, : 明明在我們眼中他就是接上最賽的爛缺, : 有人要接就阿密陀佛了, : 該主管還是把他常常當狗一樣電,年薪拿的比QA少。 : 臉上完全看不見笑容,你可以感受到一種哀傷跟自卑。 : (再來要提到R1跟QA這邊我所瞭解的事情) : 就我經驗 R1常常要花很多時間 flighting spaghetti code : 特別是網頁的部分。 : 同時,QA部門也極力想要實現網頁自動化測試, : 降低公司人力測試成本, : 提升軟體品質,自動化測試框架 based on Selenium, : 不過地獄的地方在這,每一台不同系列的Firmware網頁架構都長的不同, : 同一個功能的 DOM element 所屬XPATH 也不盡相同。 : 幾十種上百種的不同網頁架構差異,是要怎麼自動化測試?每一版本寫一套 4Ni? : 這邊QA跟R1提過,要確實導入自動化節省公司測試成本提高品質 : 網頁重要DOM element 一定都要有統一的 id value, : 這樣子做自動化測試我們比較好寫 test case去測試。 : 結果據我所知,也是被OOXX主管以種種理由擋下,推託,完全當責。 : 最後這種一堆亂七八糟的網頁檔, : 整坨就丟在QA部門臉上射後不理 : (反正屎不是他們要擦的,他們當然不care) : 這樣的做法,對R1部門來說很爽。 : 相對的QA很多case只能耗費超級大量的人力去加班測試。 : 設想,如果今天有個自動化測試框架, : RD一開發好,自動 deployment 上去就知道哪裡有bug, : 不用RD, QA手動去測,不是也很爽嗎? : 很多 critical test 很regular,本來就適合自動化去測試, : 這一關有做好至少可以擋掉很多低級的critical bug : 可憐的R1 members,到現在還是要跟奴工一樣進行手動測試。 : 或許OOXX主管們只想到它們自己! : 能夠快出產品趕上 deadline 就好, : 沒有考慮過身為奴工,把屎把尿的你們,有多麽心酸。 : 也許他們也不曾考慮其他部門, : 不考慮整體公司利益,把自己的狗糧顧好就好。 : 憑良心講,產品的品質黑洞, : 有些時候也是被一堆 不makesense的SPEC 所拖累。 : 舉例來說,網頁上某個input地方可以接受任意字元沒有任何限制,聽起來很棒棒。 : 不過,在Firmware處理上,這種東西Bug就是來了又去去了又來。 : 既然這道菜煮不好,你這間餐廳就不要做這道菜,做爛菜讓客人點到反而更不爽。 : 像是今天開一間餐廳, : 跟客戶說你有一百道菜提供,客戶當然好。 : 你跟客戶說你有一千道菜提供,客戶當然覺得更好。 : 但是很多時候很多菜,客戶不吃根本就不會死, : 把核心有價值菜色做得好才是『價值』所在 : 把那些多餘的菜,做得很難吃,讓客戶點到,小弟私心覺得會更糟糕。 : 小弟私心建議網頁太多餘功能想辦法拿掉吧,RD,QA都花太多資源在這上面瞎耗T_T : 總結一下對這個部門的評價, : 這個部門的早期功臣,大多都高升了, : 或許他們心中存在那種公司都是靠他們才撐得起來的幻想。 : 每次開會習慣性地貶低R2(這個不賺錢的部門,沒用啦) , : 洗臉QA(一群ooxx 只會測一些無腦bug), : 老大自以為心態就是如此。 : 對於一些開發流程,以及舊有的黑洞, : 就是鴕鳥心態,上面的人很怕出包很怕死。 : 反正一坨code能用就將就著用,不要被出包被上面highlight就好了 : 你如果對軟體開發還有熱誠,不是喜歡包裝拍馬屁的人,我不建議你來。 : ============================= : 再來談談我在DQA的日子, : 這裡的日子真的很快樂,重新找到寫軟體的樂趣, : 拿的薪水也比我當RD時期多很多。 : 我在DQA做的是『自動化框架開發』,加入的team是 TD team : 當時算是草創時期,即時你現在進去也還算是很早的階段。 : 在這邊你的任務就是,利用任何高效的方式去測出產品可能的問題,盡量節省人力測試。 : 但是相對地,在這邊很彈性,你聞不到官僚的噁心氣息。 : 你覺得市場上有個技術很酷很炫,拿來開發可以節省人力,你就去學。 : 部門也會補助你去買 code school, udemy 相關課程,甚至讓你出去花錢受訓。 : 接下來我要講我在DQA的日子,在提到DQA環境之前我想先說插一段故事。 : (以下指的是Firmware SI RD) : 我相信大部分的人可能會覺得RD的職稱比DQA好聽多,聽起來也比較好找下份工作。 : 在我觀察,R1 RD 美其名叫做 RD,實則把屎把尿,解一些莫名其妙的蓋營養 bug , : 這些 bug fix出來了對於coding實力的增長也微乎其微。 : 可以上去 redmine 上面看完一輪 bug, : 大概就知道 RD 都花時間在解決的哪些『蓋營養雞排』的Bug. : 而出 Firmware 流程基本上follow VVTK 十年前硬幹的build firmware toolchain, : 慘的是在VVTK FW自創開發框架上, : 想新增一個功能,必須知道是在哪一個檔案定義,去該檔案修改對應的參數。 : 這些類似的東西散落各地,大部分有規則,但也有很多例外。 : 你會花很多時間在學習這框架,有些東西也沒有原因跟道理, : 前人就是這樣開發,你就是背起來記起來。 : 有時候你會驚呼,Jack這實在太神奇了,誰知道這裡藏著這鬼trick。 : 但是離開了 Vivotek ,哪間公司承認你這自幹自high的開發框架價值。 : 在 open source 盛行的今日, : 市場上有一拖拉庫很好的開發框架讓你學到很好的軟體方法與精神 : 以小弟深根的 Ruby on Rails 來說, : 在探索學習RoR,本身就在學習無數前人的軟體方法精華及 good practices。 : 在 DQA TD team 我花了很多時間深根在 Python, Ruby on Rails : 在這些 knowledge 基礎上去開發了自動化測試的框架。 : 在開發上我們也走Scrum, 也玩Sprint, : 用trello, slack 讓溝通更有效率 : 在這邊我熟練深耕了下面技能,也讓我有了即戰力找尋往後的工作。 : - Python, Twisted framework, Robot framework : - Selenium : - Ruby on Rails : - Database: MongoDB, PostgreSQL, ElasticSearch, MySQL, Redis : - JS: Angular.js, React.js : - Load balance: horizontal scalable infrastructure design : - Network security : - Git flow development : - Auto developemnt methodology: capistrano : 在DQA是我自我實力成長最快速的期間 : 實在是內心由衷感謝 VIVOTEK P處長, W經理, J主管, : 以及所有曾經一起共事過的同仁 : 因為他們給予這樣的開發環境與空間, : 才能夠讓我有一些成果貢獻給前公司 VIVOTEK : 他們是我生命中的貴人。 : 以上夢境提供有興趣朋友參考,我盡量如實的客觀陳述我遇過的鳥事 : 『當壓榨屎缺成為事實,革命起底就是我的義務』 : 當然VIVOTEK也有很多很優秀的部門,官僚風氣尚可, : 你還是有機會找到屬於你的舒適圈 : 我極推 QA TD team, : 這裡只寫code,不做嘴砲 : 沒有歷史共業包袱,彈性自由發揮空間大。 : 任何你在市場上看到的神兵利器新技術, : 只要對自動化驗證有幫助,儘管用,開發的方向都很有彈性。 : 特別如果你是RD的話,在這裡,你不會有機會整天接電話, : 光應付電話就飽三餐的生活, : 你真的可以很專心很專心地完成你手上的產品。 : R2也聽說有不少好評,不過我不熟就不便過多著墨 : 總之路是自己選的,特別是給研替的小朋友看 : 今天你不想當兵,就是不想在軍中浪費生命。 : 倘若你之後的工作跟當兵沒兩樣,還要綁三年,我相信這不是你想要的。 : 『誠信、關懷、創新、當責』在公司的某些地方,也許只是笑話口號 : 更何況,在某些部門你『注定』需要做屎缺。 : - 做得差,薪水比作業員還低 : - 做得極好,你薪水也好不到哪裡去,就我經驗頂多破百一些吧? : 希望大家能夠找到自己喜歡的工作, : 畢竟工作佔據了我們生命大部分的時間, : 當你在工作上做自己有熱誠的事物,真的是一件很快樂的事情! 最近知道這家公司好像有一些被收購的消息,找到這篇文章。 原po好像原本是在RD部門然後被換去QA部門。 後來結論是QA部門比較能夠盡情的發揮。 公司一些內鬥的事情就不談了,那個局外人不是很了解, 不過到是可以討論一下RD和DQA部門,一個是發展產品,一個是寫自動化測試。 老實講,我待過這個多間公司,還沒遇過有另外開個部門在處理自動化測試,萬事起頭難。 就如原po說的,很多東西沒標準化,要自動化測試確實困難。慢慢會漸入佳境吧@@ 我認為RD有分成兩個, 一種是專門維護現有產品,一個是開發新功能。 原po原本的RD缺應該是前者,就是維護和新增一些小功能。 這類的缺本來就不太可能有大變動,他對上的是客戶,關係到的是品牌的形象。 一個不斷用維護的方式建立的架構,也許不好看,但穩定度應該是越來越高。 沒人敢保證寫出來的東西沒bug,如果新架構用下去,bug從100條上升到300條,很多更是奇奇怪怪的問題,現在是要花多少時間解 ? 但是如果是舊的code在維護,除非是新bug,不然稍為有經驗的人,就會開始用退版的方式去測,兩版code diff一下,問題很快就找到了。 DQA寫出來的東西,本來就無關品牌,當然愛怎麼寫就可以怎麼寫。 站在老闆的立場,真的很難把已經用幾十年的東西,重新打掉重練。那個才成長兩三年的code,就不用拿出來說了。 比較有可能的是新舊兩版code同時進行,但那成本就很高了 -- Sent from my Windows -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.85.145 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1502456144.A.63B.html
scott260202: 這家ipcam 以前的版本 開啟自動校時 每天校時那時候 08/12 00:36
scott260202: 檔案就會壞掉 很扯 08/12 00:36
shietsd: 老實說我現在還在台商會跟你想的一樣 08/12 14:15
shietsd: 但我這幾年在外商工作,重構舊架構真的很常見 08/12 14:16
shietsd: 所以只是要不要做的問題而已,不是做不做得到的問題 08/12 14:17
catchman: 據我所知原po已在美國工作,年薪快20萬 08/27 03:51
catchman: 如果微軟照你這篇的邏輯,今天大家還在用windows 98系列 08/27 03:52
catchman: 因為都不想重寫了QQ 08/27 03:52
catchman: 事實上國外很常為了優勢而開發全新下一代產品的思維,自 08/27 03:53
catchman: 行google,而台灣一些老公司的修修改改思維,就是軟體 08/27 03:54
catchman: 不進步的原因,大家都在用老架構,因為省事嘛 08/27 03:54
catchman: 如果這麼省事幹嘛有人要重寫unix like os 08/27 03:55
catchman: 所以你所用的linux啦..(修修改改就行?!) 08/27 03:55
catchman: 就是 (錯字) 08/27 03:55