Herding Lions

Hi! I'm Ben.

I make software in Durham, North Carolina. This is my site where I write about engineering leadership and productive product teams. If you're interested seeing more, feel free to subscribe.

First time on the site? Start here.


2019 Roundup

2019 was the 6th full year of this blog, and it was a bit up and down posting wise. For the first half of the year I published more or less a post a week, with 24 posts from January till July. But this is only my 2nd post since then. Turns out that starting a new job while learning to be a parent …

How Software Engineers Produce Value

I had the opportunity this week to walk a software engineer who is new to the field through some lessons I’ve learned over the years about how software engineers add value to the business. It seemed generally applicable, so here’s a cleaned up version of what I shared. What Is Value? It …

Book Review: Resilient Management

Resilient Management by Lara Hogan is a short and useful read for engineering managers who want to think more systematically about how they support their team. Lara covers concepts like how to connect with a new team, how to encourage growth in your teammates, and how to communicate difficult news. …

Avoiding Derived State In React

A lot of advice in the React community is focused around avoiding explicitly storing “derived state” of some type or another. Some examples of this type of “derived state” that the community warns against: Storing data that is directly derived from another piece of data in …

Lessons From Managing A Distributed Team

Working with people over the internet is different from meeting in an office five days a week. This isn’t a moral statement. I’ve done and enjoyed both. Working with a distributed team requires a different set of skills, especially when you’re a leader. Today I want to share the …

Book Review: The Manager's Path

Titles in the software engineering world are strange. Without much work, it’s easy to find Senior Engineers with 2 years of professional experience, junior developer job descriptions requesting 5 years of experience, tech lead roles focused purely on technology, tech lead roles where the lead …

Thinking About Values

As a way to help myself grow in my first year as a manager, I’ve been working through Google’s New Manager Training which they have generously published online. One exercise that stood out to me was a “values selection” process, where they encourage managers to select a ranked list of 5–10 words …

Herding Lions

I used to find myself using the term “herding cats” a lot when confronting inertia, disorganization or ambiguity in work situations. Urban Dictionary actually endorses this: The phrase herding cats comes from the common saying that something involving coordination of many different …

Obvious Things

I saw a tweet thread a few weeks ago that made me think: There’s a bit of a meme in some parts that there is value in saying, out loud, “I realize that I am surprised.” For similar reasons, I often subvocalize “I believe I now understand the type of situation the ‘trivial’ advice was preparing me …

How To Get Better Feedback On Your Code

Deliberate practice is when your attention is focused tightly on a specific skill you’re trying to improve … you receive feedback so you can correct your approach to keep your attention exactly where it is most productive.   Cal Newport, Deep Work   In Deep Work, Cal Newport explains that research …

Ten Soft Skills That Will Shape Your Career

One of the most popular posts in the history of my blog was a list with the click-baity name Ten Things A Serious JavaScript Developer Should Learn. It explicitly focused on the set of technical skills that you need to become a “senior” JavaScript developer. While I’m happy with …

Consistency

The last few weeks I’ve had several conversations with a coworker about consistency in code: why do we do things one way here, and a different way there? Some of this is macro level; Where do we split chunks of related functionality into different files? Some of it is micro level; what should …

Lessons from Six Months As A Manager/Developer Hybrid

For the last 6 months I’ve been serving as a hybrid developer/engineering manager. It’s been an interesting experience, and because this is a fairly common way to transition into engineering management1, I thought it might be worthwhile to share some lessons I’ve learned so far. 1. …

Utility Functions

As I’ve gone through projects over time, I’ve found a few functions that I end up creating for every significant project that I’ve worked on. Some of the details differ from project to project, but the basic function remains the same. I thought it would be helpful to do a rundown: …

Book Review: Deep Work & The Common Rule

I’m trying something different today. This is a review of 2 books I’ve read recently; I’m combining them because their similarities and differences are just as interesting to me as the practical steps they encourage. Deep Work is a 3 year old book from Cal Newport focused on …

The Importance of Writing For Software Developers

Once somebody hits a minimum threshold of technical skill to hold a job in the industry, about 80% of their ability to succeed in Software Development is determined by their communication and people skills, not their technical abilities - Me, Christmas 2018 I think I caught my sister in law by …

Strategic Coding

I recently read A Philosophy Of Software Design by John Ousterhout. In an early chapter he paints a picture of a “tactical tornado” programmer, a programmer who is always focused on solving the current problem by the most expedient method possible, with no thought to the long term …

Reusable Code In React: Inheritance, Composition, Decorators and Mixins

Once you get past the initial complexity it creates by bucking conventions, React is the most developer friendly UI library I have ever used. A big reason for that is the way it uses and encourages a variety of patterns to share codes and concepts across a code base. Let’s look at how 4 …

Book Review: Info We Trust

Sometimes surprises are good. I bought RJ Andrews new book Info We Trust expecting to get some practical tips on how to create better data visualizations. But frankly there’s very little in the way of “how to” in this book. Instead I was treated to a deeply engaging book that’s part history of data …

Improving Code Readability With Async/Await

When it first became a part of JavaScript, I wasn’t sure how much I was going to use async-await. I could see that it made things prettier in some cases, but I was pretty happy with my promise chains and thought that async-await might just be some extra language baggage. Since then I’ve …

Designing Front End Apps For Reliability

In my recent post on Front End Architecture I identified Reliability as a key concern of front end architecture. I define reliability as follows: An application’s ability to provide a consistent functional experience to all users in the intended audience over time. Let’s break that …

6 Keys To Valuable Code Reviews

I’ve read 2 things lately that really reminded me of the value of code reviews. One was A Philosophy Of Software Design by John Ousterhout, which I reviewed here. Philosophy of Software Design is a practical guide to software design, and Ousterhout emphasizes code reviews as the best point for …

What's involved in Front End Architecture?

The word “architecture” gets thrown around a lot in software discussions. But we don’t seem to always use it the same way. Some example usages: Our app uses Redux for our architecture. Sometimes we assume that because we are using a framework or data management library, that must …

Book Review: Radical Candor

Have you ever read a non-fiction book that you just couldn’t put down because you kept hitting paragraph after paragraph of useful, practical wisdom? That was me reading Radical Candor by Kim Scott this summer. It’s a ~200 page masterpiece on communication, leadership and being real at …

Book Review: A Philosophy of Software Design

A lot of the software books out there these days are marching towards their expiration dates the day they’re written. When I see titles like “Angular 2 Development”, “Learning JavaScript with React”, “Writing Native Apps with Ionic 2 and Lodash 4” I know …