proper care and feeding for your junior developer

Preview:

DESCRIPTION

This talk offers tips for both jr. developers and their mentors on software development. It will be on Confreaks in October of November of 2014

Citation preview

proper care and feeding for your junior developer

Eric StiensSoftware for Good@mutualarising

how to be an awesome junior developerhow to mentor junior developers you work with

how i became a junior developer2 stories and some other stuff

(it's not very technical)

THISWILL BE BRIEF

(i promise)

Background in Sociology and Social Work15+ years working in non-profit fieldRacial Justice researcher

Highly Trained and Professional SJW

web coordinator for international mental health non-profit

drupal without php...whee!

solo consulting company for non-profits

mailchimp, dropbox, listservs, fixing printers, online donations, social media, networking, hardware

supportAnd a bunch of Wordpress sites (without php...whee!)

Bitmaker LabsBootcamp in Toronto

GETTING HIREDmutual meeting not an audition

make sure they want a junior developer

(not just a sr.developer lite! make use of other skills. know how to onboard)

I ASKED ABOUTsupport for my learning, pairing,

mentoring, commitment to diversity and social justice, when I'd push production code, testing, ability to work on front-end and

back-end stuff

full stack developerprimarily working

with Ruby and Railsask me about it

later

MY FIRST DAY! :nervous:

model.rb def method_missing(sym, *args, &block) if sym == :data || sym == :data= super elsif (m = sym.to_s.match(/^([\w]+)_before_type_cast$/)) && args.length == 0 send m[1].to_sym elsif sym.to_s.match(/^[\w]+$/) && args.length == 0 if self.class::EAR_ATTRS.include?(sym) get_dynamic_result(sym) else super end elsif sym.to_s.match(/^[\w]+=/) && args.length == 1 m = sym.to_s.chop.to_sym if self.class::EAR_ATTRS.include?(m) set_dynamic_result(m, args.first) else super end else super end end

wtf?

schema.rbt.text "data",:null => false

⬆(100 attributes live inside me as a giant serialized hash)

WTF?

YOU ARE IN A LEGACY CODEBASE

-> RUN TESTSYOU HAVE NO TESTS

-> READ SPECYOU HAVE NO SPEC

-> WRITE FIXYOU ARE EATEN BY AN ELDER CODE HACK

TESTING and

READING CODE

“Programs must be written for people to read, and

only incidentally for machines to execute.”

- SICP

(i haven't actually read SICP yet)

(Interestingly, writing tests for

someone else's code, is a particularly good

way to read it)

MENTORINGDon't hire a junior developer you can't mentor. It's not fair to them.

It's not fair to your team. Everybody loses.

Some mentoring rulesNo feigning surprise

No well-actually'sNo back-seat driving

No subtle -isms

DON'T USE THEIR KEYBOARD

(Yes, it will be frustrating. They will be slow. They will make

typos. They will get flustered. They will get syntax wrong. They

will stumble. It's okay. Be patient.)

CODE REVIEWWe do code review on pull

requests. You can never merge your own code into master, no matter how small the change.

BAD CODE REVIEWwriting code for them (too specific)

not being specificanything mean or too tersefocusing too much on inconsequential style choices

GOOD CODE REVIEW"Great job getting this feature to work, but you could probably refactor X and Y into another object."

"We probably need some tests on this logic"

"A more idiomatic way of doing this is..."

"You should look into this Rails method here, it does what you want"

"What will happen if we pass nil into this method?"

Also, nitpicks are good. (Just not all the time).

have your juniors do code reviews as well!

www.exercism.io

PAIRING(sadly, we don't do enough of this at SfG...yet! But we are working on it)

LET JUNIORS PAIR TOGETHER

Rarely have the same strengths.Builds team cohesion.Increases productivity

A STORY ABOUT A SIDE PROJECT

WHAT DID I LEARN?how to build an API, lots of stuff about JSON, how to

use RABL, how many people make feature requests to open source projects and how little people fork and PR, how to scale an app on Heroku, that timezones

suck and are really hard, nokogiri tricks

My company paid me to work on it and then paid for the hosting

They ended up with a developer that had leveled up in some skills, some great publicity, and even a few job

inquiries

SOME MORE IMPORTANT THINGS IN NO PARTICULAR

ORDER

DESIGN PATTERNS

WATCH OTHER PEOPLE CODE

(check out peepcode.com! / pluralsight)

READ A BOOK READ A BOOK

Some thoughts on the pipeline...

DIVERSITY =\= SOCIAL JUSTICE

desegregation is not the same as integration

DIVERSITY♻

SOCIAL JUSTICE

thank you buffalo !@mutualarisingeric stiens

Some further reading on diversity and social justice in tech

The Myth of a Magical Future by Kate Losse

http://www.katelosse.tv/latest/2014/9/12/magical-futures

Etsy’s Trying to Fix Tech’s Women Problem. Why Aren’t You? by Ann Friedman

https://medium.com/matter/this-is-the-last-thing-youll-ever-need-to-read-about-sexism-in-tech-56b9a3a77af0

Manufacturing the Talent Shortage by Dimas Guardado

http://modelviewculture.com/pieces/manufacturing-the-talent-shortage

Even At Highest Level, STEM’s Leaky Pipeline Failing Women and Black People by Laura Mandanas

http://www.autostraddle.com/even-at-highest-level-stems-leaky-pipeline-failing-women-and-black-people-245489/

Recommended