You’re reading Signal v. Noise, a publication about the web by Basecamp since 1999. Happy !

Clarity over brevity in variable and method names

David
David wrote this on 66 comments

Many programmers have a natural preference for short variable and method names. I doubt many would recognize this preference as a trade of brevity for clarity, but that’s often exactly the result. This is especially true if you subscribe to the ridiculous Church of 80-character Lines.

It need not be that way. Writing terse code can be a joy even if you spell things out in abundant detail. Modern programming languages are expressive enough that what you save in laborious boilerplate can be spent on clarity — and you’ll still have plenty of lines left over for a dance.

And most certainly, you’ll hardly ever need to abbreviate anything. I cringe when I see ext for extension, cp for copy, or worse, application-specific abbreviations sure to be forgotten two months after you left the project.

At times being exceedingly clear will seem almost silly at first glance. The name of the method or variable can be longer than the operation being performed! But the silliness quickly dissipates the first time you return to a piece of code and know exactly what it does.

Here are a few examples of long method names from the new Basecamp code base:

def make_person_an_outside_subscriber_if_all_accesses_revoked
  person.update_attribute(:outside_subscriber, true) if person.reload.accesses.blank?
end

def shift_records_upward_starting_at(position)
  positioned_records.update_all "position = position - 1",
    ["position >= ?", position]
end

def someone_else_just_finished_writing?(document)
  if event = document.current_version_event
    !event.by_current_creator? and event.updated_at > 1.minute.ago
  end
end

If you work hard at being clear in your naming, you’ll also rarely need to write comments for the code. Comments are generally only needed when you failed to be clear enough in naming. Treat them as a code smell.

“The UNIX System: Making Computers More Productive”, from 1982. Brian Kernighan, Dennis Ritchie, and Ken Thompson talk about what UNIX is, how to use it, and show off some live coding too. Thanks to Tony Arcieri for sharing this!

I have learned an important principle: simple things work, often to our dumbfounded surprise, for we tend to distrust the simple and strive for the complex.


Richard Cracroft, “Our Trek Through the Wilderness”
audia7detail.jpg

Nice design detail on the Audi A7. The distinctive up-sloped shape of the rear side window is echoed inside on the door handle trim.

Jason Fried on Sep 7 2012 23 comments

Uber's magic: A ride, not a transaction

Jason Fried
Jason Fried wrote this on 20 comments

I haven’t met someone who doesn’t like Uber. Drivers included. Every time I take a ride with Uber I chat up the driver to see how they like it. They love it. They rave about it. They feel liberated. They feel in control. They feel modernized. And they love getting paid faster (and more – Uber takes a smaller cut than a traditional limo/car company).

But what I really love about Uber is how they’ve smartly focused the full experience on the ride, not the ride plus a transaction.

This is a fundamental shift – and a stellar example of designing the whole customer experience.

Cabs and traditional limo rides have always ended with a transaction. They pick you up, but before they drop you off you have to transact. You give them money, or give them a card, you wait, they give you change or charge your card, you have to think about tip, and then you get out. It’s like a retail store, except that I’m not going in to buy something, I just want a ride. That whole process hasn’t been rethought for decades.

Since you store a credit card on file with Uber, and since the Uber rate includes the tip, you just get in the car and get out of the car. The transaction happens, but it doesn’t happen in front of you. It’s not a condition, it’s not a step, it just happens behind the scenes, automatically, so you don’t have to bother. You call for a ride, you get a ride. That’s Uber.

Yes, there’s a downside – you don’t know how much the ride is when you pay for it. But no matter what it is, you’d be paying anyway (you can’t choose not to pay after you get to your destination). This is just about where the transaction happens – in your way or out of your way. Uber bet it’s best out of your way. I think that was the right bet. It was a risk, but they took it and they made the experience better.

Join our Trans-Atlantic Support Team!

Emily Triplett Lentz
Emily Triplett Lentz wrote this on 15 comments

We’re looking for another support team member! Specifically, we’re seeking a native English speaker in the GMT zone or thereabouts, so our poor Jim doesn’t have to work alone in the UK while the rest of us are snoring soundly!

You’ll be responsible for providing tremendous customer service via email for Basecamp, Basecamp Classic, Highrise, Backpack, and Campfire. You’ll also help us answer questions via Twitter, create and edit help documentation, and maybe run some online classes.

