HN user

KentBeck

2,470 karma

Kent Beck is a programmer, author, artist, father, and singing guitarist.

Posts165
Comments58
View on HN
tidyfirst.substack.com 5mo ago

The Pinhole view of the value of AI as simply reducing payroll costs is wrong

KentBeck
2pts0
tidyfirst.substack.com 1y ago

Tokens: The New Oil or Engineering in Spite of Scarcity

KentBeck
2pts0
tidyfirst.substack.com 1y ago

First Feedback Filter–reducing regret in responding to negative feedback

KentBeck
1pts0
tidyfirst.substack.com 1y ago

In which I write a library-quality B+ tree with the genies

KentBeck
5pts0
tidyfirst.substack.com 1y ago

Me an' Algernon – grappling with (temporary) cognitive decline

KentBeck
102pts76
tidyfirst.substack.com 1y ago

Hand-Drawn Illustrations–A workflow argument

KentBeck
1pts0
tidyfirst.substack.com 1y ago

Programmers who create more files have those files modified by others more often

KentBeck
2pts0
tidyfirst.substack.com 1y ago

Should bugs be anti-holidays–infrequent and interruptive?

KentBeck
2pts0
tidyfirst.substack.com 1y ago

Developing Software in a Forest vs. a Desert

KentBeck
3pts0
tidyfirst.substack.com 1y ago

Why the Insurance Industry Rationally Fails Its Social Purpose

KentBeck
3pts0
tidyfirst.substack.com 1y ago

Product management is hosting a party, not playing chess

KentBeck
57pts40
tidyfirst.substack.com 1y ago

Humans >> Data – The Myth of Measuring Developer Productivity

KentBeck
2pts0
tidyfirst.substack.com 2y ago

TDD is Not Hill Climbing (except where it is)

KentBeck
12pts5
tidyfirst.substack.com 2y ago

Software design gets worse before it gets better

KentBeck
233pts140
tidyfirst.substack.com 2y ago

Not my money any more: Lessons from poker (2010)

KentBeck
32pts16
tidyfirst.substack.com 2y ago

TDD isn't software design, it's design *feedback

KentBeck
2pts1
tidyfirst.substack.com 2y ago

Coding in the Debugger (2007)

KentBeck
75pts31
tidyfirst.substack.com 2y ago

Timing software design: “Later, if that's responsible”

KentBeck
1pts0
tidyfirst.substack.com 2y ago

Publish Everything (Pretty Much)

KentBeck
69pts26
tidyfirst.substack.com 2y ago

Template for Impactful Ideas

KentBeck
75pts12
tidyfirst.substack.com 2y ago

Executive summary of bi-temporality–eventual business consistency

KentBeck
2pts1
tidyfirst.substack.com 2y ago

Emotions: A Code Book

KentBeck
139pts57
tidyfirst.substack.com 3y ago

Keep work fresh by teaching your successors and investing a bit in long-shots

KentBeck
225pts50
tidyfirst.substack.com 3y ago

Accounts/transactions enable you to replay history

KentBeck
2pts0
tidyfirst.substack.com 3y ago

Paint Drip People

KentBeck
70pts34
tidyfirst.substack.com 3y ago

More What, Less How: Coding with LLMs (but also every technical revolution ever)

KentBeck
3pts0
tidyfirst.substack.com 3y ago

I chose “empirical” to describe my style of software design

KentBeck
1pts0
tidyfirst.substack.com 3y ago

How I came to write “Tidy First?” tl;dr it took 18 years

KentBeck
173pts36
tidyfirst.substack.com 3y ago

Software design also saves money by discouraging errors

KentBeck
1pts0
tidyfirst.substack.com 3y ago

Accountability is not blame (but easily becomes blame)

KentBeck
1pts0

I tend to visualize call trees. Much of my refactoring is manipulating the call tree--flattening it, re-extracting subroutines, moving expressions up & down.

Another non-symbolic style of thinking I use is kinesthetic synesthesia. I "feel" the design "lean" in one direction or another, then refactor in that direction.

Why should I listen to you?

Seriously, thank you for that feedback. While the current generation of developers has heard of my work, they don't necessarily associate it with me. Establishing credibility would amplify what I say.

I agree about the importance of alignment. The recent evolution in my thinking is to take into account the power differentials between the folks who need to be aligned. As The Boss it's easy to say, "Everyone should be aligned," without seeing the incentives you are creating for folks not to align. And then fuss about their lack of alignment.

This is a 40-year-old mystery for me--why is it so very hard to get agreement about when & how much to design. Moving too much of the design too soon doesn't work. Moving it too late doesn't work, not in the long run. But why is everyone so completely dissatisfied with every possible option?

Fear vs greed seems like a pretty good model. Gives me somewhere to go next, anyway.

They're convex--small investment, small chance of a large return. Also, I've been curious what mechanism will fund creators creating & NFTs seem like a contender.

BadCookie, you and I have different constraints. The way you're thinking about accumulating assets makes sense given a child who will need assets and can't accumulate them themselves. The way I'm thinking makes sense given that my 5 kids are all launched and responsible for their own finances. (I invested in all of them--it's not like I just kicked them out at 18.)

My first reaction to your comment was defensiveness. When you explained how your situation differs from mine I realized you had just over-stated. Happens.

I wish you and your child well. A permanently dependent child is a tough position to be in.

