Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The Bipolar Programmer
Search
Jano González
October 26, 2013
Programming
4
560
The Bipolar Programmer
My StarTechConf 2013 talk
Jano González
October 26, 2013
Tweet
Share
More Decks by Jano González
See All by Jano González
Containerizing your monolith
janogonzalez
0
210
Migrando a Microservicios
janogonzalez
1
240
Extracting services from a monolith
janogonzalez
3
240
¿Después de 10 años, realmente entiendo esta industria?
janogonzalez
3
390
Microservices in Practice
janogonzalez
7
610
Two programmers in one
janogonzalez
1
120
Ruby for your two internal programmers
janogonzalez
4
200
Ruby for Java minds
janogonzalez
4
960
How Ruby Programmed Me
janogonzalez
11
460
Other Decks in Programming
See All in Programming
エンターテイメント業界で利用されるAWS
demuyan
0
210
PostmanでAPIの動作確認が楽になった話
h455h1
0
160
Ruby GitHub Packages
bkuhlmann
0
630
スキーマ駆動開発による品質とスピードの両立 - 私達は何故、スキーマを書くのか
kentaroutakeda
0
170
Rethinking UI building strategies @ SFI 2024
letelete
0
270
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
200
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
26
8.2k
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
Git Lint
bkuhlmann
4
750
Node.js v22 で変わること
yosuke_furukawa
PRO
3
870
Netty Chicago Java User Group 2024-04-17
sullis
0
170
デフォルトにして至高、RubyMineの大好きな所
ruzia
0
260
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
20
1.9k
Optimizing for Happiness
mojombo
370
69k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
187
16k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
21
1.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
The Brand Is Dead. Long Live the Brand.
mthomps
49
28k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
RailsConf 2023
tenderlove
3
540
Visualization
eitanlees
136
14k
Code Review Best Practice
trishagee
55
15k
Transcript
THE BIPOLAR PROGRAMMER
$ whoami
@janogonzalez
@hop_in
A TALE OF TWO DEVELOPERS
HACKER V/S THINKER
HACKER
GET THINGS DONE
FAST
HACKS
MAINTENANCE NIGHTMARE
NEEDS MORE DUCT TAPE
THINKER
THINKS ABOUT ABSTRACTIONS
THINKS ABOUT MAINTAINABILITY
TOO MANY ABSTRACTIONS
ANALYSIS PARALYSIS
NEEDS MORE LAYERS
MY HISTORY
A TRILOGY OF MOVIES
THE HACKER YEARS
THE HACKER YEARS
THE LEARNING YEARS
THE UML YEARS
THE UML YEARS
THE HACKER WAS GONE
UML, RUP, GoF, XML, ETC.
STOCKHOLM SYNDROME
EVOLUTION?
THE ONE TRUE WAY™
THE PATH?
FEAR
I WAS SO WRONG!
EVERYDAY LIFE IS THE PATH
ENTER RUBY
SMALLTALK IN PERL’S DISGUISE
HAPPY THINKER
THINKER class AccountProtectionProxy def initialize(real_account, owner) @subject = real_account @owner
= owner end ! def method_missing(name, *args) check_access @subject.send(name, *args) end ...
OMG! GoF NEVER WAS SO EASY
HAPPY HACKER
HACKER $1 if str ~= /(foo)+/
ONE LINERS FTW!
HACKER ❤ THINKER
LET’S WORK TOGETHER
HARMONY
HARMONY (1..42).select(&:even?). map { |n| n * 2 }. reduce(&:*)
EXPRESS YOURSELF
EXPRESS YOURSELF File.open('my.txt').each do |line| puts line if line =~
/jano/ end
THE PATH
THE PATH IS NO PATH
THE PATH
WORKING TOGETHER
HACKER
EXPLORE NEW TERRITORY
THINKER
FIND ACCEPTANCE CRITERIA
DEFINE COMPONENTS
BALANCE
DELIVER VALUE V/S DIMINISH TECHNICAL DEBT
CREATIVITY V/S STANDARDIZATION
EXAMPLE
CASE STATEMENT V/S FACTORY + COMMANDS
EXAMPLE case account_type when :premium then # do stuff when
:standard then # do stuff when :personal then # do stuff end
EXAMPLE class PremiumAccount def initialize # do stuff end !
def execute(context) # do stuff end end
EXAMPLE class AccountFactory def self.create(type) name = "#{type.capitalize} Account" klass
= Kernel.const_get(name) klass.new end end
EXAMPLE AccountFactory .create(account_type) .execute(context)
IMPLICIT V/S EXPLICIT
CLARITY V/S DRY
CLARITY V/S SRP
NOW V/S FUTURE
MY HUMBLE ADVICE
LEARN ABOUT BEST PRACTICES
DON’T FOLLOW BLINDLY YOUR FUNCTIONAL GURU
DON’T FOLLOW BLINDLY YOUR OO GURU
TESTS + REFACTORING
HOW TO IMPROVE
HACKER
LEARN ABOUT OOP & PATTERNS
TRY IMMUTABILITY & SEQUENCES
DO SEPARATE RESPONSIBILITIES
THINKER
LEARN ABOUT ONE LINERS
TRY CODE GOLF
DO EVIL STUFF
EVERYONE
READ A LOT OF CODE
WRITE A LOT OF CODE
ONE LAST ADVICE
कഁ
SHU कഁ
HA कഁ
RI कഁ
None
CONCLUSIONS
RUBY GIVES YOU FREEDOM
LETS YOU STRIVE FOR BALANCE
AVOID CARGO CULT
GOOD ADVICE V/S LAWS
THERE IS NO TRUE PATH
IF YOU MEET THE BUDDHA IN 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