Just My Life & My Work

Posts tagged ‘software’

[圖解] 技術債 (Technical Debt)

最近陸續有新人來公司報到,我跟一位很年輕成功轉型工程師的同事(原本是教小學生課輔,網路看影片自學寫程式)聊週末去哪玩,他提到自己想要還技術債 (Technical Debt),我以為他要改前人留下來的專案,他說因為很多技術還沒有熟悉,所以想要更用功在鑽研技術上。

突然我想到小英總統2018年底變成辣台妹,因為人家說她「撿到槍」。原本的意思是貶義,拿到不屬於自己的東西(也就是贓物),就說那是撿來的。對於小英勇敢回應強勢的對岸,就變成褒義,表示拿到神級武器,可以從挨打的份逆轉成反擊!不過扯遠啦XD~

後來他表明不曉得技術債真實意義,我便簡單解釋,因為急著要完工,難免會以不周全的寫法完成程式功能,之後若要增修專案,就會面臨之前的「遺毒」。下圖可以明白技術債的陰影面積XD~

製圖的作者很神奇,使用我非常喜歡的動畫獵人拿酷戮的念能力可以來做解釋,胖娃隨著時間債會越滾越大,最後破產就會讓敵人無法使用念能力。若拿來比喻軟體工程,技術債若隨著時間累積,到一定的程度使人難以再做增修,此時專案就要宣告「打掉重練」!

要快又要好,實在不是很容易!除非專案只是一次性,若要長期維護的話,還是要有品質地實作呀~

想起先前分享的文章:設計師的心聲專案的三個要素

註:拿酷戮的念能力「天上不知唯我獨損」(推測是放出系的念獸)另外十分擅長於逃跑。「天上不知唯我獨損」是將念借給對方並以複利計算的高利貸,由胖娃娃「波克里林」計算,在借貸內攻防皆不會受到傷害,借貸額數超過對方念的最大值就會破產,「討債魔」出現強制對方進入絕的狀態30天。

參考:Scrum Estimation-Scrum Estimation Model獵人WiKi – 拿酷戮•拜因有效面對技術債專案中的隱形殺手:技術債

廣告

概念驗證 (Proof of Concepts)

我們開發軟體會透過Jira來記錄細節,像是新增功能修正錯誤,甚至還有概念驗證 (Proof of Concepts)

概念驗證(英語:Proof of concept,簡稱POC)是對某些想法的一個較短而不完整的實現,以證明其可行性,示範其原理,其目的是為了驗證一些概念或理論

(繼續閱讀…)

[圖解] 軟體工程師離職後

去年還在健康科技公司上班時看到這張圖解軟體工程師離職後,還覺得是個開玩笑的狀況,沒想到終於被我遇到啦⋯⋯

曾經有聽說過,某新創公司的產品是由超強老闆寫出來,上線營運後發現市場接受度相當高,有意擴張規模而雇用幾個工程師來承接他之前寫的產品,這是我朋友吉米的前公司做博弈軟體的故事。

產品創始人把心中的想法迅速時做出來,透過雛形來測試市場接受度有多高,開發軟體過程想必不會寫得很有彈性,因為「彈性」是需要大規模超仔細地想各種可能發生的情況。比如若我當初只想要搞定80%的狀況,大概一個月就能做出來;若我要再觸及剩下的20%,可能要再多花兩個月才能完工。於是乎我會選擇前者!

當驗證市場可行後,接下來就來補剩下的20%。然而儘管只是20%,想要在既有的架構上可就不太容易擴展,而老闆僱用來的工程師肯定不可能全盤了解當初寫的架構與流程,因為裡頭包含各種Features、Bugs、User Cases、Work Flows、Workarounds等。加上老闆所展現的Coding StyleLogic,與雇用來的工程師所使用的並不一致,導致剩下的20%由老闆來寫只要兩個月,而若讓雇用來的工程師來寫的話就高達半年⋯⋯

