SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
Lo que callamos los
programadores
René Sandoval
Desarrollador iOS
Campeche / Agosto 2018
hf.cx
Hackers / Founders Campeche
!2
!3
¿Qué son?
!4
Super héroes
Hackers
Nerds
Genios
Raros
Locos
!5
“Los grandes programares son las estrellas del rock de hoy”
Willian Adams, The Black Eyed Peas
“Los programares del mañana son los magos del futuro”
Gabe Newell, VALVE
“Es lo más parecido a tener super poderes”
Drew Houston, Dropbox
!6
¿Dónde están?
!7
!8
!9
!10
!11
!12
!13
!14
!15
!16
Déficit de
programadores
➜ En 2019 México tendrá un déficit de 148 mil profesionales TIC
!17
!18
!19
Solo el 3% de los graduados
tiene las habilidades técnicas
!20
En el mundo hay una demanda mucho mayor
de ingenieros y de gente que sepa programar
de la que jamas se podrá satisfacer.
Así que todos nosotros
vivimos una vida de ensueño.
!21
Y lo que ya llego…
!22
Inteligencia Artificial
Aprendizaje Automático
Automatización
Bots
Internet de las cosas
Robots Big Data
!23
¿Es difícil
programar?
!24
“No tienes que ser un genio para poder programar.
Necesitas determinación”
Vanessa Hurst, Girl Developer It
“Sumar, restar, eso es todo”
Bill Gates, Microsoft
“Probablemente deberías saber las tablas de multiplicar”
Tony Hsieh, Zappos
!25
¿Soy un buen
programador?
!26
!27
➜Documenta
➜Trabaja en equipo
➜Comparte
➜Pruebas unitarias
➜Métricas
➜Patrones y Arquitecturas
➜Actualización
➜Buenas prácticas (minificación)
!28
Programación Funcional
!29
struct User {
var id: Int
var name: String
var isAdmin: Bool
}
class ListUserViewController: UIViewController {
var nameAdminsUsers: [String] = []
var users: [User] = []
override func viewDidLoad() {
super.viewDidLoad()
users = [
User(id: 1, name: "René", isAdmin: true),
User(id: 2, name: "Erick", isAdmin: false),
User(id: 3, name: "Antonio", isAdmin: false),
User(id: 4, name: "Roxana", isAdmin: true)
]
getNameAdminsUsers()
print(nameAdminsUsers)
}
func getNameAdminsUsers() {
var adminUsers = [User]()
for user in users {
if user.isAdmin {
adminUsers.append(user)
}
adminUsers.sort { (user1, user2) -> Bool in
return user.id < user2.id
}
for admin in adminUsers {
nameAdminsUsers.append(admin.name)
}
}
}
}
// [“René”, “Roxana"]
Imperativo
Orientado a instrucciones
Define “cómo” se realiza un proceso para
alcanzar un resultado.
!30
Declarativo
Orientado a expresiones
“Di qué quieres, pero no cómo lo quieres”
struct User {
var id: Int
var name: String
var isAdmin: Bool
}
class ListUserViewController: UIViewController {
var nameAdminsUsers: [String] = []
var users: [User] = []
override func viewDidLoad() {
super.viewDidLoad()
users = [
User(id: 1, name: "René", isAdmin: true),
User(id: 2, name: "Erick", isAdmin: false),
User(id: 3, name: "Antonio", isAdmin: false),
User(id: 4, name: "Roxana", isAdmin: true)
]
print(getNameAdminsUsers(users: users))
}
func getNameAdminsUsers(users: [User]) -> [String]
{
return users.filter{$0.isAdmin}
.sorted{$0.id < $1.id}
.map{$0.name}
}
}
// [“René”, “Roxana”]
!31
struct User {
var id: Int
var name: String
var isAdmin: Bool
}
class ListUserViewController: UIViewController {
var nameAdminsUsers: [String] = []
var users: [User] = []
override func viewDidLoad() {
super.viewDidLoad()
users = [
User(id: 1, name: "René", isAdmin: true),
User(id: 2, name: "Erick", isAdmin: false),
User(id: 3, name: "Antonio", isAdmin: false),
User(id: 4, name: "Roxana", isAdmin: true)
]
getNameAdminsUsers()
print(nameAdminsUsers)
}
func getNameAdminsUsers() {
var adminUsers = [User]()
for user in users {
if user.isAdmin {
adminUsers.append(user)
}
adminUsers.sort { (user1, user2) -> Bool in
return user.id < user2.id
}
for admin in adminUsers {
nameAdminsUsers.append(admin.name)
}
}
}
}
// [“René”, “Roxana"]
struct User {
var id: Int
var name: String
var isAdmin: Bool
}
class ListUserViewController: UIViewController {
var nameAdminsUsers: [String] = []
var users: [User] = []
override func viewDidLoad() {
super.viewDidLoad()
users = [
User(id: 1, name: "René", isAdmin: true),
User(id: 2, name: "Erick", isAdmin: false),
User(id: 3, name: "Antonio", isAdmin: false),
User(id: 4, name: "Roxana", isAdmin: true)
]
print(getNameAdminsUsers(users: users))
}
func getNameAdminsUsers(users: [User]) -> [String]
{
return users.filter{$0.isAdmin}
.sorted{$0.id < $1.id}
.map{$0.name}
}
}
// [“René”, “Roxana”]
Consejos
➜ Equipos de trabajo
➜ Participa en Hackatones
➜ Participa activamente en foros y comunidades
➜ Pull request
➜ Participa en proyectos que te apasione
➜ No todo es por dinero
➜ Siempre ejecuta proyectos personales
!32
!33
¿Qué
aprender?
!34
Stackoverflow
!35
Stack Overflow
!36
Stack Overflow
!37
Stack Overflow
!38
Stack Overflow
!39
Stack Overflow
Aprende
➜ Bitcoin
➜ Criptografía
➜ Inteligencia Artificial
➜ Aprendizaje Automático
➜ Chatbots*
➜ Big Data
➜ Realidad Aumentada y Virtual
➜ Análisis de Datos
➜ Contenedores (Docker, Kubernetes)
➜ SaaS (Firebase, Zendesk)
➜ Marketing Digital
➜ Bash
➜ JavaScript: Angular, React (Native & JS)
➜ GraphQL
➜ PHP (Laravel)
➜ Ruby & Python
➜ Kotlin
➜ Swift
➜ Scala*
➜ R
➜ Go
➜ Rust
➜ NoSQL
➜ PostgreSQL
!40
Tecnologías Lenguajes
!41
Reaprende
Gracias
Hackers / Founders
Campeche / Agosto 2018
hf.cx
!43
github.com/resand
bitbucket.org/resand
facebook.com/resand91
twitter.com/resand91

