CSC322.01 2016S, Class 03: Mentor Meetings
==========================================

_Overview_

* Preliminaries.
    * Admin.
    * Upcoming Work.
    * Extra Credit.
    * Questions.
* Introductions of the Students.
* Introductions of the Mentors.
* Q and A with the Mentors.
* Things to talk about with the Mentors.
* Work time with the Mentors.

Preliminaries
-------------

### Admin

* Reminder: Mentors here all class period.  Talk (optional).  Dinner (expected).
* Work for next week: Plan for your first two-week sprint.  Tasks and the 
  anticipated points each task.  (Also include some of the tasks that you
  de-prioritized.)
* Plan weekly status reports to all four mentors and Sam.  (Sent by
  8pm Wednesday evening.)
    * What did you accomplish?
    * What do you hope to accomplish?
    * What obstacles stand in your way?
    * What resources will help you accomplish your task?

Student Introductions
---------------------

* Name, year, major
* Favorite Pokemon
* How familiar are you with the technologies we're using this semester?
* Where are you from?
* What is a passion in your life?

Alumni Introductions
--------------------

IGY

From MN.  Lives in SDCA.  Was a Plans admin.  That got him a job.  Has
done Web Dev at three companies.  Now does freelance work.  Mostly Ruby
on Rails.

Likes to run (triathalons), rock climbing, code for fun.  Mostly spends his
time outside.

CK

From IA.  Lived in Des Moines for too long.  Now in Seattle.  Did Web Dev
out of college.  Founded printwhatyoulike.com with another alum.  Traveled.  
Works for consulting company.  No longer does Rails, but hosts Seatle.rb.
Also grinnellgallery.com.

Likes to run (triathalons), climb mountains, take photos.

WB

From IA.  TC manager.  Did tech support for a few years.  Chain of startups.
Spent 2.5 years or so at the previous job, now at present job for four years.
Works at Heroku/Salesforce.  Lives in IA City.

Likes to make furniture, design board games, support open source, run
cool tech festivals in IA City, bouldering, API design.

Questions for Alums
-------------------

Challenges in moving from class-size projects to real-world software
development?

> A lot of things go on around of writing the actual code.  Learning to
  work functionally with a bunch of other people.  Work with a large code
  base that others have been working on already and that new people will be
  working on in the future.

> Many things are no longer under your control.  Someone else will make many
  of your decisions for you, and some of them will be wrong.

> The big challenge isn't necessarily getting it to work, but keeping it
  working (e.g., scaling, dealing with things that have to change but people
  rely upon).  When hundreds, thousands, or hundreds of thousands of people
  are working on something, it's hard to change something.
  
> Security (a completely different mindset).

> A very different mindset doing something multiple times per second than
  doing it once or twice.

> You don't always get the option to start over.  You have something and
  that's the way it is.  "Make it function well enough."

> Realizing that you should a dev version and a release version and they
  are separate (and you use tools to transition between the two), but
  similar as possible.  (And perhaps a QA version.)

What is it like to have to work in an organization?

> There's a reason that IY is an independent contractor.

> It depends on the type of organization.  When you first come out of school,
  you don't have a lot of capital.  But after that, you can consider what
  the best social "fit" is for you.

> As you go through more and more jobs, you realize what works for you and
  what doesn't work for you.

> In our industry, transitions are the norm and not bad things on your 
  resume.

What are your favorite tools?

> Chat rooms.  (Lots of options.)  Feel connected, without feeling
  synchronous.  (Come back when you have time.)  Slack, IRC, and the ilk.

> Skype and video chat.  You will often be dealing with a bunch of
  remote workers, and you do have to have meetings.

> Trello and Pivotal tracker to keep track of projects.  (Or some tool
  to organize what needs to be done.)

> Github, with pull requests to communicate on changes.  Once you know
  what you're doing, it's easy to set up a Git repo.

> vim

> Google docs - Helpful for collaborating on written word, particularly
  adding comments and such.  A pairing environment for non-code.

What are your favorite gems?

> Sinatra.  A pared down version of rails - some templating, router,
  not much else.  (But Rails is nice because everything is packaged
  together and "it just works".) (For more advanced users, Rails has
  a lot of cruft that they don't need.)

> Pliny.  API development on top of Sinatra.

> ActiveAdmin, which most of the teams are using.  Makes it really easy
  to set up administrative stuff.

> Quiet_Asset, which removes some cruft from your Rails log.

> FactoryGirl, useful for testing - makes it much easier to set up
  particular properties of objects.

> RSpec, or perhaps some other testing framework.

> Capybara, if you're doing integration testing.

> Pry, useful for debugging.  Opens a console at particular locations
  in your code, plus a better Rails console (which may now be part of
  Rails).

> Learn to use the Rails console.

How do you keep track of all of this?

> User groups.

> Weekly reports (Ruby weekly, HTML 5 weekly, ...)

> Talk to people.

How long will it take you to get up to speed?

> More than a year, but probably less than a year.  Three months of
  full time - get it to do what you want it to do, but within a particular
  realm.

What do you need to know?

> Rails

> Ruby

> HTML and CSS

> Database / SQL

> Heroku

> Javascript

> You won't learn all of them, but you will have seen and experienced
  all of them.

Meetings
--------

* How to be in touch, how to stay in touch, how often to Skype/videochat
* What should we do if we don't feel you are responding promptly?  (And
  what is "promptly" in your world?)
* What do you want to hear from us?
* How have you best served as a resource for your prior teams
* Look at code and workflow together.
