Intro to WDI
Learning Objectives
- Get to know each other
- Determine guiding principles for our class culture
- Identify the Big Goal of the course
- List the core expectations of instructors and students
- Map out the topics and technologies of web development, and identify which we will and will not cover
- List the main "Dos" and "Don'ts" for the class and the space
Welcome & Today's Schedule (10 minutes / 9:10)
Instructor introductions.
Today's Schedule:
- 9:00 - 10:40 - Orientation
- 10:50 - 11:10 - Legohuman Extreme Challenge
- 11:10 - 11:50 - Squad Meetings
- 12:00 - 12:30 - Entire cohort meets Production, Outcomes & Campus staff
- 12:30 - 2:30 - Lunch
- 2:30 - 5:00 - First Lesson
Icebreaker (20 minutes / 9:30)
Find a partner. Spend 5 minutes sketching your partner. On the left, draw three things he or she likes, and on the right, three things he or she dislikes.
Switch!
For the remaining 10 minutes, we'll go around the room and share!
Here's a wireframe of Adrian as an example...
What Is an Immersive Course? (10 minutes / 9:40)
Spend two minutes discussing and writing down some answers to the following question: What does it mean to be in an "immersive" environment?
There's no winning or losing.
- This is a non-competitive environment.
- You get out what you put in.
- Everyone enters and leaves at different levels. Try to compare you with you only.
- Use your classmates' work as inspiration to improve your own!
Cooperation.
- You'll be learning, eating, growing, failing, and succeeding together for the next 12 weeks.
You may be re-learning how to learn.
- The last time you spent 9 hours a day learning something new was in high school.
You will be uncomfortable. Regularly.
- Be empathetic.
- You will probably feel somewhat lost on this week's topic, feel more comfortable with last week lessons, and notice that a few weeks ago looks easy.
Balance.
- This intensity means that we have to make room for balance.
- Sleep, food, hydration, rest, and hygiene.
We will not give up on you.
- Even when you might have given up on yourself!
- None of the instructors are here just to collect a paycheck. We're nerds about web development, education and you.
Trust that our decisions are informed by solid experience.
- We rely on your feedback. At the same time, we ultimately have to trust in our own experience and expertise first.
Ultimately, we ask you to trust us and each other.
- Trust that we have each other's best interests at heart.
- But we expect to have to work to earn that trust.
Embrace failure.
YOLO.
Because it's 2017.
None of the above mentions anything about code.
Growth Mindset (10 minutes / 9:50)
Growth Mindset - Dr. Carol Dweck
This may be the most mentally challenging thing you've ever done -- the first time you've been bad at something in a long time. You will fail and struggle at times, but that's important. We don't succeed despite challenges -- we succeed because of challenges.
- Unfortunately, this can hurt. Just like exercise can make you sore and tired, so should learning. Try to enjoy the burn knowing it is making you better.
- We anticipate that you will run into hardships. When you do, that's when it is time to really challenge yourself and buckle down. Don't quit! Embrace the fact that the challenge will make you a better coder. Endure the struggle to grow and develop your mind.
The Learning Myth: Why I'll Never Tell My Son He's Smart - A great read/watch when you have a few spare minutes.
The Emotional Cycle of Change
Programming is a mindset. It's about confidence and being open to failure. It's about knowing when to climb from the bottom of the cycle and being able to say, "Eh, I'm going to try this thing, even though I don't really understand it. AND I'm not going to get attached to it in case it doesn't work and I have to erase all my code and try something completely different."
The growth mindset here is understanding that even when something doesn't work, it will still make you a better coder! We want this to be challenging for you because...
- Just memorizing stuff won't help you. Learning HOW to code will.
- You can't BS your way through code.
- The fundamental standard of programming: It either works, or it doesn't. No amount of sweet-talking will make it work.
- Google is your best friend
Throughout the course of WDI many students say something along the lines of "I don't know how to do that." Many of you certainly will. If you do, however, just add "...yet" to the end of that sentence.
What Is Asking for Help? (10 minutes / 10:00)
Asking for help is what students find hardest in WDI. It is also what ultimately determines whether or not students will be successful in this class.
- Without fail, the students who do not ask for help do the poorest in the class.
- Knowing how to ask for help and where to look for answers are two of the biggest skills you can gain from this class and will be incredibly valuable as you prepare to join the professional workforce.
Turn & Talk
Take 30 seconds to think of a time when you have asked someone for help. It doesn't have to be tech-related. Then take another 30 seconds to turn and share with your tablemates about those times. What were the outcomes?
We have all asked for help. There's no shame in it. Feeling afraid to ask for help will be the biggest detriment in this class.
How can we ask for help efficiently?
- Ask a clear problem. "I don't know any of this" isn't a clear problem. "I tried this thing and got this error" is a clear problem.
- Your instructors and peers won't be able to help you if...
- The question you're asking isn't constructive
- It's clear you haven't made an effort to find the answer. This means taking the following steps...
- First, try it yourself
- Then, Google it
- Then, ask your neighbor
- Finally, ask an instructor
Check out this lesson plan if you'd like to learn more about how to ask effective questions.
Gradual Release of Responsibility
Being able to ask for help effectively will become increasingly crucial as the course progresses. During the first project, for example, we will be holding office hours throughout the dedicated project days. By the fourth project, however, all support will be conducted using Github issues. Between those two projects, instructors will be placing an increasing onus on the students to solve problems on their own with limited instructor support -- what we call a "gradual release of responsibility."
While instructors love helping out, we've found that students become stronger developers by learning to solve their own problems. Your instructors won't be following you to your jobs so it's important to develop a sense of self-sufficiency while you're here.
Break (10 minutes / 10:10)
Course Content (10 minutes / 10:20)
GA's global team has built a baseline curriculum, which includes topics to cover and a suggested order. As a local campus, we have built on and modified this curriculum based on our own experiences as instructors and the unique features of the DC job market. Each lesson is designed by the instructor that's delivering it.
We also iterate on this curriculum constantly so technologies and concepts change with each cohort.
Course Content
What are some technologies and languages you know of that are involved in web development (e.g., HTML, Ruby, Databases).
A non-exhaustive list of technologies we cover...
- HTML
- CSS
- JavaScript
- Ruby
- Rails
- PostgreSQL (Relational Database)
- MongoDB (NoSQL Database)
- Node.js
- Express.js
- Angular.js
- React.js
We cover these technologies / topics because they are foundational to web development, and learning the underlying concepts of how they work prepares you to learn and work in any web development technologies.
Course Sequence
The course is organized by units of roughly 1 week each. Every 3 weeks, we'll complete a project, each of which last 3-5 days.
Units/Projects
- Intro to the Web and Development (HTML/CSS and Git)
- JavaScript
- Project 1 - Build an front-end application with HTML/CSS/JS
- Ruby, Sinatra
- Full-stack MVC with Ruby on Rails
- Project 2 - Build a full-stack, data-driven app with Rails
- Angular.js
- APIs
- Project 3 - Build a Single Page Application with Angular supported by a Rails JSON API
- Node, Express, and MongoDB (MEAN stack)
- React & Redux
- Project 4 - Portfolio project
Course Logistics (10 minutes / 10:30)
Weekly Schedule
Normal Weeks
Weekdays
- 9:00-10:00: Checkpoint / Code Challenge / Review
- 10:00-12:30: Lesson 1 / Lab / Outcomes (Tuesday)
- 12:30-2:30: Lunch / Work Time / One-on-one's / Office Hours
- 2:30-5:00: Lesson 2 / Lab / Outcomes
- 6:00-8:00: Evening Office Hours (Monday, Tuesday, Wednesday)
Project Weeks (3, 6, 8, 12)
Project weeks will be pretty much just time for you to work on your project.
- There will be no scheduled lessons (outcomes will meet as usual)
- There will be no evening office hours, since instructors will be widely available during the day.
Squads
Each student will be part of a squad lead by one instructor. Your squad instructor will be the primary -- but not the only -- instructor providing you with feedback on homework, labs, quizzes, etc.
A list of squads can be found here.
Instructor Communication
There will be dedicated time for instructors to provide students with in-person support outside of lessons. These are limited to...
- Afternoon office hours: Monday, Tuesday, Wednesday - 1:30PM - 2:30PM
- One-on-one's: Monday, Tuesday, Wednesday - 1:30PM - 2:30PM
- Evening office hours: Monday, Tuesday, Wednesday - 6:00PM - 8:00PM
- Lab support
Outside of these times, instructors are not available to provide in-person technical support, even if they are in the office. We use this time to prepare lessons, grade projects, etc.
- This encourages students to become self-sufficient.
- Instructors use the rest of the time to prepare WDI.
If you have any non-technical questions concerning WDI, however, you are welcome to approach or Slack instructors at any time. If you reach out via Slack in the evening, the instructor will respond by the next day.
Graduation Requirements (10 minutes / 10:40)
Homework
Attendance
Break (10 minutes / 10:50)
Legohuman Extreme Team Challenge (20 minutes / 11:10)
We're going to do a quick team-building icebreaker exercise that emphasizes specific and clear communication. Communicating clearly and specifically about projects and code is an important skill for developers, since we typically work in teams. Even if you are a freelance developer, you still have to communicate with the client. Clear communication will convey your professionalism, save you time, and it also minimizes headaches around unclear client expectations.
For this exercise, we'll be working in groups of four or five to recreate a Legohuman. The Legohuman is located on the table outside of the classroom. One group member at a time can go out for a 10-second interval to take a look at the structure. You cannot take a picture of the structure. Each person must make one trip before a second or third trip can be made by another person.
The instructors will declare a winner based on the most convincing replica.
Squad Breakouts (40 minutes / 11:50)
- Update GitHub Profile with full name and avatar
- Sign Requirements Agreement and set goals
- Review code of conduct