SlideShare a Scribd company logo
34
97 Things Every
Programmer Should Know
There is an art, craft and science to pro-
gramming that extends far beyond the
program. The act of programming mar-
ries the discrete world of computers
with the fluid world of human affairs.
Programmers mediate between the ne-
gotiated and uncertain truths of business
and the crisp, uncompromising domain
of bits and bytes and higher constructed
types.
There’s no small amount of wisdom scat-
tered around the blogosphere about how
to do this, but mostly hidden in a mo-
rass of somewhat less-than-wise advice.
Sound advice can also be found lurking
within a number of books — and, again,
bookish form is no guarantee of qual-
ity. But most of the good stuff is locked
up within the minds and experiences of
practitioners. How to unlock some of this
know how?
A while back, “Dammit, that’s just one of
those things every programmer should
know!” was my response to some code
I was thinking about. I had contributed
to Richard Monson-Haefel’s 97 Things
Every Software Architect Should Know
project and I knew that Richard had
been working with O’Reilly to create a 97
Things series. My own phrasing was the
trigger: what about doing for program-
mers what had already been done for
software architects? A collective and open
project based on voluntary contributions
from programmers and others involved
in the software development process. A
cross section of people that would include
big names — but, importantly, not just
the big names.
Although not strictly open source, the
project has some open-source qualities.
In particular, contributions are made
under a non-restrictive license (Creative
Commons Attribution 3.0, in this case).
Individuals contribute blog-length items
on, well, things that they think every pro-
grammer should know. These items can
be reused, repurposed and republished
freely.
There is also an element of crowdsourc-
ing: taken together the items form part of
a big picture, but the big picture is built
up by sampling the wisdom of crowds
rather than working to a design vision
and progressively elaborating each detail
as necessary. The writing is not collabora-
tive and there’s no intent that contribu-
tions should follow a common style or
dovetail together like modular parts. If
anything, the converse is true.
My role as the editor and driver of the
project has been quite a contrast to my
involvement in A Pattern Language
for Distributed Computing, which I co-
authored with Frank Buschmann and
Douglas Schmidt. In this we documented
114 patterns, which were divided and in-
terconnected to form a coherent whole,
speaking with one voice. For 97 Things
Every Programmer Should Know, my
goal as the editor has been to achieve the
exact opposite: each item should reflect
the identity, voice and thinking of its au-
thor, and although there are overlaps and
gaps, the overall diversity and richness
becomes part of the charm, readability
and utility. And yes, it is my hope that the
outcome is useful. Not as a handbook, but
as a source of ideas, discussion and even
inspiration. The number of contributions
has been overwhelming — well beyond 97
— but what comes across from each con-
tributor is a certain passion and personal
connection to programming.
You can find the 97 Things Every
Programmer Should Know site at
http://programmer.97things.oreilly.com
You can follow it on Twitter as @97TEPSK
The book is listed at
http://oreilly.com/catalog/9780596809492
There is an InfoQ piece about 97 Things
Every Programmer Should Know and the
97 Things series at http://www.infoq.com/
news/2009/09/97-things.
by Kevlin Henney

More Related Content

Similar to 97 Things Every Programmer Should Know

Design principles philopsohy of ux -Whitney Hess
Design principles philopsohy of ux -Whitney HessDesign principles philopsohy of ux -Whitney Hess
Design principles philopsohy of ux -Whitney Hess
www.usarte.co
 
Design Principles: The Philosophy of UX
Design Principles: The Philosophy of UXDesign Principles: The Philosophy of UX
Design Principles: The Philosophy of UX
Whitney Hess
 
Malaysian Higher Ed-UN Learning
Malaysian Higher Ed-UN LearningMalaysian Higher Ed-UN Learning
Malaysian Higher Ed-UN Learning
Wayne Hodgins
 
DevOps Hidden Ally #VelocityConf #UX #Devops #Empathy
DevOps Hidden Ally #VelocityConf #UX #Devops #EmpathyDevOps Hidden Ally #VelocityConf #UX #Devops #Empathy
DevOps Hidden Ally #VelocityConf #UX #Devops #Empathy
Stephen Fishman
 
"Understanding Humans with Machines" (Arthur Tisi)
"Understanding Humans with Machines" (Arthur Tisi)"Understanding Humans with Machines" (Arthur Tisi)
"Understanding Humans with Machines" (Arthur Tisi)
Maryam Farooq
 
Flow based-1994
Flow based-1994Flow based-1994
Flow based-1994
getdownload
 
