[Sublime + Python Setup] Grumpy old greybeard with a whitespace problem

One fateful day, the Agile Gods that be decided to “add some firepower” to my little team…

And so, developer Paul joined (name changed to protect the guilty).

Before I dive into this story, let me ask you this: Have you ever been on a development team that simply clicked?

My team was like that. We we’re tearing through user stories every day, constructing the backend for a new performance analytics system.

Life was good. We were in sync, had agreed on a code style, were doing continuous integration, code reviews, and continuous deployment.

The whole best practices enchilada. It felt amazing.

Enter Paul:

Based on some previous interactions he seemed to be the “grumpy old man” type —

Undeniably skilled, but also with penchant for doing things his own way, and a slightly short-fused temper.

Some personal hygiene issues aside, he seemed like a nice enough bloke.

Paul’s first code review comes up two days later and I cheerfully open up the pull-request. (Paul “doesn’t really do branches in Git” but eventually we nudged him into compliance.)

GitHub’s website churns for a while as Paul’s code changes load up…

“This feels like it’s loading little slower than usual”, I’m thinking.

And then I get that sinking feeling in my stomach:

The guy is productive… prolific even. But apparently he really enjoys writing 900-line functions, with 7 different levels of nesting, and some loooooong if/else-chains sprinkled on top.

Umm.

Did I mention he was also a fan of inconsistent spacing?

Stuff like sometimes putting zero, or 1, or… 3 blank lines between functions and statements.

Or, sneaking in extra whitespace around parentheses, and then sometimes leaving it out completely.

There was no discernible rhyme or reason to this code “style”, just a cluttered, random-looking pattern.

Ugly, yes—and a distraction from the real architectural issues in the changeset that needed discussion.

How was I going to share my feedback on Paul’s code?

I was in my late twenties and I’d recently been promoted to a leadership position on the team. Paul was easily twice my age (and it didn’t help that I basically still looked like I was 15).

From past encounters I knew he reacted badly to even the slightest criticism.

So I didn’t want to be the young ankle biter starting a quarrel with the wise greybeard—and yet this code was clearly not up to our team’s standards…

In fact, it was a maintenance liability.

Heck, simply viewing the code diff almost took down GitHub… But let’s not go there again.

Code style is a hot topic for developers. Many of us can nearly come to blows over code style disagreements, something I really wanted to avoid (also the guy was quite a bit taller than me—just kidding).

I’ve been in situations like this before and trying to get the “odd potato” on the team to fall in line when it comes to code style usually doesn’t work. And it’s not worth starting a war about it either.

To get real work done, what counts is that developers enjoy working with each other, code reviews are 99% conflict-free, and people don’t break out into angry shouting matches five times a week…

Like a true engineer, I decided to automate myself out of that conflict.

I put an automated code style checker into place on our continuous integration server.

That way Paul, myself, and the other developers on the team were getting instantaneous code style feedback every time we pushed our changes to the central Git repository.

The important detail here is that with an automated tool the feedback didn’t come from a human being —

It was just a heartless little program that called people out on their formatting inconsistencies and other quirks.

The result: No more hard feelings!

I learned that automated tools can stop a lot of these uncomfortable situations dead in their tracks, before people get emotionally attached to their style decisions.

Instantaneous and automated code style feedback is truly an amazing timesaver.

These days I make sure I never work without it.

Don’t be “that guy” (or gal) for your team and see step by step how to get instantaneous code style feedback right inside Sublime Text:

>> Click here and write more beautiful code in 10 minutes

— Dan Bader

Key phrases

Older messages

[Sublime + Python Setup] Don’t build “nag screen muscle memory”

Monday, August 8, 2022

Hey there, Once I worked with a developer who refused to buy a registered copy of Sublime for months on end, even though he *loved* Sublime. He used it as his main code editor every day and was very

[Python Dependency Pitfalls] The Iceberg

Monday, August 8, 2022

Hey there, The other day I read this quote from a Python developer that made me stop and think: "As a noob with a little programming knowledge already, I've found setting up and installing

[Sublime + Python Setup] why Atom can’t replace Sublime

Sunday, August 7, 2022

Hey there, "In a nutshell, Atom is a Sublime Text editor that just got better." When I read this quote I got so worked up I nearly fell off my chair. Because every time I've tried Atom or

[Python Mastery] What Pythonistas can learn from bestselling authors

Sunday, August 7, 2022

Hey there, I just finished reading Stephen King's "On Writing." It's a great little book where he shares some of the writing advice and stories he's picked up over the course of

[Python Dependency Pitfalls] "Re-inventing the wheel" disease

Sunday, August 7, 2022

Hey there, PyPI, the Python packaging repository, now contains more than 100000 third-party packages in total. That's an *overwhelming* number of packages to choose from... And this feeling of

Daily Coding Problem: Problem #889 [Easy]

Saturday, September 24, 2022

Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Amazon. Run-length encoding is a fast and simple method of encoding strings. The basic

Animated | Visualizing 140 Years of Global Surface Temperatures 🌐

Saturday, September 24, 2022

Here's a look at 140 years of global surface temperatures, highlighting the ten coldest and warmest years since 1880. View Online | Subscribe Presented by: Explore what 8 billion people means for

The Best Laptops of 2022

Saturday, September 24, 2022

Did You Know?: The stethoscope was invented in 1816 by French physician René-Théophile-Hyacinthe Laennec and motivated by a desire to accurately (and modestly) diagnose heart problems in women. The

Noonification: Monsters of Mars

Saturday, September 24, 2022

Top Tech Content sent at Noon! Private Applications Begin Here How are you, @hacker? 🪐 What's happening in tech this week: The Noonification by HackerNoon has got you covered with fresh content

Week in Review - GTA 6 footage leaks, Revolut gets hacked, and Wipro fires 300 for "moonlighting"

Saturday, September 24, 2022

TechCrunch Newsletter TechCrunch logo Week in Review logo By Greg Kumparak Saturday, September 24, 2022 Hi, friends! Welcome back to Week in Review, the newsletter where we very quickly sum up the most

London Police Arrested 17-Year-Old Hacker Suspected of Uber and GTA 6 Breaches

Saturday, September 24, 2022

The Hacker News Daily Updates Newsletter cover 2022 First Half Threat Report A Semiannual Report by FortiGuard Labs Download Now Sponsored LATEST NEWS Sep 24, 2022 London Police Arrested 17-Year-Old

Startups Weekly - Tiger Global, fickle checks and the difficulty of acceleration

Saturday, September 24, 2022

TechCrunch Newsletter TechCrunch logo Startups Weekly logo By Natasha Mascarenhas Saturday, September 24, 2022 Welcome to Startups Weekly, a fresh human-first take on this week's startup news and

New Python tutorials on Real Python

Saturday, September 24, 2022

Hey there, There's always something going on over at realpython.com as far as Python tutorials go. Here's what you may have missed this past week: When Do You Use an "..." Ellipsis in

What EV Charging Station Apps Do I Need on My Phone?

Saturday, September 24, 2022

Read in Browser Logo for Review Geek September 24, 2022 The great thing about owning an EV is that you don't need to visit any gas stations. But at some point, every EV owner needs to find public

DotLeap 96 - Acala's path to a comeback

Saturday, September 24, 2022

Polkadot at TOKEN2049, first LBP event in Dotsama, SubWallet's metaverse in Bit.Country, and more. ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