View
319
Download
2
Category
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