AMA with

David Heinemeier Hansson

Creator of Ruby on Rails, founder & CTO at Basecamp

22nd February 2017, 4:00 pm

This AMA is over!

Thank the host

Why are enterprise products and companies leaned towards ASP .NET and JAVA platforms so much? Why they don't opt for PHP, RoR, Python, Node.js etc.?

Do you see that changing anytime soon? I know that as of know people say that it is because of large ecosystems and because they are statically typed languages which supposedly helps in large codebases.

Enterprise pursuits are often about things much different than technical excellence. They're about things like cover-your-ass, long-term support contracts, and solutions sold not directly to end users but to managers far removed from it.

In such an environment, it's the old adage that "nobody got fired for buying IBM". The technical merits are far less important than the appearance of making a good choice. And what better appearance than having Oracle or Microsoft's stamp on the box.

This worldview then relates perfectly with the notion that programmers must be protected from themselves. And through statically typed analysis and restrictions, we can ensure that it's less likely that people hang themselves with the ropes of freedom.

What do you think of the Node.js ecosystem? Do you try new languages/technologies on a regular basis?

I think the energy unleashed by material steps forward in the JavaScript language is awesome. I've really warmed up to JavaScript since ES6. It's so much less painful of a language than it used to be.

But I don't agree with a lot of the stuff that's going on in the ecosystem. Things like these massive transitive dependency trees to do the simplest things just seem nuts to me. So does the infatuation with ludicrously complicated architectural patterns like Redux as well.

I certainly wouldn't want to write all of Basecamp from scratch in Node, but I am very happy to see that all the energy is helping to level up JavaScript as a whole. Because we can't avoid working with JavaScript to some extent if we want to work with the web.

What is your take on single page apps?

I think they're vastly overused, but that's to be expected. It's still novel that you CAN create an entire web application exclusively through presentation generated dynamically through JavaScript. I happen to think that's generally a huge waste of time and effort for a lot of domains that don't need that level of fidelity, but so it goes.

So I personally try to restrict our use of full-stack/client-side MVC type development to a few areas where it really matters. For example, we've written an entire WYSIWYG editor from scratch using that, and then we embed that concept on individual pages.

But for the bulk of Basecamp, we're far more productive by using Turbolinks to provide the feel and speed of a SPA, without actually going through the horror of, say, a full React+Redux architecture.

Hi David,

This is a business question for you.

Some people whose businesses I like built platforms on which others can do work. Here are three examples:

  1. Matt built WordPress: A platform on which people can build a website or blog.
  2. You built Rails: A platform on which people can build web applications.
  3. Derek built CD Baby: A “platform” on which people could sell their CDs.

Do you think intending to create a platform is a wise idea on which to start a business? Or, is creating a platform something you stumble into as a side effect of making something else (like Valve creating Steam, you creating Rails to build Basecamp)?

I noticed Evernote tried, but failed to intentionally shift their product to be a big platform for developers. Maybe this is because the move came from Evernote, instead of customers requesting it.

Thanks. I appreciate your writing.

I think chasing platforms is completely overrated. I'm sick of fucking platforms. How about people just make something directly useful rather than just extract rents from others making things useful on top of the thing you're doing.

Of the three examples you mention, Rails is explicitly not a business. I don't want it to be a business. I don't want to be the toll keeper taking my cut on the way out. No thank you.

I loved Practical Object-Oriented Design in Ruby by Sandi Metz, and felt like my design thinking took a great leap forward from that book. Are there any other books or code to read/write that you'd suggest for improving software design skills?

How do you manage the time between various activities which are not related to each other?

( I get this one a lot to myself, and not able to answer yet)

By having reasonable boundaries, such as a baseline expectation that I won't spend more than 40 hours per week working. Then I have time to pursue other hobbies and interests without killing myself or my 8-9 hours of sleep every night.

Things also come and go in phases. Certain parts of the year are heavier on racing and then lighter on open source contributions. And vice versa.

Don't try to do it all at 100% at once. Doesn't work.

  1. What are your takeaways as a Leader?
  2. What would you change in the modern world (regarding tech or not)?
  3. What distinguish a great software engineer/architect from the one of the best?
  1. Ensure that the people working for you are motivated. The trifecta of motivational sources as detailed by Daniel Pink in Drive are a good start: Mastery. Autonomy. Purpose.

  2. I wish you could buy a proper baguette in the US.

  3. The most effective people are those who can restate the problems. Turn hard problems into easy ones by finding the unnecessary bits to omit.

What's the best approach to use react.js or vue.js with Rails?

