project management.html 16.8 KB
Newer Older
1
2
3
<!DOCTYPE html>
<html>
  <head>
Florian Moser's avatar
Florian Moser committed
4
    <title>IT Project Management</title>
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <link rel="stylesheet" href="css/remark.css">
    <link rel="stylesheet" media="print" href="css/remark.print.css">
  </head>
  <body>
    <textarea id="source">

class: center, middle

# IT project management

<img src="images/thealternative-logo.jpg" width="30%">

---

Florian Moser's avatar
Florian Moser committed
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Motivation

IT projects fail often (2017):
- 14% fail completely
- 31% didn’t meet their goals
- 43% exceeded initial budgets
- 49% were late
- 69% succeed

<small>
[Source](http://www.pmi.org/-/media/pmi/documents/public/pdf/learning/thought-leadership/pulse/pulse-of-the-profession-2017.pdf?sc_lang_temp=en)
</small>

<small>
*Sometimes success rates as low 16% are claimed, referencing a widely cited [report of 1994](https://www.standishgroup.com/sample_research_files/chaos_report_1994.pdf).*
</small>

---

# Why projects fail

Nearly universally referenced issues:
- Inaccurate requirements
- Uninvolved project sponsors
- Inaccurate estimates
- Unexpected risks

47
[Source 1](https://www.atspoke.com/blog/it/reasons-for-it-project-failure/), [Source 2](https://www.orellfuessli.ch/shop/home/artikeldetails/ID39325699.html), [Source 4](https://www.gartner.com/en/documents/2892218), PMO Survey 2020
Florian Moser's avatar
Florian Moser committed
48
49
50

<img src="images/project-fail-reasons.png" width="100%">

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125


---

# Epirical data

Unfortunately, mostly useless.

Littered with strong opinions, baseless claims, bad statistics, unprocessed experience, ...

<img src="images/success_rate_vs_project_cost.png" width="100%">

---

# Why projects fail

List out of "Project Recovery" by Harold Kerzner

- End-user stakeholders not involved throughout the project
- Minimal or no stakeholder backing; lack of ownership
- Weak initial business case
- Business case deterioration
- Business case requirements that changed significantly over the life of the project
- Technical obsolescence
- Technologically unrealistic requirements
- Lack of a clear vision
- New executive team in place with different visions and goals
- Corporate goals and/or vision not understood at the lower organiza-tional level
- Plan that asks for too much in too little time
- Poor estimates, especially financial
- Unclear stakeholder requirements
- Passive user stakeholder involvement after handoff
- Unclear or unrealistic expectations
- Unrealistic assumptions, if they exist at all
- Plans based upon insufficient data
- No systemization of the planning process
- Planning performed by a planning group
- Inadequate or incomplete requirements
- Lack of resources
- Assigned resources that lack experience or the necessary skills

---

- Resources that lack focus or motivation
- Staffing requirements that are not fully known
- Constantly changing resources
- Poor overall project planning
- Established milestones not measurable
- Established milestones too far apart
- Environmental factors that have changes causing outdated scope
- Missed deadlines and no recovery plan
- Budgets exceeded and out of control
- Lack of replanning on a regular basis
- Lack of attention provided to human and organizational aspects of project
- Project estimates that are best guesses and not based upon history or standards
- Not enough time provided for estimating
- Exact major milestone dates or due dates for reporting not known
- Team members working with conflicting requirements
- People shuffled in and out of project with little regard for schedule
- Poor or fragmented cost control
- Each stakeholder uses different organizational process assets, which may be incompatible with each other
- Weak project and stakeholder communications
- Poor assessment of risks, if done at all
- Wrong type of contract
- Poor project management; team members possess a poor understanding of project management, especially virtual team members
- Technical objectives that are more important than business objectives
- Assigning critically skilled workers, including the project manager, on a part-time basis

---

# Applicability of course

IT-projects as a freelancer.

Yes:
Florian Moser's avatar
Florian Moser committed
126
- Marketing webpage for the business of your dad
127
128
129
130
131
132
133
134
135
136
137
138
- Online shop for small printing shop
- eVoting application for members of UZH
- App & Webapplication combination for construction firm

No:
- Führungsinformationssystem Heer
- Mainframe migration
- Medical software 
- Bitcoin trading bot

---

Florian Moser's avatar
Florian Moser committed
139
# Experience
140
141
142
143
144
145
146
147
148
149
150
151

Until bachelors:
- Freelancer webpages since 2014
- Bachelor ETH (Computer Science) 2015 - 2018
- Projectmanagement & Development @ JKweb 2016 - 2017
- Freelancer webapplications since 2018

After bachelors:
- Professional Software Engineer @ Zühlke 2018 - 2019
- VSETH board member 2019-2020
- Master ETH (Computer Science) 2019 - 2022

Florian Moser's avatar
Florian Moser committed
152
153
154
155
156
Projects managed:
- 12 projects @ JKweb
- 16 projects as Freelancer (of which 10 were bigger applications)
- ~80 projects in total

157
158
159
160
Projects: https://famoser.ch/

---

161
# This course
162

163
164
165
166
Parts:
- **Know what makes a good project**: High-level view about a suitable environment for your project.
- **Plan a successful project**: How to create a convincing project plan.
- **Execute a successful project**: How to execute & finish your project.
167

168
169
Targets:
- You can detect favorable environments for projects
Florian Moser's avatar
Florian Moser committed
170
- You feel confident creating a realistic project schedule
171
172
173
174
175
- You can finish a project
	- on time
	- within budget
	- within schedule
	- which satisfies customer expectations.
176
177
178

---

Florian Moser's avatar
Florian Moser committed
179
class: center, middle
180

Florian Moser's avatar
Florian Moser committed
181
# Preconditions for a successful project
182

Florian Moser's avatar
Florian Moser committed
183
<i>Claim: Small projects (&lt;300h) succeed or fail before the first line of code is written.</i>
184
185
186

---

Florian Moser's avatar
Florian Moser committed
187
# Project Vision
188

Florian Moser's avatar
Florian Moser committed
189
The *elevator pitch* of your project.
190

Florian Moser's avatar
Florian Moser committed
191
192
193
194
A good vision:
- Is short
- Focuses on the resulting benefits
- Motivates
195

Florian Moser's avatar
Florian Moser committed
196
197
198
For bigger projects:
- Might include sub-visions 
- Might include non-visions
199

Florian Moser's avatar
Florian Moser committed
200
> The tool allows managers of a construction site to easily create and manage issues, and communicate those to the responsible craftsmen.
201

Florian Moser's avatar
Florian Moser committed
202
---
203

Florian Moser's avatar
Florian Moser committed
204
# Business environment
205

Florian Moser's avatar
Florian Moser committed
206
207
business case:
- alternatives? cost-benefit?
Florian Moser's avatar
Florian Moser committed
208
- sensible?
Florian Moser's avatar
Florian Moser committed
209
- stable during the project?
210

Florian Moser's avatar
Florian Moser committed
211
212
213
> Tinder for jobs.

stakeholder(s):
Florian Moser's avatar
Florian Moser committed
214
215
216
- agree about scope & purpose of project?
- have realistic expectations?
- personally support with time and money?
217

218
> E-Learning Platform.
Florian Moser's avatar
Florian Moser committed
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250

---

# You

*sufficient experience*. Not too many unknowns, experience with most parts of final product.

> Issue-management requires a web (frontend + backend) / app combination. Server-generated content, CRUD, API, heavy client-side functionality, usability, many features, large data storage, synchronization, translations.

*sufficient trust*. Understand where trust is coming from and how to maintain it.

> Based on a previous project: Deliver early.  
> Based on personal recommendation: Maintain relationships.

*sufficient capabilities*. Control over technological & organisational aspects.

> Need to deploy to a server: Have full control over how & when deployments happen

---

class: center, middle

# Plan a successful project

<i>Claim: Small projects (&lt;300h) are accurately estimatable in both time and cost.</i>

---

# Create project plan

Steps:
- Understand problem to be solved
251
- Develop solution concepts
Florian Moser's avatar
Florian Moser committed
252
253
254
255
256
257
- Formulate requirements 
- Estimate cost, reward
- Schedule implementation
- Analyse risks
- Feedback & repeat

258
259
> Target: Avoid as much work as possible while still solving the problem.

Florian Moser's avatar
Florian Moser committed
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
Reduced uncertainty as much as possible?  
Contract with customer & start!

---

# Understand business

Interview those who use & those who pay.  
Research industry, similar products & solutions (potentially of different industries).

Listen carefully:
- Repetitive "uncreative" work (=automatable)
- Proposed solutions
- Tedious tasks (=sucks)

275
276
You task is to solve their *problem*.

Florian Moser's avatar
Florian Moser committed
277
278
279
280
---

# Formulate requirements

281
282
Decompose concept to suitable abstraction level.  
Do not neglect non-functional requirements (performance, usability, ...).
Florian Moser's avatar
Florian Moser committed
283

284
285
286
287
288
YAGNI: You Ain't Gonna Need It.  
**Effort increases in O(exponential) due to complexity.** (*baseless claim alert*)

<img src="images/effort_increases_exponential.png" width="30%">
<img class="ml-2" src="images/effort_increase_with_new_feature.png" width="30%">
Florian Moser's avatar
Florian Moser committed
289
290
291
292
293
294


---

# Estimate requirements

295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
Cannot predict the future, but **can estimate relative complexity**.  
Technology / mastery independent!

Tips:
- Use coarse-grained numbers (Fibonaccy; 1 1 2 3 5 8 13 ...)
- With more unknowns, tend to increase complexity

Same for rewards.
Reward / Complexity = Payoff.

| Feature | Complexity | Reward | Payoff |
| :------ | ---------: | -----: | -----: |
| Sign-Up | 8 | 5 | 0.625 |
| Confirm E-Mail | | | |
| Login | | | |
| Password Recover | | | |
| Add Additional E-Mails | | | |

Florian Moser's avatar
Florian Moser committed
313

314
315
316
---

# Estimate requirements
Florian Moser's avatar
Florian Moser committed
317

318
319
320
321
322
Cannot predict the future, but **can estimate relative complexity**.  
Technology / mastery independent!

Tips:
- Use coarse-grained numbers (Fibonaccy; 1 1 2 3 5 8 13 ...)
Florian Moser's avatar
Florian Moser committed
323
324
325
- With more unknowns, tend to increase complexity

Same for rewards.
326
327
328
329
330
331
332
333
334
335
336
Reward / Complexity = Payoff.


| Feature | Complexity | Reward | Payoff |
| :------ | ---------: | -----: | -----: |
| Sign-Up | 8 | 5 | 0.625 |
| Confirm E-Mail | 13 | 3 | 0.23 |
| Login | 5 | 8 | 1.6 |
| Password Recover | 21 | 5 | 0.24 |
| Add Additional E-Mails | 21 | 3 | 0.14 |

Florian Moser's avatar
Florian Moser committed
337
338
339
340
341

---

# Schedule implementation

342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
Convert complexity into implementation effort.

| Feature | Complexity | Expected | Measured |
| :------ | ---------: | -------: | -------: |
| Sign-Up | 8 | - | 3h |
| Confirm E-Mail | 13 | 5h | ? |
| Login | 5 | 2h | ? |
| Password Recover | 21 | 8h | ? |
| Add Additional E-Mails | 21 | 8h | ? |

Multiplication factors:
- Technology (low for established, high for often changing)
- Complexity (increasing factor with more total features)
- Special requirements (translatable, performance, ...)

> 26h \* 1.1 (PHP only) \* 1.1 (translatable) =  31.5h  
> 26h \* 1.5 (PHP + JavaScript frontend) \* 1.1 (translatable) = 43h

---

# Schedule implementation

Combine functionality into **features** (=sensible packages).  
Resolve dependencies & reduce uncertainty.  

> Login 31.5h  
> Submit vote 23h  
> Electionsmanagement 10h  
> Candidatemanagement 16.5h  
> Vote count 8.5h

**Milestones** should be properly spaced & measurable.

> 1. Deployment of skeleton to server
> 2. Public voting area
> 3. Administration area
> 4. Feedback of trial election processed


Florian Moser's avatar
Florian Moser committed
381
382
383
384
385
386
387

---

# Risk analysis

For overall project & for each feature collect risks.

388
389
390
> Compromise of election data  
> Users reject tool due to security reasons  
> Server deployment too constrained
Florian Moser's avatar
Florian Moser committed
391
392
393
394
395
396
397
398
399
400
401
402

For each risk:
- Avoid: Eliminate the risk (avoid feature / use different solutions)
- Transfer: Shift the impact to a 3rd party (like your customer)
- Mitigate: Decrease the probability or impact (formulate "Plan B")

<span class="color-red">Do not skip risk analysis.</span>

---

# Contract

403
Formulate a contract.
Florian Moser's avatar
Florian Moser committed
404
405
406
407
408
409

Content:
- Vision ("Sales-pitch")
- Requirements on suitable abstraction level
- Schedule & Milestones
- Price & Payment agreements
410
411
412
413
414

Advanced:
- Recommend options based on payoff
- Maintenance for 10% - 20% yearly effort
- Legal: Intellectual Property, Bugfixing
Florian Moser's avatar
Florian Moser committed
415
416
417
418

Courses:
- [E-Business Recht](http://www.vvz.ethz.ch/Vorlesungsverzeichnis/lerneinheit.view?lerneinheitId=139975&semkez=2020W) (HS)
- [Contract Design](http://www.vvz.ethz.ch/Vorlesungsverzeichnis/lerneinheit.view?lerneinheitId=141671&semkez=2020W) (HS) 
419
- [Introduction into Negotiation](http://www.vvz.ethz.ch/Vorlesungsverzeichnis/lerneinheit.view?lerneinheitId=135075&semkez=2020S) (FS)
Florian Moser's avatar
Florian Moser committed
420

421
---
Florian Moser's avatar
Florian Moser committed
422

423
# Value of a good plan
Florian Moser's avatar
Florian Moser committed
424

425
426
**Up until now, an estimated 10 - 30% of total project effort has been spend!**  
Is it worth it?
Florian Moser's avatar
Florian Moser committed
427

428
429
430
431
Yes!
- Align expectations (cost, schedule, result)
- Decrease cost by not implementing lower-value features
- Decrease risk of project failure
Florian Moser's avatar
Florian Moser committed
432

433
434
435
436
It feels good:
- Make promises you can keep
- Customers / Users will be satisfied (and so will you!)
- You get done, get payed and move on.
Florian Moser's avatar
Florian Moser committed
437

438
*Hint: You can also sell this work as "requirements engineering" or "proof of concept"*.
Florian Moser's avatar
Florian Moser committed
439
440
441

---

442
443
444
class: center, middle

# Execute a successful project
Florian Moser's avatar
Florian Moser committed
445

446
<i>Core idea: No surprises.</i>
447
448
449

---

450
# Continuous tasks
451

452
*manage expectations*. Keep customer up to date with relevant developments. Incorporate doubts, recent developments and feedback 
453

454
455
> "The milestone is completed, and the next meeting can go along as planned."
> "Next big maintenance will be completed in 8 months."
456

457
*track progress*. Check if estimation matches measurements, and high-risk tasks proceed as expected. Take corrective action as early as sensible!
458

459
460
> Substantial increase in effort for feature: Systematic or one-time?  
> High-risk tasks: Solution in sight or stuck?
461

462
463
464
*long-term planning*. Resolve dependencies for future tasks.

> Hosting is ready in one week; delivery is due in two months. Hence can schedule meeting in four weeks to get feedback for final product.
465
466
467
468
469

---

# Rollout

470
471
472
Strategies:
- **Incremental**: Multiple releases, i.e. for each feature. *Additional effort due to shims for future features / release tasks.*
- **Big Bang**: Single release at the end. *No feedback till the end*.
473

474
**Incremental updates usually beats Big Bang**: The earlier issues are found / feedback is incorporated, the cheaper it is.
475

476
<hr/>
477

478
Changing `person.gender` from `Boolean` to `Text`:
479

480
481
482
483
484
485
486
| Start | End | 
| :------ | ---------: |
| Add field to table | Add field to table |
| | Find all usages of field |
| | Re-understand how and why it is used |
| | Find new solution & adapt code |
| | Re-test usage & all related features |
487

488
---
489

490
class: center, middle, inverted
491

492
493
494
495
496
497
<div class="pyro">
    <div class="before"></div>
    <div class="after"></div>
</div>

# Done!
Florian Moser's avatar
Florian Moser committed
498

499
500
---

501
class: center, middle
502

503
# Some closing notes
504
505
506
507
508

---

# About changes

509
Changes happen, deal with it.
510

511
512
513
514
515
Tools:
- Schedule features early with uncertainty.
- Explicitly acceptance test features / milestones.
- Clarify expectations (changes in cost / schedule).
- Define process how & when changes are applied (and who pays for it).
516

517
Baseless claim: Ignoring change requests is as much a project failure as unapproved delays / cost overruns over it.
518
519
520
521
---

# About people

522
Important factor of project not in your control!
523
524
525
526
527
528
529
530
531

Get to know all involved persons:
- Motivation (agenda?)
- Way of working (early/late?, procrastination?)
- Experience (how have they performed in the past?)
- Personality (impulsive? diligent? analytical? risk-taking?)

Likely True Facts About People™:
- People are predictable
532
- People change very slowly (too slow for your project)
Florian Moser's avatar
Florian Moser committed
533
- People are good (or at least persuade themselves that they are)
534

535
536
Analysis approaches: [4 Colors](https://www.thecolourworks.com/insights-discovery-colour-types-guide/), [Big 5](https://www.simplypsychology.org/big-five-personality.html), [16 Personalities](https://www.16personalities.com/) (*(un)soundness alert*)

537
538
---

539
# Getting it done
540

541
542
543
544
*Getting it done* is hard! 
- Tedious tasks procrastinated till the end
- Some level of perfection needs to be reached
- Bugs right before / immediately after launch likely
545

546
Why most private projects never finish...
547

548
549
550
551
552
Tools:
- Assign buffer before release to get it down
- Keep days around release free
- Rollout incrementally to reduce severity of effects
- Set expectations of customer over risk of release
553
554
555

---

556
# Enterprise project management
557

558
agile management:
559
560
561
- https://scrumguides.org/scrum-guide.html
- https://www.scaledagileframework.com/

562
563
564
565
566
567
568
569
Measure / estimate:
- Function points: Points depending on input / output complexity. [IBM, 1979](https://researcher.watson.ibm.com/researcher/view_group.php?id=7298)
- Use Case points: Translate components of use case diagram into sizes metrics. Adjust for complexity and technical factors. [Objective Systems, 1993](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.604.7842&rep=rep1&type=pdf)

[Project Management Course](http://www.vvz.ethz.ch/Vorlesungsverzeichnis/lerneinheit.view?lerneinheitId=149690&semkez=2021S&ansicht=KATALOGDATEN&lang=en):
- project management models (PMBOK, ...)
- agile management methods (SCRUM, Lean, Kanban, ...)

570
571
---

572
573
574
575
576
# Summary

**Favorable project environment**: Established vision & agreement over it. Sensible and stable business case. Sufficient experience, trust and capabilities.

**Project plan**: Solve business problem with as little work as possible. Use relative complexity / rewards to estimate. Schedule to reduce risk & uncertainty early. Analyse & control risk.
577

578
579
580
**Execution**: Manage expectations & progress. Rollout incrementally & incorporate feedback early. Deal humbly with changes and people. Get It Done.

---
581

582
class: center, middle
583

584
# Appendix
585

586
---
587

588
# About bad people
589

590
With some, you will not get along!
591

592
593
594
595
596
597
598
599
600
601
Powerful combination:
- Ignorance (don't care about everybody their work affects)
- Incompetence (don't have relevant experience)
- Arrogance (don't consider inputs)
- Rhetorics (can defend their shortcomings)

Options:
- Fight (usually a bad idea)
- Co-exist (sometimes not possible)
- Run (sometimes required)
602
603
604
605
606
    </textarea>
    <script src="js/remark.min.js" type="text/javascript"></script>
    <script src="js/remark.driver.js" type="text/javascript"></script>
  </body>
</html>