Hybrid Publishing Design Methods For Technical Books
Hybrid Publishing Design Methods For Technical BooksHybrid Publishing Design Methods For Technical Books
Hybrid Publishing Design Methods For Technical Books
Technological Ecosystems for Enhancing Multiculturality
 
How Design Theories Evolved from User-Centered Design to Design Thinking.pdf
How Design Theories Evolved from User-Centered Design to Design Thinking.pdfHow Design Theories Evolved from User-Centered Design to Design Thinking.pdf
How Design Theories Evolved from User-Centered Design to Design Thinking.pdf
WorxwideConsulting1
 
Use Qualities
Use QualitiesUse Qualities
Use Qualities
Sefat Chowdhury
 
Position paper for ecscw 2007 workshop
Position paper for ecscw 2007 workshop Position paper for ecscw 2007 workshop
Position paper for ecscw 2007 workshop
John Thomas
 
Design Thinking for Developers
Design Thinking for DevelopersDesign Thinking for Developers
Design Thinking for Developers
Matthew Banz
 
The Five Essential Steps of Information-based Digital Storytelling
The Five Essential Steps of  Information-based Digital StorytellingThe Five Essential Steps of  Information-based Digital Storytelling
The Five Essential Steps of Information-based Digital Storytelling
afeigenbaum
 
Intersection18: Meta & Meet: The Core of your Digital and Physical Workplace ...
Intersection18: Meta & Meet: The Core of your Digital and Physical Workplace ...Intersection18: Meta & Meet: The Core of your Digital and Physical Workplace ...
Intersection18: Meta & Meet: The Core of your Digital and Physical Workplace ...
Intersection Conference
 
CWIN17 san francisco-rob vellinga - Interaction between AI and people
CWIN17 san francisco-rob vellinga -  Interaction between AI and peopleCWIN17 san francisco-rob vellinga -  Interaction between AI and people
CWIN17 san francisco-rob vellinga - Interaction between AI and people
Capgemini
 