Rails 5.1 will come with built-in Yarn support and optional Webpack support. That'll be a great combo for starting on both of those frameworks. There's also React on Rails to look at.

What tips would you like to offer to first time entrepreneurs who are confused between VC funding and bootstrapping?

If you have any option at all to bootstrap, for heaven's sake, try that first. I've written about the challenges and trade-offs at length in this piece called RECONSIDER:

If you were 20 something today and had the itch to build an online business, how would you go about picking up an idea and implementing it?

I think the best odds remain in building business software for small to midsized businesses. All the dynamics there reward starting small, bootstrapping, and being your own commander.

I find it's very hard to properly work agile (Scrum or Kanban) without the team being "in the same room" at least a full day a week. Hangouts and/or Slack don't come close to standing in front of a white board to figure out design or architecture issues. Dragging tickets around in Trello doesn't bring the same energy as walking around during a meeting with a sticky note on your fingertips.

What would be your advice?

"Proper agile" has the same connotations to me as "Real Programmer". It's not something I worry or care much about, as a certification.

Look at open source. How many projects have all their contributors meet in the same room every week to do work? Almost none of them. Yet some of the most impressive achievements in programming were done like this. Being present in the same room is clearly not necessary.

I find that it's less a matter of technical necessity and more one of social needs. Some people just need/like to hang out with other humans for work often. Totally fine. You should find a work setup that makes you happen. Just easier to do so if you're honest why you need the things you do.

What's your take on Progressive Web Apps and their near-future potential? What do you think are the chances they take over mobile from native apps?

I think most web development tooling has a lot of inherent productivity benefits over native development, so as web apps become more capable, they'll win back terrain originally given up because you simply couldn't do certain things or it wasn't fast enough before. At Basecamp, our native apps are mostly navigation shells around web content. But we do level-up some key interactions to native. Mix'n'match is where it's at.

There seems to be growing interest in Elixir and Phoenix among Ruby on Rails developers. What's your take on Elixir and the Phoenix framework?

I think that's great. Love the idea of Elixir that you can take some good, old ideas, like Erlang, and improve the ergonomics such that they appeal to a modern audience. But for me, personally, they don't solve any problems that I have with a Ruby on Rails stack to be worth the downgrade in language and ecosystem.

What Modern Javascript Web Frameworks seem quite interesting to you recently?

React had a wonderful core concept of blow-away and re-render the world. I'm less enamored by the rest of the flow and I'm positively revolted by Flux/Redux, but the base idea is solid.

React seems a unanimous answer :)

What's the second most beautiful language after Ruby?

Hi David, thank you for hosting this AMA! Being the CTO of Basecamp, do you still get to code as much as you'd like?

Absolutely. I spend tons of my time programming. In part because we've kept Basecamp small. Just 50 people at the company. Less than 20 in product development. Amble time to program.

My favourite tech person and entrepreneur DHH. "Getting Real" is the bible for PM. Thanks #Hashnode for this. Who inspired you to create ROR ? And what are the most difficult things you faced when you started "Basecamp" ? Thanks for the AMA.

Hey. Rails wasn't created so much out of inspiration as it was out of need. When I started using Ruby to build Basecamp, there just wasn't a lot of the fundamental pieces you'd want for easy creation of web applications. But I loved the language, so I thought I'd just build it myself.

Part of designing the framework was inspired by lots of sources, though. There's the Patterns of Enterprise Application Architecture by Fowler that became a blueprint for several elements, especially Active Record, and there were earlier Java frameworks like Struts and Webwork that gave inspiration too.

Hi David, If you were in the absurd condition of not being able to use Rails, which existing web framework would you use to write the next version of Basecamp and why?

I'd probably still write my own somehow. I'm too damn particular about it.

How are you ?

Depending on the day, somewhere within this range: 😍😁🙄😞☹️😣😱😵😡.

Okay. ( I guess )

I saw your recent complaints about the absurdity of programming challenges during job interviews. It is very silly making a someone write an algorithm on a whiteboard to measure his/her ability. What techniques do you use to evaluate potential hires at Basecamp?

Indeed. There's no substitute for looking at real work product and evaluating that. So that can either be commercial projects the person has authorization to share, it can be open source, it can be hobby projects, it can be something made for the occasion. But it has to be real.

What's your recipe for being a focused person?

Working on things that I truly care about and that brings me joy. I am the most scattered, unproductive person when it comes to doing things I don't want to do.

Do you think OpalRb worth wrapping ES6? Especially with upcoming HTTP2 that would allow tighten integration through different RPC style techniques. Do you believe a single language project development ecosystem makes that sense?

Single language development doesn't have much purchase on me. JavaScript has gotten better enough with ES6 that it's not worth the leaky abstraction of trying to wrap that in Ruby.

@dhh What was the route you took to go from an intermediate programmer to an advanced programmer? What are the skills you look for when you hire at Basecamp?

Hi David, How are you, how's your family? Did you rest enough on Seychelles? Is it worth of visiting?

From me just a note: Thank you for writing and publishing thoughts that every reasonable IT person feels and understand but somehow nobody saying directly as you.

Things about Remote Work, Software Testing, YOUR SOFTWARE JUST ISN’T MISSION CRITICAL and so on.

Thanks, man!

Thanks for the kind words! Seychelles were great.

How did you get into programming?

I wanted programs! Particularly, I wanted programs for the web. So I started by learning HTML + CSS. Then a bit of ASP. Then some PHP. Then found Ruby 😍

Hey David! Choose one Tesla or Porsche :) ?...and can you describe why one over the other

Electric propulsion is clearly the future, but Tesla's design and build doesn't do it for me. So a Porsche with an electric motor for me please :)

Hi David,

How do you think about the rapid changes on front-ends, and what's the effect towards full stack frameworks like Rails?

I understand why many people are fatigued by it. There's a lot of churn with questionable forward movement. But still, there are glimmers. I'm happy to have us provide better support in Rails 5.1 with Yarn and Webpack.

Do you think that being a lead/manager is the only way a developer can grow? I like programming and solving problems. With this kind of role, I find myself not so much focused on the programming aspect. Is this natural and does everyone has to face this?

Absolutely not. Becoming really good at the craft is an honorable pursuit and can be very lucrative too. The worst thing you can do is start doing work you don't really like just because you think that's what you're supposed to do.

Do I need a Degree?

Joint bachelor's degree in "computer science" (really, informatics) / business administration.

For someone just getting started in this industry and trying to get a feel for languages, what makes Ruby better then PHP and by extension, Rails over Laravel?

On a philosophical level, I've tried to answer this in the Rails Doctrine: But on an aesthetic level, you'll have to read some code and play with multiple languages to get a sense of what's right for you. You can everything anything in anything, so it's not a functional barrier or choice any more. It's a philosophical, aesthetic, passionate one.

Hi I'm a front-end developer at Dipper Technologies Pvt Ltd which uses Ruby on Rails to power it's back-end. I also keep on fiddling with frameworks & libraries from other languages such as PHP Laravel, React / Vue, Next /Nuxt etc.

There has been a significant shift in the app usage pattern from webapp to mobile apps. The mobile apps, Android or iOS can be developed using Javascript. And for that React, Angular and Vue are the goto libraries for frontend engineers . Rails5 API support is sublime, but the frontend support for web apps isn't. Still it's easier to configure jQuery with Rails web app than React / Vue Js. PHP Laravel supports Vue out of the box, so is there any plan to make React / Vue integration really smooth with Rails ?

Checkout Rails 5.1. Built-in Yarn for managing JS dependencies and optional integration with Webpack 👍

Do you think software products are more useful that don't present themselves as an "all in one" solution for something? For instance, did you consider, then decide against rolling Highrise into Basecamp?

You have to draw your boundary somewhere. But for Basecamp, our whole pitch is that it's an integrated solution with everything you need to communicate and coordinate within a small growing business.

Highrise is more geared towards sales, leads tracking, and such. Different domain.

Hi David, You have said in the past that a lot of enterprise software sucks. Can you point out a specific industry/category where there is an opportunity to build a sustainable business. Thanks.

Small business software. There's an endless supply of problems suitable for bootstrapped software businesses.

Is working as a remote sole developer suitable for growth in software engineering? I mean, a sole remote dev learns most of the stuff on their own.

I worked as a sole developer creating Basecamp and Ruby on Rails. So you can certainly get started that way. But it's good to be connected with other developers either at work or through open source communities. There's no merit badge for being a hermit.

Don't you guys get bored of working on Basecamp all the time?

14 years and counting, not so far!

Do you have any engineers that in opposite time zone to you? I really love to know how you manage the team. I've been a long time fan of Signal v. Noise blogs and the Rework book.

We always try to be within 4 hours of Chicago. It's too hard if someone doesn't overlap at all. We covered this and more in detail in our book REMOTE.

How do you build traction for a "development platform" company? How do you raise awareness within all the noise in your field? I'm a founder of a platform company and it feels like herding cats.

You have to build an audience who cares about what you have to say and you have to solve problems that people actually have. I don't think there are any shortcuts in that regard. It took years and years before Rails took off as well.

