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
Definiendo límites
Search
Francisco Díaz
December 14, 2017
Programming
1
120
Definiendo límites
Presentado en iOS Love en Diciembre, 2017
Francisco Díaz
December 14, 2017
Tweet
Share
More Decks by Francisco Díaz
See All by Francisco Díaz
Working effectively at scale
fdiaz
4
300
I hate public speaking. So why do I keep doing it?
fdiaz
0
140
Si odio hablar en público. ¿Por qué lo sigo haciendo?
fdiaz
2
140
Move fast and keep your code quality
fdiaz
1
370
De qué hablo cuando hablo de trabajo remoto
fdiaz
1
140
Setting Boundaries
fdiaz
1
150
Swift Values
fdiaz
0
130
Sisifo o Cómo empezar de nuevo - y otra vez.
fdiaz
0
130
Other Decks in Programming
See All in Programming
CSC509 Lecture 03
javiergs
PRO
0
340
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
530
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
32k
Introduce Hono CLI
yusukebe
0
250
3年ぶりにコードを書いた元CTOが Claude Codeと30分でMVPを作った話
maikokojima
0
270
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
350
エンジニアインターン「Treasure」とHonoの2年、そして未来へ / Our Journey with Hono Two Years at Treasure and Beyond
carta_engineering
0
120
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
170
AIと人間の共創開発!OSSで試行錯誤した開発スタイル
mae616
1
390
オープンソースソフトウェアへの解像度🔬
utam0k
15
2.9k
品質ワークショップをやってみた
nealle
0
280
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
1k
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Facilitating Awesome Meetings
lara
56
6.6k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
A Tale of Four Properties
chriscoyier
161
23k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Typedesign – Prime Four
hannesfritz
42
2.8k
Site-Speed That Sticks
csswizardry
12
900
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
8
910
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
6
430
Transcript
DEFINIENDO LIMITES
Francisco Díaz franciscodiaz.cl
None
3 desarrolladores iOS 28 horas 1 projecto
EVA BC programs provide vital support to anti- violence programs
and communities across BC. — Ending Violence Association ONG
None
Features: → Botón de pánico → Today widget → Knock
Botón de pánico: Al presionar el botón → Reportar
Today widget: Al presionar el botón → Reportar
Knock Al golpear el teléfono → Reportar
División de trabajo
Por feature → 1 Dev: Pantalla con botón en iOS
app → 1 Dev: Today widget → 1 Dev: Knock
None
None
None
❌ Una persona por "feature" ✅ Una persona por "capa"
None
Dependencias
Dependency inversion
protocol ReportCreator { func createReport() throws -> Report }
class SuccessReportCreator: ReportCreator { func createReport() throws -> Report {
return Report(id: "1", date: Date()) } } class ErrorReportCreator: ReportCreator { func createReport() throws -> Report { throw ReportCreationError.fakeError } }
class BigPanicButtonViewController: UIViewController { private let reportCreator: ReportCreator init(reportCreator: ReportCreator)
{ self.reportCreator = reportCreator } func didTapBigPanicButton() { do { // Handle Report let report = try reportCreator.createReport() } catch { // Handle error } } }
class BigPanicButtonViewController: UIViewController { init(reportCreator: ReportCreator = SuccessReport()) { ...
} }
¿Si el usuario no tiene internet?
None
None
None
None
protocol APIRequester { func createReport() throws -> JSON } protocol
SMSHandler { func sendSMS() throws -> SMS } protocol ConnectivityListener { var isConnected: Bool { get } }
Nada existe aún, pero podemos probar si funciona
Demo
Recap → Movernos independientemente → Reducir conflictos → No hay
necesidad de esperar para integrar código.
¿Preguntas?