My StarTechConf 2013 talk
THE BIPOLAR PROGRAMMER
View Slide
$ whoami
@janogonzalez
@hop_in
A TALE OF TWODEVELOPERS
HACKERV/STHINKER
HACKER
GET THINGSDONE
FAST
HACKS
MAINTENANCENIGHTMARE
NEEDS MORE DUCT TAPE
THINKER
THINKS ABOUTABSTRACTIONS
THINKS ABOUTMAINTAINABILITY
TOO MANYABSTRACTIONS
ANALYSISPARALYSIS
NEEDS MORE LAYERS
MY HISTORY
A TRILOGY OFMOVIES
THE HACKER YEARS
THE LEARNING YEARS
THE UML YEARS
THE HACKERWAS GONE
UML, RUP, GoF,XML, ETC.
STOCKHOLMSYNDROME
EVOLUTION?
THE ONE TRUE WAY™
THE PATH?
FEAR
I WAS SO WRONG!
EVERYDAY LIFE IS THE PATH
ENTERRUBY
SMALLTALK INPERL’S DISGUISE
HAPPYTHINKER
THINKERclass AccountProtectionProxydef initialize(real_account, owner)@subject = real_account@owner = ownerend!def method_missing(name, *args)check_access@subject.send(name, *args)end...
OMG! GoF NEVERWAS SO EASY
HAPPYHACKER
HACKER$1 if str ~= /(foo)+/
ONE LINERS FTW!
HACKER❤THINKER
LET’S WORKTOGETHER
HARMONY
HARMONY(1..42).select(&:even?).map { |n| n * 2 }.reduce(&:*)
EXPRESSYOURSELF
EXPRESS YOURSELFFile.open('my.txt').each do |line|puts line if line =~ /jano/end
THE PATH
THE PATH ISNO PATH
WORKING TOGETHER
EXPLORENEW TERRITORY
FIND ACCEPTANCECRITERIA
DEFINECOMPONENTS
BALANCE
DELIVER VALUEV/SDIMINISHTECHNICAL DEBT
CREATIVITYV/SSTANDARDIZATION
EXAMPLE
CASE STATEMENTV/SFACTORY + COMMANDS
EXAMPLEcase account_typewhen :premium then# do stuffwhen :standard then# do stuffwhen :personal then# do stuffend
EXAMPLEclass PremiumAccountdef initialize# do stuffend!def execute(context)# do stuffendend
EXAMPLEclass AccountFactorydef self.create(type)name = "#{type.capitalize}Account"klass = Kernel.const_get(name)klass.newendend
EXAMPLEAccountFactory.create(account_type).execute(context)
IMPLICITV/SEXPLICIT
CLARITYV/SDRY
CLARITYV/SSRP
NOWV/SFUTURE
MY HUMBLEADVICE
LEARN ABOUTBEST PRACTICES
DON’T FOLLOW BLINDLYYOUR FUNCTIONAL GURU
DON’T FOLLOW BLINDLYYOUR OO GURU
TESTS+REFACTORING
HOW TO IMPROVE
LEARN ABOUTOOP & PATTERNS
TRY IMMUTABILITY &SEQUENCES
DO SEPARATERESPONSIBILITIES
LEARN ABOUTONE LINERS
TRY CODE GOLF
DO EVIL STUFF
EVERYONE
READ A LOT OFCODE
WRITE A LOT OFCODE
ONE LAST ADVICE
कഁ
SHUकഁ
HAकഁ
RIकഁ
CONCLUSIONS
RUBY GIVES YOUFREEDOM
LETS YOU STRIVEFOR BALANCE
AVOID CARGOCULT
GOOD ADVICEV/SLAWS
THERE ISNO TRUE PATH
IF YOU MEET THE BUDDHAIN THE ROAD, KILL HIM!
FOLLOW YOUR❤
THANK YOU!❤
IMAGES!• http://commons.wikimedia.org/wiki/File:Yin_yang.svg• http://upload.wikimedia.org/wikipedia/commons/archive/f/f4/20050917122925%21Janus-Vatican.JPG