回想我還在健康科技公司時,是如此呼風喚雨,iOS App由我一個人獨自從無打造出來,後進來的Android工程師都要仿照我的方式來實現,畢竟小而美的創業公司資源不多,要盡可能使用最少資源來達成目標。對比現在港商的工作狀況,產品已經由資深同事開發10個月,架構是由他建立起來的「樂高系統」,MVC架構非常分明,就好比我當初使用MVP架構HiLife App,然而相對的所花費的時間變多。

過去一個大功能我能在一天內完工,現在一個小功能我可能一天內還無法安心動手,落差非常大啊⋯⋯有時候真的想要不管既有架構,把可運行的Code塞進去,馬上就可以有正確的效果,只是長久來看,只會不斷增加「技術債」,這我在圖解理想與實際的軟體架構有提過。

想起我偉大的前同事德叔說:

要Refactor他人寫的Code需要很大的氣度。

我在下方回答笑說:

我寧願寫Code給別人Refactor,也不要別人寫Code給我Refactor!

對我來說,加入新創公司就是想快速成長,要像個成長駭客一樣跟著產品進化,來盡可能獲得較多的成就感!最終實現自我~

於是乎,之後若要我選擇的話,我肯定會選擇從「無」開始打造產品,因為我可以根據當時的規格(畫面、功能、流程等)來決定架構,可以很快就把既定的藍圖實現出來。

我心中有好多Idea要實現啊⋯⋯

[圖解] Git Flow

過去五年做接案模式的工作,我只會使用非常簡單的Git來版本控制,偶爾才會有同事或夥伴協同合作開發。如今我踏入開發自有產品的環境,必須跟另外兩位前輩工程師合作,此時Git操作就變得更加重要!如何在同一個專案上增修,同一時間不會影響到彼此的任務,做得好就是一門藝術!

Git版本控制有非常多好用的功能,端視專案需求來使用,所以沒有一定的規則!若是同時有多人開發,2010年有個可以當作公版的Git Flow可遵循。現在我參與自有產品開發,大致上就是以上圖的模式來操作。

(繼續閱讀…)

[圖解] 理想與實際的軟體架構

理想與實際會有非常大的差異,在軟體界更是尋常可見!可是因為軟體並非實際的物品,所以通常不易讓「外行人」了解!不過當你看到這張圖解理想與實際的軟體架構,就能大概知道開發一個軟體將有哪些狀況會發生。

此圖取自IT狗的俄羅斯方塊,很高興這張圖寫實地描繪出我所經歷過的狀況XD~

軟體界所謂的規格(Specs),以我過去的經驗來看,大致只有在初期開發時管用,新的技術、新的需求、新的人事物⋯⋯都會影響啊~

我常笑說,我寧願從無開始打造,也不想要去維護他人遺留下來的「毒(技術債)」。

(繼續閱讀…)

[App] Gyroscope (陀螺儀)

因為被臉書收購的Move App要「收攤」,我必須在2018年7月30日前備份我1206天的追蹤紀錄,讓我最近發現一個更好用且詳細的工具,是關於記錄人生歷程的平台Gyroscope (陀螺儀)。這個平台有Web、iOS App、Android App,還串接許多第三方來源的資料,比如:Apple Health、Instagram、Twitter、Fitbit、Strava、RescueTime等等。我發覺Gyroscope做得很符合我的需求,就將Move導出來的資料全數匯入Gyroscope

因為介面做的實在太吸引我,讓我很想要寫篇文章來推薦。首先我要介紹思維導圖 (Mindmap)

(繼續閱讀…)

[Zeplin] Objective C 語法

愛寫iOS App的我,總是要看設計圖,來跟設計師的美學溝通。近年來設計師能透過SketchZeplin合作無間,Zeplin更是能讓工程師立馬上手,就能輕易「看穿」設計師「別有用心」。

除了可以透過鼠標來查看元件相對應位置,還能透過外掛產生Objective C語法,當然還有其他語法如Swift、XML、CSS等等,大大方便工程師不必再自己打code囉~

參考:Zeplin, 跨越工程師與設計師的鴻溝

標籤雲

%d 位部落客按了讚: