diff --git a/.gitignore b/.gitignore index 6704566..a3d9fa9 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,7 @@ dist # TernJS port file .tern-port + +# Misc + +.DS_Store \ No newline at end of file diff --git a/README.md b/README.md index 8ce53d0..c86cd4e 100644 --- a/README.md +++ b/README.md @@ -38,3 +38,419 @@ More details.... [Link](./capstone-project) ## Additional Resources + +## Capstone Schedule + +**Note** As instructors move into Capstone, they will be expected to assume more of a Project Manager/Scrum Master role than instructor. Will instructors need training on this? + +## Week 1 + +### Day 1 + +- Kickoff +- Introduction to Tracker + +#### Deliverables + +- Every student sets up their tracker + +### Day 2 + +- Codewars (30 minutes at start of class) +- Ideation (lesson) +- Ideation lab + +#### Deliverables + +- Every student submits a minimum of 1 idea via Canvas (1 idea may become the group project, at least 1 idea will become personal project, post-capstone) + +### Day 3 + +- Codewars (30 minutes at start of class) +- Technical Interview (lesson) +- Technical Interview lab + +#### Deliverables + +- Every student submits a minimum of 1 idea via Canvas + +### Day 4 + +- Codewars (30 minutes at start of class) +- Take home challenge (lesson) +- Take home challenge lab time + +#### Deliverables + +- Every student begins take-home challenge + - Basic front-end set up + - Basic back-end set up + - database set up + - Deployed? +- Every student submits a minimum of 1 idea via Canvas + +- Instructors begin 1:1 sessions + - 1:1 sessions this week will cover... + - Weekly tracker + - Submitted ideas from canvas. Check that at least one idea is clear (in purpose, in what it will be, who it will be for, what MVP would be (there will be guiding prompts in the Canvas assignment)) + +### Day 5 + +- Codewars (30 minutes at start of class) +- Behavioral Interview (lesson) +- Behavioral Interview lab + +#### Deliverables + +- Every student submits a minimum of 1 idea via Canvas +- Every student continues to work on take-home challenge + +- Instructors begin 1:1 sessions + - 1:1 sessions this week will cover... + - Weekly tracker + +## Week 2 + +### Day 1 + +- Pairing on take-home (lesson) +- Pairing on take-home activity + - fellows will be paired up + - first half, fellows pair on one person's project + - second half, fellows pair with other fellow + - If odd number then an instructor should pair for 1 session, second half of session, student is encouraged to keep working on take-home or do Codewars + +#### Deliverables + +- Link to project (instructors will check for completion only) +- Some sort of reflection about the activity + +### Day 2 + +- Codewars (30 minutes at start of class) +- Capstone Introduction +- Capstone Groups assigned +- Capstone Groups meet (group Canvas assignment to capture salient details) + - Everyone presents at least one of their ideas from Canvas/ideation sessions + - Group agrees on one idea + - Group does 5 minute check-in with instructor to make sure idea is ok and that they have the green light to keep working. Fellows will reach out to instructor when ready (must happen today) + - Create name for app (can be changed later) + - 2-3 sentence summary + - Read and discuss `working in groups` + - Create group norms `resource needed` + - Hours available + - Best way to contact members + - Expectations around response time (evenings, weekends) + - Work cadence + - always together on zoom? + - work separately but communicate on slack regularirly + - meet in person x number of days y hours outside of class time + - find and understand any limitations in participation (ie someone always has physical therapy Wednesday afternoons). Recognize and create a plain that is fair for everyone. Call out that this kind of problem solving is often asked about in behavioral interviews and is important to handle well + - How will the work be split up? + - By feature + - Everyone works together and takes turn as driver/passenger? + - Split group front-end/back-end build a feature, then switch later? + - Etc. + - Make a list of things to learn in order to build out needed features for the app (ie auth) + - Create a brief presentation for the instructor + +#### Deliverables + +- Group Canvas assignment that summarizes the work and agreements amongst groups + +### Day 3 + +- Codewars (30 minutes at start of class) +- Lesson on ERDs, Wireframes and user stories +- Fellows will now work on building for their app +- ERDs +- Wireframes +- User stories + +#### Deliverables + +- Not sure? Maybe hold off until can meet with instructor + +### Day 4 + +- Codewars (30 minutes at start of class) +- Software Development with Teams (Trello, Agile) +- More group work + +#### Deliverables + +- Every group will begin to meet with instructors and present + - Project idea + - User stories + - Wireframes + - ERDs + - Trello board +- Instructor will (30-60 minute meetings per group) + - Help fellows refine their work/give feedback + - Help determine what features will be worked on over the next week + +### Day 5 + +- 10 minutes to make sure weekly tracker is filled out +- Git and GitHub Refresher (lesson) +- Git and GitHub Refresher activity +- More group work on app planning + +#### Deliverables + +- Instructors begin 1:1 sessions **NOT SURE IF THERE IS TIME FOR 1:1 sessions this week** + - 1:1 sessions this week will cover... + - Weekly tracker + +**Note** No coding is expected yet. Maybe some groups that are very ready can begin Friday afternoon (after meeting with their instructor) + +## Week 3 + +### Day 1 + +- Code wars (30 min) +- Kickoff +- Introduction to Stand ups/Stand down/retros +- Group work + +#### Deliverables + +- Group work + +### Day 2 + +- Code wars (30 min) +- Stand ups +- Group work + +#### Deliverables + +- None + +### Day 3 + +- Code wars (30 min) +- Stand ups +- Group work + +#### Deliverables + +- None + +### Day 4 + +- Code wars (30 min) +- Stand ups +- Group work + +#### Deliverables + +- 1:1 with instructors to go over tracker + +### Day 5 + +- Code wars (30 min) +- Tracker fill out time (10 minutes) +- Stand ups +- Group work +- Stand Down/ Retro + +**Note** Instructor will attend retro and act as a project manager + +#### Deliverables + +- Tracker is filled out + +## Week 4 + +### Day 1 + +- Code wars (30 min) +- Stand ups +- Group work + +#### Deliverables + +- None + +### Day 2 + +- Code wars (30 min) +- Stand ups +- Group work + +#### Deliverables + +- None + +### Day 3 + +- Code wars (30 min) +- Stand ups +- Group work + +#### Deliverables + +- None + +### Day 4 + +- Application Demos (lesson) +- Stand ups +- Group work on Application Demos + +#### Deliverables + +- 1:1 with instructors to go over tracker + +### Day 5 + +- Code wars (30 min) +- Tracker fill out time (10 minutes) +- Stand ups +- Group work +- Stand Down/ Retro +- Demo the app as part of Retro + +**Note** Instructor will attend retro and act as a project manager + +#### Deliverables + +- Tracker is filled out + +## Week 5 + +### Day 1 + +- Code wars (30 min) +- Stand ups +- Group work + +#### Deliverables + +- None + +### Day 2 + +- Code wars (30 min) +- Stand ups +- Group work + +#### Deliverables + +- None + +### Day 3 + +- Code wars (30 min) +- Stand ups +- Group work + +#### Deliverables + +- None + +### Day 4 (DAY OFF) + +### Day 5 (DAY OFF) + +## Week 6 + +### Day 1 (DAY OFF) + +### Day 2 + +- Stand ups +- Group work +- Finalizing App + +#### Deliverables + +- None + +### Day 3 + +- Code Freeze +- Presentation Practice +- Finalize Presentation Deck + +#### Deliverables + +- The App (link to Canvas) +- Presentation Deck (link to Canvas) +- Their personal tracker (link to Canvas) + +### Day 4 + +- Dress Rehearsal +- Demo Day + +#### Deliverables + +- 1:1 with instructors?? Is there time for this? + +### Day 5 + +- Code wars (30 min) +- Capstone Reflection +- Take Home Challenge 2 +- Celebration + +#### Deliverables + +- Tracker is filled out + +## Week 7 + +### Day 1 + +- Introduction to USV Opportunities +- Pair on take home (similar to last one peer-to-peer) + +#### Deliverables + +- Take home challenge link to GitHub to Canvas, instructors check for completion +- Some sort of reflection about the activity + +### Day 2 + +- Codewars( 30 minutes) +- Interview Block 1 +- Continue working on take-home challenge + +#### Deliverables + +- Take home challenge link to GitHub to Canvas, instructors check for completion +- Some sort of reflection about the activity + +### Day 3 + +- Codewars( 30 minutes) +- Interview Block 1 +- Continue working on take-home challenge + +#### Deliverables + +- None + +### Day 4 + +- Codewars( 30 minutes) +- Interview Block 2 +- Continue working on take-home challenge + +#### Deliverables + +- None + +### Day 5 + +- Interview Block 2 + -Finish working on take-home challenge in the AM +- Afternoon = End of program + +#### Deliverables + +- Tracker is filled out +- Take home challenge link submitted +- Some sort of reflection on take-home challenge diff --git a/ideation/README.md b/ideation/README.md index 133fe16..b480527 100644 --- a/ideation/README.md +++ b/ideation/README.md @@ -1 +1,170 @@ # Ideation + +## Introduction + +So far, you've been learning how to code, with the goal of landing a job in coding. But coders work on teams made up of managers, UX/UI designers and will collaborate with other teams. In this module, you'll be building your biggest app yet. To build such an app, you'll have to learn some basics about the entire app building process, continue to grow your collaboration skills and learn how to teach yourself what you need in order to fulfill your vision. + +## The Vision Comes Before The Skills + +It may be tempting to think about what you know how to do and then build an app around the skills you have. This is very limiting and likely won't produce very good results. + +Once you have fundamentals, your role as a developer will (always) be to learn what you need in order fulfill a vision. A career as a developer is one of life-long learning. Learning how to learn and learning how you learn best on your own will be a key part of this module. + +> It's been really interesting because there have been some things that when I dreamed it up, I wasn't technically good enough to figure out how to implement (animating svg paths on scroll, for example), I dreamed that up a year before I actually was able to implement it). But as time went and I worked on other things for fun, I would eventually learn enough to implement it. + +- Shirley Wu: [How do you learn d3](https://medium.com/@enjalot/how-do-you-learn-d3-js-ccffc151419b) + +> I started with a design vision, then worked backwards to figure out how to achieve it. + +- Tony Chu: [How do you learn d3](https://medium.com/@enjalot/how-do-you-learn-d3-js-ccffc151419b) + +> I was introduced to D3 by first drawing a smiley face with just SVG... From then on everything I was learning was driven by "I want to do X... now how do I do that?" + +- Zan Armstrong: [How do you learn d3](https://medium.com/@enjalot/how-do-you-learn-d3-js-ccffc151419b) + +So for now, put aside your coding skills and let's shift to creating a great app idea. Because you are ready to build anything! + +## Ideas vs Ideation + +You have ideas all the time. Ideas about what to eat for lunch, what you want to do when you see your friends, how to stop a door from being squeaky etc. + +Ideation is a more formal way of coming up with business ideas. + +## Inspiration Versus Ideation + +We often hear success stories of someone just sitting in the park when they are struck with a really great idea. We tend to love and celebrate these stories, however, they tend to be the exception and also not the full story of how the idea came about. + +Most great ideas come from practicing brainstorming and spending scheduled time being creative, either on your own or with a group. + +There are actually some great processes that have been developed that you can learn and apply so you can start developing app ideas. + +Before we get started, let's be sure we understand some key terms and get a better sense of the big picture. + +## The Economy and Industries + +The economy has many components to it, one of the components is a collection of industries. + +There are four types of industry: + +- Primary: gathering of raw materials, such as agriculture, fishing, mining +- Secondary: manufacturing, such as making microchips, steel, cars, laptops +- Tertiary: service, such as teaching, nursing +- Quaternary - intellectual and research and development, information-sharing, entertainment + +[A list of industries](https://www.ilo.org/global/industries-and-sectors/lang--en/index.htm) + +As technology advances, the number of jobs in each type of industry tends to change. For example, thanks to the technology of E-ZPass in New York, the number of toll-booth workers declined, but the number of tech workers who maintain and update the system has increased. + +![](https://upload.wikimedia.org/wikipedia/commons/e/e6/Clark%27s_Sector_Model.png) + +[Image Reference](https://en.wikipedia.org/wiki/Quaternary_sector_of_the_economy) + +What industries have you worked in? What kind of technology did you use when you worked in that industry? What kind of technology did you wish your place of employment had? If you haven't worked yet and have only been in school, you can think about the experience of yourself and your teachers. + +Lastly, it's important to remember that the economy is about people. + +## The Steps of Product Ideation + +Now that we have an idea of how far reaching technology is across the economy, we can start to put all the pieces together of coming up with a great idea. + +The tech you will be building for your capstone will have some sort of user-interface. Even if you come up with an idea for a touchscreen app for a microwave, you'll still build it as a web app, in order to demonstrate the idea. + +### Observation + +Take some time to think about your everyday life that could be improved, simplified or more enjoyable. Perhaps you've had conversations with friends or family about certain products, their features (good or bad). + +Perhaps you have some interests, like deep sea fishing. Although you don't intend to go deep sea fishing, you like to read about it and watch programs about it. Perhaps there are problems that the deep sea fisherman have that you can think of a way to assist with. + +Be sure to capture as many of these ideas as possible, no matter how small, whether or not they are related to tech. At this point you are just gathering all the ideas. + +### Customer Personas + +Not every product is going to be made for everyone. There are specialized baby products that many adults have no use for. The needs of a young couple is different than that of an old person living on their own. + +And perhaps the problem that you identified that was most interesting to you was not something for you. Perhaps your friend has a dog walking business and they have trouble figuring out how to best schedule their time. Perhaps you saw a news report that 70% of car owners lose their keys every day and spend an average of 5 minutes a day looking for their keys, and you want to help them. + +When thinking of ideas, it doesn't have to be something that everyone uses. It can be something that addresses the need(s) of a specific part of the population. + +Once you have your initial set of ideas from observation, think about who would benefit from your idea. You should now be able to narrow all the ideas you had into a smaller number of ideas that have greater potential. + +As you think of specific users your idea will become clearer and more robust. + +### Visualizing Your Idea + +What will your idea look like? Is it a phone app? Is it a web site? When will your customers interact with it? At home? At work? + +Think of similar apps and what you like or don't like about them. + +By now, you should have chosen one idea to follow through with the next steps + +### Determine MVP + +MVP stands for Minimum Viable Product. This is a product with the least amount of features needed to validate a product idea. + +For example, with an online store, you may build a shopping cart, but not fully integrate actual ways to pay/place orders. It is enough to demonstrate how your app works, and those additional features would be added later in the development process. + +A real world example is eBay. When eBay first started people were in charge of paying each other, either by check, money order or sending cash in the mail. Later, eBay integrated a unified payment system. + +![Visual of MVP using candle, lantern and lightbulb ](./assets/what-is-a-minimum-viable-product.jpeg) + +When you plan for Capstone, your instructor will help you narrow down your idea to something that is possible to build within the time-frame you have. Remember, if building an app was fast and easy, there would only be 1 engineer per company. Remember, nearly anyone can build a bad and incomplete app, but it takes a strong team a long period of time to build something amazing and robust. + +[Image from](https://clevertap.com/blog/minimum-viable-product/) + +### Plan Your Design + +Creating a complex application takes planning and strategy. It's also important to have a clear vision of what you are building. If you aren't sure what you are trying to build, it won't be possible to succeed. Learning to plan and execute on an idea is critical to success. + +Before beginning a project make sure you can answer: + +- A brief summary of the idea +- Which industry does this app belong to? +- Who is this product for (customer persona) +- What problem does it solve? +- Why is this problem important? +- What are the customers doing to currently solve the problem? +- How does it compare to the alternatives? +- What tasks does the app perform in order to solve the problem? +- What are the expected outcomes? +- Will this app be + - A totally new idea (e.g. solves a problem for people living on Mars) + - An extension/new feature of an existing product/app (Uber does [last-mile](## Inspiration) deliveries for prescriptions) + - A new version of an app that already exists, but is significantly different (compare/contrast MySpace to FaceBook) + - Other (make sure you can clearly explain, if it is other) + +Now that you've gotten an idea that you are interested in building out, you would take the time to make user stories, wireframes and ERDs. It's ok if you don't remember what these are or perhaps have not done them yet. We will go over them in a later lesson. + +### An Example + +Idea: There is a new food craze: soup for lunch. Unfortunately, canned soup isn't very good, buying soup from a restaurant every day is too expensive and many people are too busy to figure out how to make their own soup. Most people need help with getting simple recipes they could make and start enjoying soup! + +- The industry this belongs to is: Service +- This product is mostly for busy individuals who work somewhere where there is a microwave that they can heat up their lunch +- This solves the problem of helping people make their own soup +- People want to eat better and soup is a healthy choice. Helping make soup become easier to make will help people eat better +- Customers are either buying canned soup or spending too much on take out or making the same boring soup over and over again +- I googled and I didn't find any similar alternatives to a soup building app +- The app will have a list of 'classic' soups, but then also have a guide for people to choose their preferences (meat, vegetarian, vegan, spicy, etc), and then walk them through creating their own custom soups based on their choices. +- The expected outcome is that more people start enjoying soup for lunch +- This app is a new idea, but could be an extended feature of one of those app that does grocery delivery. For now it's just going to generate a list of ingredients based on user preferences. + +## Research + +Typically, before hiring a team of people and having them spend hundreds or thousands of hours building something, extensive research would be done. This is a separate field from software engineering. + +For Capstone, you will just use your own experiences to be the driver of building your idea. + +## Further Reading + +- [What is the economy?](https://www.ecnmy.org/learn/) +- [Industries and Sectors](https://www.ilo.org/global/industries-and-sectors/lang--en/index.htm) +- [The five steps of product design](https://www.beyonddesignchicago.com/the-5-steps-of-product-design-ideation/) +- [What does it take to build the right product](https://www.linkedin.com/pulse/what-does-take-build-right-product-meghna-rao-g/) +- [Minimum Viable Product](https://clevertap.com/blog/minimum-viable-product/) +- [Without a Foundation of Research, Product Development Falls Apart](https://distillery.com/blog/without-a-foundation-of-research-product-development-falls-apart/) + +- [Y Combinator Startup Expo 2020](https://www.workatastartup.com/events/startup-career-expo-s20) + +## Acknowledgments + +The initial version of this was created, and numerous resources were sourced/created by Amanda Nazareno and Mike Boyle diff --git a/ideation/activity/README.md b/ideation/activity/README.md index 7fa351c..ef71fb2 100644 --- a/ideation/activity/README.md +++ b/ideation/activity/README.md @@ -1 +1,19 @@ # Ideation Activity + +Canvas assignment(s) + +Submit via Canvas at least one idea a day for a total of 3 ideas: + +- Which industry does this app belong to? +- Who is this product for (customer persona) +- What problem does it solve? +- Why is this problem important? +- What are the customers doing to currently solve the problem? +- How does it compare to the alternatives? +- What tasks does the app perform in order to solve the problem? +- What are the expected outcomes? +- Will this app be + - A totally new idea (e.g. solves a problem for people living on Mars) + - An extension/new feature of an existing product/app (Uber does [last-mile](## Inspiration) deliveries for prescriptions) + - A new version of an app that already exists, but is significantly different (compare/contrast MySpace to FaceBook) + - Other (make sure you can clearly explain, if it is other) diff --git a/ideation/assets/what-is-a-minimum-viable-product.jpeg b/ideation/assets/what-is-a-minimum-viable-product.jpeg new file mode 100644 index 0000000..e6c440c Binary files /dev/null and b/ideation/assets/what-is-a-minimum-viable-product.jpeg differ diff --git a/ideation/lesson-notes/README.md b/ideation/lesson-notes/README.md index b20e96a..ab2d5aa 100644 --- a/ideation/lesson-notes/README.md +++ b/ideation/lesson-notes/README.md @@ -1 +1,37 @@ # Ideation Lesson Notes + +## Learning Objectives + +- Be able to define what an industry is +- Be able to name a technology that has aided an industry and briefly explain how that tech aided the industry +- Explain the difference between an idea and ideation +- Explain the purpose of ideation +- Use the process of ideation to develop some ideas +- Explain what MVP is and how it fits into the product building process + +## Guiding Questions + +- Name some industries and how they impact your daily life + +- A mining company uses a payroll app. What industry does the mining company fall into? Is the app in the same industry? If not, what industry is it in? + +- What is the difference between a business and an industry? + +- Name some favorite apps. What industries do they belong to? + +## In class activity + +### Build a 'Case Study' + +In small groups choose an app to do a case study. Make sure no group is doing the same app. + +Write down the following questions + +- What is this product's vision? +- Who is the target customer? +- What customer problem does it solve? +- Why is this problem important? +- What were customers doing before the product existed? +- How does this product compare to the alternatives? + +Submit your answer to the class slack, so that everyone gets a chance to share their work. Choose 1-2 groups to discuss their case study. diff --git a/take-home-challenge-1/README.md b/take-home-challenge-1/README.md index 1b20a75..370056a 100644 --- a/take-home-challenge-1/README.md +++ b/take-home-challenge-1/README.md @@ -1 +1,5 @@ # Take Home Challenge 1 + +information about takehome challengs + +tips and tricks diff --git a/take-home-challenge-1/activity/README.md b/take-home-challenge-1/activity/README.md index 3caf193..7383ca8 100644 --- a/take-home-challenge-1/activity/README.md +++ b/take-home-challenge-1/activity/README.md @@ -1 +1,7 @@ # Take Home Challenge 1 Activity + +provide link to private repo. + +Add students to private repo. + +Do not allow students to review activity ahead of time to better simulate the timeline/experience of an actual take home challenge diff --git a/take-home-challenge-2/activity/README.md b/take-home-challenge-2/activity/README.md index 84d1cd6..86748a0 100644 --- a/take-home-challenge-2/activity/README.md +++ b/take-home-challenge-2/activity/README.md @@ -1 +1,7 @@ # Take Home Challenge 2 + +provide link to private repo. + +Add students to private repo. + +Do not allow students to review activity ahead of time to better simulate the timeline/experience of an actual take home challenge diff --git a/technical-interview/activity/README.md b/technical-interview/activity/README.md index 454a750..5c9485f 100644 --- a/technical-interview/activity/README.md +++ b/technical-interview/activity/README.md @@ -1 +1,28 @@ # Technical Interview Activity + +1. Understanding the Prompt + + - Asks clarifying questions + - Verifies assumptions (e.g. “would input ever be null?”, “would input ever be larger than a 32-bit int?”) + - Demonstrates understanding w/ example inputs & outputs (and/or a diagram) + +1. Designing a Solution + + - Identifies multiple high-level approaches (e.g. brute force vs. more efficient solutions) + - Determines time & space complexity of each high-level approach + - Selects appropriate data structure(s) and/or programming approach (e.g. iterative vs. recursive) + - Plans out all steps of algorithm (in written words or pseudocode) before coding + +1. Implementing a Solution + - Writes valid, syntactically correct code for the full algorithm (unless the interviewer cuts them off early) + - Uses proper indentation to make code readable + - Selects descriptive names for variables/functions that follow standard casing conventions + - Manually tests code by verifying output for sample inputs + - Able to track down bugs effectively without resorting to “guessing” what is wrong + - Solution handles edge cases +1. Presentation + + - Verbalizes thought process throughout + - Uses sufficient vocal volume + - Maintains positive tone and body language throughout + - Utilizes all available whiteboard space, or includes ample comments if coding remotely