iOS Development (入門) – Table View 實作

Reference: iOS 9 app程式設計實力超進化實戰攻略 Ch8~11 & Edward Chiang@ALPHAcamp

本週學了很常用到的TableView部分,像是facebook、line的APP就有用到,另外還有UIAlertController、自訂動作按鈕。

自己實作了一個PokemonTable來複習學到的功能。

  • 課程心得:
    1. 課前要先預習,上課比較能快速吸收&理解。
    2. 可以用presudo code的方式,描述程式每一個步驟,再轉成swift
  • 實作心得:
  1. 自己參考課本&老師的範例再重新實作,除了可以複習兩邊各教到的功能外,也會發現其實有些地方,是知其然,不知其所以然,當出現bug & Fix it後,就會更清楚那些地方,缺點是沒人問的時候,debug會消磨你的時間和精神。
  2. 除了debug,光是找素材也很花時間,還有autolayout的排版。
  3. 多寫,遇到越多的bug,然後解決它。

繼續閱讀「iOS Development (入門) – Table View 實作」

iOS Development (入門) – Log in & News Reader 介面實作

Presenter : Edward Chiang

本週學了用Xcode做出Log in畫面和News Reader的實作,簡單地回顧一下學到的東西 😛

做一個簡單的Log in 畫面

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-09-16-%e4%b8%8b%e5%8d%883-58-28  %e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-09-16-%e4%b8%8b%e5%8d%883-39-25  %e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-09-16-%e4%b8%8b%e5%8d%883-33-56

  1. 準備各種尺寸的APPIcon
  2. 新增View Controller & Image set (LogInCover) 給Log in介面
  3. Image 用Aspect Fill & Clip To Bounds 來讓圖不變形且把突出邊界的地方切掉
  4. 新增Text Field
    1. 使用者可輸入帳號(可放預設字: Username or email在place holder)
    2. 使用者輸入密碼可把字元保護起來(Secure Text Entry)
  5. 新增Button
  6. 在Auto Layout下,用constrains做排版
  7. 新增完Text Field & Button,拖拉到程式碼
  8. 新增程式碼:按下Log in後,判斷密碼是否正確

    @IBAction func logIn(_ sender: AnyObject) {

        if self.passwordTextField.text == “123″ {

            print(“OK")

        } else {

            print(“Wrong password!")

        }

    }

延伸閱讀:

  1. Swift 3 text field magic, part 1: Creating text fields with maximum lengths [Updated]
  2. Swift 3 text field magic, part 2: Creating text fields that accept only a specific set of characters

做一個簡單的News Reader

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-09-16-%e4%b8%8b%e5%8d%884-21-23%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-09-16-%e4%b8%8b%e5%8d%884-22-51

  1. 新增Label
  2. 用super view疊上scroll view在疊上view的方式,呈現畫面可滑動的效果
  3. 用stack view把News title, source, date&time包在一起處理
  4. constrains 修改優先順序

let newsConent = [“title" : “…", “source" : “…", “dateTime" : “…", “content" : “…", “sourceUrl" : “…"]

        self.newsTitleLabel.text = newsContent[“title"]

        self.newsSourceLabel.text = newsContent[“source"]

        self.dateTimeLabel.text = newsContent[“dateTime"]

        self.newsContentLabel.text = newsContent[“content"]

        

        self.sourceFromButton.setTitle(前往查看更多, for: .normal)

    }

 

延伸閱讀:

  1. iOS 9 新功能 : 堆疊視圖介紹 (Stack Views)

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-09-16-%e4%b8%8b%e5%8d%887-46-02   %e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-09-16-%e4%b8%8b%e5%8d%887-46-16

Programming Basics

Presenter : Edward Chiang

第一週先教Swift基本語法並用LeetCode的習題練習演算法,每一種語言基本語法大同小異,只是表示方式不太一樣,演算法的部分,對新手來說會比較難,現階段來說,先把基本語法學好,會比較重要,之後語法熟了、邏輯通了,對演算法會比較上手。

LeetCode習題@github

參考資料:

  1. Swift學習筆記
  2. 《The Sw­ift Pr­ogramm­ing La­nguage­》正體中文版
  3. Swift 起步走

 

User Story, Wireframe and Pre-totype

Presenter : Paul Shih

  • 本堂以技術的角度來看來看產品進展過程,而非以而非營運的角度
  •  產品誕生的歷程

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-09-09-%e4%b8%8a%e5%8d%8811-26-48

  • 有了idea就要開始尋找有共同目標的夥伴
  • Brain Stroming
    • TA
    • Why you want to  do
    • User Scenario
    • User Story
  • MVP
    • 最少時間
    • 精準投放
    • 通常是工具類
    • 可用功能3~5個
    • 用Wireframe、Storyboard描述
  •  Pre-totype
    •   可以了解所有行為及流程,更快掌握程式寫法、以及設計用意和座標位置
    •  工具
  • 工程師該有的觀點
    • 定義TA與問題
    • 軟體工程不用再從零開始,而是像堆積木
    • 軟體著重使用行為的建立,大部分由大市場發展到小市場
    • 平台著重在引用小工具,工具著重在功能及未來的合作,技術規劃不同
    • 訂完TA&問題,該運用什麼工具,達成目標,CP值會最好
    • 最重要的工作:提出User Story中最花時間的,或CP值最低的功能
  • Waterfall/Lean/Agile/Scrum的概念
  • Scrum : Scrum Master/Product Owner/Sprint/Product Backlog/Sprint Backlog/Planning
  • 題外話:東方人常常思維是 – 我會做什麼?所以做什麼。西方人則是 – 我想做什麼?所以我做什麼。
  • 大部分專案,不應該由工程師與設計師直接溝通,需要有第三方做協調,例如需要切圖和三階的狀況
  • 工程師需要評估評估介面與過場動畫有沒有非常困難或不合理的點
  • 切圖命名規則應該優先定義
  • RWD
  • Native Code的效能,比HTML5好,但HTML5不需要考慮因跨平台,所遇到的許多麻煩。也有另一Hybird解法

產品設計的0到1與1到1億

Presenter : 魏銘信(Ivan Wei)

  • 小步快跑:用最少成本去試錯、最快速度達到目標
    • 這個概念類似於晶圓製造的pi-run,在開始大量run貨前,先用實驗貨去tune參數,避免一開始就投入許多資源,但因為某個流程出錯,就全部付諸流水,可以把impact範圍縮小,而最快速度,我想就是工程師的能力和肝吧! XD
    • Everything must be tested.

  • 概念模型 vs. 心智模型
    • 概念模型是基於一個發展邏輯一個發展邏輯去組織的
    • 心智模型是用戶只在自己關注的一部分去探索的
    • 所以有時候產品設計完,但用戶不一定會照設計者所預期的方式使用,也再次反映了收集用戶回饋的重要。
  • 什麼產品值得去試?在用戶價值與商業價值的焦急,做需求探索
  • 避免艾比林矛盾
    • 這個情況還蠻常發生的,而要避免它發生,需要誠實的面對自己,也避免對其他人有預設的立場,才能達成良好的溝通,做出大家信服的決定。
    • 勇於質疑,不當鄉愿
  •  需求來了,先釐清三個問題再開始幹活兒
  • 互聯網本質是去中間化、組織也去中間化、產品導向的管理模式
  • 如何找到用戶需求?
    • 競品調研
    • 熱點事件
    • 數據挖掘
    • 用戶調研
    • 設計思考
  • 用EmpathyMaps記錄訪談要點:用定性分析的方法,找到數據無法察覺的洞見
  • 如何黏著客戶?  創造用戶體驗閉環,養成使用習慣、法格行為模型(行為=動機*能力*觸發)、感知/引導/關聯/預測
  • 數據觀察指標:DAU/UV/PV/CTR/CR/RR
  • 流量增長
    • 好的產品用戶量自然會增長
    • 六種策略
      • ASO
      • 粉絲團經營
      • 結合熱點結合熱點時事or節慶
      • 流量交換
      • 安裝包大小優化
      • 下廣告買流量

一堂三小時的課,塞了非常多的東西,畢竟包括把產品設計從無到有,再到如何用戶增長,每一個環節和專有名詞,看來都需要再找時間回來消化一下。

How to pith

Presenter : 孫治華

課堂先以Warren Buffett在被提問時,所應答的部分,點出表達能力的重要:

Reporter : What habits did you cultivate in your 20s and 30s that you see as the foundation of success?

Buffett: “You’ve got to be able to communicate in life and it’s enormously important. Schools, to some extent, under emphasize that. If you can’t communicate and talk to other people and get across your ideas, you’re giving up your potential.”

Class summary :

  • 職場上,知道老闆判斷價值的人,往往才是老闆身邊的紅人。
  • Pitch demo 時,所點出的需注意的地方:
    • 說故事不要太冗長
    • 方法有時候不要講太明
    • 點出差異性
    • 市場多大? -> 問題在哪? -> 怎麼解決?
    • 給出明確的數據,是成為一個好的pith的分水嶺
    • 服務對象要明確、聚焦
    • 解決的問題也要縮小、更深
    • 講專業名詞先講情境
    • 精準投放
    • 半自動搭配人工修正
    • 平台要針對適合的情境,不要想全包
    • 釐清對象/目標設定/說服策略/收集資料
  • 黃金圈(Why/How/What)
  • 展現效益的最好方式,就是用數據&對比
  • 準備好評審的必考題,你們和其他競爭者的差異在哪?(競爭者調查/分析)
    • 真的是沒競爭者?還是沒市場!

想法沒有辦法被修正,把想法寫下來,才能持續地被修正、精練,才能迅速抓住聽者的注意,引起他的興趣!

 

我的pitch稿:

在Costco,常常因為商品份量大,想找人一起合購,但是目前找人合購的方式,像是到團購網、或是徵求團購的line群組,需要事先去徵求合購的人,即使找到了,還有可能被放鴿子,所以我的idea是做一個app,讓使用者可以在賣場裡,即時地去配對,快速找到目前想合購這個商品的人。

ALPHAcamp day one

Class 1. 棉花糖的比喻

  • 目標:產品的推出(把棉花糖盡可能地疊高)
  • 有限的資源:組織的資源(15分鐘內、意大利麵條、兩條膠帶、幾條線)

產品推出的過程,就像這個小遊戲一樣,我們利用有限的資源,目標要把棉花糖,儘可能地離桌面越高越好,若實作期間,每一階段沒有測試棉花糖,是否能穩固離開桌面,有可能時間一到,整個結構根本無法支撐棉花糖離開桌面,像這次四組中,有兩組的結構是沒有辦法支撐棉花糖的.

IMG_1229


Class 2. Startup Idea & Market

Presenter : Bernard Chan

Class Summary :

  • What is a startup?
    • Startup is NOT a small version of a big company.
    • Partnership or temporary organisation designed to search for repeatable or scalable business model.    -Steve Blank

  • 創業很多事要做,哪兩件最重要?
    • 設計產品 (Bulid something users love)
    • 收集用戶回饋 (Talk to users)
  • What is most important in startup elements?
    • In a great market — the market pulls product out of startup.   -Marc Andreesen
    • Market size (TAM/SAM/SOM) & Growth Rate (CAGR)
    • Good Market
      • Large market but lack of innovation & competition
      • Small current markets(niche) but high (expected) CAGR
      • Great idea that sounds like bad ideas
  • What is a good startup idea?
  • What do Venture Capitalists (VC) think?
    • Power Law Distribution
  • Great startups unbundle functions done by others
    • ex., Newspaper (Information/Voice/Distribution/Classified/Ads) –> Google/Twitter/Facebook/Craigslist/ebay
    • ex., University (Content/Test/Profession Training)
  • Business model
    • The Business model Canvas
    • Start form Value propositions -> Customer segments -> Custom relationships -> Channels -> Revenue streams
  • Who is your biggest competition?
    • other startup, NOT big companies
  • 你不要⽤戰術上的勤奮掩蓋戰 略上的懶惰  -小米創辦人雷軍

  • Far better to think of yourself as a project than a company for as long as possible.  -Sam Altman

  • Fall in love with the problem, not the solution  -Ben Horowitz

  • 「看⾒別⼈因為你的產品或服務⽽得到滿⾜, 這件事帶給你什麼感受? 讓這個感受帶領你,是持續前進最好的動機。」

Ask the right question vs. Find the right answer,這是老師在課堂上所強調的,在亞洲的教育,讓我們對找出答案很在行,但鮮少問對的問題.藉由Google,我們就能夠輕鬆得到許多不同的答案,所以關鍵在於自己是否能夠問對問題.課堂上,老師也不斷藉由問題,讓我們去思考、討論,什麼是startup?關於xxx,什麼是最重要的?時常思考,並問對問題,才能找出對的答案!