Presented online for Bash! (2020-07-24)
"We're looking for passionate programmers!" says the job ad. For a love-in or a development role? Passion is used to evoke single-mindedness, drive and intensity, but it also has many other meanings, surely not all of which can be intended. Love aside, passion also spills over into irrationality, aggression — e.g., crimes of passion — and unconditional and unquestioning pursuit of ideas. Our acceptance of this word and this quality should be partial and conditional. But there is more than one kind of passion, and when raw passion is tempered with compassion and dispassion we start to see a more balanced way of development.
Craft draws on both creativity and rationality, on both experience and experimentation, on both focus and connection, on both individual skill and group intelligence. The dry language of productivity needs to admit the possibility of enjoyment; the culture of burn-out needs to give way to humanity and empathy. Let's explore the many passions of programming.
30. There is an art, craft, and science
to programming that extends far
beyond the program. The act of
programming marries the discrete
world of computers with the fluid
world of human affairs.
31. Programmers mediate between
the negotiated and uncertain
truths of business and the crisp,
uncompromising domain of bits
and bytes and higher constructed
types.
32.
33. People in high tech take pride in their
work. They are individuals who see the
details of the things they produce in the
light of the trials and triumphs they
experience while creating products.
In the courage of creation, they find a
place to hang their individuality.
Programmers and techno types
appreciate elegant, spare code and the
occasional well-turned architectural hack.
34.
35. If a plot works out exactly
as you first planned, you're
not working loosely enough
to give room to your
imagination and instincts.
37. pantser, noun
▪ Writer who writes by the seat of their pants.
▪ In contrast to a plotter, a pantser doesn't
work to (or have) an outline.
38.
39. On two occasions I have been asked, —
“Pray, Mr. Babbage, if you put into the
machine wrong figures, will the right
answers come out?”
I am not able rightly to apprehend the
kind of confusion of ideas that could
provoke such a question.
Charles Babbage
40.
41. Schiaparelli’s Inertial Measurement Unit (IMU) went
about its business of calculating the lander’s rotation
rate. For some reason, the IMU calculated a saturation-
maximum period that persisted for one second longer
than what would normally be expected at this stage.
When the IMU sent this bogus information to the craft’s
navigation system, it calculated a negative altitude.
http://gizmodo.com/a-crazy-miscalculation-doomed-the-sciaparelli-lander-1789319670
42.
43. Because of the error in the estimated
attitude that occurred at parachute
inflation, the GNC Software projected
the RDA range measurements with an
erroneous off-vertical angle and
deduced a negative altitude (cosinus of
angles > 90 degrees are negative).
44. That fateful miscalculation set off a cascade of despair,
triggering the premature release of the parachute and
the backshell, a brief firing of the braking thrusters, and
activation of the on-ground systems as if Schiaparelli had
already reached the surface.
This all happened while the vehicle was still two miles
(3.7 km) above ground.
http://gizmodo.com/a-crazy-miscalculation-doomed-the-sciaparelli-lander-1789319670
45. Simple Testing Can Prevent
Most Critical Failures
An Analysis of Production Failures in
Distributed Data-Intensive Systems
https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
46. Almost all catastrophic failures
are the result of incorrect
handling of non-fatal errors
explicitly signalled in software.
https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
47. A majority of the production
failures (77%) can be
reproduced by a unit test.
https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
49. TDD is fun! It’s like a game where you navigate a
maze of technical decisions that lead to highly
robust software while avoiding the quagmire of long
debug sessions.
James Grenning
50. TDD is fun! It’s like a game where you navigate a
maze of technical decisions that lead to highly
robust software while avoiding the quagmire of long
debug sessions. With each test there is a renewed
sense of accomplishment and clear progress toward
the goal.
James Grenning
51. TDD is fun! It’s like a game where you navigate a
maze of technical decisions that lead to highly
robust software while avoiding the quagmire of long
debug sessions. With each test there is a renewed
sense of accomplishment and clear progress toward
the goal. Automated tests record assumptions,
capture decisions, and free the mind to focus on the
next challenge.
James Grenning
54. Are human beings “noble in
reason” and “infinite in faculty”
as William Shakespeare famously
wrote? Perfect,“in God’s image,”
as some biblical scholars have
asserted?
Hardly.
55.
56. compassion, noun
▪ sympathetic consciousness of
others’ distress together with a
desire to alleviate it
Merriam–Webster’s Collegiate Dictionary
57. If someone shows kindness,
caring, and a willingness to
help others, they’re showing
compassion.
Vocabulary.com
60. If there is such a phenomenon as
absolute evil, it consists in treating
another human being as a thing.
John Brunner
61. Getting money is not all a man’s
business: to cultivate kindness is a
valuable part of the business of life.
Samuel Johnson
62.
63.
64.
65.
66.
67.
68. Everyone you meet is fighting a
battle you know nothing about.
Be kind. Always.
69. If your compassion does not
include yourself, it is incomplete.
Jack Kornfield
70. One of my most controversial software opinions is that
your sleep quality and stress level matter far, far more
than the languages you use or the practices you follow.
Nothing else comes close: not type systems, not TDD,
not formal methods, not ANYTHING.
Hillel Wayne
https://twitter.com/hillelogram/status/1119709859979714560
71.
72. We don't develop proper
recognition for the skills and
qualities of mind that in fact
help make collaboration
successful, productive and
enjoyable.
73. The task of collaboration is,
in fact, beautiful and serious.
It is one of the grandest
undertakings to coordinate
the efforts of groups of
people.
74. The biggest advantage of
autonomously working teams is
risk reduction through increased
group intelligence.
Kevlin Henney
https://jaxlondon.com/blog/java-core-languages/the-error-of-our-ways-kevlin-henney/
75. To be a 10x developer, be a good
developer who helps 10 other
people get better at what they do.
Branden Schwartz
76. There’s little correlation between a
group’s collective intelligence and
the IQs of its individual members.
But if a group includes more
women, its collective intelligence
rises.
“What Makes a Team Smarter? More Women”
Anita Woolley & Thomas W Malone
http://hbr.org/2011/06/defend-your-research-what-makes-a-team-smarter-more-women/
77. People from diverse backgrounds
might actually alter the behavior of
a group’s social majority in ways
that lead to improved and more
accurate group thinking.
“Why Diverse Teams Are Smarter”
David Rock & Heidi Grant
https://hbr.org/2016/11/why-diverse-teams-are-smarter
78. Diverse teams are more likely to
constantly reexamine facts and
remain objective.
“Why Diverse Teams Are Smarter”
David Rock & Heidi Grant
https://hbr.org/2016/11/why-diverse-teams-are-smarter
79. Development needs to go further
than the technical stack; the full
stack includes the world and
people around the software.
Kevlin Henney
https://jaxlondon.com/blog/java-core-languages/the-error-of-our-ways-kevlin-henney/