1
00:00:07,600 --> 00:00:10,880
After watching this video, you will be able
to recognize that software engineering is

2
00:00:10,880 --> 00:00:14,559
different from civil engineering,
describe how software engineering is constantly

3
00:00:14,559 --> 00:00:17,390
changing, and
describe how the project management model

4
00:00:17,390 --> 00:00:22,810
does not work well for software development.
A common practice that goes against working

5
00:00:22,810 --> 00:00:28,380
DevOps is treating software engineering efforts
as if they were civil engineering projects.

6
00:00:28,380 --> 00:00:31,640
For a civil engineering project, you might
want to build an office building.

7
00:00:31,640 --> 00:00:37,100
You hire an architect who designs the building
and creates a blueprint.

8
00:00:37,100 --> 00:00:42,100
The blueprints are handed off to the construction
team who follows the blueprints to build the

9
00:00:42,100 --> 00:00:43,100
building.

10
00:00:43,100 --> 00:00:46,300
Once that handoff is made, the architect moves
on to the next project.

11
00:00:46,300 --> 00:00:52,280
They may get consulted on some questions about
the blueprint, but largely their job is done,

12
00:00:52,280 --> 00:00:54,250
and they move on.

13
00:00:54,250 --> 00:00:58,879
The construction team spends months building
the building to the specifications laid out

14
00:00:58,879 --> 00:01:00,550
in the blueprints.

15
00:01:00,550 --> 00:01:04,549
When the construction is complete, the building
is handed off to the maintenance team, who

16
00:01:04,549 --> 00:01:06,390
then takes over maintenance of the building.

17
00:01:06,390 --> 00:01:10,350
Unless you're in California, the ground doesn't
move too much from under the building and

18
00:01:10,350 --> 00:01:13,970
things are fairly steady from that point forward.

19
00:01:13,970 --> 00:01:18,550
The problem is, we treat building software
the same way.

20
00:01:18,550 --> 00:01:22,370
Software development efforts are usually run
as if they are civil engineering projects.

21
00:01:22,370 --> 00:01:26,450
We view it as a project to be completed and
then move on.

22
00:01:26,450 --> 00:01:30,000
Architects throw designs over the wall to
the developers, and they move on to the next

23
00:01:30,000 --> 00:01:31,000
project.

24
00:01:31,000 --> 00:01:32,859
Developers throw code over the wall to the
testers.

25
00:01:32,859 --> 00:01:37,780
When the project is complete, the whole thing
gets tossed over the wall to the operations

26
00:01:37,780 --> 00:01:41,560
team to run and maintain as part of a "business
as usual" effort.

27
00:01:41,560 --> 00:01:46,950
All the people on the project team get reallocated
to new work and maybe a skeleton development

28
00:01:46,950 --> 00:01:49,530
team is left for maintenance.

29
00:01:49,530 --> 00:01:54,820
In contrast to this civil engineering approach,
software engineering is organic.

30
00:01:54,820 --> 00:01:58,770
The software stack under your application
is constantly changing even when the application

31
00:01:58,770 --> 00:01:59,770
doesn't.

32
00:01:59,770 --> 00:02:03,590
The operating systems are being patched and
packages are being updated because of newly discovered

33
00:02:03,590 --> 00:02:04,740
vulnerabilities.

34
00:02:04,740 --> 00:02:10,230
These changes affect the application, and
the operations team has to deal with all these

35
00:02:10,230 --> 00:02:12,680
changes on their own.

36
00:02:12,680 --> 00:02:15,840
New features are constantly being added.

37
00:02:15,840 --> 00:02:20,330
Once an office building is built, you usually
don’t add new floors.

38
00:02:20,330 --> 00:02:21,700
Software is not like this.

39
00:02:21,700 --> 00:02:24,550
The behavior of the system is constantly changing.

40
00:02:24,550 --> 00:02:31,590
Yet, we continue to treat software engineering
as if it were a civil engineering project.

41
00:02:31,590 --> 00:02:37,290
The project model is fundamentally flawed
as a way of doing software development.

42
00:02:37,290 --> 00:02:41,230
When a project is complete and people move
on, there is no ownership.

43
00:02:41,230 --> 00:02:44,420
This is not the way to create great software.

44
00:02:44,420 --> 00:02:48,280
You want to treat software development like
product development instead.

45
00:02:48,280 --> 00:02:51,200
Products have long lives and continue to be
enhanced.

46
00:02:51,200 --> 00:02:56,810
If, instead of moving on, the same team builds
and maintains the software, they will retain

47
00:02:56,810 --> 00:03:01,270
a deep understanding of the code and feel
ownership for the code.

48
00:03:01,270 --> 00:03:04,680
They’ll have great ideas on how to make
the code better.

49
00:03:04,680 --> 00:03:08,850
We must stop treating software engineering
like civil engineering projects.

50
00:03:08,850 --> 00:03:15,090
In DevOps, we want stable, long-lasting team
membership with end-to-end ownership.

51
00:03:15,090 --> 00:03:18,740
This is how to create great software.

52
00:03:18,740 --> 00:03:23,510
In this video, you learned that software development
is often viewed as a project to be completed

53
00:03:23,510 --> 00:03:26,700
and then passed on to operations to maintain.

54
00:03:26,700 --> 00:03:31,040
Software engineering and the behavior of the
system are constantly changing.

55
00:03:31,040 --> 00:03:35,540
Team ownership and stable teams make software
development more like product development

56
00:03:35,540 --> 00:03:38,004
and less like project management.