Más contenido relacionado

Similar a Lo que callamos los programadores

Similar a Lo que callamos los programadores (20)

Robótica
RobóticaRobótica
Robótica
 
Presentación de jorge salazar 4arto b
Presentación de jorge salazar 4arto bPresentación de jorge salazar 4arto b
Presentación de jorge salazar 4arto b
 
Computadoras
ComputadorasComputadoras
Computadoras
 
PLANTEL 7 EL MARQUES.docx
PLANTEL 7 EL MARQUES.docxPLANTEL 7 EL MARQUES.docx
PLANTEL 7 EL MARQUES.docx
 
Repositorios Software Libre Y Web 2 0
Repositorios Software Libre Y Web 2 0Repositorios Software Libre Y Web 2 0
Repositorios Software Libre Y Web 2 0
 
Datos internet
Datos internetDatos internet
Datos internet
 
Introduccion a la informatica m10
Introduccion a la informatica m10Introduccion a la informatica m10
Introduccion a la informatica m10
 
Los computadores
Los  computadoresLos  computadores
Los computadores
 
Ensayo la evoluvion del computador
Ensayo la evoluvion del computadorEnsayo la evoluvion del computador
Ensayo la evoluvion del computador
 
Proyecto
Proyecto Proyecto
Proyecto
 
Diccionario informativo
Diccionario informativoDiccionario informativo
Diccionario informativo
 
Diccionario informativo
Diccionario informativoDiccionario informativo
Diccionario informativo
 
Mundos virtuales
Mundos virtualesMundos virtuales
Mundos virtuales
 
tutorial de informatica
tutorial  de informaticatutorial  de informatica
tutorial de informatica
 
Robótica
RobóticaRobótica
Robótica
 
MAPA MENTAL SOFWARE Y SERVICIOS DE INTERNET
MAPA MENTAL SOFWARE Y SERVICIOS DE INTERNETMAPA MENTAL SOFWARE Y SERVICIOS DE INTERNET
MAPA MENTAL SOFWARE Y SERVICIOS DE INTERNET
 
software de aplicacion mas conocidos
software de aplicacion mas conocidossoftware de aplicacion mas conocidos
software de aplicacion mas conocidos
 
1. Introducción Big Data
1.  Introducción Big Data1.  Introducción Big Data
1. Introducción Big Data
 
Consulta nueva
Consulta nuevaConsulta nueva
Consulta nueva
 
Parque explora (barcamp)
Parque explora (barcamp)Parque explora (barcamp)
Parque explora (barcamp)
 

Más de René Sandoval

