發表文章

碼農的敏捷開發經驗

近幾年軟體業界對於敏捷開發 (Agile) 是蠻推崇的,因此大概從碼農我的第二份工作開始,幾乎都是走這樣的方式。 不過即使都叫做 Agile,各公司執行的方式似乎也都不太一樣。在 D 公司的時候,公司的一個開發週期是一個月,但在 R 公司的時候,一個週期則是兩週。不過基本上在我經歷的敏捷開發文化裡面,都還是有以下的幾個特徵。 開發流程 Development Process 需求 Requirement 這是最重要的一環,如果需求不清楚的話,也真的不知道要做什麼產品。因此,最好在這時候要有所謂的目標客戶,讓他們確定產品的方向跟用途,這樣才不會讓開發出來的東西不符合他們的期待。 不過也不用期待他們一次把所有的產品方向制定完成,因為這就又回到以往瀑布式開發的舊觀念思維。反而是讓他們把他們想要解決的問題拋出來,讓我們站在他們的立場,從他們想要解決的問題著手,開始跟他們一起討論,一起參與產品的制定。這樣是更有效的。 另外,通常在這階段,設計師(Designer)與系統分析師(System Analyst)也會間接參與,一起把使用者故事(User Story)撰寫出來,好估計整個專案的時程。 設計 Design 當客戶一起參與了你的產品,這時候就會開始衍生出各種設計的問題。界面的設計、用途的設計、使用體驗的設計,技術面的設計。粗略會分成以下兩種設計。 使用界面 / 使用體驗設計 UI/UX Design 產品要做出來,在需求大致確定之後,就會開始著手外觀的設計、使用體驗的設計。這時候設計師會更多跟客戶溝通,討論明確的需求。系統分析師也會開始看著界面的設計,構想大概有哪些技術面的需求,把這些需求轉化成後面技術設計的要點。 技術設計 Technical Design 在界面逐漸確定的同時,技術方面的分析也要進場,開始把一個一個的功能需求丟出來。這時候,系統架構師(System Architect)也要參與技術設計的討論,確保將來實做這些功能的時候,不會打壞原本的系統架構。把所有將來程式要實做的內容,撰寫成一份份的規格(Design Spec),讓接下來的開發時程,可以直接照著文件開發即可。 開發 Implementation 開發的時間就是寫程式的時間了。如果時間安排得宜的話,在上一個設計的階段,有經驗的工程師可能就會先

碼農的隨意聊: 觀察,模仿與自省

圖片
最近剛好看到這位 YouTuber 的短片,雖然標題是學好英文,但其實「觀察與模仿」這方法也適用在其他情境裡面。 依稀記得以前在研究所時期,都要修「書報討論」這門課。學校會邀請一些在業界或學界的名人來演講,我們就乖乖地在演講廳裡面聽講。但畢竟演講是一門藝術也是一門專業,不見得每個人都能說得這麼好,因此很多時候我們學生會蹺課,除了對講者不太禮貌之外,學校也有點頭痛。 當時我們實驗室的指導教授,把我們聚集起來,跟我們講了以下的話: 『也許台上的講者所講述的內容或是他表達的方式你不喜歡,但我還是希望你們能在那個空間當中。觀察看看,他是哪個部份讓你覺得枯燥、乏味。學習不見得只是看到對方好的地方而模仿,如果你看到了他不足的地方,進而也改正你自己,那也是值得了。』 工作幾年下來,我發現這段話其實在不知不覺當中影響我很深。 經歷許多工作轉換,人來人往,總是會看到形形色色的人。不管同事也好,主管也好,總有你喜歡的,也有你不喜歡的。小時候看到一些討厭的大人時,似乎也曾許下願望,不希望自己長大後成為那種自己不喜歡的大人。 為了真正讓自己不成為自己討厭的人,透過觀察,發現自己欣賞與不欣賞之處,接著透過模仿或自省,讓自己能把該學習的部份學習並內話成為自己的,如此不斷修正自己,讓自己持續成為你喜歡的自己。若非得要引述個古語,大概也就是「見賢思齊、見不賢而內自省」的意思了。 因此,工作上也是,先從自己開始改變,讓自己成為不被同事討厭的人,接著等哪天當上了小主管,看到同事好的特質時,不吝惜地讚美;或看到同時不好的特質時,間接給予引導讓他改變。逐漸地讓整個團隊的氣氛變得更好吧! ​

碼農的面試體驗: 擔任面試官

