Team Soft. Dev. for Comm. Org. (CSC 322 2015F) : EBoards

CSC322.01 2016S, Class 03: Mentor Meetings


Overview

Preliminaries

Admin

Student Introductions

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