Robert L. Read con la Comunidad
Copyright 2002, 2003, 2016 Robert L. Read
Bajo licencia Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.
Ser un buen programador es difícil y noble. La parte más difícil de hacer realidad la visión colectiva de un proyecto de software es lidiar con los compañeros de trabajo y los clientes. Escribir programas de computadora es importante y requiere gran inteligencia y habilidad. Pero realmente es un juego de niños en comparación con todo lo demás que un buen programador debe hacer para lograr que un sistema de software sea exitoso tanto para el cliente como para los numerosos colegas de los que es parcialmente responsable. En este ensayo, intento resumir lo más concisamente posible las cosas que desearía que alguien me hubiera explicado cuando tenía veintiún años.
Esto es muy subjetivo y, por lo tanto, este ensayo está destinado a ser personal y algo subjetivo. Me limito a problemas que un programador es muy probable que tenga que enfrentar en su trabajo. Muchos de estos problemas y sus soluciones son tan generales para la condición humana que probablemente pareceré moralista. Espero que, a pesar de esto, este ensayo sea útil.
La programación de computadoras se enseña en cursos. Los excelentes libros: "The Pragmatic Programmer" [Prag99], "Code Complete" [CodeC93], "Rapid Development" [RDev96] y "Extreme Programming Explained" [XP99] enseñan programación de computadoras y los problemas más amplios de ser un buen programador. Los ensayos de Paul Graham [PGSite] y Eric Raymond [Hacker] deben ser leídos antes o junto con este artículo. Este ensayo difiere de esas obras excelentes al enfatizar problemas sociales y resumir de manera integral todo el conjunto de habilidades necesarias según mi punto de vista.
En este ensayo, el término "jefe" se utiliza para referirse a quien te asigna proyectos. Utilizo las palabras negocio, empresa y tribu de manera sinónima, excepto que negocio denota hacer dinero, empresa denota el entorno laboral moderno y tribu es generalmente la gente con la que compartes lealtad.
Bienvenido a la tribu.
- Principiante
- Habilidades Personales
- Aprender a Depurar
- ¿Cómo depurar dividiendo el espacio del problema?
- ¿Cómo eliminar un error?
- ¿Cómo Depurar Utilizando un Registro (Log)?
- ¿Cómo Entender Problemas de Rendimiento?
- ¿Cómo Solucionar Problemas de Rendimiento?
- ¿Cómo Optimizar Bucles?
- ¿Cómo Manejar el Costo de la Entrada/Salida (E/S)?
- ¿Cómo Gestionar la Memoria?
- ¿Cómo Manejar Errores Intermitentes?
- ¿Cómo Aprender Habilidades de Diseño?
- ¿Cómo Realizar Experimentos?
- Habilidades de Equipo
- ¿Por qué es importante la estimación?
- ¿Cómo estimar el tiempo de programación?
- ¿Cómo encontrar información?
- ¿Cómo utilizar a las personas como fuentes de información?
- ¿Cómo documentar de manera inteligente?
- ¿Cómo trabajar con un código deficiente?
- ¿Cómo Utilizar el Control de Código Fuente?
- ¿Cómo realizar pruebas unitarias?
- Tomarse descansos cuando te sientes bloqueado
- ¿Cómo reconocer cuándo es hora de ir a casa?
- ¿Cómo lidiar con personas difíciles?
- Habilidades Personales
- Intermedio
- Habilidades Personales
- ¿Cómo mantenerse motivado?
- ¿Cómo ser ampliamente confiado?
- ¿Cómo hacer equilibrio entre tiempo y espacio?
- ¿Cómo realizar pruebas de resistencia?
- ¿Cómo equilibrar brevedad y abstracción?
- ¿Cómo aprender nuevas habilidades?
- Aprender a escribir
- ¿Cómo Hacer pruebas de integración?
- Idiomas de comunicación
- Herramientas pesadas
- ¿Cómo analizar datos?
- Habilidades de Equipo
- Juicio
- ¿Cómo equilibrar la calidad contra el tiempo de desarrollo?
- ¿Cómo gestionar la dependencia del sistema de software?
- ¿Cómo decidir si el software es demasiado inmaduro?
- ¿Cómo tomar una decisión de compra frente a desarrollo interno?
- ¿Cómo crecer profesionalmente?
- ¿Cómo evaluar a los candidatos en una entrevista?
- ¿Cómo saber cuándo aplicar conceptos avanzados de ciencias de la computación?
- ¿Cómo hablar con personas no ingenieras?
- Habilidades Personales
- Avanzado
- Juicio Tecnológico
- Comprometerse Sabiamente
- Sirviendo a tu Equipo
- ¿Cómo desarrollar el talento?
- ¿Cómo elegir en qué trabajar?
- ¿Cómo obtener lo mejor de tus compañeros de equipo?
- ¿Cómo dividir problemas?
- ¿Cómo manejar tareas aburridas?
- ¿Cómo obtener apoyo para un proyecto?
- ¿Cómo hacer crecer un sistema?
- ¿Cómo comunicarse bien?
- ¿Cómo decir cosas que la gente no quiere escuchar?
- ¿Cómo lidiar con mitos gerenciales?
- ¿Cómo lidiar con el caos organizacional?
- Glosario
- Apéndice A - Bibliografía/Sitios web
- Apéndice B - Historia (Hasta enero de 2016)
- Apéndice C - Contribuciones (Hasta enero de 2016)
Cómo ser un programador: Versión Comunitaria de Robert L. Read con la Comunidad está bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.