Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
630
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
450
Migrando a Microservicios
janogonzalez
1
320
Extracting services from a monolith
janogonzalez
3
260
¿Después de 10 años, realmente entiendo esta industria?
janogonzalez
3
490
Microservices in Practice
janogonzalez
7
690
Two programmers in one
janogonzalez
1
190
Ruby for your two internal programmers
janogonzalez
4
280
Ruby for Java minds
janogonzalez
4
1.1k
How Ruby Programmed Me
janogonzalez
11
520
Other Decks in Programming
See All in Programming
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
130
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
390
Patterns of Patterns
denyspoltorak
0
280
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
3
1.1k
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
150
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
120
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.4k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
440
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
390
AIコーディングエージェント(skywork)
kondai24
0
200
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
570
開発に寄りそう自動テストの実現
goyoki
2
1.4k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
91k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Spectacular Lies of Maps
axbom
PRO
1
400
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Abbi's Birthday
coloredviolet
0
3.7k
Six Lessons from altMBA
skipperchong
29
4.1k
Faster Mobile Websites
deanohume
310
31k
Mind Mapping
helmedeiros
PRO
0
38
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
250
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.2k
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