You’ll be expected to answer about 75 emails per day once you’re fully up to speed (2-3 months or thereabouts). This is a significant volume, so be sure that you’re ready and able to deal with that kind of daily load – you’ll get all the love and help you need along the way!

We’re looking for some great writers who love helping our customers, so you should enjoy making complicated situations simple and painless and have a passion for our products.

If you want to join me, Ann, Chase, Jim, Joan, Kristin, Merissa, and Michael in making our customers happy, please apply!

How to apply

Please submit a cover letter explaining:

  • Why you want to work in customer support.
  • Why you want to work at 37signals and not somewhere else.
  • A description of a great customer service/support experience you had recently, and what made it great.

Also, pick three of the questions from customers below and answer them like you would if you worked here:

  • Does the new Basecamp offer time tracking?
  • Is the new Basecamp offered in any other language besides English?
  • I’m interested in your products, but not sure which one is right for me. What’s the difference between Highrise and Basecamp?
  • I’ve been a Basecamp Classic user for years and see you have a new version. What’s the difference between the versions, and why should I switch?
  • Is there a reporting function in the new Basecamp?

We offer heaps of lovely benefits, plus a progressive work environment. Starting salary is $45k USD, depending on experience.

Email everything to [email protected]. Include “Customer Support” in the subject line. If you’re attaching a resume, please send it as a PDF. Note: We look favorably on people who get creative with their applications.

We look forward to hearing from you!

Good Enough

Jamis
Jamis wrote this on 16 comments

My great-grandfather, Joe Buck, was a no-nonsense man who did carpentry much of his life. In an interview I did with my grandfather about ten years ago, he described one experience with his father that particularly exemplified Joe’s attitude toward life.

While building the LDS Santa Clara chapel in Eugene, Oregon, he told his son to go take care of some job, and told him how to do it. My grandfather went and took care of it as instructed, and returned, declaring the job done.

Joe wanted to inspect the work first, though, so they went to the job site together and looked it over. Joe identified several things that needed improvement.

My grandfather, as any son would, said, “But Dad, it’s good enough!”

“No,” said Joe. “It’s not good enough. It’s not good enough until it’s right. Now fix it.”

37signals invests in The Starter League

Jason Fried
Jason Fried wrote this on 49 comments

Today we’d like to announce that we’ve bought a stake in The Starter League. This is the only investment that 37signals has ever made in another company.

What is The Starter League?

The Starter League (formerly known as Code Academy) is a small school in Chicago that teaches Rails, Ruby, HTML/CSS, and User Experience Design. The classes are intensive, three months long, two or three days a week, and taught in person. The goal is to go from knowing nothing to being able to build and ship software. Not the best software ever written, but something real, workable, and distinctly your own.

Here’s why we invested.

A little over a year ago I met Neal Sales-Griffin. He came to take a free one-night Ruby course that was being taught at our office. I was in the audience too and Neal was sitting behind me. After the class he introduced himself and we chatted for a bit.

Neal had been trying to learn HTML, CSS, and Rails on his own. He holed up in his house, bought every well-reviewed book on the subject he could find, read them all, and spent countless hours trying to go from no knowledge to just enough knowledge to be able to build the basics of whatever he wanted.

Problem is, he couldn’t. And it’s not because he’s an idiot – he’s anything but an idiot. But he just couldn’t learn from books or online tutorials. They only got him as far as the examples themselves. He wasn’t learning how to think, he was only learning how to put this code in front of that code to build whatever the book or tutorial prescribed.

Further, he didn’t feel like online tutorials or books encouraged him to make a definitive commitment to learn the material. They were too passive. He was looking for immersive. He wanted to go all-in, not just dabble in his free time.

He knew there had to be a better way. But there wasn’t.

So he said fuck it, hooked up with his friend Mike (his co-founder), and built the school that they wished already existed. They tapped Jeff Cohen, recognized as one of the best Rails teachers in the world, to be the first teacher. They were lucky that Jeff just happened to live in Evanston, just outside of Chicago.

They priced tuition for their first 3-month Rails class at $6000. They put up a simple web site and announced that they were accepting applications. And soon enough they had more applications than they had spots. So they added another class (which still wasn’t enough to cover the demand). With nearly $200,000 in tuition revenue, they bootstrapped their school to profitability before the first class even graduated.