Hi David, I like developing with Ruby On Rails or Laravel in my spare time but in my job we use Drupal. I like the hands-on approach and control something like rails gives me but I miss the fast out-of-the-box backend/admin interface that you can pretty much give to a client "as is". I looked at the available admin solutions for rails but haven´t found something that works for me. Do you have a goto solution for something like that, do you copy-paste from old projects or do you build a backend from scratch every project?

I'd love to contribute to Ruby on Rails, but I'm still a Rails developer after a few years and not a contributor. Maybe this question is too broad, but do you have any tips?

The best thing you can do is scratch your own itch. If you hit a feature you really need, or, even better, a bug or inconsistency that annoys you: Dig in and see if you can fix it. Second best, trawl the issues tracker and find something that interests you and see if you can fix it. Or you can help with the documentation to explain something that's poorly described better.

Thanks for wanting to help!

What job did you have before creating RoR?

I worked as contract developer, mostly doing PHP.

What's your take on MVC? Many frameworks from PHP to JS have been going on the theory of MV* (Model, View, Whatever). How do you feel about this approach? Do you see controllers as an important part of web programing?

MVC is the bedrock. It's the key pattern in web development to make sense of the major elements. Rails is forged out of the MVC rock.

Refer to your tweet(, can you shed some light how do you select a developer for your company?

How many applications do you receive for a job opening? And how many do you interview and have them working on a project? Can you share some kind of projects you have them doing before hiring them officially?

Is there anything a candidate can do to blow up a possible offer after your initial screening of applications?

I think we usually get between 100 and 300 applications. Then we usually cut that down to 10-20 candidates that we'll talk with on the phone. Then we usually have 3-5 finalists where we may give them a one week paid trial project or we may just decide based on the work product provided.

Candidates can surely be dropped at every step. Either the work product isn't strong enough or they're not good writers or they're just not someone the people interviewing would like to work with.

Hi David, It's 2017 and frameworks in other enterprise-y languages have copied the USP's of RoR like Convention over Config and MVC /separation of concerns, ORM which works well ,why should anyone start or learn RoR now if they are already familiar working in enterprise-y language , so is it worth for say a developer who is familiar with ASP.NET MVC using C# or Django using Python to learn about RoR ? Do you think it would be worth the effort to learn Ruby and then RoR for such developers ?

I know Basecamp doesn't hire until someone at the company tries the job first. Have you and Jason handled nuts and bolts work like accounting, setting up health insurance, and legal paperwork? Did you learn those topics in business school?

You bet! We used to do all that stuff. It wasn't until, I think, 2009 that we hired an office manager. Jason and I have done all of it. From setting up insurance or typing in expenses for accounting. It might seem daunting, but be reassured that there are millions and millions of small business owners that figure it out every year. So why wouldn't you be able to? Also, you can use freelance accountants and insurance brokers to help you.

What do you think about Swift for server side programming? Have you had time to check it out? What are your opinions about the language in general?

Swift looks like a level-up over ObjC in some regards for iOS, but also a step backwards in others. It's less dynamic, less late binding. I don't see any reason why people would want to use Swift for server-side programming, but hey, whatever floats your boat!

What is the reasoning for dropping the subdomain structure for the base of the URL (eg. used in Basecamp 2 and instead use an UID (eg. for Basecamp 3?

One less thing for people who sign up for Basecamp to worry about. URLs have never mattered less. Lots of browsers are hiding most of them by default now.

What is your take on Pirate Metrics (AARRR)? If positive, how you see this ideally implemented in startups?

I had never heard of that before.

If you are given choice to write Basecamp in PHP 7.0, an improved version of PHP now, will you go for it?

No. All Ruby for me, por favor.

What are some of the strategies that helped you succeed?

At such a high level, the answer is bound to be pretty vague: Keep striving. Don't think you're learning by repeating the same lesson 10 times. You need new lessons. You need to stretch.

Do you use gems in basecamp which are not developed by you. Can you give examples and tell us why?

You say Phoenix doesn't solve your problem with Rails. I would really like to know what are the challenges you face with Rails?

Making ever more beautiful code ever more quickly. Performance per se hasn't been a problem that I've personally spent that much time worrying about. Explained further:

Could you expand on "the work product isn't strong enough"?

What do you check? A part from commented code, bad naming and bad indentation. Do you consider tests, or the architecture itself?

Good writers = native speakers?

Were you born a computer prodigy? You seem so good:)

Would you please gimme feedback on my idea? A marketplace to buy / sell a used tesla. Rev model would be great! and do you own a tesla?