class: center, middle best # From Master to Student .b[[@abelar_s](https://twitter.com/abelar_s) - [@ParisRB](https://twitter.com/parisrb) - [@RailsGirlsParis](https://twitter.com/railsgirlsparis)] [maitre-du-monde.fr](maitre-du-monde.fr) .contrib[[Contribute to this talk on GitHub!](https://github.com/abelards/abelards.github.com/edit/master/talks/master2student.html)] ??? --- class: center wide # Zen proverbs
When an ordinary man attains knowledge,
he is a sage;
when a sage attains understanding,
he is an ordinary man.
In the beginner's mind there are many possibilities,
in the expert's mind there are few. ??? Les "juniors" et les "seniors" ont bien des choses à partager, et ils ont bien moins de différences qu'on croit. "Quand l'homme ordinaire atteint la connaissance, il devient un sage. Quand le sage atteint la compréhension, il devient un homme ordinaire." Il est facile de se croire "nul" quand on débute, mais on a beaucoup de valeur à proposer, à qui sait la voir et en profiter. Il est facile de se croire "bon" quand on a des années de pratique, mais se remettre à la place de l'élève a souvent du bon. Junior ou senior ? On ne peut pas réduire le "niveau" de quelqu'un sur une seule dimension, encore moins celle des années : attitude, connaissances (dans chaque domaine), responsabilités... Une équipe saine (et un budget optimisé) comptent sur la présence d'un mix de juniors et de seniors. Comment les faire travailler ensemble, comment leur fournir des challenges adaptés, et comment accepter pleinement les leçons que le travail avec quelqu'un d'un niveau différent peut apporter ? Notre secteur se prétend méritocratique, mais des années de culture toxique ont peut-être fait de nos équipes des endroits difficiles à vivre et à intégrer. Heureusement, ce n'est pas une fatalité. --- class: left best # The Full Circle .b[Dreyfus Model of Skill Acquisition]
This is per skill, not per person! .b[Don't be Fixed Mindset],
look for lessons everywhere. .b[T-shaped skills],
breadth + depth (or tech + social). --- class: left # The Full Circle Color codes I'll use during the talk: * .l0[novice] * .l1[advanced beginner] * .l2[competent] * .l3[proficient] * .l4[expert] Then back to novice... at other things :) ??? How Dreyfus' skill model applies in some code things. It's quite close to the Four Stages of competence: - .l0[unconscious incompetence] - .l1[conscious incompetence] - .l23[conscious competence] - .l4[~ unconscious competence] Also .l1[Shu].l23[Ha].l4[Ri] https://en.wikipedia.org/wiki/Shuhari https://www.oreilly.com/ideas/the-traits-of-a-proficient-programmer --- class: left best # Expectations Also why I love newbies <3 * .l1[10x: life-changing] * .l2[2x: life-improving] * .l3[1.1x (+10%): incremental] * .l4[10x: life-changing] ... but not via code :) --- class: left # Bullshit tolerance It's so easy to become a grumpy hater :( * .l1[anything: don't know] * .l2[non-obvious: confused? Clarify] * .l3[very little: attitude is key!] * .l4[anything: better hear small signals] Anything you hear has some degree of truth for someone.
Accept reality like a Zen buddhist. ??? --- class: left best # What I want, what I do Want / Can do & work given * .l0[Vision / none] * .l1[Strategy / Ops] * .l2[Tactics / Tactics] * .l3[Ops / Strategy] * .l4[Vision / everything] .l2[] to .l3[] is hard! You like where you are!
.l3[] to .l4[] is hard! You must change vision! ??? --- class: left # Project maturity Once again about what makes sense * .l0[tutorial or fear] * .l1[fills in blanks] * .l23[rewrites from scratch] * .l23[painfully adds up to legacy] * .l4[refactors knowledge] ... and back to address fears (of others) and (writing) tutorials. --- class: left # Names Names withheld to protect the culprits - .l0[] `categories` - .l1[] `dashboard_categories_counter` - .l2[] `x` - .l3[] `counts` - .l4[] `categories_counts` ... and perhaps back to `dasbhoard_categories_counter` :) ??? --- class: left best # Names Advice you can give - .l0[I just want to stop crashes] - .l1[explicit names] - .l2[short names] - .l3[explicit & as short as possible] - .l4[self-explanatory names] not to people of some level, but go through all levels every single time. --- class: left # DRY Don't Repeat Yourself: results * .l0[I don't get it: Copy-and-Paste] * .l1[I know I should, and I can't do it] * .l2[Factors functions, reuses code] * .l3[Factors structures, reuses classes] * .l4[Back to Copy-and-Paste?] Single Source of Truth matters more. --- class: left best # DRY Don't Repeat Yourself: focus on * .l0[Not My Problem] * .l1[Code] * .l2[Data] * .l3[Architecture] * .l4[Pragmatism]
"Duplication is far cheaper than the wrong abstraction" -- @sandimetz
--- class: left # Clever Code What is clever code anyway? - .l0[these people hate me] - .l1[so clever! the dev must be smart] - .l23[I do clever code & I feel clever] - .l23[my mess is clean, yours is ugly] - .l4[this is so needlessly convoluted] The Master does not think the dev IS stupid. The Master thinks the dev HAS BEEN less than clever HERE. --- class: left best # Become a mentor! You will learn even more! * .l0[write checklists] * .l1[code reviews] * .l2[deliberate practice] * .l3[architecture katas] * .l4[train teams, leverage business] What works will have to scale. Congrats! --- class: left best # Bonus: StackOverflow How to use code from the Internet - .l0[read code] - .l1[make an hypothesis: how it works] - .l2[why, with what does it work?] - .l3[check & learn, rinse & repeat] - .l4[read code: yours, OSS, SO] And here's the full circle :) --- class: left # Crafts-wo-manship Now be a proud developer! - .l0[I can code] - .l1[my code works] - .l2[my code is elegant] - .l3[my code is simple] - .l4[my code is not the problem] ... but you can leverage code to solve problems, and that's awesome. ??? --- class: left best # Priorities Do everything for a reason. - .l0[make it] - .l1[make it work] - .l23[make it fast] - .l23[make it beautiful] - .l4[make it readable] It will either make it fast & clean, or help it on the right track. --- class: left # Career management Show up, good attitude, good context. - .l0[it will be hard, I will stick with it] - .l1[team with many tasks & coaching] - .l2[join a team with mentoring & peers] - .l3[make sure you keep growing] - .l4[begin anew] Most companies can be changed from within. Change management, theory of orgs, social dynamics... are very interesting skills to have. --- class: center, middle, happy # Questions? .b[[@abelar_s](https://twitter.com/abelar_s) - [@ParisRB](https://twitter.com/parisrb) - [@RailsGirlsParis](https://twitter.com/railsgirlsparis)] [maitre-du-monde.fr](maitre-du-monde.fr) .contrib[[Contribute to this talk on GitHub!](https://github.com/abelards/abelards.github.com/edit/master/talks/master2student.html)]