Leon Rosenshein
banner
rosenshein.org
Leon Rosenshein
@rosenshein.org
Reposted by Leon Rosenshein
Higher privilege leaves you ignorant.
When people defer to you, then you're insulated from reality, since they present what you want to see, confirm your beliefs etc since that smooths their lives.
They can take your perspective, and you have no clue theirs exists or how to see from it
September 2, 2025 at 9:57 PM
Friendgineers: Abstractions and Indirections can look like the same thing, but they're actually very different. It's never a good idea to confuse two things that sound similar but aren't

#friendgineers #abstraction #indirection

friendgineers.rosenshein.org/posts/2025/0...
Indirection Vs. Abstraction
Abstractions may be indirections, but indirections are NOT abstractions. Confuse them at your own peril.
friendgineers.rosenshein.org
August 15, 2025 at 8:53 PM
Friendgineers: Are you getting all of the value you can from your tests? You can probably get more than you are. Correctness is only the tip of the iceberg.

#friendingeers #tdd #testing

friendgineers.rosenshein.org/posts/2025/0...
Testing Is More Than Preventing Breakage
If you think about tests as the last thing you do you're missing out on some of the biggest benefits of testing. You can learn a lot about what your code SHOULD do by thinking about your tests first.
friendgineers.rosenshein.org
August 13, 2025 at 5:15 PM
Friendgineers: I try to keep things simple for myself. And I try not to make too many assumptions. But sometimes I get in my own way and make things harder for myself.

#friendgineers #naming

friendgineers.rosenshein.org/posts/2025/0...
Stuttering
Sometimes we are our own worst enemy. Here's a story of my spending WAY too much time trying to figure out why one of the core functions of one of my core tools was broken. Even though it wasn't. It c...
friendgineers.rosenshein.org
July 30, 2025 at 4:42 PM
Friendgineers: I learn things all the time and from many different places, not just my dryer. This week I learned about optimization from soap and silverware in hotels.

#friendgineers #optimization

friendgineers.rosenshein.org/posts/2025/0...
Optimization
You can find lessons in the strangest things if you let yourself. There are even lessons to be learned from the holes in a bar of soap.
friendgineers.rosenshein.org
July 23, 2025 at 8:51 PM
HT to @agile-otter.bsky.social . He said this way better than I can. Why, in the name of all that's good, are we still writing legacy code in 2025?

#friendgineers #legacy #tdd

friendgineers.rosenshein.org/posts/2025/0...
Writing Legacy Code
One of the hardest things for a person to admit, to themselves or others, is that some painm they're feeling is self-inflicted. But it's also one of the things that has the highest return on investmen...
friendgineers.rosenshein.org
July 21, 2025 at 4:22 PM
Friendgineers: What do you love? Strange question for a software engineer, but surprisingly relevant. Loving the right thing helps you move forwards, but loving the wrong thing will hold you back.

#friendingeers @whodoyoulove

friendgineers.rosenshein.org/posts/2025/0...
Who Do You Love?
When you love the right thing you know what to do and how to move forward. When you focus on the wrong thing then the path forward isn't nearly as clear.
friendgineers.rosenshein.org
July 16, 2025 at 8:32 PM
Friendgineers: Does practice make perfect? Maybe. But are you perfecting the right thing? That's a question we should be asking far more often than we actually do.

#friendgineers #practice #strengths

friendgineers.rosenshein.org/posts/2025/0...
Practice Makes Perfect?
Practice, practice, practice. Do that enough and you'll become an expert. That's all you need to do and all you need to know, right? Not quite. It's important, even critical, but it's NOT enough
friendgineers.rosenshein.org
July 14, 2025 at 5:25 PM
Friendgineers: Power dynamics are real and play a surprisingly large role in what gets done. Even when people with power don't realize the impact they're having.

#friendgineers #power

friendgineers.rosenshein.org/posts/2025/0...
Power Dynamics
You always need to be careful what you say, because you can't be sure how people will here it. Add in a power differential and things can easily go off the rails.
friendgineers.rosenshein.org
July 11, 2025 at 9:16 PM
Damn. This really says something worth thinking about.
July 9, 2025 at 10:14 PM
Friendgineers: The internet is a great place for learning. It's also a place where you can find some REALLY bad ideas. It takes critical thinking to know if any particular idea is good or bad, IN YOUR SITUATION. Somethings though, are just bad ideas.

friendgineers.rosenshein.org/posts/2025/0...
Exsqueeze Me?
There are lots of good reasons to remove tests. There are even more reasons to keep them. Or, if there's a problem, FIX them.
friendgineers.rosenshein.org
July 7, 2025 at 5:44 PM
Friendgineers: Are you working on a product or a platform? Or are you somewhere in the messy middle? It all depends on how wide a view you take.

#friendgineers #messymiddle

friendgineers.rosenshein.org/posts/2025/0...
The Messy Middle
It's hard to be stuck in the middle. But if you pay attention and know that important things can happen in the middle you can turn the messy middle into an advantage.
friendgineers.rosenshein.org
July 2, 2025 at 4:30 PM
Friendgineers: I've often felt that we in the software business prioritize immediate gain over long term success. Sometimes that's needed, but in the long run, taking a long term view always pays off.

#friendgineers #qualityoverspeed

friendgineers.rosenshein.org/posts/2025/0...
Speed Vs. Quality
Move fast and break things might work for a disruptive business, but as a long term coding strategy it leaves a lot to be desired. In fact, it's a self-defeating strategy.
friendgineers.rosenshein.org
June 30, 2025 at 4:37 PM
Friendgineers: We all agree that good culture is important. We even mostly agree on what good culture is. But how do you identify it, and how can you encourage it?

