Un panorama muy general y personal sobre las habilidades personales y de equipo que todo programador debiera procurar. Dado en el #shlcon, el viernes 19 de noviembre de 2010.
3. Cursos
Los clásicos:
Hunt. A. y Thomas, D. “The pragmatic Programmer”
McConnell, S. “Code complete”
McConnell, S. “Rapid development”
Beck, K. “Extreme Programming Explained”
Los ensayos de Paul Graham y Eric Raymond
“A programar se aprende en la tecla”
4. Habilidades básicas del programador
●
Depurar
●
Dividir espacialmente los problemas
●
Encontrar bugs, incluidos los intermitentes
●
Remover errores
●
Analizar un log
●
Entender problemas de rendimiento
●
Optimizar loops
●
Administrar memoria y E/S
●
Diseñar
●
Aprender lenguajes de comunicación (XML, UML, SQL)
●
Conducir experimentos
●
Trabajar con código pobre
●
Hacer pruebas de unidad, integración y de stress
●
Aprender nuevas habilidades y herramientas
●
Analizar información
●
Utilizar lenguajes incrustados
●
Elegir (o conformarse con) el lenguaje adecuado
●
Desarrollar el talento del equipo
●
Obtener lo mejor de los colaboradores
●
Lidiar con problemas aburridos
●
Recolectar información para el proyecto
●
Pensar en escalabilidad y crecimiento del sistema...
5. ... pero todo ello es un juego de niños comparado
a todo lo que debemos hacer para tener éxito tanto
con el cliente como con los colegas.
6. menú
10 I habilidades frente al proyecto
01 I habilidades frente a la computadora
11 I habilidades frente a las
personas
8. Encontrar información
– Internet
– ... también los libros (físicos o
electrónicos)
– La gente como fuente de
información
• Redes sociales
• En la propia empresa
9. Horas frente a la PC
– Horas frente al monitor
– Tomar descansos cuando se pierda
la cabeza
– Reconocer cuándo ir a casa
12. Utilizar un sistema de control
de versiones
– Organización
– Respaldo
– Historial
– Salud mental
13. Cómo permanecer motivado
“Los programadores se motivan
altamente por crear artefactos
útiles, bellos y hábiles”.
– Mantener la curiosidad
– Usar el mejor lenguaje para
cada proyecto
– Buscar la oportunidad de aplicar
nuevas herramientas, lenguajes
y tecnologías
– Buscar aprender o enseñar algo,
por muy pequeño que sea, en
cada proyecto
14. Ganarse la confianza
– Ser visible
– Responsable e
informativo dentro y fuera
del equipo
– Sin miedo de negativa
ante solicitudes de
favores irrazonables
– Evitar pretender saber
algo que se desconozca
15. Equilibrio de código
– Equilibrar “espacio” y “tiempo” - procesador
y memoria
– Balancear brevedad y abstracción
– Equilibrar calidad y tiempo de desarrollo
– Documentar sabiamente
16. Estimación
“Divide et impera”
– Administrar el tiempo de desarrollo
– Decidir entre comprar o desarrollar.
• ¿Vale la pena insertar
dependencias?
– Decidir si el software es demasiado
inmaduro
– Cómo diferenciar lo difícil de lo
imposible
Camino hacia la respuesta: SCRUM y los
métodos ágiles
– Cuidado: ¿Qué tanto ha contribuido el
desarrollo ágil?
18. “La administración de recursos humanos es el conjunto de técnicas
destinadas a promover el desempeño eficiente de las personas,
organizándolas en colaboración para alcanzar objetivos individuales y
de grupo relacionados directa o indirectamente con el trabajo.”
www.gestiópolis.com
“El programador es el animal social que para sobrevivir depende de la
comunicación con su equipo. El programador avanzado es el animal
social cuya satisfacción depende de la comunicación fuera de su
equipo.”
Robert L. Read
19. Recuerden: las juntas cuestan su duración
multiplicada por el número de participantes
Comunicación con el equipo
Comunicar la cantidad adecuada
20. “Elogiar en público y criticar en privado”
Estar en desacuerdo honestamente y salir bien librado
21. Cómo decirle a la gente lo que no quiere oír
Ofrecer alternativas de solución al mismo tiempo.
De los peores ejemplos:
“No pude solucionarlo a tiempo y la programación se recorrerá.”
22. Lidiar con gente difícil
Cuando los patrones de comportamiento conocidos no encajan en el
lugar de trabajo:
– Respetarlos apropiadamente
– El conflicto no puede durar mucho tiempo
– Observa: son inteligentes y tienen algo que decir
– El desacuerdo se puede resolver con gran paciencia
– “Resistir el anzuelo” a agrandar el conflicto
– Tomar decisiones meditadas
35. bibliografía008
Read, Robert L. “How to be a Programmer”. Texto en línea:
http://samizdat.mines.edu/howto/HowToBeAProgrammer.html
Comunidad Scrum: http://comunidadscrum.wordpress.com/
Imágenes
http://www.formaselect.com
http://www.ecologiaverde.com
http://unfccc.int/portal_espanol/essential_background/feeling_the_
heat/items/3376.php
http://faircompanies.com/news/view/productos-ayer-y-hoy-un-
nuevo-diseno-industrial/