Conocimientos previos
Dominio de al menos un lenguaje de programación
- Conocimientos sólidos: Tener un entendimiento profundo de las estructuras de datos (arrays, listas, colas, pilas, mapas) y algoritmos (búsqueda, ordenamiento, recursividad).
- Programación orientada a objetos (POO): Clases, objetos, herencia, polimorfismo, abstracción y encapsulación.
- Conceptos funcionales básicos: Funciones de orden superior, asincronismo, closures, currying, y manejo de funciones puras.
- Buenas prácticas de codificación: Escribir código limpio y legible, comentarios efectivos, modularidad, y uso adecuado de excepciones y errores.
Fundamentos de control de versiones (Git)
Git es un sistema de control de versiones distribuido, gratuito y de código abierto, diseñado para gestionar todo, desde proyectos pequeños hasta muy grandes, con velocidad y eficiencia.
- Comandos básicos: Clonar, hacer commits, branches, merges, y rebase.
- Colaboración en equipos: Pull requests, revisiones de código, y resolución de conflictos.
Conocimientos básicos de bases de datos
- SQL: CRUD básico (Create, Read, Update, Delete), joins, índices, y optimización de consultas.
- Bases de datos NoSQL: Entender cuándo usar bases de datos NoSQL como MongoDB o Redis.
Experiencia básica en arquitectura de software
- MVC: Patrón Modelo-Vista-Controlador.
- Capas de abstracción: Separación de responsabilidades.
- Conocimiento de patrones de diseño básicos: Singleton, Factory, Observer.
Conocimientos en metodologías ágiles
- SCRUM/Kanban: Comprensión básica de la metodología SCRUM o Kanban, incluyendo sprints, backlog, daily standups, etc.
- Ciclo de vida de desarrollo de software (SDLC): Entender las fases de planificación, análisis, diseño, implementación, pruebas, despliegue y mantenimiento.
Testing y QA
- Pruebas unitarias: Herramientas como JUnit o Jest.
- Pruebas de integración y end-to-end: Familiaridad básica con frameworks como Selenium, Cypress o TestCafe.
Manejo básico de sistemas operativos y redes
- Sistemas UNIX/Linux: Comandos básicos, administración de procesos, permisos y manejo de archivos.
- Fundamentos de redes: IP, TCP/UDP, HTTP, HTTPS y conceptos de redes como DNS y protocolos de transporte.