De los Paquetes de Trabajo a un cronograma con fechas, dependencias y holguras realesFrom Work Packages to a schedule with real dates, dependencies, and float
Tienes la WBS de Atlas: 12 Paquetes de Trabajo organizados en 4 entregables. Pero una WBS no tiene fechas — solo dice qué hay que hacer, no cuándo ni en qué orden. Convertir eso en un cronograma real requiere entender 5 conceptos que se conectan entre sí: hitos, dependencias, inicios/fines tempranos y tardíos, holguras, y ruta crítica. You have Atlas's WBS: 12 Work Packages organized into 4 deliverables. But a WBS has no dates — it only says what needs to happen, not when or in what order. Turning that into a real schedule requires understanding 5 concepts that connect to each other: milestones, dependencies, early/late start and finish, float, and the critical path.
Un cronograma se construye con dos tipos de elementos fundamentalmente distintos: A schedule is built from two fundamentally different types of elements:
Tiene duración real (horas, días) y consume esfuerzo/recursos. Es el "cómo se hace el trabajo".Has real duration (hours, days) and consumes effort/resources. It's "how the work gets done".
Tiene duración cero. Marca un punto de control significativo — la finalización de un entregable importante o una decisión clave. No consume esfuerzo, solo confirma que algo ya se logró.Has zero duration. Marks a significant control point — the completion of a major deliverable or a key decision. It doesn't consume effort, it just confirms something has been achieved.
Las Metas Intermedias del Charter y las 2 Metas Intermedias del taller de Alcance son, técnicamente, Hitos. Ahora que construimos el cronograma detallado, esos hitos se insertan como puntos de control formales dentro de la red — no desaparecen, se vuelven parte oficial del cronograma. The Charter's Intermediate Goals and the 2 Intermediate Goals from the Scope workshop are, technically, Milestones. Now that we're building the detailed schedule, those milestones get inserted as formal control points within the network — they don't disappear, they become an official part of the schedule.
Una dependencia conecta dos actividades: una predecesora y una sucesora. Existen 4 tipos de relación lógica: A dependency connects two activities: a predecessor and a successor. There are 4 types of logical relationship:
| TipoType | SignificaMeans | Ejemplo AtlasAtlas Example |
|---|---|---|
| Fin-a-Inicio (FS) | La sucesora no puede empezar hasta que la predecesora termine. La más común (~90%).The successor can't start until the predecessor finishes. The most common (~90%). | No puedes "Entrenar el modelo" hasta terminar "Limpiar los datos".You can't "Train the model" until "Clean the data" is finished. |
| Inicio-a-Inicio (SS) | La sucesora no puede empezar hasta que la predecesora empiece (pueden avanzar juntas).The successor can't start until the predecessor starts (they can progress together). | "Monitorear el entrenamiento" empieza en cuanto empieza "Entrenar el modelo"."Monitor training" starts as soon as "Train the model" starts. |
| Fin-a-Fin (FF) | La sucesora no puede terminar hasta que la predecesora termine.The successor can't finish until the predecessor finishes. | "Cerrar el reporte de EDA" no puede terminar hasta que "Realizar EDA" termine."Close out the EDA report" can't finish until "Perform EDA" finishes. |
| Inicio-a-Fin (SF) | La sucesora no puede terminar hasta que la predecesora empiece. Rarísima en la práctica.The successor can't finish until the predecessor starts. Very rare in practice. | El "monitoreo del modelo anterior" termina hasta que el "despliegue del nuevo modelo" empieza."Monitoring the old model" doesn't end until "deploying the new model" starts. |
Además, cualquier dependencia puede tener un Adelanto (Lead) — la sucesora empieza antes de que la predecesora termine del todo — o un Retraso (Lag) — hay que esperar un tiempo extra después de la predecesora antes de que la sucesora pueda empezar. Additionally, any dependency can have a Lead — the successor starts before the predecessor fully finishes — or a Lag — extra wait time is needed after the predecessor before the successor can start.
Es un error común pensar en Obligatoria/Discrecional/Externa como 3 tipos separados. PMBOK 8 es explícito: una dependencia tiene dos atributos independientes que se combinan — (1) Obligatoria o Discrecional, y (2) Interna o Externa — dando 4 combinaciones posibles, no 3 categorías paralelas. It's a common mistake to think of Mandatory/Discretionary/External as 3 separate types. PMBOK 8 is explicit: a dependency has two independent attributes that combine — (1) Mandatory or Discretionary, and (2) Internal or External — giving 4 possible combinations, not 3 parallel categories.
| Interna (dentro del equipo/proyecto)Internal (within the team/project) | Externa (fuera del control del equipo)External (outside the team's control) | |
|---|---|---|
| ObligatoriaMandatory (hard logic) |
No puedes evaluar un modelo antes de entrenarlo.You can't evaluate a model before training it. | El despliegue no puede empezar hasta que la regulación de datos permita usar cierta información.Deployment can't start until data regulations allow using certain information. |
| DiscrecionalDiscretionary (preferida) |
El equipo elige probar primero regresión logística por simplicidad, aunque no es obligatorio.The team chooses to try logistic regression first for simplicity, though it isn't mandatory. | El equipo prefiere esperar el benchmark anual de un proveedor externo antes de fijar el umbral de recall, aunque podría fijarlo sin él.The team prefers to wait for an external vendor's annual benchmark before setting the recall threshold, though it could set it without one. |
Cuando definas una dependencia, respóndete las dos preguntas por separado: "¿es físicamente obligatoria o solo preferida?" y "¿depende de mi equipo o de alguien externo?" — nunca elijas una sola etiqueta de las 3 que "suene mejor". When defining a dependency, answer the two questions separately: "is it physically mandatory or just preferred?" and "does it depend on my team or on someone external?" — never pick a single label from the 3 that "sounds best".
Cada actividad tiene 4 fechas calculadas, no solo una. El formato clásico para anotarlas a mano (o en el examen) es el nodo PDM de 6 casillas: Every activity has 4 calculated dates, not just one. The classic format for writing them by hand (or in an exam) is the 6-box PDM node:
ES = Inicio Temprano · EF = Fin Temprano · LS = Inicio Tardío · LF = Fin Tardío · Holgura = LS − ESES = Early Start · EF = Early Finish · LS = Late Start · LF = Late Finish · Float = LS − ES
| ConceptoConcept | DefiniciónDefinition | Cómo se calculaHow it's calculated |
|---|---|---|
| ES — Inicio TempranoEarly Start | Lo más pronto que puede empezar, sin violar dependencias.The soonest it can start, without violating dependencies. | Pasada Adelante: ES = mayor EF de sus predecesorasForward Pass: ES = largest EF of its predecessors |
| EF — Fin TempranoEarly Finish | Lo más pronto que puede terminar.The soonest it can finish. | EF = ES + DuraciónDuration |
| LF — Fin TardíoLate Finish | Lo más tarde que puede terminar sin retrasar el proyecto.The latest it can finish without delaying the project. | Pasada Atrás: LF = menor LS de sus sucesorasBackward Pass: LF = smallest LS of its successors |
| LS — Inicio TardíoLate Start | Lo más tarde que puede empezar sin retrasar el proyecto.The latest it can start without delaying the project. | LS = LF − DuraciónDuration |
Siempre calcula en dos pasadas completas: primero toda la red hacia adelante (ES/EF, empezando en 0), y hasta terminar esa, recién entonces toda la red hacia atrás (LF/LS, empezando del final del proyecto). Mezclar las dos pasadas a medio camino es la fuente #1 de errores de cálculo. Always calculate in two complete passes: first the entire network forward (ES/EF, starting at 0), and only once that's done, then the entire network backward (LF/LS, starting from the project's end). Mixing the two passes halfway through is the #1 source of calculation errors.
Este curso usa EF = ES + Duración (tiempo transcurrido, empezando en 0) — la convención más intuitiva para aprender y la que usa Project Libre internamente. El ejemplo oficial de PMBOK 8 cuenta días de calendario de forma inclusiva: EF = ES + Duración − 1 (si empiezas en el Día 1 con 3 días de duración, terminas el Día 3, no el Día 4). Ambas convenciones son válidas y muy usadas — solo no las mezcles dentro del mismo cálculo. This course uses EF = ES + Duration (elapsed time, starting at 0) — the more intuitive convention for learning, and the one ProjectLibre uses internally. PMBOK 8's official example counts calendar days inclusively: EF = ES + Duration − 1 (if you start on Day 1 with a 3-day duration, you finish on Day 3, not Day 4). Both conventions are valid and widely used — just don't mix them within the same calculation.
Holgura (Float / Slack) es cuántos días puede retrasarse una actividad sin retrasar el proyecto completo: Holgura = LS − ES = LF − EF. Cuando la holgura es cero, la actividad es crítica — cualquier retraso ahí retrasa todo el proyecto. La Ruta Crítica es la cadena de actividades críticas que conecta el inicio con el fin del proyecto: es, matemáticamente, el camino más largo de la red. Float (Slack) is how many days an activity can slip without delaying the whole project: Float = LS − ES = LF − EF. When float is zero, the activity is critical — any delay there delays the entire project. The Critical Path is the chain of critical activities connecting the project's start to its end: it's, mathematically, the network's longest path.
Cuánto puede retrasarse una actividad sin retrasar la fecha final del proyecto. Es la que normalmente llamamos simplemente "holgura".How much an activity can slip without delaying the project's final date. This is what we normally just call "float".
Cuánto puede retrasarse una actividad sin retrasar el inicio temprano de su sucesora inmediata — más estricta que la holgura total.How much an activity can slip without delaying the early start of its immediate successor — stricter than total float.
Vamos a calcularla completa con un fragmento real del cronograma de Atlas (7 actividades, tomadas de los Paquetes de Trabajo de Datos y Modelo): Let's calculate it fully with a real fragment of Atlas's schedule (7 activities, taken from the Data and Model Work Packages):
| # | ActividadActivity | Predecesora(s)Predecessor(s) | Dur.Dur. | ES | EF | LS | LF | HolguraFloat |
|---|---|---|---|---|---|---|---|---|
| A | Consolidar datos históricosConsolidate historical data | — | 2 | 0 | 2 | 0 | 2 | 0 |
| B | Limpiar y validar datosClean and validate data | A | 3 | 2 | 5 | 2 | 5 | 0 |
| C | Configurar entorno de cómputoConfigure compute environment | A | 1 | 2 | 3 | 6 | 7 | 4 |
| D | Realizar EDAPerform EDA | B | 2 | 5 | 7 | 5 | 7 | 0 |
| F | Documentar diccionario de datosDocument data dictionary | B | 2 | 5 | 7 | 10 | 12 | 5 |
| E | Entrenar modelos baselineTrain baseline models | D, C | 4 | 7 | 11 | 7 | 11 | 0 |
| G | Seleccionar modelo finalSelect final model | E | 1 | 11 | 12 | 11 | 12 | 0 |
La Ruta Crítica es A → B → D → E → G, con duración total de 12 días (2+3+2+4+1) — es la más larga de todas las rutas posibles. C tiene 4 días de holgura y F tiene 5: pueden retrasarse esos días sin afectar la fecha final del proyecto. The Critical Path is A → B → D → E → G, with a total duration of 12 days (2+3+2+4+1) — it's the longest of all possible paths. C has 4 days of float and F has 5: they can slip that many days without affecting the project's final date.
Si como PM tienes que "apurar" el proyecto, apurar la actividad C o F no sirve de nada — tienen holgura. Solo acelerar A, B, D, E o G (la ruta crítica) reduce la duración total. Este es el fundamento de técnicas como Crashing y Fast Tracking. If, as PM, you need to "speed up" the project, rushing activity C or F is pointless — they have float. Only accelerating A, B, D, E, or G (the critical path) reduces the total duration. This is the foundation of techniques like Crashing and Fast Tracking.
Un Paquete de Trabajo de Nivel 3 (como 1.2.2 Entrenar modelos baseline) todavía es demasiado grande para calendarizar directamente — no tiene una sola duración clara ni un solo responsable de principio a fin. El proceso Definir las Actividades lo descompone un nivel más, en tareas puntuales, secuenciadas y estimables. Esas actividades de Nivel 4 son las que realmente entran a la red PDM. A Level 3 Work Package (like 1.2.2 Train baseline models) is still too large to schedule directly — it doesn't have one clear duration or one owner from start to finish. The Define Activities process breaks it down one more level, into specific, sequenced, estimable tasks. Those Level 4 activities are what actually go into the PDM network.
Entrenar modelos baselineTrain baseline models
Usa la misma heurística 8/80 del módulo de WBS para saber cuándo detener la descomposición: si una actividad ya se puede estimar y asignar a una sola persona en menos de un par de días, ya llegaste al nivel correcto — no sigas descomponiendo hasta minutos. Recuerda: es una regla práctica de la industria, no un número que aparezca literal en PMBOK 8. Use the same 8/80 heuristic from the WBS module to know when to stop decomposing: if an activity can already be estimated and assigned to a single person in a couple of days or less, you've reached the right level — don't keep decomposing down to minutes. Remember: it's a practical industry rule, not a number that appears literally in PMBOK 8.
El error más frecuente entre alumnos de primer proyecto: encadenar todas las actividades en una sola línea recta, donde cada una depende únicamente de la que está justo arriba en la lista — sin preguntarse si esa dependencia realmente existe. The most frequent mistake among first-project students: chaining every activity in a single straight line, where each one depends solely on whatever's listed right above it — without asking whether that dependency actually exists.
Si encadenas C y F después de B en línea recta (en vez de dejarlos en paralelo, como realmente pueden estar), pasan tres cosas malas: (1) el proyecto se alarga artificialmente porque el trabajo que sí podía hacerse al mismo tiempo ahora se hace uno tras otro; (2) toda la cadena se vuelve crítica (holgura = 0 en todas partes), así que ya no puedes distinguir qué de verdad es urgente; (3) se esconde el riesgo real del proyecto, porque un cronograma donde todo es "igual de crítico" no te dice nada útil sobre dónde enfocar tu atención. If you chain C and F after B in a straight line (instead of leaving them in parallel, as they really can be), three bad things happen: (1) the project is artificially lengthened because work that really could've happened simultaneously now happens one after another; (2) the entire chain becomes critical (float = 0 everywhere), so you can no longer tell what's actually urgent; (3) the project's real risk gets hidden, because a schedule where everything is "equally critical" tells you nothing useful about where to focus your attention.
A → B → C → D → F → E → G, forzando que C y F esperen a que termine lo anterior aunque no lo necesiten de verdad.A → B → C → D → F → E → G, forcing C and F to wait for what came before even though they don't really need it.
15 días · 7 de 7 actividades críticasdays · 7 of 7 activities criticalC y F corren en paralelo a D, porque técnicamente no necesitan esperar nada más que a A o B respectivamente.C and F run in parallel with D, because technically they don't need to wait for anything beyond A or B, respectively.
12 días · 5 de 7 actividades críticasdays · 5 of 7 activities criticalLa diferencia entre 15 y 12 días no es un detalle menor — es 25% más tiempo de proyecto, causado enteramente por dependencias inventadas, no por trabajo real. The difference between 15 and 12 days isn't a minor detail — it's 25% more project time, caused entirely by invented dependencies, not real work.
Para cada actividad, pregúntate: "¿qué necesito que exista para poder empezar esta actividad — y de quién viene exactamente eso?" Si la respuesta no menciona la actividad justo anterior en tu lista, no la pongas como predecesora solo porque está más arriba. Encadenar por conveniencia de lista, no por lógica real, es la trampa. For every activity, ask yourself: "what do I need to already exist to start this activity — and exactly whose output is that?" If the answer doesn't mention the activity right above it on your list, don't set it as a predecessor just because it happens to be listed first. Chaining for list convenience, not real logic, is the trap.