Skip to content

Instantly share code, notes, and snippets.

@nwest
Last active August 29, 2015 14:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nwest/5ad7d236e4e22bf74ee6 to your computer and use it in GitHub Desktop.
Save nwest/5ad7d236e4e22bf74ee6 to your computer and use it in GitHub Desktop.
iOS Bootcamp

iOS Bootcamp Requirements

Your goal is to build an app or set of apps that incorporate the following features:

  • Interaction with an external API

    • Model serialization and deserialization from JSON
    • Demonstrable understanding of asynchronous code, including error handling
    • Bonus for: requests that are not just GET (Other CRUD?)
    • Bonus for: Authenticated requests (oAuth?)
  • UITableView

    • Should follow pattern of referencing a model collection to build UITableViewCells
    • Good understanding of delegation
    • Good understanding of dequeuing pattern of UITableViewCells
    • Bonus for: dynamic UITableViewCell height
      • Double bonus: with AutoLayout
    • Bonus for: Multiple types of cells in UITableView
  • UI

    • Views built in InterfaceBuilder with AutoLayout
      • Understanding of Target/Action, IBOutlet wiring
    • Storyboards with Segues
    • Views should look good on all iPhone sizes.
      • Bonus for: supporting multiple device orientations
      • Gratuitous use of UIScrollView
      • Programmatically modify an AutoLayout constraint
        • UIView animations with AutoLayout
    • UINavigationController
    • UITabBarController
  • Map work

    • Use MKMapView with MKAnnotations
    • Understand CoreLocation with permissions
  • Bonus for: use of Push Notifications

  • Common iOS Patterns

    • create & implement; a category, a protocol, & a delegate pattern
    • appropriate use of constants (private & public/extern)
    • understanding/implementation of NSNotificationCenter
    • understanding/implementation of NSUserDefaults
  • General

    • Understand value types vs. reference types
  • Best Practices

    • Progress should be tracked on a card wall (Trello is commonly used)
      • Spend time adding estimates to cards
    • Sensible use of dependency management
    • BDD tested code, more coverage = better
    • Commits are done in chunks of work and are not grab bag code changes
    • Pull Requests are as small as possible, adding or changing one cohesive thing
      • Good, descriptive information in Pull Request body
      • Open to feedback on Pull Requests during code reviews from coworkers
        • Try to solicit feedback from a variety of coworkers for code reviews
      • Bonus for: use of animated images in PR to demo changes Licecap
    • In general, keeping UIViewControllers as small as possible
    • Bonus for: Writing this app while using our CI

Goal is to cover most of these within a 4-6 week period

Must demo progress on Fridays at 4:30pm

Other Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment