Something that bugs me is the widespread, continued segregation of technology. Technology might be something you use, but rarely is it something you make or even understand.
I’m currently thinking of all the people who I WhatsApp whose eyes gloss over at the mention of encryption.
This is often reflected in organisations, with technology teams separate from the rest of us. There are obviously some exceptions. Notably companies where the product is technology. But more often there is little overlap between those that make the product (etc.) and the nerds who make it possible.
The overlap often takes the shape of particular individual(s). But we all have to become the nerds who make it all possible.
Technology is no longer something separate from the rest of our lives. If it ever was.
In newsrooms, the tech nerds are often off somewhere leaving the overlap to take the form of data or multimedia journalists. This isn’t enough. There are too many important stories, too much to miss, misunderstand or underestimate; not to mention too many productivity enhancements, for computers to just be a blunt instrument.
Anyway, all of this came to mind as I was reading an MIT Tech Review article about the launch of a new multi-disciplinary college at the University:
“The world needs bilinguals,” said MIT president Rafael Reif. In other words, the world needs engineers with a better grounding in the liberal arts, who can build more ethical products and platforms, as well as policymakers and civic leaders with a better understanding of technology to help guide responsible innovation…
…Faculty at the new college will work with other MIT departments to cross-pollinate ideas. Classes will also be designed so that technical skills, social sciences, and the humanities are bound up together within each course rather than learned separately.
I agree. But I’m not sure the solution lies in more cross-disciplinary study (although it is definitely necessary) as much as it does in employers etc. valuing people who aren’t cookie-cut candidates, who have more diverse or even tangential experience.
I’m not sure how to do that.
As always my emphasis.
The people who have always been able to do something about this — the ones building the software — have always known when their software was doing something wrong. It’s their job to find bugs, and if they’re worth their salt, they’re always looking for flaws in the overall design, as well as the functional components of what they’re building. They know that violating user privacy without consent is a bug. Operating in a way inconsistent with the user’s expectations is a bug. Coercing people into using your product with psychological tricks is a bug.
Though many of these poor designs are instigated by higher-ups, they are ultimately implemented by professionals with a deep knowledge of their field. Designers know when they’re mocking up screens that prey on people’s most basic desires; developers know when they’re implementing designs that would feel incredibly wrong as the end user.
This is from an old article by Matt Baer, and is talking about problematic business models in general on the internet.
It isn’t about Facebook or any specific scandal.
Still, it’s an interesting thought. It isn’t just Zuckerberg or Kalanick or [pick your leader of scandal generating tech company].
The people that write the code and design the interfaces know what they’re doing. Perhaps we should hold them as morally responsible as we do financiers?
(As always my emphasis)
My coding odyssey continues and as a result I stumbled across the how to ask a good question page on Stack Overflow. It’s a site for people to ask questions of a large community of coders (I shan’t share what led me to browse the help centre of a help centre 😇).
While much of the page is understandably specific to questions about coding, reading it gave me several thoughts for some universal guidance for good questions.
•Pretend you’re talking to a busy colleague and have to sum up your entire question in one sentence: what details can you include that will help someone identify and solve your problem? Include any error messages, key APIs, or unusual circumstances that make your question different from similar questions already on the site…
• If you’re having trouble summarizing the problem, write the title last – sometimes writing the rest of the question first can make it easier to describe the problem.
So often people come with a simple question or problem that they have buried in so much story/minutiae as to make it boring/unintelligible. But if you really want to find an answer, and quickly, it’s probably best to approach it like click bait.
What are the details that will hook me into your question? Can you summarise as to confirm I even know the answer?
The busy colleague is a good device. When I first started as a journalist my producer told me something similar – I should pitch ideas to him as if he was a stranger in a pub who would leave or find me boring if given a long preamble.
In the body of your question, start by expanding on the summary you put in the title. Explain how you encountered the problem you’re trying to solve, and any difficulties that have prevented you from solving it yourself. The first paragraph in your question is the second thing most readers will see, so make it as engaging and informative as possible.
Help others reproduce the problem
Not all questions benefit from including code. But if your problem is with code you’ve written, you should include some. But don’t just copy in your entire program! Not only is this likely to get you in trouble if you’re posting your employer’s code, it likely includes a lot of irrelevant details that readers will need to ignore when trying to reproduce the problem. Here are some guidelines:
•Include just enough code to allow others to reproduce the problem. For help with this, read How to create a Minimal, Complete, and Verifiable example.
Good questions contain context and are rarely just one question (more reason press conferences and panels are bad).
When I’m really trying to pick someone’s brain or find an answer I often break questions down into their component parts. If it’s code we need to establish we’re all using the same version. This applies to basically everything.
Questions can go awry when we’re each making assumptions about intentions, definitions, steps etc. So if you’re trying to find something out it’s often best to start small, at first principles.
You can then walk through the problem with the person, just as the respondents on Stack will try and replicate problems. Sometimes you may discover you’re asking the wrong question. Are the assumptions baked into the question the real answer?
Obviously this only works in a medium where you can go back and forth.
Lastly there needs to be some amount of good faith. This is why I like anonymous questions delivered by a moderator at events, and why short interviews make little sense. Is the question a genuine attempt at knowledge or is it trying to convey something else?
As usual my emphasis.
Working my way through one of the more fascinating technology books I’ve ever come across, Code by Charles Petzold. I stumbled across this passage:
…nobody in the nineteenth century made the connection between the ANDs and ORs of Boolean algebra and the wiring of simple switches in series and in parallel. No mathematician, no electrician, no telegraph operator, nobody. Not even that icon of the computer revolution Charles Babbage (1792–1871), who had corresponded with Boole and knew his work, and who struggled for much of his life designing first a Difference Engine and then an Analytical Engine that a century later would be regarded as the precursors to modern computers…
This is from a chapter on Boolean logic (aka Boolean algebra), which you might have come across if you have ever studied programming, statistics or electrical engineering.
I’ve never before had it explained to me in such a cogent fashion. But what this sections highlights in particular (and the book as a whole rams home) is the power of bringing together seemingly disconnected ideas, theories and fields.
…What might have helped Babbage, we know now, was the realization that perhaps instead of gears and levers to perform calculations, a computer might better be built out of telegraph relays…
This is a great book if you want to understand how computers work, as it combines engineering and information theory to construct a virtual computer, step by step. Starting with a simple light bulb circuit, through logic gates, operating systems and graphical interfaces.
But it is arguably more valuable in demonstrating how something as complex as a computer draws from many fields.