I've recently decided to go back to the original sources on a range of software engineering and CS topics in order to deepen and strengthen my current practice. My current practice has come from a university degree, observing others, reading blog posts and books, and building various pieces of software over the past 25 years.
This particular stage of my engineering journey emerged out of:
- being challenged by a colleague who was exploring Object Oriented Design in more depth than widely accepted practice (typically what is called class-oriented programming).
- watching many Kevlin Henney talks in which he points back to the old papers
- being challenged by Tom Gilb to "read the papers your heroes read"
A lot of it comes from a realisation that it is possible to be a perfectly acceptable practicioner - writing clean code, thinking through designs, making sensible architecture choices etc. by reading all the current theories and listening to the latest talks, but to grow you need a strong conceptual model beyond just learnt practice (no matter how broad). Building that conceptual model generally means going beyond your teachers to their teachers. As Kevlin Henney has recently very clearly stated, there is much from the early days of computing that is still relevant. It is a constant surprise to see statements of problems that are still with us today (albeit generally on a different scale).
Every week or two I'm going to be looking at a paper - long enough to read, re-read and mull over its contents and implications. Then I'll write a few notes up here. I can't guarantee they'll be original or even interesting thoughts but if anybody actually ends up reading them then perhaps they'll go and read the original papers for themselves.
- Some Patterns for Software Architectures
- A Laboratory For Teaching Object-Oriented Thinking
- Object-Oriented Programming: An Objective Sense of Style
- Borland Software Craftsmanship: A New Look at Process, Quality and Productivity
-
[BROOKS87] Brooks, Frederick P., "No Silver Bullet: Essence and Accidents of Software Engineering," Computer, Vol. 20, No. 4 (April 1987) pp. 10-19.
-
[LISKOV88] Barbara M. Liskov. Data Abstraction and hierarchy, ACM SIGPLAN Notices - Special issue: 'OOPSLA '87: Addendum to the proceedings, Volume 23 Issue 5, May 1988. Pages 17 - 34
-
[LISKOV-WING94] Barbara M. Liskov & Jeannette M. Wing. A Behavioural Notion of Subtyping, ACM Transactions on Programming Languages and Systems, Vol 16, No 6, November 1994. Pages 1811-1841.
-
[TRYGVE1979/2007] Trygve Reenskaug. The original MVC reports (THING-MODEL-VIEW-EDITOR - an Example from a planningsystem, May 1979 & MODELS-VIEWS-CONTROLLERS, December 1979)
-
[TRYGVE03] Trygve Reenskaug. The Model-View-Controller (MVC) Its Past and Present, Handout, 2013
-
[COPE/TRYGVE14] James Coplien & Trygve Reenskaug. The DCI Paradigm: Taking Object Orientation into the Architecture World, Agile Software Architecture, Aligning Agile Processes and Software Architectures, 2014, Pages 25–62
Need full references
-
Out of the tar pit - Ben Moseley & Peter Marks
-
A Design Methodology for Reliable Software Systems - B.H. Liskov
-
Architectural Styles and the Design of Network-based Software Architectures - Roy Thomas Fielding
-
Big Ball of Mud - Brian Foote and Joseph Yoder
-
On the Criteria To Be Used in Decomposing Systems into Modules - D.L. Parnas
-
Go To Statement Considered Harmfal - Dijkstra
-
Meltdown - Moritz Lipp et al.
-
Spectre Attacks: Exploiting Speculative Execution - Paul Kocher et al.
- The Dehumamisation of Agile and Objects - Jim Coplien
- Patterns Failed - Why should we care? - Brian Marick
I've seen many of these talks before but I intend to watch them more closely, take notes and make observations
-
Kevlin Henney - Procedural Programming: It's Back? It Never Went Away
-
Joe Armstrong - The mess we're in
-
Ian Cooper - Where did it all go wrong?
-
Ian Cooper - RPC is evil
-
Ian Cooper - Twelve Factor Apps in .NET - Building apps for the cloud
-
James Coplien - The DCI Architecture: Supporting the Agile Agenda
-
Simon Brown - ...
-
University of Colorado (Boulder) - Introduction to software architecture
-
Jules May - If considered harmful - really need to read "GOTO Considered Harmful" first as he makes claims that build on this or at least add another layer of interpretation.
Hexagonal Architecture
- Ian Cooper - Hexagonal Architecture (Agile Yorkshire)
- Alistair Cockburn - Alistair in the "hexagone" 1/3
- Alistair Cockburn - Alistair in the "hexagone" 2/3
- Alistair Cockburn - Alistair in the "hexagone" 3/3
Microservices
- Ian Cooper - Microservices cutting through the Gordian knot
- Greg Yound - The Long Sad History of MicroServices TM
- Jimmy Bogard - Avoiding Microservice Megadisasters
- Ian Cooper - Safe at any speed
Functional Programming
- Mark Seemann - Functional Architecture - The pits of success
Other ideas
- ImageSharp
- Math.NET Numerics
- V8
- Roslyn
- Node JS
- SharpDevelop