Metodologías de Desarrollo de Software 1 Emprendedores

Metodologías de Desarrollo de Software

Saber programar no significa ser productivo. Muchas veces nos enseñan a programar pero eso no es sinónimo de ser productivo, es más, me atrevo a decir que muchas veces perdemos mucho tiempo tratando de implementar cosas que no nos pidieron y perdemos el enfoque del objetivo inicial que debíamos programar.

Por cosas como esta, necesitamos que alguien nos de una pauta de los límites de hasta dónde podemos poner de nuestra cosecha y hasta donde debemos de dejar de sugerir funcionalidades o perder mucho tiempo tratando de implementar cosas que nunca hemos hecho y no sabemos ni por dónde empezar.

Recuerdo muy bien cuando estaba trabajando en una empresa de publicidad donde yo era el único desarrollador y muchas de las veces no tenía a quien preguntarle si lo que estaba haciendo lo estaba haciendo correctamente o había una mejor forma de implementarlo. Recuerdo también que había otra “empresa hermana” que igual se dedicaba a la publicidad pero en este caso ellos si tenían un equipo de desarrollo pero desafortunadamente nunca trabajan en conjunto, es más, no había buenas prácticas de desarrollo y todo era un caos, muchas veces trabajan directamente en el FTP del servidor y sobre escribían sus cambios cuando alguien más utilizaba el mismo archivo.

Afortunadamente hay muchas metodologías de desarrollo de software que nos ayudan a poder lograr que los equipos de trabajo funcionen muy bien. Si tu equipo de trabajo está funcionando bien deberías tener la capacidad de poder trabajar de forma remota sin ningún problema. A veces los jefes no creen que se puede hacer home office y en verdad dar resultados pero yo les puedo decir que claramente eso es un mito. A mi parecer, la forma más efectiva de trabajar es haciéndolo desde casa por que te da compromisos extras como el no poder hacer “horas nalga” o que ya con que llegues a la oficina a buena hora ya cumpliste.

Pero para poder llegar a trabajar remoto necesitamos tener una buena organización (si deseas saber más puedes ver nuestro artículo sobre El futuro nos alcanza, el trabajo remoto), si estás dedicado al desarrollo de software sin duda lo que tienes que hacer es implementar la metodología Agile/Scrum la cual te ayuda a planificar la capacidad de desarrollo de tu equipo en intervalos de tiempo llamados “sprints” los cuales tienen tareas asignadas para cada miembro de tu equipo de trabajo y ya sólo resta darle seguimiento a través de una llamada diaria en donde contestas 3 preguntas ¿Que hice ayer? ¿Que voy a hacer hoy? ¿Algo me bloquea?.

A mi parecer debes de tener un entorno de comunicación muy robusto para poder hacer que todo tu equipo esté lo mejor comunicado posible. Primero que nada define tu mensajero de comunicación (Skype o Slack son suficientes). Después define el sistema con el cual vas a manejar tus sprints, a mi me encanta utilizar Jira pero ya depende de como te acomodes.

De la misma forma, vas a necesitar utilizar un sistema controlador de versiones que espero que estés utilizando Git y evidentemente un repositorio para subir tu código, a mi me encanta como funciona bitbucket y sobre todo cuando lo conectas con Jira, puedes ver en cada tarea los commits que se hicieron, si ya existen pull request y el status así como si pasó o no el build. La cereza en el pastel para mí es conectar Bitbucket con Slack para que nos envíe notificaciones de todo lo que está sucediendo.

Cuando todo esto está funcionando correctamente entonces si te puedes enfocar a optimizar el código y en verdad ser productivo y no tener que estar llorando por el tráfico, las inclemencias del clima o por que vas a llegar tarde a la oficina porque eso pasó a ser un problema del siglo pasado.

Como gente de TI nos podemos dar el lujo de hacer esas cosas pero no se limita a eso. En realidad, todas las personas que hagan su trabajo en la computadora pueden seguir este tipo de metodologías de trabajo que están orientadas a la productividad. También existen otro tipo de metodologías de trabajo más enfocadas a la repetición de tareas como el seguimiento a ventas o el flujo de trabajo de una fábrica pero esas metodologías las veremos con calma en otra ocasión.

Recuerda que para apoyar al blog lo compartas y te suscribas.

Si te gustó nuestro artículo y quieres ser el primero en recibirlos cuando sean publicados suscribete a nuestro blog.

<script type=”text/javascript” src=”https://cdn.sender.net/webforms/6829/1e85cd0c.js?v=3″></script>

¡Me acaban de hackear el servidor! 10 Comunicación

¡Me acaban de hackear el servidor!

¡Necesito que vengas ahorita! ¡Me acaban de hackear el servidor!

Esas fueron las palabras que desafortunadamente escuché en la llamada telefónica de una persona a quien le intervinieron un Sistema y empezaron a borrar la información que contenía, poner pornografía en sus sitios y por si no fuera poco, empezaron a publicar los datos de los usuarios en las redes sociales.

Acudí lo más rápido que pude al llamado y cuando llegué, el servidor estaba apagado, tuve que volver a encenderlo y empecé a respaldar una de las páginas web que no habían sido atacadas pero al tratar de iniciar el respaldo de la siguiente página, ya no existía la base de datos por que el hacker estaba volviendo a atacar y borró la bases de datos en ese momento, desafortunadamente todo estaba perdido para mi amiga.

Cuando tuve un poco más de tiempo en analizar el Sistema por donde se coló el hacker, me di cuenta que no cumplia con los estándares básicos de seguridad y mucho menos cumplia con las buenas prácticas de seguridad para ese tipo de sistemas. Después de ver el código fuente no me sorprendió que hubieran sido víctimas de un hackeo. Entonces empecé a indagar acerca del por qué el sistema estaba en esas condiciones y me di cuenta de varias cosas:

  • Tienen un programador que avisó de la condición del sistema y no lo dejaron repararlo porque no había tiempo de hacerlo.
  • No se usaban ningún tipo de frameworks los cuales ayudan a proteger los sistemas en temas de seguridad.
  • Existían malas prácticas de seguridad entre las conexiones con las bases de datos las cuales hicieron posibles que al acceder a una base de datos se pudiera acceder a todas las demás.
  • Las contraseñas no tenían nada de seguridad, una de las contraseñas era Admin123 🤦‍♂️
  • El servidor utilizaba un Sistema Operativo Windows el cual es muy inseguro e inestable y no ayuda para nada en este tipo de situaciones.

Con todo esto, me di cuenta que para que suceda este tipo de situaciones se debe ser tener un descontrol total de lo que está sucediendo en cuanto a términos de programación además de no permitir tomar las decisiones correctas y depender de que una persona no técnica determine el rumbo de las decisiones importantes en temas de programación.

Después de identificar estos problemas, decidí ayudarlos y hacerles plan de protección y auditoría en donde yo evaluaría las decisiones técnicas que se toman y evitar que existan este tipo de problemas desde el punto de vista técnico así como para la dirección de la empresa ofreciéndoles asesoría para poder tomar las mejores decisiones desde el punto de vista técnico ayudando a no tener gastos innecesarios y ayudarlos a sacarle el mayor provecho a la persona encargada de la implementación de los sistemas.

Afortunadamente se tomó la decisión correcta y ya estamos trabajando para volver a hacer el sistema con un mucho mejor elaborado esquema de seguridad, productividad (mejorando considerablemente los tiempos de desarrollo) y evidentemente bajando costos de producción.

error

Enjoy this blog? Please spread the word :)