Alan Cooper Profile picture
@mralancooper@hachyderm.io Trying to be a Good Ancestor. Founder of @Cooper, 'Father of Visual Basic,' inventor of design personas, blowhard curmudgeon

Aug 13, 2019, 32 tweets

Nate, you sweetheart! Nobody ever actually asks what I mean! @nclinton
I mean things like the incredibly strong influence of already existing code over writing new code. 1

@nclinton People don’t discuss how every single line of code is built on top of millions of other lines of code that they didn’t write & don’t have control over. Prolly didn’t buy (or select) it, either. That pre-existing code has more power over what you write than what you write does. 2

@nclinton An important aspect of technical grounding is an understanding and appreciation of how much code fails, how many products fail, how much money is wasted. 3

@nclinton Supposed technical experts never recognize that the most profound truths of software development are never spoken aloud: Things like there’s no programming in computer science, and there’s no computer science in programming. 4

@nclinton Things like the single best way to learn good programming skills is to study good code. The one thing that programmers never do is study other people’s code. 5

@nclinton Things like most of the really successful software in the world was created by accident. The authors were trying to build something else. 6

@nclinton Things like the most important thing in programming isn’t the tiny code details but the big picture stuff: why are we writing this? Who for? What is the purpose? How will it be used? How will it be understood? How will it be misused? 7

@nclinton Things like writing software appears to be linear and is treated as such, but it is exponential. Each line of code, each new function added, multiplies the complexity of the software. This point is simply never appreciated, even by coders. 8

@nclinton There are a million interesting observations about building and designing software that are of critical importance to its practical creation that are simply unvoiced, unrecognized, unappreciated. And yet, everyone whines about coding. It drives me batty. 9

@nclinton I started to develop a talk on this subject a while back. I wrote an outline, and I occasionally add notes to it. It’s 15 pages long now. Nobody is interested in it. I’m not even interested in it anymore. Bless your heart for asking. 10

@nclinton I’ll say it one more time for you engineers: YES, CODING IS VITAL. NO, CODING IS NOT VERY IMPORTANT.

You have to code. You will code. What will make the difference in the success or failure of your code is not in the fucking code.

11

@nclinton Here’s another metaphor:

Coding is like the ante in poker. You don’t get a hand of cards to play unless you ante up. The ante is vital. But the ante has no bearing whatsoever on whether or not you win the hand of poker. 12

@nclinton So, yes, you have be a good coder. You have to put up the correct ante. Everyone has to be a good coder. Better coders don’t win more. Worse coders might conceivably lose more, but then again, if you don’t meet the ante, you can’t win. 13

@nclinton From my 15-page outline: “Software is eating the world but it hasn’t figured out where the toilet is”—Chris Hiester

@nclinton It’s late. I gotta go to bed. The main reason why this breakdown in communications and understanding re coding, development, and design exists is because the practitioners want to make good products for humans, and companies want to make all the money. 14

@nclinton It used to be possible to reconcile those two desires, but the money—and the greed for it—has grown so large that they can no longer be reconciled. 15

@nclinton You probably can stay employed longer by writing code than you can by writing products that people want and love. So, that contributes to the cognitive dissonance a lot. 16

@nclinton And that means that if you are a coder for a company that fails because it’s products are shite you have a better chance of getting another job at a new company, than you would if you were someone who cared about making users happy. 17

@nclinton And today, everyone, even tech practitioners, are insecure that way. Everyone can feel the terror of bankruptcy lurking just around the corner. 18

@nclinton Here’s another data point: Agile is the first discipline in programming that is about people and process rather than about tools and techniques, and there is no consensus about what agile even is, let alone how it’s practiced. How can we call ourselves professionals? 19

@nclinton The exact same thing is true about design. Nobody can agree about what it even is! Art? Creativity? Visual design? Interactivity? Smoke and mirrors? Fewer buttons? Less complexity? Nobody knows. Nobody agrees. Endless whinging and wrangling. 20

@nclinton The single most salient observation anyone can make about software design and development is that we do not know how to do these things and we do not admit this fact to ourselves. THAT’S what I mean about “technical grounding.” What could be more grounded than that? 21

@nclinton “No matter how it looks at first, it’s always a people problem.”—Jerry Weinberg 22

@nclinton “Junior dev: ‘I found the bug’. Senior dev: ‘I found a bug’”—fiona @fioroco
23

@nclinton @fioroco “Telling a programmer there’s already a library to do X is like telling a songwriter there’s already a song about love.”—Pete Cordell
24

@nclinton @fioroco “The deadline, so useful in the factory-age, is profoundly counter-productive in the digital world.”—Alan Cooper

@nclinton @fioroco “Agile is development organizations' adaptation to management's failure to deliver clear, coherent, consistent product vision”—@miniver 25

@nclinton @fioroco @miniver Name anything technical that "improves software",& I guarantee you the empirical results are mixed. They may have evangelists, but the actual, rigorous research, trials & case studies & ethnographies, will see,at best,a weak signal. Most likely it's inconclusive.—@Hillelogram 26

@nclinton @fioroco @miniver @hillelogram You know what has the strongest effect on the quality of your code?

How much good sleep you get.

27

@nclinton @fioroco @miniver @hillelogram Technical grounding is about understanding what MATTERS in the creation of technology artifacts. I simply never hear anybody talk about what MATTERS. Instead, they just talk about what is fun, what they like, or about what their idiot boss asks them about. 28

@nclinton @fioroco @miniver @hillelogram “It’s a curious thing about our industry: not only do we not learn from our mistakes, we also don’t learn from our successes.”—Keith Braithwaite
29

@nclinton @fioroco @miniver @hillelogram I could go on all night:

Developers under time pressure are unconcerned about users or technical debt. Putting devs under time pressure is a recipe for failure. 30

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling