What is Software Engineering?
@@ -328,11 +327,6 @@
What is Software Engineering?
-
-
-Brian Loudin
-
-
@@ -341,46 +335,46 @@
What is Software Engineering?
Lecture 2: What is Software Engineering?
-
+
Software engineering differs from programming in dimensionality: programming is about producing code. Software engineering extends that to include the maintenance of that code for its useful life span.
-
+
There is a factor of at least 100,000 times between the life spans of short-lived code and long-lived code. It is silly to assume that the same best practices apply universally on both ends of that spectrum.
-
+
Software is sustainable when, for the expected life span of the code, we are capable of responding to changes in dependencies, technology, or product requirements. We may choose to not change things, but we need to be capable.
-
+
Hyrum’s Law
“With a sufficient number of users of an API,it does not matter what you promise in the contract:all observable behaviors of your systemwill be depended on by somebody.”
-
+
Every task your organization has to do repeatedly should be scalable (linear or better) in terms of human input. Policies are a wonderful tool for making process scalable.
-
+
Process inefficiencies and other software-development tasks tend to scale up slowly. Be careful about boiled-frog problems.
-
+
Expertise pays off particularly well when combined with economies of scale.
-
+
Because I said so is a terrible reason to do things.
-
+
Being data driven is a good start, but in reality, most decisions are based on a mix of data, assumption, precedent, and argument. It’s best when objective data makes up the majority of those inputs, but it can rarely be all of them.
-
+
Being data driven over time implies the need to change directions when the data changes (or when assumptions are dispelled). Mistakes or revised plans are inevitable.