26. What is software engineering?
Requirements
Design
Execution
Verification
Production
27. What is software engineering?
This is nothing like how software is built today.
28. What is software engineering?
This is nothing like how software is built today.
Too slow and inflexible
29. What is software engineering?
This is nothing like how software is built today.
Too slow and inflexible
Can we tolerate failure of any sort?
30. What is software engineering?
It is important to say right up front that quality
isn't everything, and acknowledging it isn't
some sort of moral failing. Value is what you
are trying to produce, and quality is only one
aspect of it, intermixed with cost, features, and
other factors.
31. What is software engineering?
It is important to say right up front that quality
isn't everything, and acknowledging it isn't
some sort of moral failing. Value is what you
are trying to produce, and quality is only one
aspect of it, intermixed with cost, features, and
other factors.
Mark Zuckerberg
32. What is software engineering?
It is important to say right up front that quality
isn't everything, and acknowledging it isn't
some sort of moral failing. Value is what you
are trying to produce, and quality is only one
aspect of it, intermixed with cost, features, and
other factors.
John Carmack
45. What is software horticulture?
If you think about it, building software is more
like gardening than building.
46. What is software horticulture?
If you think about it, building software is more
like gardening than building.
some guy I know
47. What is software horticulture?
If you think about it, building software is more
like gardening than building.
Walter Hilton
Software Architect at Advertising.
com
49. What is software horticulture?
Babysitting - safety in both compile and run time
50. What is software horticulture?
Babysitting - safety in both compile and run time
Landscaping - encouraging flexibility
51. What is software horticulture?
Babysitting - safety in both compile and run time
Landscaping - encouraging flexibility
Linguistics - communication of intent
52. What is software babysitting?
What are the two biggest
impediments to programming?
53. What is software babysitting?
What are the two biggest
impediments to programming?
Fear of being wrong
54. What is software babysitting?
What are the two biggest
impediments to programming?
Fear of being wrong
Being wrong
55. What is software babysitting?
Static analysis is a huge safety net
56. What is software babysitting?
Static analysis is a huge safety net
Type safety, immutability
57. What is software babysitting?
Static analysis is a huge safety net
Type safety, immutability
Use it and use it wisely
58. What is software babysitting?
val a = 20
val b = if (a == None) {
30
} else {
40
}
59. What is software babysitting?
var a = 1; var b = 0;
if (a = 2) {
b += 1
} else {
b += 2
}
61. What is software babysitting?
1. Never use vars
2. Never use AnyVal or Any.
62. What is software babysitting?
1. Never use vars
2. Never use AnyVal or Any.
3. Never do Option.get
63. What is software babysitting?
1. Never use vars
2. Never use AnyVal or Any.
3. Never do Option.get
4. Be as functional as possible
64. What is software babysitting?
Testing is incredibly important
A sieve that catches runtime errors
65. What is software babysitting?
Unit testing is for finicky business logic
Functional testing is for sanity checks
66. What is software babysitting?
Singletons
Can trap state across application shutdowns
67. What is software babysitting?
Singletons
Can trap state across application shutdowns
Use cake pattern for service unit tests
Use reloadable registry for controller
functional tests
73. What is software landscaping?
traits
type classes
first class functions
74. What is software landscaping?
trait CanBark; trait HasPaws
class Dog extends CanBark with HasPaws
class Dog extends Canine
class Canine extends Mammal
75. What is software landscaping?
trait UserComponent
trait QuestionComponent
object Registry
extends UserComponent
with QuestionComponent
76. What is software landscaping?
trait Barkable[A]
implicit dogIsBarkable = new Barkable[Dog]
def seesBurglar[A](animal: A)(implicit b:
Barkable[A])
77. What is software landscaping?
case class MyDTO(a: Int, b: String)
object MyDTO {
implicit val format: Format[MyDTO] =
Json.format[MyDTO]
}
78. What is software landscaping?
def withAttack[A](animal: A)(attackF: A =>
Int): Int
withAttack(myDog) { dog =>
dog.attackPoints
}
79. What is software landscaping?
myList.map(_ + 1)
Action { implicit request =>
Ok(request.body)
}
81. What is software linguistics?
Scala and most modern languages are not
designed to communicate with computers
82. What is software linguistics?
Scala and most modern languages are not
designed to communicate with computers
They are designed to communicate with
humans!
87. What is software linguistics?
Questions to ask:
1. What syntax style to use? Dot vs. operator
method calls?
88. What is software linguistics?
Questions to ask:
1. What syntax style to use? Dot vs. operator
method calls?
2. What semantic style to use? Should use
for comprehensions?
89. What is software linguistics?
Questions to ask:
1. What syntax style to use? Dot vs. operator
method calls?
2. What semantic style to use? Should use
for comprehensions?
3. What structures to use? Cake pattern?
Actors?
90. What is software horticulture?
Building software is a steady but constantly
changing endeavour to meet product
requirements.
Maintaining a codebase is a constant
process of grooming, never a complete
restructuring.