If you’re part of a collective, both of the following can be true at the same time:| Jorge Manrubia
We just went through a selection for a junior position at 37signals. This is a $146,000/year position for individuals with less than three years of experience, offering the opportunity to be part of a team of world-class programmers and learn from them. That’s the hell of a deal! The selection was based on competence. No referrals, no ...| world.hey.com
This question applies to most people, and it certainly applies to me: does it make sense to write without an audience? It does. One of my favorite books is Pragmatic thinking and learning by Andy Hunt. It's a book about how our brains work, which is a subject I find fascinating. A core concept it develops is how our brains operate in t...| world.hey.com
I recently worked on improving the inbound email analysis system in HEY. This system analyzes every email that hits HEY to decide whether it should flag it as spam, bounce it, or warn the user about specific problems such as having a forged sender or containing a virus. In its current form, the system was making it difficult to add som...| world.hey.com
Nobody loves urgencies, but a sense of urgency is a blessing. It protects you from overthinking and underdoing, from contemplating when you should be building, and from getting lost in discussions when you should be making calls. Timeboxing and having a sense of urgency are inextricably linked. On the one hand, without a sense of urgen...| world.hey.com
I joined 37signals five and a half years ago. I don’t think this is the right company for most people or that most people are a good fit for it. At the same time, I know this can be a dream job when there’s alignment on both sides. Here’s the whole deal from my very personal point of view. Let me start with the most challenging part: t...| world.hey.com
I recently made a point about the disconnection between good programmers and formal degrees. I also expressed my skepticism about universities being the best option for becoming a good programmer in the future, with LLMs being a disruptive factor. I want to elaborate on the reasons. | Jorge Manrubia
A precious moment when working on an idea is seeing the first spark. There is no fire yet, but you sense the potential for the idea to burn brightly. Sometimes, this moment comes after building a lot; other times, just a bit is enough. But sparks aren’t born from pure contemplation—they find you with your hands dirty. A few weeks ago, ...| world.hey.com
If you have the luxury of starting a new Rails app today, here’s our recommendation: go vanilla. • Fight hard before adding Ruby dependencies. Keep that Gemile that Rails generates as close to the original one as possible. • Fight even harder before adding Javascript dependencies. You don’t need React or any other front-end frameworks,...| world.hey.com
I’m skeptical about Bluesky debunking X in the long term. Two reasons: First, the main motivation for the recent so-called exodus is political, not product-based. It’s very hard to debunk a long-established product with a clone. Second, I’m skeptical that a social network that is both ideologically charged and philosophically good with...| world.hey.com
When it comes to system tests in Rails, I fully agree with David's vision: their benefit/cost is tiny just because their cost is huge. They are a pain to write because of the poor feedback loop and a pain to maintain because of their brittleness. They make deployments slower. And they don't save you from having to test things manually....| world.hey.com
One of the hardest things about shipping products is balancing this contradiction: you want to do the best possible work everywhere, but optimizing every piece takes time, and time is finite.| Jorge Manrubia
I gave this advice to someone today: don't discuss work things at the chat. Go async... always.| Jorge Manrubia
The popover drama started with a tweet about how a HEY Calendar popover loaded slowly on a throttled internet connection. Then, a heated discussion followed in the best social media way, including nuance-free hot takes and professional trolls. The funny thing is that the popover example is not even a good one to fuel a SPA vs. HTML-Ove...| world.hey.com
The best things happen after uphills. That’s one of those counterintuitive life lessons. Our brain seems to demand downhill: predictability, certainty, and ease. But the satisfaction downhill brings is shallow and ephemeral. What’s worse, too much downhill brings boredom, and lack of motivation is no joke. Of course, some uphills are t...| world.hey.com
I don't think creative processes benefit from democracy — quite the opposite. After presenting the new Turbo 8 stuff in Rails World, some people opined that Rails needed to improve collaboration in the frontend space. I got a variant of this question in a couple of podcasts, which also happened when we released Active Record Encryption...| world.hey.com
This article was originally published in the 37signals dev blog. We published a demo showing how Page Refreshes with morphing work in Turbo 8. Comparing code helps a lot in software discussions, so I thought it would be valuable to show how the new feature compares to Turbo stream actions for performing partial updates and broadcasts. ...| world.hey.com
This article was originally published in the 37signals dev blog. You are an individual contributor at heart. You like writing code and solving technical problems. You dislike meetings and ceremony. Here’s what you can do to maximize what you like and minimize what you don’t: radiate information. The daily standup meetings that Scrum po...| world.hey.com
I recently published two articles in the 37signals dev blog related to how we will improve page updates in Turbo 8. • A happier happy path in Turbo with morphing. What we will do. • Exploring server-side diffing in Turbo. An investigation of an alternative approach to fulfill the same vision. I hope you like them!| world.hey.com
• Have side-projects / don’t have them. • Do open source / don’t do it. • Have tech-related hobbies / have completely unrelated ones. • Have children / don’t have them. • Work long hours / never put in an extra hour. • Small and risky / large and secure. • Work for others / work for yourself. • Work out of passion / work to pay the bil...| world.hey.com
This article was originally published in the 37signals dev blog. Accessing personal information from customers is a serious matter. With the launch of HEY in 2020, we developed some technology and processes to support a very simple principle: employees shouldn’t have access — intentionally or unintentionally — to personal information f...| world.hey.com
Back in the day, I wrote some notes on the puzzling question of why so many people act so maliciously toward others on social media. A book introduced me to the concept of moral outrage, which brought some answers to my questions. A recent tweet by Dr. Jonathan Shedler referred an article that suggests a pretty different angle: the pri...| world.hey.com
I’m fascinated by the sensations that the things we use induce in us. Not their usefulness, suitability, ergonomics, or aesthetics, but sensations. I don’t have a better term to capture something as substantial as difficult to describe, but I can illustrate with some very personal sensation-driven opinions: • Zelda Breath of the Wild’s...| world.hey.com
You don’t need an audience to put writing work for yourself: • Writing can let you access things you know but can’t access deliberately. This is a powerful and utterly counter-intuitive insight. • Writing down assorted ideas as they pop up in your mind will bring all the benefits you are looking for here. In my experience, formalities ...| world.hey.com
I learned about Benjamin Zander in 2011. I was reading Resonate by Nancy Duarte, and she used his Ted Talk from 2008 as a case study in one of the chapters, to illustrate several concepts on how to deliver presentations. Nancy Duarte knows one thing or two about presenting, so her description of him as a "master communicator" caught my...| world.hey.com
This article was originally published in the 37signals dev blog. Nitpicking in pull requests reviews means offering insight that looks excessive, pedantic, and unimportant. It’s a pejorative term. I don’t question there are cases where the term applies, but many folks assimilate it to paying attention to the small stuff. By projecting ...| world.hey.com
There is complex and there is difficult, they are not the same. Being able to run a marathon is very difficult. But what you have to do to prepare is simple. A small sheet of paper is enough to describe the steps. You will need tremendous effort and discipline - so it’s hard - but it is simple. Software development is different: it is ...| world.hey.com
This article was originally published in the 37signals dev blog. Sacrificing purity for convenience is one of the Rails pillars. This principle informs several Rails features that some recommend avoiding but that we happily use in our apps. In this post, I’ll discuss how we use three of those in Basecamp. I’ll show some examples involv...| world.hey.com
Internal energy is tricky. On the one hand, energy is more reliable than happiness. I liked this reflection by Jocko Willink in the Huberman podacast. Everyone experiences joy and sadness as part of their daily lives: keeping a certain energy level is more feasible than a certain level of happiness. On the other hand, as with anything ...| world.hey.com
I recently started working on a new thing at 37signals. We have a blank slate in front of us, and nothing is set in stone, which means we are moving fast. I find myself creating meaty pull requests every day. This is how every single pull request I open ends: This is just a reflection of how, most of the time, I write tests at the end....| world.hey.com
I've worked fully remotely for the last ten years. I find the discussion about remote work fascinating. Is remote better or a lesser evil? Is a decision full of tradeoffs? Something that works in some circumstances, but that is not a good default? As with every complex subject, people – me included – love to reduce it to a dichotomy. A...| world.hey.com
Imagine a problem you can't understand without solving it first. The first time I saw software development described as a wicked problem was in Code Complete by Steve McConnell, and I haven't seen anything but a constant validation of this proposition throughout my career. And it's a paradoxical one with several counterintuitive coroll...| world.hey.com
Rails concerns have received much criticism over the years. Are they the solution to all the problems or something to avoid at all costs? I think a problem with concerns is that you can use them however you want, so no surprise you can shoot yourself in the foot when doing it. After all, concerns are just Ruby mixins with some syntax s...| world.hey.com
Back in college, they told me that I would start my career writing code, but eventually, I would move to a position where I would ask others to code my designs. To celebrate that this turned out to be completely false, here are some assorted reflections as a 40-year-old programmer that looks back: • Compared to my younger versions, I f...| world.hey.com
Fractal is about similar patterns recurring at progressively smaller scales. To me, good code is a fractal: you observe the same qualities repeated at different levels of abstraction. This is not surprising. Good code is the one that is easy to understand, and the best mechanism we have to deal with complexity is building abstractions....| world.hey.com
One of the first things I did when I started working at 37signals almost three years ago was cloning the git repo for Basecamp. I poked around and ended up at this method: module Person::Tombstonable ... def decease case when deceasable? erect_tombstone remove_administratorships remove_accesses_later self when deceased? nil else raise ...| world.hey.com
Ceremony at work is those self-imposed rituals people follow to get things done. Too much, and it becomes a burden. Too little, and it's chaos. Ceremony serves two purposes: assessment and communication. Assessment is about making sure you are working on the right problems at any given moment; communication is about getting everyone on...| world.hey.com
Everyone at Basecamp answers this question at least twice per week: "what did you work on today?". We use Basecamp check-ins, of course. It's a simple practice with profound implications and something I would recommend to any company working remotely. These answers are in written form, and anyone in the company can see them and make co...| world.hey.com
Shopify recently published Upgrow: A sustainable architecture for Ruby on Rails. It describes a set of architectural principles to build Rails applications and announces a companion future gem. I was surprised by seeing Shopify endorse this approach. The proposed patterns aren't new. Many people have advocated for them since Rails is R...| world.hey.com