Consejos, recomendaciones mitos y realidad del home office
Consejos, recomendaciones mitos y realidad del home officeConsejos, recomendaciones mitos y realidad del home office
Consejos, recomendaciones mitos y realidad del home officeRené Sandoval
 
No basta saber programar
No basta saber programarNo basta saber programar
No basta saber programarRené Sandoval
 
Futuro presente del internet, computadoras, juegos y smartphones
Futuro presente del internet, computadoras, juegos y smartphonesFuturo presente del internet, computadoras, juegos y smartphones
Futuro presente del internet, computadoras, juegos y smartphonesRené Sandoval
 
Blockchain revolucionando la agricultura y el suministro de alimentos
Blockchain revolucionando la agricultura y el suministro de alimentosBlockchain revolucionando la agricultura y el suministro de alimentos
Blockchain revolucionando la agricultura y el suministro de alimentosRené Sandoval
 
La verdad sobre los equipos de trabajo en desarrollo de software
La verdad sobre los equipos de trabajo en desarrollo de softwareLa verdad sobre los equipos de trabajo en desarrollo de software
La verdad sobre los equipos de trabajo en desarrollo de softwareRené Sandoval
 
Skills para la industria 4.0
Skills para la industria 4.0Skills para la industria 4.0
Skills para la industria 4.0René Sandoval
 
Producto Mínimo Viable
Producto Mínimo ViableProducto Mínimo Viable
Producto Mínimo ViableRené Sandoval
 
Primeras luchas de un joven programador
Primeras luchas de un joven programadorPrimeras luchas de un joven programador
Primeras luchas de un joven programadorRené Sandoval
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia ArtificialRené Sandoval
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de SoftwareRené Sandoval
 

Más de René Sandoval (12)

Consejos, recomendaciones mitos y realidad del home office
Consejos, recomendaciones mitos y realidad del home officeConsejos, recomendaciones mitos y realidad del home office
Consejos, recomendaciones mitos y realidad del home office
 
No basta saber programar
No basta saber programarNo basta saber programar
No basta saber programar
 
Futuro presente del internet, computadoras, juegos y smartphones
Futuro presente del internet, computadoras, juegos y smartphonesFuturo presente del internet, computadoras, juegos y smartphones
Futuro presente del internet, computadoras, juegos y smartphones
 
Blockchain revolucionando la agricultura y el suministro de alimentos
Blockchain revolucionando la agricultura y el suministro de alimentosBlockchain revolucionando la agricultura y el suministro de alimentos
Blockchain revolucionando la agricultura y el suministro de alimentos
 
La verdad sobre los equipos de trabajo en desarrollo de software
La verdad sobre los equipos de trabajo en desarrollo de softwareLa verdad sobre los equipos de trabajo en desarrollo de software
La verdad sobre los equipos de trabajo en desarrollo de software
 
Skills para la industria 4.0
Skills para la industria 4.0Skills para la industria 4.0
Skills para la industria 4.0
 
Producto Mínimo Viable
Producto Mínimo ViableProducto Mínimo Viable
Producto Mínimo Viable
 
Primeras luchas de un joven programador
Primeras luchas de un joven programadorPrimeras luchas de un joven programador
Primeras luchas de un joven programador
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
Mozilla Firefox
Mozilla FirefoxMozilla Firefox
Mozilla Firefox
 
Laravel 5.1
Laravel 5.1Laravel 5.1
Laravel 5.1
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 