#friendgineers #culture #trust #honesty

friendgineers.rosenshein.org/posts/2025/0...
Culture: Not Just For Yogurt
What you do when things are going well doesn't define your culture, it just illuminates it. So changing what you do when things are going well won't change your culture. So what can you do?
friendgineers.rosenshein.org
June 25, 2025 at 4:02 PM
Friendgineers: You have the power of the pen. Writing down the impact of what you're going to do is constrains your impact, but it can also open up possibilities.

#friendgineers #docs #contraints #powerofthepen

friendgineers.rosenshein.org/posts/2025/0...
Docs First And The Definition Of Done
I'm often surprised by how clearly and fully defining your goal actually liberates you when you need to define the solution to your problem. It's almost like having too big a goal space constrains the...
friendgineers.rosenshein.org
June 23, 2025 at 4:59 PM
Friendgineers: You need to be clear about your goals and always work towards them. You also need to accept the reality that your goals may exceed your grasp. Then include that reality in your plans.

#friendgineers #goals

friendgineers.rosenshein.org/posts/2025/0...
System Goals
Debugability is only important if something goes wrong. Of course, something can ALWAYS go wrong. So debugability is always important.
friendgineers.rosenshein.org
June 20, 2025 at 4:40 PM
Friendgineers: There are lots of superpowers you want as a developer. One of the bet ways to get them is to have options. That means doing the hard work up front so you have optionality.

#friendgineers #optionality #superpowers

friendgineers.rosenshein.org/posts/2025/0...
Superpowers And Optionality
One of the biggest superpowers you can give your code is optionality. You can do that by making sure you have clean boundaries between components. And that the components themselves stay that way.
friendgineers.rosenshein.org
June 18, 2025 at 2:41 PM
Friendgineers: Genies can be very helpful. But in almost all cases, their not trying to be helpful, just doing what you say. Which makes your review of their work even more important.

#friendgineers #ai #genie

friendgineers.rosenshein.org/posts/2025/0...
Coding Genies and Code Review
Reviewing your own code is critical when working with others. It's even more important when you aren't the one who actually writes your code.
friendgineers.rosenshein.org
June 13, 2025 at 2:38 PM
Friendgineers: You need to remember who you're really talking to when you write code. It's NOT the compiler and it's not the reviewer, although they need to understand. It's the maintainer. Write for the maintainer.

#friendgineers #maintainer

friendgineers.rosenshein.org/posts/2025/0...
Who Are You Writing To Anyway?
An author should always keep his audience in mind. The trick is to know your audience. Even when there are 2 or more different audiences.
friendgineers.rosenshein.org
June 11, 2025 at 3:04 PM
Friendgineers: There are those who say AI makes us faster by writing the code. When was the last time typing was the bottleneck? Maybe when you're typing, but it's almost NEVER the limiting factor over a project's lifetime.

#friendgineers #Efficiency

friendgineers.rosenshein.org/posts/2025/0...
AI Isn’t The Answer
There are lots of things that can slow down software development. Typing speed is almost never the biggest slowdown. So something that eliminated the typing speed bottleneck isn't going to make things...
friendgineers.rosenshein.org
June 9, 2025 at 4:55 PM
Friendgineers: When requirements change out from under you it is very disruptive. But did they really changing, or are we just understanding them better? Not understanding the requirements is a shared communications problem.

#friendgineers #requirements

friendgineers.rosenshein.org/posts/2025/0...
But The Requirements Just Changed
Often it looks like the requirements have changed, but when you look closer, that's rarely the case. Instead, what really happened is that you learned more about what the requirements always were.
friendgineers.rosenshein.org
June 6, 2025 at 4:43 PM
Friendgineers: We all think we're writing new code, but the reality is, in almost all cases, we're modifying existing code. How do things change if you think of how you're modifying existing code EVERY time you write any code?

#friendgineers #maintainer

friendgineers.rosenshein.org/posts/2025/0...
New Code Vs. More Code
Just like the code we write is going to be read far more often than we write it, the amount of code we change or extent is MUCH higher than the amount of code we write from scratch. So don't forget, w...
friendgineers.rosenshein.org
June 4, 2025 at 1:25 PM
Friendgineers: Did you know your data talks to you? It's talking all the time, but we usually don't listen to it. As part of your design process, you should start listening to your data.

#friendgineers #data #listen

friendgineers.rosenshein.org/posts/2025/0...
Listen to Your Data
Your data can speak volumes to you. If you know how to listent to it. And are willing.
friendgineers.rosenshein.org
June 2, 2025 at 3:29 PM
Friendgineers: We all want to write performant software. The smallest code in the least memory. Or getting an answer faster? Or getting the right answer? It depends. Make sure you know what performance is before you chase it.

#friengineers #performance

friendgineers.rosenshein.org/posts/2025/0...
What Is Performance Anyway?
Performance is more than sheer top speed and power. Before you can call something high performance, you have to know what you mean by performance.
friendgineers.rosenshein.org
May 30, 2025 at 3:21 PM
Friendgineers: I've said it before and I'll say it again. Handling time right is hard. Not just in your production code, but in your tests as well. We have met the enemy, and it is Time.Now().

#friendgineers #time #testing

friendgineers.rosenshein.org/posts/2025/0...
Time Passes
Unit tests should be idempotent. No matter how many times you run them, or when you run them, they should always give the same answer. If they don't, something is wrong.
friendgineers.rosenshein.org
May 28, 2025 at 2:13 PM