## OntraQ Project Expectations ### Overview Your project is your opportunity to practice and build on the skills you learned in your OntraQ courses. It’s also an opportunity to be creative and have fun building! To that end: * We have a set of expectations that every app must meet. They should be built into your roadmap, and you should actively review your progress toward these goals with your manager. * These expectations are designed to be broadly applicable and can be built on creatively! You’re free to build whatever kind of app you want around these requirements. * OntraQ apps will be built individually this year. ### What kind of app should I build? As long as you meet the “app expectations” (listed below) you can build whatever kind of app you want! If you’re having trouble coming up with ideas, feel free to use an idea from the “Templates” section of this document. ### App expectations We ask that each app meet the following requirements: * Your app has multiple views * Your app interacts with a database (e.g. Parse) * You can log in/log out of your app as a user * You can sign up with a new user profile * Somewhere in your app you can use the camera to take a picture and do something with the picture (e.g. take a photo and share it to a feed, or take a photo and set a user’s profile picture) * Your app integrates with a SDK (e.g. Google Maps SDK, Facebook SDK) * Your app contains at least one more complex algorithm (talk over this with your manager) * Your app uses gesture recognizers (e.g. double tap to like, e.g. pinch to scale) * Your app use an animation (doesn’t have to be fancy) (e.g. fade in/out, e.g. animating a view growing and shrinking) * Your app incorporates an external library to add visual polish Document an example of all of these in a wiki on GitHub with screenshots and steps to complete all your user flows. These criteria could apply to many different kinds of apps, so please flex your creative muscles and fit them into a cohesive app design that makes sense for you! Work with your mentor to make sure your project plan is realistic. ### App expectations by week Here’s a path you could follow during your time at OntraQ that will let you accomplish all of our app expectations. If you’re moving faster than our template or unable to complete all the milestones, work with your intern manager to find more challenges or get more support. |Week |Milestones | |--- |--- | |OntraQ week 3, project week 0 |Create your app idea and your project plan | |OntraQ week 4, project week 1 |First week of work!<br>- Set up your data models and validate they work<br>- Build the navigational skeleton of your app<br>- Build out skeleton views for your app<br>- At the end of the week, review and update your project plan with your mentor (this should be an ongoing process, but be EXTRA SURE to do this after your first week of work!) | |OntraQ week 5, project week 2 |- Build basic login/logout (and account creation flow) <br>- Build a feature around using the camera - we don't care if it's simple or complicated<br>- Get your core functionality working atop the skeleton you built last week (it doesn't have to be pretty!) | |OntraQ week 6, project week 3 |- Finish building out and polishing any views you haven't finished in previous weeks<br>- Integrate with a SDK<br>- Integrate a more complex algorithm into your app <br>- Begin adding visual polish<br>- Begin adding an animation<br>- Begin adding a gesture recognizer | |OntraQ week 7, project week 4 |- Finish adding animations / gestures<br>- Finish visual polish<br>- Bring in an external library or two that you can use to make your UI look fancier | |OntraQ week 8, project week 5 |Apps are code complete! Time to show them off! | ### Templates You’re definitely encouraged to come up with your own app idea! But, we recognize that can be daunting, so here are some common categories and samples of each category that we see every year. Feel free to build one of these ideas, or build something inspired by one. |Category |Samples | |--- |--- | |Buy/sell app |- A marketplace where students can sell used textbooks | |Matching app |- An app that matches local dogs with playmates of similar energy levels<br>- An app that matches people looking to borrow items with people looking to rent them out | |Social networking app |- An app that lets students build a map of their favorite places and share it with friends | |Personal organizer app |- An app that lets travelers crowdsource and organize itineraries | ### Tracking your progress **Project planning** CodePath will teach you how to use GitHub tools to manage your project plan. Your project plan should be an ongoing conversation (at least 2x a week, if not more frequent!) with your manager. Your plan is a living document. **Reporting progress** * In the beginning of the week, you and your manager should talk over your goals for the week. * At the end of the week, check in with your manager and discuss your progress. * In general, you should make sure your manager is up to date on your progress on your project plan so they can provide the best support and feedback. A quick daily checkin is a great way to do this! Discuss the best communication option with your manager, but a great way to do these kinds of progress updates is through a private group for just you and your manager. It’s a lot easier to find old messages in groups than in chats, and as a bonus, you can (and should!) include videos in your progress updates to document your progress. ### Helpful hints * Don’t allow yourself to be stuck for too long. Timebox (spend only a fixed, predetermined amount of time on the problem, e.g. 1 hour), then ask a peer, TA, or your manager for help. You can also post in your platform’s Workplace technical forum group with questions. * When you ask questions, make the work you’ve done to unblock yourself clear. * Continually reevaluate your progress against your road map with your manager. This is a **living document**, and **communication is key**. * If you’re slipping behind on your milestones, ask for help early. * Give your manager frequent demos. If you’re comfortable with it, give demos to your peers as well! * Scope your app idea to something manageable. The most common trap we see students fall into is planning to build too big of an app and ending up with nothing to demo. Work with your manager to avoid this trap! ### Final presentations As you build your app, it’s always a good idea to keep your final presentation in mind! You’ll be: 1. Presenting your app in small groups based on intern director 2. Sharing documentation and links with the rest of the OntraQ program If you need to get a friend to help you with your demo in real time, that’s great! If your functionality is better represented via video, that’s fabulous too, just make sure you also give your intern manager a real-life demo too. ### FAQ **I want to build something that doesn’t match the requirements, but it’s super cool!** Talk to your intern manager. The requirements we’ve laid out match the work of students who have done well in OntraQ, and we want to make sure you’re set up for success. **Can I look things up on the internet?** Absolutely. This isn’t school, use all the resources you want. Keep a couple of things in mind: 1. Every engineer looks things up on the internet (e.g. StackOverflow). That’s a very normal workflow for ANY engineer, regardless of level or experience, and we expect you to do it too! Ask your manager for tips if you’re having trouble finding solutions. 2. We care most about learning. Whenever you reuse a code snippet, whether it’s from StackOverflow or CodePath, please take the time to understand what that code is doing. It’ll pay off later, we promise! 3. Don’t try to pass off other folks’ work as your own. For a specific example: 1. DO - bring in a CocoaPod to add visual polish to your app (e.g. a fancy bottom drawer view) 2. DON’T - look at that same CocoaPod’s code, copy it to your own workspace, and check it in as your own If you ever have any questions in this area, remember that: 1. Our default response is to trust you and assume good intent 2. If you ever have questions, ask your manager! 3. Really, ask your manager! Your manager's (and Intern Director's) sole job is to make sure you're learning and growing, and we are here for you through every bump in the road so you can CRUSH it. Ask us for help if you need it! **Can my OntraQ friends help me with my project?** YES. Write and check in your own code, but we very much encourage you to seek help from and give help to your OntraQ peers. Teaching concepts to your peers is a great way to practice collaboration and solidify your own understanding. **Are you judging my app idea?** Nope! Build whatever you want - just be sure it meets the expectations outlined above. **Can I go faster than the recommended pace?** Absolutely! If you’re going faster than the recommended pace, chat with your manager about how you can keep challenging yourself. If you’re falling behind the recommended pace, ask for help. Codepath App Design resources: https://courses.codepath.org/courses/ios_university_fast_track/unit/14#!app_design