雖然這篇iteration程式鄉民發文沒有被收入到精華區:在iteration程式這個話題中,我們另外找到其它相關的精選爆讚文章
在 iteration程式產品中有5篇Facebook貼文,粉絲數超過771的網紅筆記,也在其Facebook貼文中提到, The Hacker Way is an approach to building that involves continuous improvement and iteration. Hackers believe that something can always be better, and...
iteration程式 在 筆記 Facebook 的最佳解答
The Hacker Way is an approach to building that involves continuous improvement and iteration. Hackers believe that something can always be better, and that nothing is ever complete.
駭客方式是一種持續改進與迭代的建構方式,駭客相信某些事物可以更好,而且沒有事物是完整的
馬克·祖克柏 (Mark Zuckerberg) 是 Facebook 的創始人、董事長兼執行長,中學時期開始寫程式,喜歡電腦而不善交朋友,特別是溝通工具與遊戲程式,曾開發過一套系統成為美國線上(即AOL)即時通訊軟體的原始版本,也是歷史上最年輕打入世界前10大的億萬富豪,2021年6月淨資產達到1195億美元,位列富比世全球富豪第五位
今天是2021年6月21日,㊗️大家擁有豐盛美好的星期一❤️
iteration程式 在 91 敏捷開發之路 Facebook 的最佳貼文
看吧,每人每天至少 merge 回主幹一次,基於主幹的開發 搭配 feature toggle,才能比較容易達到真實的 CI, CD 的精神。
CI 本質是「持續整合」,不是 build server。
CD 是「持續佈署」,不是自動化佈署。
TDD 也不是自動化測試,是測試輔助開發,用測試來描述情境,確保每一行程式碼都是剛好的為某些情境而存在,沒有多餘,重構沒有負擔,顆粒度小的單元測試能完整且扎實。(你們確定你們團隊有能力在實務上有效、有用地使用TDD來獲得好處嗎?)
紅燈除錯時間降到最低,上版後要 hotfix 也可以直接關掉 toggle 再找到問題的原因,快速地 merge 回主幹,直接推到 production 再開 toggle。
如果走 feature branch,那你們產品是多久才 merge 回主幹一次?一天多次?如果是,那你會覺得連開 feature branch 本身都是個多餘、不必要的 effort。
一切都是基本功,不要只被絢麗的工具、解決方案給迷惑了。
#給了你鑿子也不會因此變成米開朗基羅
--
每次在上課或是在輔導的客戶那邊聊到,Odd-e 幾乎所有人一般都是不走/不建議 用 git flow 之類的 feature branch,工程師們總是十分吃驚。你們不拆 feature branch? 那你們怎麼做的?
feature branch 的主要目的就是為了避免 conflict 造成的成本,然後透過 delay merge 來降低這一段成本(事實上降低的是頻率,而不是成本),因此而付出「延遲整合」的代價。
其實如果退回來敏捷出來之前的瀑布式或傳統的開發方式,大部份都是 component team 或是專業分工團隊,依據大家的專業去內聚成一個 team, 看起來貌似 efficiency 提高,其實是在增加整合的困難,失去全局概念,增加依賴的不穩定性,甚至「避免」溝通。
如果你看過前端一個 team, 後端一個 team 在做一個產品,他們只透過 API spec 跟 文字在溝通如何界接,最終都會導致許多無形的浪費。(怪了,我們這樣分的原始目標還是為了避免浪費)
一個需求需要兩個 team 跨 team 合作的配合,才能正常且順利 deliver,分頭開發就是導致延遲整合,如果再用類似 sprint 的 iteration,一個 sprint 的結束之前才來做整合,當時間已經用盡,但整合出現問題時,就會開始出現責任歸屬問題。
例如前端改也可以,後端改也可以,那麼誰要改?沒時間了啊...後面的工作跟時程都安排好了。
其實,本質問題都是一樣的。
總是碰到客戶那邊用了華麗的 build server 之後,再套上潮流的 git-flow, github-flow,再搭配上一個產品超過 3 個團隊在同個 product code-based 上工作,不同專案不同時間點要上線,再加上從 local/dev 到 prod 至少有三個環境。
結論就是光一個佈署、merge、上版、退版、pull、解 conflict,他們就身在其中痛苦不已。越痛苦,就希望痛苦的頻率降低,做一次痛總比老是痛來得好。
所以,誰晚 merge 誰倒楣。
--
當然啦,feature toggle 也不是萬靈丹,他會帶來 application 複雜度的挑戰,而 application 的複雜度控制,其實卻反而是最簡單的,因為只要設計的底子夠足,這一段可以設計地很美、很無感、很無痛,而且開發維護成本低廉,品質良好。
iteration程式 在 半路出家軟體工程師在矽谷 Facebook 的最讚貼文
這次邀請到的特別來賓是型男設計師 Nick。 Nick 現在在 Google 總部擔任 UX Designer Manager,這次的直播會聚焦在如何成為頂尖的 UX 設計師上。
本次訪談內容皆為個人意見立場,不代表 Google 或任何公司的立場。
直播影片的大綱內容:
Nick 大學是師大的工業科技教育學系,主要偏重寫程式、學習網路、資料庫架構相關的學科。 因為他從小學開始就對美術相關的比賽很有興趣,大學畢業後想持續的往設計方面發展, 於是進入交大的應用藝術研究所就讀。
他研究所方向偏向視覺傳達、心理學,學習如何把 coding 、或是邏輯相關的知識應用在藝術、設計方面。 研究所畢業後先工作, 工作幾年後申請美國學校, 來到 CMU 卡內基美隆大學唸 HCI (Human Computer Interaction)。 HCI 是 3 個領域的結合, Computer Science + Design + Psychology (電腦科學 + 設計 + 心理學),也都剛好是 Nick 接觸過的領域。
Nick 在大學就讀的過程中, 有和另外兩位朋友一起創業, 那時適逢 2000 年,他們想把許多服務及一些內容辦到網路上, Nick 負責把網站做設計、並架起網站、運行。 大學因為有拿到教師資格,所以畢業後去高中教了一年的生活科技課。
隨後 Nick 決定還是回到設計, 先做了網頁 Desinger , 再到 HTC 做 User Usability Engineer , 再來開始做手機的 UI, UI 做久了開始會思考產品要如何設計可以更符合使用者的需求,從介面的安排位置、顏色、到和使用者的互動等等, 就開始進入 UX(User Experience) 領域 。
探討 UX 前先來確定 UX 使用者經驗的定義是什麼? UI 是被包含在 UX 裡, UI 比較偏向視覺的元素, 而 UX 是整個產品生命週期的體驗。 ex: 車子的按鈕、儀表板可以比喻成 UI , 而打開車門、開車、停車的整個體驗是 UX。
比如說去迪士尼玩,從買票到在遊樂園裡玩的所有經驗、排隊買演場會的票、坐在客廳沙發上挑一部電影來看。 如何把經驗從好的變的更好, 就是 UX Designer 的工作。
UX 在科技業包含了幾個部分:
1. 互動設計 Interaction
2. 視覺設計 Visual (與設計的流行趨勢影響密切)
3. 轉場 Motion
4. 使用者研究 Research
5. 工程 Engineering
UX Designer 廣義來說包含以上這五種工作類別,目前比較大的業界需求偏向 1 & 2,如果能同時兼備多樣專長 (Hybrid Designer) 在就業市場上會更有競爭力。 美國的科技產業, 產品和終端消費者比較直接相關,讓設計師比較被視為一個專業。 UX Designer 依照公司規模的狀態, 小公司 3~5人, 第一個 designer 職責可能就是包山包海,連 UX Researcher 的工作也要做, 拿到結果再來自己測試。
什麼是好的 UX Designer?
視覺設計要不錯, 有基本的美感及程度、並且有邏輯思考的能力,這樣就會是很有競爭力的設計師。
UX designer 過往在矽谷還是會希望有寫程式的能力,5~7 年前的一些公司設計師面試還是會考程式, 但到目前, 專業被更尊重及細分, 就比較沒有被考程式了。 當然,找工作的時候, 如何讓自己比別人突出, 如果你是設計師,有程式的經驗,還是會很有競爭力及賣點。
設計的本質: 1. 對事務的好奇心、2. Iteration 迭代 的容忍度、接受度、及執行力,3. 合作、溝通的能力。
提升能力的方式: Nick 相信做中學,產品一個階段之後, 把專案相關人員聚集起來, 討論 Start、Stop 、Continue 。 什麼事情是不該繼續做的? 什麼事需要持續做的? 什麼事情需要開始去做的?
Designer 的工具: 從之前 Photoshop、 Illustrator, 近幾年因為設計潮流變的扁平, 所以 Sketch 因為可以勝任大部分工作, 也變得更流行。 當然, 因為團隊協作的部分, Figma 讓設計師在合作上有像 Google Doc 有一份網上的檔案讓大家協同合作,也是常用的工具。
Designer 面臨的工作挑戰:
如何用研究方法,把主觀的設計,用客觀的方法、數據來解釋、說服團隊。 所以設計師和 UX 研究員的合作緊密,用值化、量化研究來找出好的設計。
UX designer 在整個產品週期都參與, 每個階段都有不同的目標及任務。 產品比喻成的 3 隻腳的椅子的話, 分別是 Designer 、 Engineer、 PM, 少了一個產品都沒辦法順利運行。
UX 常常會被說要有同理心,其實每個產品的角色應該都要有同理心。
質化 vs. 量化研究: 質化是要找問題的本質,比如說 5~8 人的研究就可以找出 85% 以上的錯誤或是設計不好的地方。 量化就是要多的樣本數、找到公正、大數據、可信賴結果的研究。 UX 要知道在什麼樣的情況,用什麼樣的研究方法來證明、並讓案子往前推進。
最後是一些提問及資源分享:
有什麼好的線上資源可以學習?
dribbble (https://dribbble.com/)
behance (https://www.behance.net/)
UX Design Weekly (uxdesignweekly.com)
經典的 UX design 準則, 不僅僅是 designer 適用、工程師及 PM 內化這些準則後也可以發現產品做出來可以避免許多不好使用者經驗的問題:
10 Usability Heuristics for User Interface Design by Jakob Nielsen in 1994
https://www.nngroup.com/articles/ten-usability-heuristics/
推薦閱讀的 2 本書:
Nick 的啟蒙書 Don’t make me think (https://amzn.to/2Zq9Xti) 中文版翻譯為“ 如何設計好網站”
The Design of Everyday Things (https://amzn.to/2zmRNhA),用了許多生活化的例子。Affordance 在使用者經驗領域佔有相當的一席之地,例如:旋鈕、橫桿、直桿、握把的門,大致上會讓使用者理解該用轉的、推的、還是拉的。
找工作的建議:
提升自我的競爭力,先釐清自我的興趣、想要做的方向,因為每個 UX 細分領域看重的技能都不太一樣。 許多人都願意分享,可以找到願意分享的前輩,得到一些建議。
職場上爬升的建議:
首先, title 是公司衡量是你是否有值得那個等級、影響力的結果,所以要著重於你對與展品的影響力是什麼。再來是要有耐心,培養自我能力、提升競爭力,最後就會自然而然走到你該得到的位子。 最後, Nick 覺得 designer 最要有的能力是溝通能力。 好的設計能力可以變成好的設計師。 強的設計師就是厲害在溝通方面。 Design 在 Nick 心中就是解讀 (如何分析問題)、解決(如何解決問題)、解釋(如何解釋你設計出來的東西), 最後解釋就是溝通。 所以對於設計有興趣的朋友,溝通是個很值得培養的能力。
溝通能力加強的方式:
上課培養。如果簡報 (presentation) 角度著墨,從聽眾聽完後,你想要讓他們知道哪 3 件事情反向思考,來幫助架構簡報,3 是個很重要的數字,讓這 3 個有相關、又各自著墨重點, 就可以涵蓋很大一部分思想理念。
最後分享一下UX 設計師大概的面試流程:
如果你有 portfolio,很多時候會被找到, 這是一個門票, 讓你可以開始面試,接下來可能會有 take home exerecise , 讓你做一個開放性的問題, 被公司審核通過的話會邀請到 onsite interview 。 onsite 需要介紹你自己的作品, take home exerecise 的作品。 如果設計師可以充分利用白板來解釋思考過程、思考邏輯、及最後的提案是什麼,會是一個非常大的加分。 面試官其實很在乎你面試過程中展現的思考能力 (其實和軟體工程師的面試的精髓也是一樣的)。
第一段影片在:
https://www.facebook.com/PivotSoftwareEngineer/videos/492317728266537/