Muchas personas encuentran en Halloween la excusa perfecta para disfrazarse y celebrar las cosas que nos atormentan. Google for Developers adopta el espíritu de la temporada y se sumerge en los escalofriantes desafíos que asustan a los desarrolladores e ingenieros de software. Sigue leyendo para descubrir estos terrores que están al acecho y descubre los trucos para dominarlos ¡y las recompensas que recibirás!
Un código resiliente requiere actualizaciones periódicas y, en cuanto a resolver errores, es mucho más fácil encontrarlos cuando hay menos líneas de código. Si te enfrentes a un código antiguo o largo, considera simplificarlo y actualizarlo para que sea más manejable, porque a nadie le gusta una base de código heredada o demasiado compleja. Estas son algunas de las prácticas recomendadas.
Comienza de a poco: no intentes actualizar toda tu base de código a la vez. Mejor comienza por actualizar partes pequeñas y aisladas de la base de código y así minimizar el riesgo de introducir nuevos errores.
Utiliza un sistema de control de versión: realiza un seguimiento de tus cambios y recurre fácilmente a una versión anterior si es necesario.
Considera utilizar una herramienta de refactorización: puede ayudarte a realizar cambios en el código sin dañarlo.
Prueba a fondo: asegúrate de probar los cambios a fondo antes de implementarlos en la etapa de producción. Este paso incluye probar los cambios de forma aislada y también junto con el resto de la base de código. A continuación, te damos más consejos sobre cómo evaluar la motivación.
Documenta tus cambios: incluye nuevas herramientas, API actualizadas y cualquier otro cambio para que los demás desarrolladores entiendan lo que hiciste y por qué.
Si lo que deseas es compilar y enviar el producto rápidamente, suena tentador evitar probar tu código, porque podría demorarte en el corto plazo. Pero ten cuidado: el código que no pruebes volverá para atormentarte más tarde. Las pruebas son una práctica recomendada que puede ahorrarte tiempo, dinero y dolores de cabeza a largo plazo. Incluso si sabes que debes realizar pruebas, no significa que quieras hacerlas. Sigue estos consejos que te ayudarán a crear pruebas de una manera más fácil.
Ludificación de pruebas: convierte la creación de pruebas en un juego. Plantéate como desafío escribir pruebas más rápido de lo que tarda tu colega en decir “cobertura de código”.
Programación en parejas: crea pruebas junto con un colega. Es como tener un compañero de entrenamiento: más divertido y motivador.
Configura la automatización de pruebas: automatiza las pruebas siempre que sea posible: es mejor Y más eficiente.
Muchos desarrolladores tienen fuertes preferencias en lo que respecta a los productos, pero, a veces, la tecnología heredada o las necesidades de la organización pueden limitar las opciones. Esto puede contrarrestarse, especialmente si te impide usar las herramientas más recientes. Cuando te enfrentes a una situación similar, te recomendamos que expreses tus recomendaciones a tu equipo. A continuación, te explicamos cómo hacerlo:
Promueve el cambio: si la tech stack actual realmente no funciona, aboga por un cambio. Hacerlo puede requerir documentación sobre una serie de eventos, pero puedes usarla para fundamentar tu postura.
Presenta los beneficios: si estás listo para compartir tus preferencias, explica cómo tu tech stack de elección beneficia al proyecto, al igual que el código optimizado mejora el rendimiento.
Muestra tu experiencia: demuestra tu conocimiento acerca de tu pila preferida, ya sea a través de una prueba de concepto o una presentación.
Adquiere nuevas habilidades: si tienes que familiarizarte con una tech stack de arriba hacia abajo que desconoces, considérala una oportunidad de aprendizaje. Es como explorar un nuevo lenguaje de codificación.
Ceder es clave: primero, reconoce que lograr implementar todos los puntos anteriores tiene sentido; pero, a veces, es necesario ceder. Piensa que es como trabajar con código antiguo; no es ideal, pero es factible. Entonces, si no puedes influir la decisión, no te desanimes.
Lo único peor que pasarse el fin de semana arreglando el código con errores es pasarse el fin de semana arreglando el código con errores, cuando, en realidad, tenías otros planes. Entre tener poco tiempo para reaccionar frente los problemas, destinar tiempo personal a resolverlos y disponer de menos personas para ayudar a solucionarlos, lo riesgoso, en el mejor de los casos, es enviar el código cuando no cuentas con las herramientas adecuadas a disposición. Aquí encontrarás una serie de prácticas recomendadas que te permitirán establecer un mejor horario y así evitar los sábados y domingos del terror.
Considera el horario comercial y el impacto en el usuario: programa implementaciones durante las horas de menor actividad para que menos usuarios se vean afectados. Para las empresas B2B, las tardes de los viernes pueden minimizar las interrupciones que sufren los clientes, pero, para las empresas más pequeñas, las implementaciones de los viernes pueden significar pasar el fin de semana solucionando problemas críticos. Elige un horario que te convenga.
Automatiza las pruebas: implementa pruebas automatizadas en tu proceso de desarrollo para detectar problemas a tiempo.
Asegúrate de que tu entorno de prueba sea el correcto: prueba minuciosamente los cambios en un entorno de prueba que refleje verdaderamente la producción.
Prepárate para la reversión: ten un plan de reversión listo que te permita realizar una restauración rápida si surgen problemas.
Supervisión y alertas: configura la supervisión y las alertas para detectar problemas las 24 horas, los 7 días de la semana.
Comunicación: garantiza una comunicación clara entre los miembros del equipo con respecto a los horarios y los procedimientos de implementación.
Implementaciones programadas: si eres parte de un equipo que no realiza envíos regularmente al final de la semana, considera los viernes como un día de SOLO LECTURA. O, si es necesario, programa las implementaciones del viernes para la mañana o a primera hora de la tarde.
Fin de semana de guardia: considera una rotación de fines de semana de guardia para abordar problemas críticos.
Revisión posterior a la implementación: analiza y aprende de los desafíos de cada implementación para mejorar los procesos.
Planifica a fondo: asegúrate de que los procesos de implementación estén bien documentados y que la comunicación entre los equipos y las partes interesadas sea clara.
Evalúa los riesgos: evaluar el impacto potencial en el negocio y en el usuario para determinar la frecuencia y el momento de la implementación.
Cuando te das cuenta de que te hackearon, se te detiene el corazón, pero, incluso los desarrolladores más conocedores de la tecnología, son vulnerables a los ataques. Antes de que te suceda, recuerda implementar estas prácticas recomendadas.
Mantén tus sistemas y software actualizados: considera esta acción como si aplicaras parches destinados a vulnerabilidades en tu código.
Usa contraseñas seguras: al igual que la encriptación segura, usa contraseñas sólidas.
Utiliza la autenticación de dos factores: agrega siempre una segunda capa de seguridad.
Cuidado con los suplantadores de identidad: no muerdas el anzuelo. Sé tan cauteloso con los correos electrónicos sospechosos como con el código no probado.
Realiza auditorías de seguridad: audita regularmente tus sistemas en busca de vulnerabilidades. Por ejemplo, ejecuta revisiones de código, pero en relación con tu seguridad cibernética.
Plan de copias de seguridad: al igual que lo que sucede con el control de versiones, crea copias de seguridad. Son tu red de seguridad en caso de que las cosas se transformen en una película de terror.
Las filtraciones de datos son, posiblemente, la amenaza más aterradora, pero plausible, para la felicidad de los desarrolladores. Ninguna empresa quiere que se la asocien con estas situaciones y mucho menos el desarrollador que eligió el servicio o la API para trabajar. Estos son algunos consejos para minimizar los problemas que pueden ocurrir con los proveedores externos y para ayudarte a evitar este escenario.
Realiza la debida diligencia con los proveedores externos: antes de trabajar con un proveedor externo, revisa cuidadosamente sus prácticas y políticas de seguridad. Indaga acerca de las certificaciones de seguridad, las prácticas de gestión de vulnerabilidades y el plan de respuesta ante incidentes.
Exige a los proveedores que cumplan con los requisitos de seguridad: crea o incorpora tus cláusulas en un contrato escrito con cada proveedor externo, en el que se describan los requisitos de seguridad que debe cumplir el proveedor. Este contrato debe establecer requisitos para la encriptación de datos, el control de acceso y la notificación de incidentes.
Supervisa la actividad de los proveedores: asegúrate de que los proveedores cumplan con los requisitos de seguridad del contrato. Para ello, revisa los registros de auditoría y realiza evaluaciones de seguridad. Solo otorga acceso a los datos que un proveedor necesita para realizar sus tareas laborales, lo que ayudará a minimizar el impacto de una filtración de datos si el proveedor se ve comprometido.
Implementa controles de seguridad sólidos: dentro de tus propios sistemas, impide que personas no autorizadas accedan a los datos implementando firewalls, sistemas de detección de intrusiones y encriptación de datos.
Ten cuidado con las API de terceros: examina todos los riesgos de seguridad. Revisa cuidadosamente la documentación de la API para comprender cuáles son los permisos obligatorios y asegurarte de que la API utilice prácticas de seguridad sólidas.
Utiliza prácticas de codificación seguras: emplea la validación de entrada, la salida de escape y una criptografía sólida.
Mantén el software actualizado: realiza siempre la actualización con el último parche de seguridad, lo que te ayudará a protegerte frente a vulnerabilidades conocidas.
Es fácil asustarse sabiendo lo que puede salir mal, pero, si implementas estas prácticas recomendadas, la posibilidad de que tu trabajo salga mal disminuirá enormemente.
¿Qué otros desafíos escalofriantes para los desarrolladores experimentaste? Compártelos con la comunidad.