NLP Community Conference - Dr. Catherine Havasi (ConceptNet/MIT Media Lab/Lum...
NLP Community Conference - Dr. Catherine Havasi (ConceptNet/MIT Media Lab/Lum...NLP Community Conference - Dr. Catherine Havasi (ConceptNet/MIT Media Lab/Lum...
NLP Community Conference - Dr. Catherine Havasi (ConceptNet/MIT Media Lab/Lum...
Maryam Farooq
 
Marketing Your Open Source Project - OSCON 2019_v04.pdf
Marketing Your Open Source Project - OSCON 2019_v04.pdfMarketing Your Open Source Project - OSCON 2019_v04.pdf
Marketing Your Open Source Project - OSCON 2019_v04.pdf
Amazon Web Services
 
Design process
Design processDesign process
Design process
Divonis.com
 
How do you design?
How do you design? How do you design?
How do you design? Deleuze78
 
How do you design
How do you designHow do you design
How do you design
Geoffrey Dorne
 

Similar to 97 Things Every Programmer Should Know (20)

Design principles philopsohy of ux -Whitney Hess
Design principles philopsohy of ux -Whitney HessDesign principles philopsohy of ux -Whitney Hess
Design principles philopsohy of ux -Whitney Hess
 
Design Principles: The Philosophy of UX
Design Principles: The Philosophy of UXDesign Principles: The Philosophy of UX
Design Principles: The Philosophy of UX
 
Malaysian Higher Ed-UN Learning
Malaysian Higher Ed-UN LearningMalaysian Higher Ed-UN Learning
Malaysian Higher Ed-UN Learning
 
DevOps Hidden Ally #VelocityConf #UX #Devops #Empathy
DevOps Hidden Ally #VelocityConf #UX #Devops #EmpathyDevOps Hidden Ally #VelocityConf #UX #Devops #Empathy
DevOps Hidden Ally #VelocityConf #UX #Devops #Empathy
 
"Understanding Humans with Machines" (Arthur Tisi)
"Understanding Humans with Machines" (Arthur Tisi)"Understanding Humans with Machines" (Arthur Tisi)
"Understanding Humans with Machines" (Arthur Tisi)
 
Flow based-1994
Flow based-1994Flow based-1994
Flow based-1994
 
Hybrid Publishing Design Methods For Technical Books
Hybrid Publishing Design Methods For Technical BooksHybrid Publishing Design Methods For Technical Books
Hybrid Publishing Design Methods For Technical Books
 
How Design Theories Evolved from User-Centered Design to Design Thinking.pdf
How Design Theories Evolved from User-Centered Design to Design Thinking.pdfHow Design Theories Evolved from User-Centered Design to Design Thinking.pdf
How Design Theories Evolved from User-Centered Design to Design Thinking.pdf
 
Use Qualities
Use QualitiesUse Qualities
Use Qualities
 
Machine, Meet Human
Machine, Meet HumanMachine, Meet Human
Machine, Meet Human
 
Position paper for ecscw 2007 workshop
Position paper for ecscw 2007 workshop Position paper for ecscw 2007 workshop
Position paper for ecscw 2007 workshop
 
Design Thinking for Developers
Design Thinking for DevelopersDesign Thinking for Developers
Design Thinking for Developers
 
The Five Essential Steps of Information-based Digital Storytelling
The Five Essential Steps of  Information-based Digital StorytellingThe Five Essential Steps of  Information-based Digital Storytelling
The Five Essential Steps of Information-based Digital Storytelling
 
Intersection18: Meta & Meet: The Core of your Digital and Physical Workplace ...
Intersection18: Meta & Meet: The Core of your Digital and Physical Workplace ...Intersection18: Meta & Meet: The Core of your Digital and Physical Workplace ...
Intersection18: Meta & Meet: The Core of your Digital and Physical Workplace ...
 
CWIN17 san francisco-rob vellinga - Interaction between AI and people
CWIN17 san francisco-rob vellinga -  Interaction between AI and peopleCWIN17 san francisco-rob vellinga -  Interaction between AI and people
CWIN17 san francisco-rob vellinga - Interaction between AI and people
 
NLP Community Conference - Dr. Catherine Havasi (ConceptNet/MIT Media Lab/Lum...
NLP Community Conference - Dr. Catherine Havasi (ConceptNet/MIT Media Lab/Lum...NLP Community Conference - Dr. Catherine Havasi (ConceptNet/MIT Media Lab/Lum...
NLP Community Conference - Dr. Catherine Havasi (ConceptNet/MIT Media Lab/Lum...
 
Marketing Your Open Source Project - OSCON 2019_v04.pdf
Marketing Your Open Source Project - OSCON 2019_v04.pdfMarketing Your Open Source Project - OSCON 2019_v04.pdf
Marketing Your Open Source Project - OSCON 2019_v04.pdf
 
Design process
Design processDesign process
Design process
 
How do you design?
How do you design? How do you design?
How do you design?
 
How do you design
How do you designHow do you design
How do you design
 

More from Kevlin Henney

Program with GUTs
Program with GUTsProgram with GUTs
Program with GUTs
Kevlin Henney
 
The Case for Technical Excellence
The Case for Technical ExcellenceThe Case for Technical Excellence
The Case for Technical Excellence
Kevlin Henney
 
Empirical Development
Empirical DevelopmentEmpirical Development
Empirical Development
Kevlin Henney
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
Kevlin Henney
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
Kevlin Henney
 
Solid Deconstruction
Solid DeconstructionSolid Deconstruction
Solid Deconstruction
Kevlin Henney
 
Get Kata
Get KataGet Kata
Get Kata
Kevlin Henney
 
Procedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayProcedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went Away
Kevlin Henney
 
Structure and Interpretation of Test Cases
Structure and Interpretation of Test CasesStructure and Interpretation of Test Cases
Structure and Interpretation of Test Cases
Kevlin Henney
 
Agility ≠ Speed
Agility ≠ SpeedAgility ≠ Speed
Agility ≠ Speed
Kevlin Henney
 
Refactoring to Immutability
Refactoring to ImmutabilityRefactoring to Immutability
Refactoring to Immutability
Kevlin Henney
 
Old Is the New New
Old Is the New NewOld Is the New New
Old Is the New New
Kevlin Henney
 
Turning Development Outside-In
Turning Development Outside-InTurning Development Outside-In
Turning Development Outside-In
Kevlin Henney
 
Giving Code a Good Name
Giving Code a Good NameGiving Code a Good Name
Giving Code a Good Name
Kevlin Henney
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Kevlin Henney
 
Thinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation QuadrantThinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation Quadrant
Kevlin Henney
 
Code as Risk
Code as RiskCode as Risk
Code as Risk
Kevlin Henney
 
Software Is Details
Software Is DetailsSoftware Is Details
Software Is Details
Kevlin Henney
 
Game of Sprints
Game of SprintsGame of Sprints
Game of Sprints
Kevlin Henney
 
Good Code
Good CodeGood Code
Good Code
Kevlin Henney
 

More from Kevlin Henney (20)

Program with GUTs
Program with GUTsProgram with GUTs
Program with GUTs
 
The Case for Technical Excellence
The Case for Technical ExcellenceThe Case for Technical Excellence
The Case for Technical Excellence
 
Empirical Development
Empirical DevelopmentEmpirical Development
Empirical Development
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
 
Solid Deconstruction
Solid DeconstructionSolid Deconstruction
Solid Deconstruction
 
Get Kata
Get KataGet Kata
Get Kata
 
Procedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayProcedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went Away
 
Structure and Interpretation of Test Cases
Structure and Interpretation of Test CasesStructure and Interpretation of Test Cases
Structure and Interpretation of Test Cases
 
Agility ≠ Speed
Agility ≠ SpeedAgility ≠ Speed
Agility ≠ Speed
 
Refactoring to Immutability
Refactoring to ImmutabilityRefactoring to Immutability
Refactoring to Immutability
 
Old Is the New New
Old Is the New NewOld Is the New New
Old Is the New New
 
Turning Development Outside-In
Turning Development Outside-InTurning Development Outside-In
Turning Development Outside-In
 
Giving Code a Good Name
Giving Code a Good NameGiving Code a Good Name
Giving Code a Good Name
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
 
Thinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation QuadrantThinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation Quadrant
 
Code as Risk
Code as RiskCode as Risk
Code as Risk
 
Software Is Details
Software Is DetailsSoftware Is Details
Software Is Details
 
Game of Sprints
Game of SprintsGame of Sprints
Game of Sprints
 
Good Code
Good CodeGood Code
Good Code
 

Recently uploaded

Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 

Recently uploaded (20)

Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 

97 Things Every Programmer Should Know

  • 1. 34 97 Things Every Programmer Should Know There is an art, craft and science to pro- gramming that extends far beyond the program. The act of programming mar- ries the discrete world of computers with the fluid world of human affairs. Programmers mediate between the ne- gotiated and uncertain truths of business and the crisp, uncompromising domain of bits and bytes and higher constructed types. There’s no small amount of wisdom scat- tered around the blogosphere about how to do this, but mostly hidden in a mo- rass of somewhat less-than-wise advice. Sound advice can also be found lurking within a number of books — and, again, bookish form is no guarantee of qual- ity. But most of the good stuff is locked up within the minds and experiences of practitioners. How to unlock some of this know how? A while back, “Dammit, that’s just one of those things every programmer should know!” was my response to some code I was thinking about. I had contributed to Richard Monson-Haefel’s 97 Things Every Software Architect Should Know project and I knew that Richard had been working with O’Reilly to create a 97 Things series. My own phrasing was the trigger: what about doing for program- mers what had already been done for software architects? A collective and open project based on voluntary contributions from programmers and others involved in the software development process. A cross section of people that would include big names — but, importantly, not just the big names. Although not strictly open source, the project has some open-source qualities. In particular, contributions are made under a non-restrictive license (Creative Commons Attribution 3.0, in this case). Individuals contribute blog-length items on, well, things that they think every pro- grammer should know. These items can be reused, repurposed and republished freely. There is also an element of crowdsourc- ing: taken together the items form part of a big picture, but the big picture is built up by sampling the wisdom of crowds rather than working to a design vision and progressively elaborating each detail as necessary. The writing is not collabora- tive and there’s no intent that contribu- tions should follow a common style or dovetail together like modular parts. If anything, the converse is true. My role as the editor and driver of the project has been quite a contrast to my involvement in A Pattern Language for Distributed Computing, which I co- authored with Frank Buschmann and Douglas Schmidt. In this we documented 114 patterns, which were divided and in- terconnected to form a coherent whole, speaking with one voice. For 97 Things Every Programmer Should Know, my goal as the editor has been to achieve the exact opposite: each item should reflect the identity, voice and thinking of its au- thor, and although there are overlaps and gaps, the overall diversity and richness becomes part of the charm, readability and utility. And yes, it is my hope that the outcome is useful. Not as a handbook, but as a source of ideas, discussion and even inspiration. The number of contributions has been overwhelming — well beyond 97 — but what comes across from each con- tributor is a certain passion and personal connection to programming. You can find the 97 Things Every Programmer Should Know site at http://programmer.97things.oreilly.com You can follow it on Twitter as @97TEPSK The book is listed at http://oreilly.com/catalog/9780596809492 There is an InfoQ piece about 97 Things Every Programmer Should Know and the 97 Things series at http://www.infoq.com/ news/2009/09/97-things. by Kevlin Henney