Lo que callamos los programadores

  • 1. Lo que callamos los programadores René Sandoval Desarrollador iOS Campeche / Agosto 2018 hf.cx Hackers / Founders Campeche
  • 2. !2
  • 5. !5 “Los grandes programares son las estrellas del rock de hoy” Willian Adams, The Black Eyed Peas “Los programares del mañana son los magos del futuro” Gabe Newell, VALVE “Es lo más parecido a tener super poderes” Drew Houston, Dropbox
  • 7. !7
  • 8. !8
  • 9. !9
  • 10. !10
  • 11. !11
  • 12. !12
  • 13. !13
  • 14. !14
  • 15. !15
  • 16. !16
  • 17. Déficit de programadores ➜ En 2019 México tendrá un déficit de 148 mil profesionales TIC !17
  • 18. !18
  • 19. !19 Solo el 3% de los graduados tiene las habilidades técnicas
  • 20. !20 En el mundo hay una demanda mucho mayor de ingenieros y de gente que sepa programar de la que jamas se podrá satisfacer. Así que todos nosotros vivimos una vida de ensueño.
  • 21. !21 Y lo que ya llego…
  • 24. !24 “No tienes que ser un genio para poder programar. Necesitas determinación” Vanessa Hurst, Girl Developer It “Sumar, restar, eso es todo” Bill Gates, Microsoft “Probablemente deberías saber las tablas de multiplicar” Tony Hsieh, Zappos
  • 26. !26
  • 27. !27 ➜Documenta ➜Trabaja en equipo ➜Comparte ➜Pruebas unitarias ➜Métricas ➜Patrones y Arquitecturas ➜Actualización ➜Buenas prácticas (minificación)
  • 29. !29 struct User { var id: Int var name: String var isAdmin: Bool } class ListUserViewController: UIViewController { var nameAdminsUsers: [String] = [] var users: [User] = [] override func viewDidLoad() { super.viewDidLoad() users = [ User(id: 1, name: "René", isAdmin: true), User(id: 2, name: "Erick", isAdmin: false), User(id: 3, name: "Antonio", isAdmin: false), User(id: 4, name: "Roxana", isAdmin: true) ] getNameAdminsUsers() print(nameAdminsUsers) } func getNameAdminsUsers() { var adminUsers = [User]() for user in users { if user.isAdmin { adminUsers.append(user) } adminUsers.sort { (user1, user2) -> Bool in return user.id < user2.id } for admin in adminUsers { nameAdminsUsers.append(admin.name) } } } } // [“René”, “Roxana"] Imperativo Orientado a instrucciones Define “cómo” se realiza un proceso para alcanzar un resultado.
  • 30. !30 Declarativo Orientado a expresiones “Di qué quieres, pero no cómo lo quieres” struct User { var id: Int var name: String var isAdmin: Bool } class ListUserViewController: UIViewController { var nameAdminsUsers: [String] = [] var users: [User] = [] override func viewDidLoad() { super.viewDidLoad() users = [ User(id: 1, name: "René", isAdmin: true), User(id: 2, name: "Erick", isAdmin: false), User(id: 3, name: "Antonio", isAdmin: false), User(id: 4, name: "Roxana", isAdmin: true) ] print(getNameAdminsUsers(users: users)) } func getNameAdminsUsers(users: [User]) -> [String] { return users.filter{$0.isAdmin} .sorted{$0.id < $1.id} .map{$0.name} } } // [“René”, “Roxana”]
  • 31. !31 struct User { var id: Int var name: String var isAdmin: Bool } class ListUserViewController: UIViewController { var nameAdminsUsers: [String] = [] var users: [User] = [] override func viewDidLoad() { super.viewDidLoad() users = [ User(id: 1, name: "René", isAdmin: true), User(id: 2, name: "Erick", isAdmin: false), User(id: 3, name: "Antonio", isAdmin: false), User(id: 4, name: "Roxana", isAdmin: true) ] getNameAdminsUsers() print(nameAdminsUsers) } func getNameAdminsUsers() { var adminUsers = [User]() for user in users { if user.isAdmin { adminUsers.append(user) } adminUsers.sort { (user1, user2) -> Bool in return user.id < user2.id } for admin in adminUsers { nameAdminsUsers.append(admin.name) } } } } // [“René”, “Roxana"] struct User { var id: Int var name: String var isAdmin: Bool } class ListUserViewController: UIViewController { var nameAdminsUsers: [String] = [] var users: [User] = [] override func viewDidLoad() { super.viewDidLoad() users = [ User(id: 1, name: "René", isAdmin: true), User(id: 2, name: "Erick", isAdmin: false), User(id: 3, name: "Antonio", isAdmin: false), User(id: 4, name: "Roxana", isAdmin: true) ] print(getNameAdminsUsers(users: users)) } func getNameAdminsUsers(users: [User]) -> [String] { return users.filter{$0.isAdmin} .sorted{$0.id < $1.id} .map{$0.name} } } // [“René”, “Roxana”]
  • 32. Consejos ➜ Equipos de trabajo ➜ Participa en Hackatones ➜ Participa activamente en foros y comunidades ➜ Pull request ➜ Participa en proyectos que te apasione ➜ No todo es por dinero ➜ Siempre ejecuta proyectos personales !32
  • 40. Aprende ➜ Bitcoin ➜ Criptografía ➜ Inteligencia Artificial ➜ Aprendizaje Automático ➜ Chatbots* ➜ Big Data ➜ Realidad Aumentada y Virtual ➜ Análisis de Datos ➜ Contenedores (Docker, Kubernetes) ➜ SaaS (Firebase, Zendesk) ➜ Marketing Digital ➜ Bash ➜ JavaScript: Angular, React (Native & JS) ➜ GraphQL ➜ PHP (Laravel) ➜ Ruby & Python ➜ Kotlin ➜ Swift ➜ Scala* ➜ R ➜ Go ➜ Rust ➜ NoSQL ➜ PostgreSQL !40 Tecnologías Lenguajes
  • 42. Gracias Hackers / Founders Campeche / Agosto 2018 hf.cx