Antipatterns in Software Development Life Cycle (SDLC) / Antipatrones en el ciclo de vida del Desarrollo de Software


The processes involved in creating / altering software group the SDLC.

Normally we have 6 steps to create software:
1. Requirements Specification
2. Program Design
3. Program Coding
4. Program Testing
5. Documentation
6. Maintenance

Very easy, each point is self-explanatory.
Now what I want to explain is the Antipatterns around these ones.

What are Antipatterns? These are BAD practices in Software Development, We don’t need to even think about it, right? Wrong, we need to know antipatterns to do not repeat these bad practices in our projects. Every bad lesson learned in previous projects become Antipatterns practices, later these will help us to get better results in our currents projects, together with Patters of software development that are the good practices.

Normally in Software development we found 3 types of people around each project: Managers, Architects and Developers. Each one of the members of these groups can be affected by antipatterns.

Developers:

1. Lava Flow, this means a lot of code emerging like lava from a volcano, uncontroled code means low understanding about what are being developed and later this will “solidify” like lava and will be very dificult to understand. No documented code, away from the architectural concept and hard to modify.

2. Ghosts, a lot of classes or dependencies with a few responsabilities each one.This makes it difficult to find the important functions.

3. God Mode, a single program that does everything. Hard to read and understand. This comes from the old programming style, like ms-dos coding style.

4. Golden Hammer, avoid the use of any other technology to resolve problems that we know cannot be resolve with current tools. Marry a technology and not allow others to help.

5. Spaghetti Code, a lot of no documented code, hard to read, very difficult to understand and a indecipherable lines of code.

Architects:

1. Reinvent the wheel, this means trying to create the same software solution every time. Usually this is due to ignorance on the business requirements.

2. Marry a technology, sometimes the same technology is not able to handle all the requirements for the project, instead of reconstruct a lot of functionalities to allow the current technology to emulate other technology, it will be better to use another existent solution to solve that.

3. Stovepipe, “hot cooking”, this means performing unprogrammed changes, changing everything everyday.

Managers:

1. Super developers team, this is when managers think something like “if a mother gives birth 1 son in 9 months, 9 mothers can give birth to 1 son in 1 month”. Sometimes increase the development team can cause other delays instead of increase velocity.

2. Corncob, difficult people that affects the work of other team members, there are a lot of that people that don’t create good software and don’t allow others to do their job.

3. Project miss-management, this is the bad manager, he doesn’t know how to do his job. I know many of these, especially now that arose a specialization misnamed PMP (Project Management Professional) that accepts any type of graduate person without appropriate professional experience. Problem with this is that always is known very late, after the project is badly affected.

Summary: Each lesson we learned during the project development can become a pattern or good development practices and the opposite could become a bad practice or anti pattern.

*********************************************Español:
Los procesos usados en crear o modificar software agrupan el SDLC. (Ciclo de Vida del Desarrollo de Software).

Normalmente tenemos 6 pasos para crear software:
1. Especificación de requerimientos
2. Diseño de programas
3. Codificación de programas
4. Pruebas de los programas
5. Documentación
6. Mantenimiento

Muy fácil, cada punto se explica solo.
Ahora voy a explicar los Antipatrones que surgen alrededor de cada uno de estos.

Que son los antipatrones? Estas son malas prácticas en desarrollo de software. Que no necesitaríamos ni nombrar cierto? Error, Nosotros necesitamos conocer todos los antipatrones que no deseamos se repitan en nuestros actuales proyectos. Cada mala lección aprendida en proyectos anteriores se convierten en Antipatrones, luego estas nos ayudarán a obtener mejores resultados en nuestros proyectos, junto a los Patrones de Desarrollo de software que son las buenas prácticas.

Normalmente en desarrollo de software encontramos 3 tipos de personas en cada proyecto: Directores, Arquitectos y Desarrolladores. Cada uno de los miembros de estos grupos puede verse afectado por los antipatrones.

Desarrolladores:

1. Flujo de lava (Lava Flow), se refiere a una cantidad enorme de código fluyendo como lava de un volcán, código incontrolado significa bajo conocimiento sobre lo que se está desarrollando y más tarde como la lava esto se “solificará” y será más difícil de entender. Código sin documentar, lejos del concepto arquitectónico y difícil de modificar.

2. Fantasmas (Ghosts), muchas clases o dependencias con pocas responsabilidades cada una, esto hace muy dificultoso encontrar las verdaderas funciones importantes.

3. Modo Dios (God Mode), un sólo programa que hace todo. Duro de leer y entender. Esto viene del antiguo estilo de programación, como los programas ms-dos.

4. Varita mágica (Golden Hammer), evitar el uso de otras tecnologías para resolver problemas que no se puede hacer con las herramientas actuales. Casarse con una tecnología y no dejar entrar otras.

5. Código espagueti (Spaghetti Code), cantidades de código no documentado, duro de leer, muy difícil de entender y se puede decir indecifrable cantidad de líneas de código.

Arquitectos:

1. Reinventar la rueda, esto significa tratar de crear la misma solución de software cada vez que se requiere. Normalmente esto es por ignorancia a los requerimientos de negocio.

2. Casarse con una tecnología, a veces la misma tecnología no es capaz de manejar todos los requerimientos de un proyecto, en lugar de reconstruir una gran cantidad de funcionalidades para hacer el software actual emular lo que hacen otras tecnologías lo mejor sería hacer uso de estas.

3. Tubo de estufa, “cocinar en caliente”, significa realizar cambios no programados, cambiando todo cada día.

Directores:

1. Super equipos de desarrollo, cuando los administradores piensan que todo es tan simple que con solo añadir personal se resuelve, por ejemplo el que se atreve a decir “Si una madre tiene un hijo en 9 meses, 9 madres pueden tener un hijo en un mes”. Algunas veces añadiendo personal al proyecto lo que hace es entorpecerlo más.

2. Malgeniados, personas difíciles que afectan el trabajo de los demás miembros del equipo, especialmente aquellos que es más lo que hablan que lo que hacen, no producen buen software y no dejan a los que si saben hacerlo.

3. Mal manejo del proyecto, este no es sino un mal director, no sabe como hacer su trabajo. Conozco a muchos de estos especialmente ahora que salió una mal llamada “Especialización” PMP (Profesional Director de Proyectos) que está aceptando cualquier graduado que no tiene la experiencia requerida para convertirse en Director de proyectos. Lo malo de esto es que siempre se sabe muy tarde cuando se ha comprometido peligrosamente el proyecto.

Resumen: Cada lección aprendida durante el desarrollo de cada proyecto puede convertirse en un patrón de buenas o malas prácticas, dependiendo lo que sea. Malas prácticas=antipatrones, buenas prácticas=patrones.

2 thoughts on “Antipatterns in Software Development Life Cycle (SDLC) / Antipatrones en el ciclo de vida del Desarrollo de Software”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s