Now you can see why we like these guys. Self-starters, bootstrappers, talk walkers. They built something for themselves on the hunch that there were plenty of people out there just like them. And they were right.

Just one year later, from a couple of classrooms in Chicago, they’ve graduated nearly 300 students from over 25 states and 12 countries, generated over $1,000,000 in revenues, kept their company small, stayed focused on quality over growth, and maintained healthy profit margins. Remember: All within a year, from nothing, from nowhere, with no outside funding, from a couple of guys who had an idea, the drive, and the dedication to make it happen.

I’ve been watching Neal and his crew build this thing from the sidelines. I love their opinions about teaching, their point of view, their philosophy about requiring commitment to learn something new, their hustle and hard work, their focus, and their genuine interest in making something that matters. These guys are doing something amazing, and they’ve only just begun.

We also have strong opinions about teaching. Teaching is core to 37signals – from our books REWORK and Getting Real, to our blog Signal vs. Noise, to our many speaking engagements at conferences and universities around the world. We even dedicated about 20% of our office space to a classroom.

So a couple months ago, Neal and I began talking about how we could work together. How could 37signals help The Starter League teach students something they couldn’t learn anywhere else?

After a few lunches and discussions with Neal and Mike, we saw the way forward. We knew how 37signals could help.

So we decided to go all-in and buy a small, non-controlling, non-voting slice of The Starter League. This isn’t the kind of tech investment that you’re used to reading about. We’re not looking to get out, we’re looking to stay in. We’re investing because we want to help these guys build the best place to learn how to ship software and build profitable software businesses. No school like this exists, but it will. The Starter League will be this school.

So that’s where we are today.

Where do we go from here?

This isn’t just a cash investment – it’s a sweat investment, too. Here are the other ways 37signals will be investing in The Starter League:

  • 37signals will host an all-new Rails for Designers class in the 37signals office starting this fall. The class will run on Tuesdays and Thursdays from 3-6pm. Tuition will be $6000.
  • 37signals will take at least one intern per quarter from the current Starter League class. The internship could be in Rails, design, or whatever other classes are taught.
  • 37signals will help The Starter League develop curriculum around 37signals-style practices of software development.
  • 37signals will help The Starter League design the best student experience in the business.
  • Various people from 37signals will serve as mentors and guest speakers during The Starter League classes.

…and I’m sure plenty more as time goes on.

So if you’re looking to learn how to build a web app from scratch, The Starter League can help you get where you need to be. No experience required, either. Let’s learn together, let’s build together, let’s make great products and profitable companies that last.

We’re now accepting applications for the fall sessions, including the all new Rails for Designers class (hosted at the 37signals office) and Ruby Dojo, the all new advanced Ruby class.

Here we go!

RELATED:

A great customer experience: Nuts.com goes the extra mile

Jason Fried
Jason Fried wrote this on 35 comments

I recently ordered some stuff from Nuts.com.

During checkout, they offered upgraded heat-resistant packaging to help prevent melting due to the hot weather. That was a great step. That alone is more than most would do.

However, then they went the extra mile.

Right before the final checkout step, they explained that the upgraded packaging is good for about two days, but since I ordered on a Friday, my shipment might sit at the UPS/Fedex warehouse over the weekend which would push it out beyond two days. Then they made it really easy for me to change my ship date to Monday to help prevent the melt.

That’s great defensive design. You rarely see it done so well – especially with the collision of all these special conditions (product type, weather factor, packaging type, weekend factor).

Great copywriting, too.

Very well done.

Paul Horowitz and the real 37 signals

Jason Fried
Jason Fried wrote this on 18 comments

This morning I get into the office and there’s an envelope addressed to me sitting on my desk.

The return address says “Horowitz”, Physics Dept, Cambridge, MA. I don’t know a Horowitz, but it looks like a Harvard address, so I’m intrigued.

I open it up.

Inside I find an article from The Astrophysical Journal, published in 1993. The authors are Paul Horowitz and Carl Sagan.

At the top there’s a handwritten note, signed Paul Horowitz. And on the first page there’s a highlight behind “37 candidate events”.

People have often asked us what 37signals means. Our original web site explained the origin of the name.

And now, because of the generosity of Paul Horowitz himself, we have a signed copy of the actual article where the 37 signals were first mentioned. Here’s a PDF of the article if you’d like to browse the whole thing.

What an unexpected and wonderful surprise, and another great example of unrelated events coming together to produce something you never expected.