在 R 公司的時期,剛好因為部門正在擴張,身為前五名進入該部門的我,很快就被主管找進去一起面試。 覺得很感謝 神的是,對於招募新人這件事上,主管跟我有一樣的默契跟共識。我們都希望對已經在組織內的同事可以一同參與面試,這樣才能確保找進來的人,是大家認可可以一同工作的人。當然,對求職者來說,也可以看看這些未來會一起工作的人,他自己是否喜歡。是一個彼此檢視的機會。 所以今天就來聊聊在 R 公司時會看的一些項目。 面試考核項目 英文 公司本身是外商公司,加上公司常常會有外國的同事來開會或一起工作。因此比起其他公司,英文讀與寫是基本,聽跟說反而是更重視的。 基本上公司會先請求職者做英文的自我介紹,內容可以是介紹自己或是工作經歷,中間穿插一些面試官的問答,算是考驗求職者的聽力與反應。 當然也有求職者在知道要英文自介時,會特地練習跟準備自我介紹,哪怕用背的也好也要補起來。但是這種人可能在問答的時候就會漏餡,因此這部份還蠻難掩飾的。真的就是基本實力。 不過相較業務或者專案經理等等角色,工程師的英文要求還是稍微寬鬆一點就是了。重點是能溝通~ 技術 技術上,固然各個職位都有不同的專業,但是我們沒有考太偏向工具本身的內容,基本上都是考一些語言本身的特性。 因為我們的共識是,在軟體這領域,其實技術更迭是很快的。只要這人有持續學習的心態,另外一些基礎知識沒什麼問題,大概就可以了。畢竟技術可以再學,但豐富的基礎知識可以幫助你從不熟的工具當中盡快找到解答。 但後期公司有用一些線上寫程式的工具,先幫助我們做第一階段的篩選,也還挺不錯的。他可以看求職者寫程式的過程,讓我們可以稍微猜測求職者的邏輯思考,算是蠻好的工具。 個性 如果以百分比來看,R 公司對於各個項目的百分比,英文大概是佔 30%,技術大概也是 30%,個性就是那最後的 40%。這間公司對於個性是真的蠻重視的。 並不是如複製人全面進攻一樣都要找一樣的個性。公司其實是希望可以找到各樣特質的人進來,才能幫助這個組織運作。但是有一個蠻重要的一點,就是我們希望進來的人,都能有樂於分享的特質,而且有能夠接納建議的特質。 部門不期待有一個特別厲害的人什麼都會,而是希望大機都有各自的擅長,樂於分享,讓大家一起進步。這比較是我們團隊想要找到的人。 其他:自由對談 除了面試官對求職

碼農的工作記錄: 我的就業回顧

身為一個一路走來始終如一的碼農,我過往的幾個工作都在程式碼的農田上耕耘。 當年畢業的同學們有不少留在竹科,做 VLSI 等相關的產業。但那不是我喜歡的志業,所以後來畢業後就回台北找工作。 今天就來聊聊我過往幾份工作,在做抉擇時的一些想法~ 第一份工作: 播放軟體 C 公司 我的第一份工作是研發替代役,回想當時在找工作的時候主要思考的項目大致如下: 希望能離開新竹 做純軟體的產業 能跟資料庫有關 (比較趨近過去所學專業) 實際上就職後,我的主管跟當初面試我的人不同, 不過人很好,對技術也小有要求,讓我在這階段有打好一些基礎。 在這第一份工作,做的內容算是 J2EE 相關的開發。 公司的客戶數量也讓我不得不注重程式效能。 離開公司前,我也因此碰觸到了前後端、甚至是 Android 也是在這時啟蒙的。 另外,因為母公司在國外,所以大概一個月一次的開會, 也算是有磨練英語的機會,想想這對我後來的求職路線,有蠻大的幫助。 第二份工作: 電子商務 D 公司 研發替代役期滿之後,剛好有一位 head hunter 跟我聯繫上 問我有沒有意願來這間公司。 當時可能年輕傻傻的,沒有想太多,就問了主管的想法, 因為當時我們部門只剩我跟我主管,如果我離開了,部門就剩主管一人了 結果我的主管反而很樂意我去。 他有一個以前的同事在裡面,他詢問了裡面的工作環境與內容 覺得對我蠻好的。因為裡面對於技術有更深入的著墨。 來到後,發現這裡的網路流量以及對程式品質的要求更高, 幾乎每次的 Code Review 都能有很大的收穫 加上每週都要跟美國同事開會,強迫自己的英文能更扎實進步。 整體而言,在這段時期的學習: Code Quality, Coding Style 更加要求 對於 Design Pattern 有更多認識 對電子商務有更多了解(上架、折扣、購物車、出貨、金流等等) 第三份工作: 入口網站 M 公司 在 D 公司待不到兩年,悄悄來了另外一個契機,是名聲還挺不錯的 M 公司, 那時候剛好是 HTML5 技術準備要起飛的時期,因此從 head hunter 得到這消息之後, 覺得不妨試試看,結果運氣很好地就上了。 在拿到 M 公司的 Offer 時,其實有認真比較過,到底要不要去?

碼農的就業抉擇: 大公司與小公司

碼農們在每一個工作轉換的時期中,都經常會陷入這樣的抉擇思考: 到底我要去大公司還是小公司? 先說結論,大公司與小公司沒有絕對的好與壞,端看你怎麼選擇。 先撇開薪水高低,以及假設公司營運完全沒有問題的話,兩種類型的公司大致上有這一些特點: 大公司的優勢 組織清楚,分工專業,各人司其職 有較好的教育訓練,技術學習深度高 通常有 Mentor 前輩,可以臨摹學習 開發、測試等流程完善 大公司的劣勢 組織龐大,比較沒有活力 分工專業,較難涉獵技術廣度 很多開發工具等是內部專用,外部沒有資源 開發新功能涉及多部門,執行速度慢 小公司的優勢 組織小,彼此熟識,溝通方便 人少,什麼都可能碰,可以涉獵各樣技術 擁抱 Open Source 新技術的機會較高 組織彈性大,執行速度較快 小公司的劣勢 資源相對比較少,需要自己主動學習 組織變動快,工作內容充滿不確定性 開發週期通常較短,有時間壓力 Open Source 有社群,但沒有商業支援,有潛在風險 當然這些只是一些客觀分析,不見得所有公司都是如此。 找到自己的喜好與興趣才是重點。 我也遇過有朋友去工作的理由只在離家近、上班時間正常的。 其他的他就沒特別考慮了。 沒有完美的工作,(完美的工作就是不用工作就有薪水…咦?) 工作總是都有好的一面與那稍微不好的一面。 如果永遠都只是想著那不好的一面,大概永遠也無法做出決定。 但是如果那些沒那麼好的一面,自己評估之後是可以接受的話, 那就安心做出你的決定吧! 預祝各位在找工作的路上以及工作的路上都一路順風! ​