That would be the "belligerent asshole" interpretation, one that I applied for the first 10 years of my career.

As an engineer, I often have intuitions about what I should work on. I'm saying those intuitions are valuable. Exercising my intuition improves my ability to choose priorities. I am still responsible for results, which is why I am not saying, "Do whatever you want. Nobody can tell you what to do." Someone is paying your salary for reason and at the end of the day you'd better be able to justify your salary or it will stop (again, voice of experience here).

As a manager, I need to accept that I will have intuitions about what to do next but that people who report to me will also have intuitions and theirs may not match mine. I need to choose carefully when to insist on my priorities because a) I can easily be wrong and b) specifying too much evaporates motivation. I generally get the best results by communicating what clearly, but leaving wiggle room.

If you think that engineers, given their druthers, pick the easiest things to do, then you talk to different engineers than I do.

Don't. Most side projects aren't worth investing heavily in, but you can't tell which is which without trying them. I had started hundreds of programs before Erich Gamma and I programmed together. If I had forced myself to "stick with" one of those early projects, we wouldn't have written JUnit.

Hang on a minute. I'm both Superprogrammer and a washed up old has-been? This is getting confusing.

There's no shame for me in using integration tests. They just hint at an alternate universe where the design is different and they either disappear entirely or become unit tests. So today isn't the day that happens. Okay. "Perfect" is a verb.

There's a challenge finding the right headline when posting to HN. My last few posts had very literal headlines and went nowhere. I amped this headline up a bit while making sure it was still honest and, looky here, it got more attention. Now I have to decide how I feel about the difference.

Thank you for letting me know how I appear to you. I don't agree that my point of view is obsolete or that I am not entitled to an opinion about design. Judging what I write based on my age led to you, as other commenters have pointed out, missing the point of my post.

Your point about up-to-date examples is well taken. Finding good examples is the hardest part of technical writing for me. As I work on Facebook and Instagram I will keep my eyes open for clear examples of the same principles, because the principles really are the same regardless of shifts in technical fashion. You'll have the opportunity to learn that in the years to come.

My skill/specialization visualization is the paint drip model (generalization of T). You're adding a little of this skill, a little of that, one catches your eye and you dive deep for a while, then a little of this, a little of that.

I assumed that readers had one strong skill already, hence the emphasis on broadening.

tl;dr You can make content so bad that it won't spread, but you can't make it so good that it is certain to spread. Virality grows at the confluence of skill, timing, and luck. Be aware when you've hit the point of diminishing returns on quality and publish.

There is a big difference between "I'm polishing this because it will have a higher viral coefficient", or "I'm polishing this because I am learning by polishing", or even "I'm polishing this because it feels good to polish" on the one hand and "I'm polishing this because I'm afraid of the feedback I'm going to get on it once it's in the wild" on the other. My polishing falls more often in the latter camp so I look for ways to counteract my bias. If your polishing really really makes a difference, then heavens to betsy be my guest.

Thank you for making this distinction. I was trying to say, "Here's how I make (surprising) better predictions about the world as it is." I wasn't saying anything about how things should be.

For those who don't like the consequences of power laws, I have two questions: * What should the distribution be, statistically? * What mechanism will you use to create that distribution?

Finally, your point about externalities is very well taken. If what I am doing is not sustainable if everyone did it, then I should think hard about whether I am doing the right thing (says the energy guzzling American).

I'm about to turn 53. I spend most of my day coaching younger programmers at Facebook (because they're almost all younger). We pair program and talk. I work on speculative projects, some consumer-oriented, some programming tools and some infrastructure. I also research software design and the diffusion of innovation.

I took a 10 year excursion into being a guru, but I'm technical now and intend to stay that way. I love programming. I've never been a manager. I suppose that capped my pay, but I'd rather be satisfied with my work. I haven't noticed a pay drop with age, but my experience may not be typical.

The most important factor for me has been to keep coding. It gets harder. I have noticed a definite drop in my long-term memory, concentration, and general cognition, but I compensate by being better at picking important problems, being able to pattern match a large library of experiences, and not panicking. As Miracle Max said, I've seen worse.

I started learning Haskell a couple of years ago, and that has really helped expand my programming style. I still don't like it, but it's good for me. I'm also learning React and the reactive style of coding UIs. That's also a brain stretcher.

Economies of Scala 13 years ago

That's an interesting reversal of the logic in the paper. I assumed that the programmers looking for the next cool languages were doing so in pursuit of novelty and not doing it for economic reasons. I wonder how you could empirically support one or the other hypothesis.

I coach full-time at Facebook, and I coached for various clients part-time for a decade before that. We work a bit on technical stuff like how to design, test, or refactor, but honestly the technical work is mostly to establish trust so we can work on more personal issues--time management, multi-level thinking, communication skills, principles of programming. For example, a couple of recent students had ADD. We worked on finishing one thing before starting the next, mostly using techniques that I developed for my own use. After a month of daily one-hour sessions the change was noticeable.

Yep. Fulfillment of a childhood dream, that. I'm just sad Ward didn't get his picture in there too. He doesn't get his (large) share of the credit.

Yes, that was me. I get stuck sometimes. In this case the key insight is that the recursive algorithm is much easier to get to work than the iterative one. There was also the added complexity of two mammoth egos attempting to collaborate.