Algunas buenas prácticas
Introducción
La programación no se trata solo de escribir líneas de código, que hacen que el software reaccione exactamente como se define en un documento. La carrera de un desarrollador va mucho más allá de su IDE: la teoría juega un papel importante en la escritura, porque permite seleccionar las armas adecuadas; la vigilancia tecnológica permite estar actualizado en cuanto a herramientas, lenguajes, técnicas de trabajo, etc. El desarrollo personal es un factor fundamental para ser más eficientes y estar más motivados.
Este capítulo, menos técnico y más humano, explora el entorno rico y diverso del mundo del desarrollo. Sea cual sea su interés, profesión o nivel de competencia, si está leyendo estas líneas es porque el desarrollo es un área en la que quiere sobresalir. Por lo tanto, repase las siguientes secciones con la mente abierta. Aproveche la experiencia del autor que, aunque está en la profesión desde hace diez años, siempre se cuestiona, se basa en sus conocimientos básicos sabiendo actualizarlos y sabe que el mejor código no hace necesariamente el mejor software.
Asegurarse con bases consistentes
1. La importancia de los cimientos
Todas las competencias técnicas se deben basar en habilidades teóricas confiables y aseguradas. El problema es que la informática y sus prácticas cambian no solo rápido, sino cada vez más rápido.
Es apreciable ser competente en la tecnología del momento, porque entonces las peticiones son numerosas, los puestos a menudo están bien pagados y la sensación de estar al corriente de los últimos avances en su campo elegido, es estimulante. Pero esta actualización es aún más difícil de vivir cuando la moda es pasajera. Sin embargo, como entusiastas de la tecnología, los desarrolladores que se enorgullecen de su racionalidad, suelen ser las mejores víctimas de cualquier moda irracional.
Por lo tanto, la mejor inversión técnica para un desarrollador es tener una base sólida. Esto ayuda a aprender todas las demás competencias, evaluar tecnologías y diseños, y a encontrar las mejores respuestas allá donde estén, con las palabras clave más relevantes. Una base sólida es la condición imprescindible para un trabajo bien hecho y la seguridad de ser reconocido y respetado por sus compañeros.
2. Estructuras de datos y algoritmos comunes
El primero de estos cimientos es el control de las estructuras de datos. Los libros dedicados a la programación a menudo se centran en este tema, y con razón. Muchos desarrolladores (¡y clientes!) creen que han resuelto el problema, una vez que se ha modelado.
No debemos caer en esta trampa, pero debemos reconocer que la arquitectura de un programa se vuelve cada vez más difícil de cambiar con el tiempo, simplemente porque modificar un elemento básico implica cambios en todos...
Sea conciso y simple
Dos buenas prácticas de desarrollo aportan una filosofía de trabajo saludable y eficiente: DRY y KISS.
1. DRY
DRY significa Don’t Repeat Yourself: no se repita. Cada línea de código que escribe representa un error potencial en la aplicación, un posible malentendido para una persona que la leerá y código adicional para mantener en el futuro, etc. No necesariamente nos damos cuenta de ello en esta búsqueda de funcionalidad, en la que a veces podemos escribir demasiado rápido para alcanzar la meta antes. De ahí la importancia de tener en cuenta esta regla.
Repetirse es muy (demasiado) fácil en el mundo de las tecnologías de la información. El copiar y pegar está al alcance de los atajos de teclado listos usar, el tamaño de los discos duros permite un gasto desmedido de bytes, los procesadores rápidos procesan las instrucciones tan rápido que no se perciben los pequeños desvíos lógicos innecesarios. Pero de nuevo: mantener y depurar el código que funciona, puede ser una pesadilla.
En términos generales: cuanto menos código escriba, menos posibilidades de tener problemas.
En la programación orientada a objetos, hay muchas formas de evitar la repetición de código:
-
Herencia, clases abstractas, interfaces, patrones de diseño, etc. Todos estos conceptos...
Armonizar al equipo
La ley de Conway, ahora considerada válida, establece que cualquier organización que diseñe sistemas, inevitablemente reproducirá copias de sus propios patrones de comunicación en ellos. En otras palabras, el diseño de software es solo un reflejo de cómo se comunican los equipos y sus miembros. Por lo tanto, es esencial tener una organización humana saludable para un código saludable, y es ilusorio esperar producir código simple en una organización compleja.
Al mismo tiempo, es más pragmático y simple producir un código que retoma los patrones de la estructura en la que opera: tal parte de la aplicación para tal tipo de usuario, tal parte del programa para tal otro equipo, todos supervisado de tal manera por tales clases de "managers", etc.
El trabajo en equipo es fundamental y un desarrollador nunca trabaja solo. Trabaja en una empresa, en un equipo, en un proyecto de código abierto, etc. Incluso si solo está usted, cuente al menos tres personas: usted mismo, su "yo futuro" y su "yo pasado". La persona que era hace seis meses tiene (con suerte) menos experiencia que usted. Mientras tanto, ha aprendido y crecido mucho y, mirando hacia atrás, puede darse cuenta de que sus elecciones de hace seis meses no eran óptimas. Cometió errores por los que tuvo que pagar y otros por los que pagará, aunque aún no lo sepa. Ya no esa persona: cuanto más tiempo pase, más ilusorio es esperar recordar por qué abordó un problema como este o aquel.
La persona que será en seis meses, en cambio, tendrá que pagar sus deudas. Ser amable con ella es ser amable con usted. Documente, escriba, anote, informe, explique, detalle y pruebe.
Y ahora que está convencido, centrémonos a pesar de todo en trabajar en un equipo de varias personas: será más fácil razonar sobre esta base.
1. Redactar convenciones de escritura
A nadie le gusta sumergirse en el código ajeno: seguir una lógica que no es la suya es inquietante, apropiarse de una arquitectura desconocida es agotador. Sin embargo, los hábitos pueden salvarle: las mismas estructuras para los mismos problemas, los mismos nombres para los mismos conceptos...
Unirse a una comunidad
Para un principiante, aprender a desarrollar software es una tarea difícil. Para obtener alguna orientación o aclaración, a menudo es necesario el apoyo de un grupo y algunos mentores. Para un desarrollador más experimentado, también es la oportunidad de cambiar el contexto, compartir con otros expertos y no dormirse en los laureles.
Producir código de calidad es solo una faceta de un desarrollador experimentado. A diario se añaden otras acciones: enseñar a los compañeros menos experimentados, presentar opciones y sus consecuencias, animar y motivar a tu equipo, etc. Estas nuevas habilidades no se pueden aprender de la noche a la mañana: hay que practicar, aprender a hablar con los demás, dar un paso atrás para ponerse en la piel de un principiante. La comunidad es un espacio de formación maravilloso: sin relación jerárquica, sin restricciones presupuestarias, relaciones amistosas y relajadas. Las interacciones entre desarrolladores dentro de la comunidad son (teóricamente) honestas y francas, lo que le permite profundizar en sus conocimientos mientras mejora su relación. Un experto que pueda presentar su trabajo en términos comprensibles para todos, incluidas las personas no técnicas, es extremadamente valioso.
Finalmente, incluso para un experto, la profesión no siempre ofrece la posibilidad de...
Controlar los problemas recurrentes
La informática y más aún sus enfoques teóricos, se remontan varias décadas. Durante este tiempo, y con muchas más limitaciones que en la actualidad (espacio, memoria y herramientas), teóricos y practicantes unieron fuerzas para estudiar, para intentar resolver problemas relacionados con varios campos (compresión de datos, criptología, algoritmos de ordenación, optimizaciones, etc.).
Con el tiempo, se han escrito decenas de libros y luego cientos de blogs sobre cada uno de estos temas. Identifique las fuentes que podrían ayudarle con su problema y no dude en consultarlas si es necesario
1. Depuración
El código produce errores. Es ilusorio y utópico exigir un código libre de errores a un desarrollador. Un buen código no es solo código que contiene pocos errores, sino también código que puede rastrearlos y eliminarlos rápidamente.
Por supuesto, existen diferentes herramientas y métodos para depurar. Una heurística que ha sido comprobada es simplemente rastrear el error en los últimos elementos de código modificados (porque las pruebas confirmaron que las últimas versiones son perfectas). A veces, el problema se oculta en suposiciones hechas durante la génesis del software. Entonces habrá que buscarlo en profundidad, con el temor fundamental de poner en tela de juicio la arquitectura completa de la aplicación.
Cada método de producción de código (IDE, framework, lenguaje) tiene sus herramientas de depuración y también cada capa de software. Las mismas herramientas no se utilizan para detectar problemas con el acceso al sistema de archivos o sobrecarga de RAM, errores de red o interbloqueos. Nuevamente, eche un vistazo a lo que su comunidad y su equipo ofrecen y aproveche las habilidades únicas de cada uno.
2. Trazas
Una práctica sigue siendo común a casi todos estos métodos y herramientas de depuración: trazar lo que está sucediendo y escribir un resumen en un archivo, para comprender mejor cómo se ejecuta el software. El código pasó por esa rama pero no por esa; tal o cual función ha recibido este o aquel valor como parámetro y tal o cual resultado ha sido devuelto; etc.
Siempre...
Perseguir el crecimiento personal
"Lo único constante es el cambio."
Este dicho es aún más cierto en un sector como las tecnologías de la información en general y el desarrollo en particular. Si los lenguajes pueden durar algunas décadas (con nuevas versiones regulares), las librerías, los frameworks, las arquitecturas y enfoques, cambian según las modas.
No solo las modas: restricciones de hardware como la potencia y las capacidades de gráficas del equipo, la conectividad, las normas y estándares y todas estas restricciones externas se reflejan en el código.
1. Saber hacer preguntas
En informática, como en la historia de la ciencia y en cualquier otra profesión, practicar el arte de hacer preguntas, también es la mejor forma de responderlas.
Lo sorprendente se debería investigar.
La base de los razonamientos se debería investigar.
Lo que ha sido cierto durante demasiado tiempo sin que se recuerde por qué, se debería investigar.
Es interesante estudiar el problema inverso del que estamos examinando.
Y ... ¿las preguntas que hace son las preguntas correctas que debe hacer?
La comunidad de "hackers" a menudo tiene reacciones instintivas a preguntas que son demasiado simples, frecuentes o mal formuladas. Irritan y se rechazan más fácilmente. Tiene que demostrar su buena fe: ¿realmente ha trabajado...
Perseguir el crecimiento profesional
1. La parte humana
No es una discusión con un colega o un gerente lo que explica su promoción o que le asignen determinados proyectos: es sobre todo la confianza que inspira, la simpatía que muestra y el respeto que le tienen. Además de los requisitos técnicos, su desarrollo también se basa en cuestiones sociales y humanas. Nunca pierda esto de vista.
Aparte de la "buena voluntad", también existe el poder: un negocio en decadencia puede ofrecerle desafíos temporales, pero no puede ofrecerle un crecimiento a largo plazo. Cualquiera que sea la situación, cuando hable con sus responsables, sepa escuchar y sea paciente: tiene conocimientos e información poco comunes que su interlocutor no tiene. Se puede sentir amenazado, estafado, desamparado, como cualquier ciudadano que se enfrenta a una profesión técnica que no conoce. Escuche sus peticiones, podrá detectar sus inquietudes para tranquilizarlas y, de no salvar la situación, al menos no lo empeorará.
Reflexione sobre estas preguntas y aplique las lecciones, porque así es como se le verá desde fuera.
2. Desarrollo rápido e iterativo
Una forma "sencilla" de tranquilizar es reformular correctamente las preguntas, necesidades y prioridades. Priorizar bien significa ser eficiente con su presupuesto, en descubrir y resolver problemas....
Conclusión
Este capítulo está lleno de consejos. Seguramente ya entiende algunos que le parecen superfluos, seguramente haya otros que ignora, incluso otros le pueden parecer lejanos o accesorios. Aplicar todo, de inmediato, parece una tarea aterradora. Su cerebro es una hermosa máquina e igualmente está sujeto a fallos y equivocaciones. ¡Manténgalo activo y sea racional, curioso y proactivo, pero sobre todo… Diviértase!
El código es una actividad creativa y liberadora. Lo ha convertido en su trabajo o quiere hacerlo. ¡Disfrútelo!