Principios de Desarrollo de Software
En 23people creemos que cada proyecto de software debe ser un proceso de simplificación de un problema real. Esta premisa se convierte en nuestro principio rector y se ve reflejada en cada etapa de desarrollo. A continuación, describimos nuestros principales pilares y los principios que los sustentan:
-
Simplicidad ante todo
- Buscamos que cada parte del sistema, desde la arquitectura hasta el código, sea lo más sencilla posible.
- Eliminamos complejidades innecesarias para centrarnos en la solución más directa y eficiente.
-
Equilibrio entre Programación Orientada a Objetos (POO) y Programación Funcional
- Principios de POO: Aplicamos conceptos fundamentales como encapsulación, abstracción, herencia y polimorfismo. Esto nos permite organizar mejor el código, mantenerlo modular y facilitar su comprensión.
- Principios funcionales: Fomentamos la creación de funciones puras, la inmutabilidad de los datos y la minimización de efectos secundarios. Esto nos ayuda a simplificar la lógica, reducir errores y aumentar la legibilidad y testabilidad del código.
-
Principios SOLID
- S (Single Responsibility Principle): Cada componente debe tener una única responsabilidad claramente definida, evitando que clases o módulos se sobrecarguen de tareas.
- O (Open/Closed Principle): El software debe estar abierto a la extensión pero cerrado a la modificación, facilitando la evolución del sistema sin romper funcionalidades existentes.
- L (Liskov Substitution Principle): Las clases derivadas deben poder sustituir a sus clases base sin alterar el correcto funcionamiento del sistema.
- I (Interface Segregation Principle): Es preferible usar varias interfaces específicas en lugar de una sola y gran interfaz, garantizando que las clases solo implementen lo que realmente necesitan.
- D (Dependency Inversion Principle): Se fomenta la dependencia de abstracciones en lugar de implementaciones concretas, para lograr un código más flexible y testeable.
-
Enfoque centrado en el negocio
- Antes de escribir cualquier línea de código, buscamos comprender a fondo el problema que se desea resolver.
- El objetivo es entregar valor al cliente y a los usuarios finales, creando soluciones que realmente atiendan sus necesidades.
-
Escalabilidad y mantenibilidad
- Diseñamos soluciones que crezcan de forma ordenada y controlada, preparadas para cambios futuros.
- Priorizamos la estructura y la legibilidad del código para facilitar su evolución y reducir costos de mantenimiento.
-
Transparencia y colaboración
- Fomentamos la comunicación abierta y la retroalimentación continua en el equipo, tanto técnico como no técnico.
- Valoramos el trabajo colaborativo y la discusión constructiva para lograr mejores soluciones.