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. --- 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)]