CORECURSIVE #045 David Heinemeier Hansson Software Contrarian 2021年?
数学
Yeah. This is exactly why I literally thought I wasn’t going to be a programmer because I just didn’t have an interest in math problems. I don’t have any interest in algorithms beyond their utility. What I do have a deep, deep affection for is sort of the main modeling in the Eric Evans sense of the word domain-driven design. I love noodling with a business domain. I love finding just the right words. I love breaking the main model apart and all that stuff, which is all sort of logical, sort of semantical, approaches to it. It is not algorithmic, it is not scientific, it’s not math.
Big Tech信仰
But also just on the practical sense, trying to learn from the people who have the 1% problems and apply those to your 99% concerns, is often exactly the opposite of what you should be doing. The constraints and challenges that Google face at web scale are just utterly irrelevant to what the 99% are dealing with. Not only are they irrelevant, the solutions are literally the opposite. Simply, you almost couldn’t go worse if you tried by looking at how’s the Google search engine implemented? What kind of setup does it have? What kind of distribution does it have? And then you try to apply those lessons to how you run your little web app like Base Camp, and I mean you die before you even made it to Hello World because just the construction of that whole rigamarole would kill you as a business.
1%の企業やビジネスでのみ必要な事柄は、残りの99%には必要ない
無関係なだけでなく解決策が正反対
Microservices
I think micro services and the hype around it is probably one of the most damaging trends that has hit web development in the last 10 years. I think very few things have done more damage to sort of the integrity and the productivity of software development teams than the premature application of microservices.
マイクロサービスとそれをめぐる誇大宣伝は、過去10年間のWeb開発に打撃を与えた最も有害なトレンドの1つ マイクロサービスの時期尚早な適用ほど、ソフトウェア開発チーム生産性にダメージを与えたものはほぼない SPA
But then of course as it is, lots of people combine the two, so it’s a fleet of microservices serving a single page application, and that’s just where I go like ka-blam, my head explodes with I would rather retire and fucking make weaved baskets than deal with that shit.
複雑性の誘惑
I think that programmers in particular are susceptible to the siren song of complexity, and they get this kick out of being able to master that complexity. And to wield that complexity, whether it’s appropriate or not, it feels just like a sense of intellectual accomplishment that you can figure out the most gnarly shit on the universe, like a multi-microservices-backed application serving a single page front end application, you can go like, “I am victorious. I beat the computer,” and you can feel good about that.
複雑な問題をうち倒した時に知的達成感・満足感を抱いてしまう
TDD
コードで何ができるかを探索し、理解したうえでテストを書く
I did a whole series together with Martin Fowler and Kent Beck on this topic back from that 2014 talk when I provocatively pronounced TDD to be dead, and I pronounced it to be dead in sort of that Nietzsche sense of the word that God is dead. Like it’s not that God doesn’t exist, it’s that he doesn’t hold the central focal point in our universe anymore.
DBと通信しているので純粋なユニットテスト信者が怒るから DHHは純粋なユニットテストには興味がない、データベース層まで徹底してテストすることでバグや問題が見つかる チャットは有害
Harmful. I think actually the introduction of chat as a main source of company communication has probably been the most hurtful introduction in the history of interactive communication tools. And I say that as someone who built essentially a chat tool just like Slack in 2006 called Campfire, and for many years essentially ran a company on that philosophy. It’s a terrible way of working, and you don’t realize it until you take a step back and look at how your day is spent and how it’s broken up.
Campfireというチャットツールを作ってきた人間として、コミュニケーションツールの中で最も有害 Totally because we’ve all gotten addicted to right here, right now, ASAP, and that is a terrible addiction that is very hard to break. Once you’ve become addicted to ASAP, almost anything else seems insane, I could totally see that.
このような非常識に取り憑かれている
And the cognitive harm that happens through interruptions, that if you can’t seem to get two, three, four hours of uninterrupted time without someone pinging you, interrupting you, it’s not good.
中断なく数時間過ごせないようなら良くない