diff --git a/sitemap.xml b/sitemap.xml
index f553d8b..8f162cd 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -421,9 +421,6 @@
https://cs291.com/slides/2018/03_html_css_agile/
-https://cs291.com/slides/2024f/07_agile_tdd_pairing/.html
-
-https://cs291.com/slides/2021f/07_agile_tdd_pairing/.html
@@ -476,34 +473,34 @@
https://cs291.com/project3/chat/
-2024-10-10T15:47:17+00:00
+2024-10-15T15:54:50+00:00https://cs291.com/report_samples/gaucho_book.pdf
-2024-10-10T15:47:17+00:00
+2024-10-15T15:54:50+00:00https://cs291.com/report_samples/whatever_chat.pdf
-2024-10-10T15:47:17+00:00
+2024-10-15T15:54:50+00:00https://cs291.com/slides/2016/helfand_talk.pdf
-2024-10-10T15:47:17+00:00
+2024-10-15T15:54:51+00:00https://cs291.com/slides/2016/maloney_lecture.pdf
-2024-10-10T15:47:17+00:00
+2024-10-15T15:54:51+00:00https://cs291.com/slides/2017/maloney_lecture.pdf
-2024-10-10T15:47:17+00:00
+2024-10-15T15:54:51+00:00https://cs291.com/slides/2017/mutz_lecture.pdf
-2024-10-10T15:47:17+00:00
+2024-10-15T15:54:51+00:00https://cs291.com/slides/2021f/sean_maloney.pdf
-2024-10-10T15:47:18+00:00
+2024-10-15T15:54:51+00:00
diff --git a/slides/2024f/07_agile_tdd_pairing/index.html b/slides/2024f/07_agile_tdd_pairing/index.html
index 10cf6e1..8b939ca 100644
--- a/slides/2024f/07_agile_tdd_pairing/index.html
+++ b/slides/2024f/07_agile_tdd_pairing/index.html
@@ -148,15 +148,6 @@
Source:
https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm
-???
-
-Engineering is a scarce resource. The demand for software engineers is high
-and you are one of those scarce resources.
-
-Is AI, most recently LLMs, going to accelerate or decelerate this trend?
-Maybe too early to tell, but my guess is it will accelerate it for a while
-before any deceleration.
-
---
# Talent Shortage
@@ -175,6 +166,12 @@
Book:
[Developers are the New Kingmakers - Stephen O'Grady](https://www.oreilly.com/library/view/the-new-kingmakers/9781449368036/)
+???
+
+Is AI, most recently LLMs, going to accelerate or decelerate this trend?
+Maybe too early to tell, but my guess is it will accelerate it for a while
+before any deceleration.
+
---
# Scarce Resources
@@ -199,8 +196,12 @@
???
+Engineering is a scarce resource. The demand for software engineers is high
+and you are one of those scarce resources.
* In a shortage of resources, we need to optimize for the resources we have.
* How can we make teams opperate more efficiently?
+
+Techniques/Tools like Agile, TDD, CI, and Pairing are designed to help teams work
* These techniques are designed to help teams work together more efficiently
* This isn't just about programmers
* Other disciplines are needed to run a tech company
@@ -217,7 +218,7 @@
Soon guidelines like this one should make complete sense:
-> ## Sprint 2: Starts October 12
+> ## Sprint 2: Starts November 11th
> * Conduct a __retrospective__ on how the last sprint went and how your group
> can improve.
@@ -255,10 +256,7 @@
???
-* Agile is a collection of different approaches for developing software that has
- emerged as dominant over the last 15+ years.
-* Scrum is a popular form of Agile software development.
-* This is more of a guideline than a strict set of rules.
+* This is more of a suggested playbook than a strict set of rules.
* Adopting something too strict intiitively might not be "Agile"
---
@@ -305,7 +303,7 @@
.center[![Waterfall](waterfall.png)]
-This diagram from Royce's paper is frequently cited.
+This diagram from Winston Royce's paper "Managing the Development of Large Software Systems"
@@ -325,14 +323,18 @@
## Strengths
- This approach allows for deep specialization.
-- Works great for areas like manufacturing where it is _expensive_ to
+- Can reduce waste from repeating steps with long lead times in areas like manufacturing where it is _expensive_ to
alter the design due to issues detected in latter stages.
+???
+
+A specialist at one layer in the process can focus on their area of expertise and prepare an artifact for handoff to the next layer.
+
---
# Waterfall Continued
-- Works best when you have complete knowledge wrt software development:
+- In Software: works best when you have complete knowledge of the problem and technology:
- Requirements team understands the impact on design and development
- Designers have complete understanding of the difficulty of each design
decision
@@ -383,7 +385,7 @@
* Doesn't mean their is no process
- it means that process is fluid to meet the needs of the project and Team
* Doesn't mean there is no documentation
- - it means that documentation is not intended to single that completion of a project and a handoff to another team
+ - it means that documentation is not intended to signal that completion of a project and a handoff to another team
* Doesn't mean there is no contract( or specification of requirements )
- it means that the requirements may be discovered as the project progresses
* Doesn't mean there is no plan
@@ -495,7 +497,7 @@
- Plan for a sprint
- Plan for an individual task
----
+???
# Examples of responding to change
@@ -584,7 +586,7 @@
- Support
- Other teams
- Executives
-* Is this a process? I though Agile was about individuals and interactions over processes and tools
+* I thought Agile was about individuals and interactions over processes and tools?
* The process can take a wide variety of forms and is what the team has decided is best for them
* The Scrum Master is not a manager, but a facilitator of the decided process
* The produce owner and scrum master roles may be:
@@ -704,13 +706,13 @@
---
-# Example of a typical Scrum Process
+# Example of a Typical Scrum Process
## Spring Planning
Frequency - Once per sprint
-A meeting at the start of each sprint is the to decide the "sprint commitment".
+A meeting at the start of each sprint to decide the "sprint commitment".
## Grooming
@@ -811,6 +813,10 @@
> Should we perform integration as rarely as possible or as frequently as
> possible?
+???
+
+This can even be difficult for a single engineer working on single project with multiple feature branches
+
---
# Martin Fowler
@@ -882,8 +888,7 @@
# Types of Tests
-The previous FizzBuzz example demonstrated __unit__ tests. Other types of tests
-are:
+* Unit tests
* Functional
@@ -903,17 +908,16 @@
_regression_.
???
-
-* Functional
+* Unit tests
- Tests a function or method, also called a unit test
+* Functional
+ - Tests the business logic of the application
* Integration
- - Tests how multiple functions or methods work together
-* System
+ - Tests how multiple paths of the application work together
+* System / End to End / Acceptance
- Tests how the entire system works together
-* Acceptance
- Tests how the system works from the perspective of the user
- - Often called end-to-end tests
- - Simulates a user interacting with the system
+ - May simulate how a user interacting with the system
---
@@ -1097,11 +1101,16 @@
GitHub actions is free for open-source projects.
-If you are doing TDD and creating automated tests, GitHub Actions will provide you
+If you are doing Test Driven Development (TDD) and creating automated tests, GitHub Actions will provide you
with immediate feedback on your changes through GitHub:
.center[![Github Pull Request "All is well"](github_pr_all_is_well.png)]
+???
+
+When I see that all checks have passed, I know that the code is ready to merge
+This can help your team scale by allowing you to merge code with a higher level of confidence
+
---
# Other Related Tools
@@ -1124,6 +1133,10 @@
https://github.com/bbatsov/rubocop
+???
+
+You might add these as separate checks in your CI system
+
---
# Pair Programming
@@ -1149,19 +1162,6 @@
---
-# Pairing in this class
-
-Pair programming is __strongly__ encouraged, but not required.
-
-When you pair you will inevitably experience more of your project. This means
-you can claim you worked on that component in an interview, and as a result
-should be able to sufficiently explain what was done.
-
-On the other hand, it is possible for there to be bad pairings among your
-group. If you don't feel it is working out, then simply don't do it.
-
----
-
# Pairing: Problem Complexity
.center[![pairing usefulness as a function of problem complexity](pairing_and_problem_complexity.png)]
@@ -1201,6 +1201,20 @@
.bottom-row20[
- Source:
]
+
+---
+
+# Pairing in this class
+
+Pair programming is __strongly__ encouraged, but not required.
+
+When you pair you will inevitably experience more of your project. This means
+you can claim you worked on that component in an interview, and as a result
+should be able to sufficiently explain what was done.
+
+On the other hand, it is possible for there to be bad pairings among your
+group. If you don't feel it is working out, then simply don't do it.
+
---
class: center, middle, inverse
@@ -1518,7 +1532,7 @@
- help reduce the time to __integrate__ feature branch changes
---
+???
See chapter 3 in the RoR book.
diff --git a/slides/2024f/07_agile_tdd_pairing/index.html.html b/slides/2024f/07_agile_tdd_pairing/index.html.html
deleted file mode 100644
index 2ae1114..0000000
--- a/slides/2024f/07_agile_tdd_pairing/index.html.html
+++ /dev/null
@@ -1,1311 +0,0 @@
-
-
-
- Agile, TDD, CI, and Pairing
-
-
-
-
-
-
-
-
-