Two MoTacon attendees are on the left. The MoTaacon logo is in the center, and to the right a prompt to Get Your Ticket.

Bob Salmon

Bob Salmon profile image
Bob Salmon
Tech Lead

I'm a programmer who likes people, code and data. That means I think that things like quality and user experience are important too.

🎂 MoTaBirthday | May 8, 2018
Open To
Mentor
Speak
Write
Podcasting
MoT Cambridge - February 2026 image
Data quality is weird - Bob Salmon
4 Feb
Testing data quality effectively image
Learn how focusing on user value and trust gives you a clearer, more effective way to test data quality
10 Feb
Reviewing Requirements Documents image
Tasked with reviewing a large requirements document? Bob Salmon has you covered with his handy tips for reviewing requirements documents
25 May
Bob Salmon: A developer walks into the quality bar image
Bridge the gap between developers, testers, and data teams to create stronger, people-centred quality practices.
20 Nov
Schema (Database Schema) The definition schema given by Emily O'Connor is the most common meaning of the word schema in the context of databases, including relational databases.There is another meaning for schema, also in the context of relational databases, which can be confusing.  In this other meaning, a schema is a container of database tables, views etc., and so acts as a way of sub-dividing the things in a database instance.  A database instance is something with a connection string, that you can log into.  Within that will be one or more schemas, each of which will contain zero or more tables etc.  On Microsoft SQL Server databases the default schema is dbo, which is short for database owner.There are a few reasons why you might choose to have more than one schema in a database: Schemas can divide tables up into groups of related tables, e.g. relating to different features of the associated software. This is particularly useful when the database grows to have many tables.  The advantages of using schemas rather than separate databases include the fact that transactions and foreign key relationships can reach from one schema to another, but can't (easily) span from one database to another. Permissions can be granted at the schema level, so that e.g. a user can be given read access to all tables in one schema but not to a different schema in the same database instance. Database table names must be unique within a schema, but you can reuse a table name if each table with that name is in a different schema. In SQL Server, the full version of a database table's name (or other database object such as a view) has four parts:Server.Database.DatabaseSchema.DatabaseTableOther databases, such as Postgres, can have different full name formats but will usually include the schema name. Server is the database server, i.e. one running instance of the database software, and not the physical or virtual machine it runs on. Database is the database instance - one database server can host one or more database instance.  Each database instance has a separate connection string. Database schema e.g. Finance Database table e.g. MonthlyPaymentSummary Data Contract A data contract is a document that defines the ownership, structure, semantics, quality, and terms of use for exchanging data between a data producer and their consumers. It is human- and machine-readable, and so can be used as both a communication tool between teams and a way to automatically detect when expectations about data are broken. Write-Audit-Publish (WAP) Write-Audit-Publish (WAP) is a pattern for designing data pipelines where a pipeline is built up of several sections. Each section produces a result data set that is used by one or more downstream sections and conforms to the same three-stage process: Write: The main work of the section is done and data is written to a staging area that is inaccessible to other sections Audit: The staging data is checked using automated checks Publish: Only data that passes the audit is published to downstream sections of the pipeline Medallion Architecture Medallion data architecture is a way of splitting the ingestion and processing of data into three stages: bronze, silver, and gold.  In the bronze stage, ingested data is stored in its unaltered form.  The silver stage attempts to fix problems in the bronze data and augment it by linking it with other data, producing a more usable version. The gold stage takes the silver data and summarises it, along with any other processing needed to make the data ready for consumption by downstream processes. YAML YAML is a way of expressing structured data that is both machine-readable and human-readable, similar to JSON. It is often used for configuration and contracts that need to be understood and maintained by people as well as systems.
Fast and Slow I recommend this video from Jez Humble for lots of things, but in particular this part: https://www.youtube.com/watch?v=2zYxWEZ0gYg&t=1682s HP Laserjet's firmware division was going too slowly, and got faster in an interesting way (as told in the video). Fast and Slow Re. What's slowing us down? - it's worth thinking about this, rather than just playing whack-a-mole with obvious things. For instance, LLM-generated code has in theory sped up typing, but if the constraint on overall speed is thinking and communicating (product management, design, etc.) you're not going to gain much. Also, LLM code generation is an example of another point: what *cost* is there to speeding up? Increased rework? Unhappy customers? How do you avoid or reduce these costs? Share a test idea in 99 characters or less (and win a TestBash ticket) Alice thinks all testing should produce objective results: numbers etc. that can go into a spreadsheet and have calculations performed on them, with easy to automate tests. Bob thinks the only valuable testing produces subjective results: how easy to use the software is, how much it solves a user's problem, etc. How do they communicate and collaborate? (Just two characters: Alice and Bob ;-)) Drop a quality comment to win your place at Leading With Quality Quality is (or isn't) wherever people are. Does my utility bill add up? Can my phone sync with my laptop? Does the software I use to file my tax return make me want to choose violence? Are the dashboards our executives use to make important decisions making pretty pictures out of random numbers? You could easily extend it to things beyond just software like: can the call centre staff answer questions about in-store purchases, is it easy to return stuff, etc? It matters because people matter.
Measurements that matter? (randomtechthoughts.blog)
14 Oct 25
measurement
leadership
08 Sep 25
risks
risk-models
Subscribe to our newsletter