How AI will change software engineering – with Martin Fowler
### 章节 1:职业起源与 ThoughtWorks 的缘起 📝 **本节摘要**: > 在本章中,Martin Fowler 回顾了他“意外”进入软件行业的历程。由于动手能力差但擅长数学与物理,他从电子工程转向了不需要体力的计算机领域。他讲述了早年在咨询公司 Coopers & Lybrand...
Category: AI📝 本节摘要:
在本章中,Martin Fowler 回顾了他“意外”进入软件行业的历程。由于动手能力差但擅长数学与物理,他从电子工程转向了不需要体力的计算机领域。他讲述了早年在咨询公司 Coopers & Lybrand 的经历,那里不仅是他接触 Unix 和面向对象编程(Object-Oriented Thinking)的起点,也让他结识了职业生涯的重要导师 Jim Odell。随后,他分享了加入 ThoughtWorks 的趣闻:最初作为独立顾问去“救火”,因欣赏公司敢于挑战高难度项目的勇气而正式加入,并获得了一个虽然听起来浮夸但他本人并不太在意的头衔——“首席科学家”。
[原文] [Gergely Orosz]: so martin welcome to the podcast well thank you very much for having me i didn't expect to be actually doing it face to face with you that was rather nice
[译文] [Gergely Orosz]: Martin,欢迎来到这个播客。
[译文] [Martin Fowler]: 非常感谢邀请我。我没想到这次能和你面对面录制,这真的很不错。
[原文] [Gergely Orosz]: it's all the better this way uh i wanted to start with learning a little bit on how you got into software development which was what 40ish years ago
[译文] [Gergely Orosz]: 面对面确实更好。我想先从你是如何进入软件开发领域这个话题开始,那大概是40年前的事了吧?
[原文] [Martin Fowler]: yeah it was yeah it would have been uh late 70s early 80s yeah i mean like so many things it was kind of accidental really
[译文] [Martin Fowler]: 是的,确实是。大概是70年代末80年代初。就像很多事情一样,这其实挺偶然的。
[原文] [Martin Fowler]: um at school i was clearly no good at writing because i got lousy marks for anything to do with writing really yeah oh absolutely um but i was quite good at mathematics and that kind of thing and physics so i kind of leaned towards engineering stuff and i was interested in electronics and things cuz the other thing is i'm hopeless with my hands i can't do anything requires strength or physical coordination
[译文] [Martin Fowler]: 在学校时,我显然不擅长写作,凡是和写作有关的作业我都拿很低的分数,真的,非常差。但我很擅长数学和物理之类的东西,所以我倾向于工程类方向。我对电子学很感兴趣,因为我在动手方面简直无可救药——任何需要力量或身体协调性的事情我都做不来。
[原文] [Martin Fowler]: so all sorts of areas of engineering and building things you know i've tried looking after my car and you know i couldn't get the the rusted nuts off or anything you know it was hopeless so but electronics is okay because that's all very you know it's more than in the brain than you know you need to be able to handle a soldering iron but that was about as much as i needed to do
[译文] [Martin Fowler]: 所以对于各种工程和建造类的工作……你知道吗,我试过保养我的车,但我甚至拧不下生锈的螺母,简直没救了。不过电子学还行,因为这更多是脑力活,虽然你需要会用电烙铁,但这大概也就是我需要动手的极限了。
[原文] [Martin Fowler]: and then computers and it step easy i don't even need a soldering iron so i kind of drifted into computers in that kind of way and uh that was my route into into software development
[译文] [Martin Fowler]: 然后是计算机,这就更简单了,我甚至不需要电烙铁。所以我算是就这样“漂”进了计算机领域,这就是我进入软件开发的路径。
[原文] [Martin Fowler]: before i went to university i had a year um at working with the uk at atomic energy authority wow or ukulele as as we call it um and i did some programming in forran 4 and um it seemed like a good thing to be able to do
[译文] [Martin Fowler]: 在上大学之前,我在英国原子能管理局(UK Atomic Energy Authority,我们戏称为 Ukulele)工作了一年。我在那里用 Fortran 4 写了一些程序,感觉这似乎是一项不错的技能。
[原文] [Martin Fowler]: and then when i finished my degree which was a mix of electronic engineering computer science i looked around and i thought well i could go into traditional engineering jobs which weren't terribly well paid and weren't terribly high status or i could go into computing where it looked like there was a lot more opportunity and so i just drifted into computing
[译文] [Martin Fowler]: 当我完成学位后——那是电子工程和计算机科学的混合专业——我环顾四周,心想:我可以去传统的工程岗位,但薪水不高,地位也不高;或者我可以进入计算机行业,看起来那里的机会要多得多。所以我就这样顺势进入了计算机行业。
[原文] [Gergely Orosz]: and and this was before the internet took off this was what what what kind of jobs were there back then that that you could get into what was and what was your first job
[译文] [Gergely Orosz]: 那是在互联网腾飞之前。那时候有什么样的工作机会?你的第一份工作是什么?
[原文] [Martin Fowler]: well my first job was with a consulting company koopers and librand or as i refer to them cheetum and lightum and um we were doing advice on information strategy in the particular group i was with although that wasn't my job
[译文] [Martin Fowler]: 我的第一份工作是在一家叫 Coopers & Lybrand(普华永道的前身之一)的咨询公司——我喜欢叫他们 Cheetum and Lightum(一种戏谑的叫法)。我所在的那个小组负责提供信息战略方面的建议,尽管那不是我的具体工作。
[原文] [Martin Fowler]: my job was i was one of the few people who knew unix because i'd done unix at college and so i looked after a bunch of workstations that they needed to do to run this weird software that they were running to help them do their strategy work
[译文] [Martin Fowler]: 我的工作是……因为我在大学学过 Unix,我是少数几个懂 Unix 的人之一,所以我负责维护一堆工作站。他们需要这些工作站来运行某种奇怪的软件,以辅助他们的战略工作。
[原文] [Martin Fowler]: and then i got interested in the what they were doing with their strategy work and kind of drifted into that i look at it back now and think god that was a lot of snake oil involved but hey it was my route into the into the industry and it got me early into the world of object-oriented thinking and that was extremely useful to get into objects in the mid80s
[译文] [Martin Fowler]: 然后我对他们的战略工作产生了兴趣,并不知不觉地参与了进去。现在回想起来,我觉得天哪,那时候真的有很多“江湖骗术”(snake oil)在里面。但这毕竟是我进入这个行业的途径,而且它让我很早就接触到了面向对象思维(Object-Oriented Thinking),在80年代中期接触对象技术是非常有用的。
[原文] [Gergely Orosz]: and and how how did you get into like object-oriented was back then back we're talking probably the mid80s that was a very kind of radical thing and you said you were working at a consulting company which didn't seem like the most cutting edge so how does a two plus two get together how did you get to do cutting edge stuff
[译文] [Gergely Orosz]: 那你是怎么接触到面向对象的?毕竟我们说的是80年代中期,那时候这是非常激进的东西。你说你在一家咨询公司工作,这听起来不像是最前沿的地方。所以这是怎么回事?你怎么会有机会做前沿的东西?
[原文] [Martin Fowler]: because this little group was into cutting edge stuff and they had run into this guy who had some interesting ideas some some very good ideas as well as some slightly crazy ideas and he packaged it up with the term object orientation which wasn't really the case but it was it kind of you know it's part of a snake oil as it were
[译文] [Martin Fowler]: 因为那个小组确实在搞前沿的东西。他们遇到了一位有些有趣想法的人——有些想法非常好,有些则有点疯狂。他把这些想法包装成“面向对象”(Object Orientation)这个术语,虽然实际上并非完全如此,你知道,这有点像是那种“江湖骗术”的一部分。
[原文] [Martin Fowler]: i mean that's a little bit cruel to call it snake oil because he had some very good ideas as well um but that kind of led me into that direction and and of course in time i've found out more about what object orientation was really about and uh that events led to my whole career in in the next 10 or 15 years
[译文] [Martin Fowler]: 说那是“江湖骗术”可能有点刻薄,因为他确实也有很好的想法。但这确实引导我走向了那个方向。当然,随着时间的推移,我更深入地了解了真正的面向对象是什么。这些经历为我接下来10到15年的职业生涯奠定了基础。
[原文] [Gergely Orosz]: how did you make your way and eventually end up at thought works and and also you started to write some some books you started to publish on the side how did you go go from like someone who was brand new to the industry and kind of wideeyed and just taking it all in learning things to starting to slowly become someone who was teaching others
[译文] [Gergely Orosz]: 那你是如何发展,并最终加入 ThoughtWorks 的?而且你也开始写书,在业余时间发表文章。你是怎么从一个初入行业、睁大眼睛吸收一切的新人,慢慢变成一个开始教导别人的人的?
[原文] [Martin Fowler]: well here again bundles of accidents right so while i was at that consulting company i met another guy that they had brought in to help them work with this kind of area an american guy um who became the really the biggest mentor and influence upon my early career his name is jim odell
[译文] [Martin Fowler]: 嗯,这又是一连串的巧合。在那家咨询公司时,我遇到了他们请来的另一位协助这方面工作的美国人,他叫 Jim Odell,后来成为了对我早期职业生涯影响最大的导师。
[原文] [Martin Fowler]: and he had been an early um adopter of information engineering and had worked with in that area and he was he saw the good parts of uh these ideas that these these folks were doing and he was an independent consultant and a teacher and so he spent a lot of his time doing work along those lines
[译文] [Martin Fowler]: 他是信息工程(Information Engineering)的早期采用者,在那个领域工作过。他看到了这些人所做理念中的优点。作为一名独立顾问和讲师,他花了很多时间从事这方面的工作。
[原文] [Martin Fowler]: i left coopers and librand after about a couple of years to actually join this the crazy company which is called pek um and um i was with them for a couple of years it was a small company there was a grand total of four of us in the uk office and that was the largest office in the company wow kind of thing
[译文] [Martin Fowler]: 大概两年后,我离开了 Coopers & Lybrand,加入了一家叫 Pek 的疯狂公司。我在那里待了几年。那是一家很小的公司,英国办事处总共只有四个人,但这已经是公司最大的办事处了,你就知道有多小了。
[原文] [Martin Fowler]: um and um so i did i saw a bit of you know having seen a big company's um craziness i then saw a small company's craziness did that for a couple of years and then i was in a position to go independent and i did um helped greatly by jim odell who was um who fed me a lot of work basically
[译文] [Martin Fowler]: 所以,在见识了大公司的疯狂之后,我又见识了小公司的疯狂。干了几年后,我有机会独立单干了,我就这么做了。这在很大程度上得到了 Jim Odell 的帮助,他基本上给我介绍了很多工作。
[原文] [Martin Fowler]: um and also by some other work i got in the u in the uk and that was great i i remember leaving pek and thinking that's it independence life for me i'm never going to work for a company again famous last words exactly
[译文] [Martin Fowler]: 还有一些我在英国接到的其他工作。那段时光很棒。记得离开 Pek 时我想:“就是这样了,我要过独立的生活,我再也不会为任何公司打工了。” ——这真是著名的“最后遗言”(Flag)。
[原文] [Gergely Orosz]: famous last words exactly
[译文] [Gergely Orosz]: 确实是著名的“最后遗言”。
[原文] [Martin Fowler]: and um i carried on i did well as an independent consultant um throughout the '90s and during that time i wrote my first books i moved to the united states in 93 um and i was doing very very happily and obviously got the rise of the internet lots of stuff going on in the late 90s it was a it was a good time and i ran into this company called fort works and they were just a client i would just go there and help them out
[译文] [Martin Fowler]: 我继续做独立顾问,整个90年代都做得不错。在那期间我写了我的第一批书。1993年我搬到了美国,日子过得很开心。显然,90年代末互联网兴起,发生了很多事情,那是个好时代。也就是在那时,我遇到了 ThoughtWorks 这家公司,当时他们只是我的一个客户,我去那里帮他们解决问题。
[原文] [Martin Fowler]: yeah the story gets more i had had met kent beck and worked with kent at chrysler the famous c3 project which is kind of the birth project of extreme programming so i'd worked on that seen extreme programming seen the agile thing so i'd got the object orientation stuff i got the agile stuff and then i came to fort works
[译文] [Martin Fowler]: 故事还没完。我当时已经认识了 Kent Beck,并在克莱斯勒那个著名的 C3 项目上和他共事过,那算是极限编程(Extreme Programming)的诞生地。所以我经历过那个项目,见识过极限编程和敏捷(Agile)。当时我已经掌握了面向对象的东西,也掌握了敏捷的东西,然后我来到了 ThoughtWorks。
[原文] [Martin Fowler]: and uh they were in tackling a big project a big project for them at the time still sizable about 100 people working on the project so it's a sizable piece of work and it it was clearly going to crash and burn um but i was able to help them um both see what was going on and how to avoid crashing and burning and they figured out how to sort of recover from the from the problem
[译文] [Martin Fowler]: 他们当时正在处理一个大项目——对那时的他们来说是个大项目,大概有100人在做,规模不小。但这个项目显然快要崩溃(crash and burn)了。我当时能够帮助他们看清状况,避免彻底崩溃,他们也找到了解决问题并恢复过来的方法。
[原文] [Martin Fowler]: um but then invited me to join them and i thought hey you know join a company again maybe for a couple of years they're really nice people they're my favorite client you know i i always thought of it as other clients would say "these are really good ideas but they're really hard to implement." and while thoughtworks would say "these are really good ideas they're really hard to implement but we'll give it a try." and they usually pulled it off
[译文] [Martin Fowler]: 然后他们邀请我加入。我想:“嘿,再次加入一家公司,也许就待几年吧。他们人真的很好,是我最喜欢的客户。” 我总是这样比较:其他客户会说“这些主意很好,但实施起来太难了”;而 ThoughtWorks 会说“这些主意很好,虽然实施起来很难,但我们要试一试”。而且他们通常都能做成。
[原文] [Martin Fowler]: and so i thought "hey with a client like that i might as well join them for a little while and and see what we can do." that was 25 years ago
[译文] [Martin Fowler]: 所以我想,“嘿,既然有这样的客户,我不妨加入他们一阵子,看看我们能做些什么。” ——那是25年前的事了。
[原文] [Gergely Orosz]: yeah and then fast forward today your title has been for i think over a decade chief scientist since i joined that was my title at join since you joined so i have to ask what does a chief scientist at thought works do
[译文] [Gergely Orosz]: 也就是快进到今天。你的头衔我想已经用了十多年了吧——“首席科学家”(Chief Scientist)。
[译文] [Martin Fowler]: 是从我加入时开始的,那是我加入时的头衔。
[译文] [Gergely Orosz]: 从加入时就是?那我必须得问问,ThoughtWorks 的首席科学家是做什么的?
[原文] [Martin Fowler]: well it's important to remember i'm chief of nobody and i don't do any science the title was given because that title was used a fair bit around that time for some kind of public facing ideas kind of person if i remember correctly grady buch was chief scientist at rational um at the time actually true and um and there were other people who had that title so it was a it was a high looting very pretentious title but they felt it was necessary
[译文] [Martin Fowler]: 嗯,重要的是要记住:我手下没有人(Chief of nobody),我也并不做任何科学研究(don't do any science)。之所以给这个头衔,是因为当时这个头衔常用于那种负责对外输出理念的人。如果我没记错的话,Grady Booch 当时在 Rational 公司也是首席科学家。还有其他人也有这个头衔。这是一个听起来很高大上、很装模作样的头衔,但他们觉得有必要。
[原文] [Martin Fowler]: it was weird because one of the things of thoughtworks at that time was you could choose your own job title anybody could choose whatever job title they like but i didn't get to choose mine i had to take the chief scientist one they didn't like titles like flagpole or battering ram or um or loudmouth which is the one i most prefer
[译文] [Martin Fowler]: 这很奇怪,因为当时 ThoughtWorks 的一个特点是你可以自己选择职位头衔,任何人都可以选自己喜欢的。但我没法选我的,我被迫接受了“首席科学家”这个头衔。他们不喜欢像“旗杆”(Flagpole)、“攻城锤”(Battering Ram)或者“大嘴巴”(Loudmouth)——这其实是我最喜欢的——这类头衔。
📝 本节摘要:
本章聚焦于 ThoughtWorks 标志性的“技术雷达”(Technology Radar)。Martin 讲述了它的起源:最初是时任 CTO Rebecca Parsons 为了保持对一线项目的敏锐度而设立的技术咨询委员会(TAB)。后来,成员 Darren Smith 提出了“雷达”这一可视化隐喻,用于追踪和交流技术趋势。Martin 详细解释了雷达的生成机制——这是一个完全“自下而上”(bottom-up)的过程,由全球技术人员提名“光点”(blips),再由“多普勒小组”(Doppler Group)筛选决策。他还提到了最新一期雷达中 AI 工具的爆发,以及 ThoughtWorks 鼓励企业构建自己专属雷达的开放理念。
[原文] [Gergely Orosz]: and one thing that thought works does every six months and the latest one just came out is the thought works radar and this latest radar it just came out i think a few days ago it's the today it was launched i think actually it was today so by the time this is in production it will have been a few weeks but uh it's actually really really fresh
[译文] [Gergely Orosz]: ThoughtWorks 每六个月会做一件事,最近的一期刚刚发布,那就是 ThoughtWorks 技术雷达。这最新的一期我想是几天前出来的,或者就是今天发布的。我想确实是今天。所以当这个播客上线时,它可能已经发布几周了,但现在它真的非常新鲜。
[原文] [Gergely Orosz]: so i just looked at it and things that it it lists but i'll just list a few things that i saw there and the adopting which is the the ones that they recommend using pre-commit hooks click house for database analytics vlm this is for learning llm on on cloud or on on-rem in a really efficient way for trialing cloud code fast mcp which is an mc framework for mcb servers
[译文] [Gergely Orosz]: 我刚刚看了一下它列出的东西,我只列举几个我看到的。在“采用”(Adopt)这一环——也就是你们推荐使用的——有预提交钩子(pre-commit hooks)、用于数据库分析的 ClickHouse、vLLM(这是一种在云端或本地高效运行大语言模型的方式)、用于试用 Claude code 的 FastMCP(一个用于构建 MCP 服务器的框架)。
[原文] [Gergely Orosz]: and they're they're also recommending a lot of different things related for example to ai and lms to assess uh can you share a little bit of how thorkworks comes up with this technology radar what's the process and it it feels very very kind of on the pulse every time like it feels close to the pulse of the industry and again i i talk with a lot of other people how do people at thought works stay this close to what is happening in the industry
[译文] [Gergely Orosz]: 你们还推荐了很多与 AI 和大语言模型相关的其他东西放在“评估”(Assess)环中。你能分享一下 ThoughtWorks 是如何制定这个技术雷达的吗?流程是怎样的?每次感觉它都非常精准地把握了脉搏,紧贴行业动态。我和很多人聊过,ThoughtWorks 的人是如何做到与行业动态保持如此紧密联系的?
[原文] [Martin Fowler]: okay yeah well this will be a bit of a story okay so it started just over 10 years or so ago its origin was one of the things that we've really pushed at footworks is to have technical people practitioners really involved at v or various levels of running the business
[译文] [Martin Fowler]: 好的,这得从头说起了。它始于大概10多年前。起因是我们 ThoughtWorks 一直在推动的一件事:让技术人员、也就是实践者,真正参与到公司运营的各个层面中去。
[原文] [Martin Fowler]: and one of the leaders of that um was our former cto rebecca parsons so rebecca became cto and she said i want an advisory board who will keep me connected with what's going on in projects so she created this technology advisory board and it had a bunch of people whose job was to brief her as to what was going on
[译文] [Martin Fowler]: 其中的一位领导者是我们前任 CTO Rebecca Parsons。当 Rebecca 成为 CTO 时,她说:“我需要一个顾问委员会,让我能与项目正在发生的事情保持联系。”于是她创建了这个技术咨询委员会(Technology Advisory Board),里面有一群人,他们的工作就是向她汇报正在发生的情况。
[原文] [Martin Fowler]: we'd meet you know two or three times a year she had me on the advisory board not so much for that reason but because i was very much sort of a public face of a company she wanted me present and involved in that and originally that was just our brief we would just get together and we'd talk through this stuff
[译文] [Martin Fowler]: 我们大概每年见两三次面。她把我拉进顾问委员会,倒不全是因为那个原因,更多是因为我是公司的一个公众形象,她希望我能出席并参与其中。最初我们的任务仅仅如此,就是聚在一起讨论这些事情。
[原文] [Martin Fowler]: and then one of these meetings um daryl smith who was actually her ta at the time technical assistant um he um said we what we got all these projects going on it would be good to get some picture what kinds of technologies we're using and how useful they are and so as to better exchange ideas because we like so many companies we struggle to percolate good ideas around enough
[译文] [Martin Fowler]: 然后在其中一次会议上,Darren Smith(他当时其实是 Rebecca 的技术助理)说:“我们要进行这么多项目,如果能搞清楚我们在使用什么技术以及它们有多大用处,那就太好了,这样可以更好地交流想法。” 因为就像许多公司一样,我们也难以让好点子充分流动起来。
[原文] [Martin Fowler]: i mean even then when we're only just a few thousand it struggled and we're 10,000 now so yeah it's so we thought okay this is a nice idea and he came up with this idea of the radar metaphor and the rings of the radar that we see today and we had little meeting and we created the radar
[译文] [Martin Fowler]: 即便那时我们只有几千人,这也很难,而现在我们有一万人了。所以我们觉得,“好吧,这是个好主意。” 于是他提出了“雷达”这个隐喻,以及我们今天看到的雷达上的那些圆环。我们开了一个小会,就这样创造出了雷达。
[原文] [Martin Fowler]: and it's it's a habit if we do something for internal purposes we try and just make it public and that's always been a strong part of the works ethos it's part of why i'm there of course is you know we just we talk about everything that we do and we share everything we we we give away our secret source all the time
[译文] [Martin Fowler]: 我们有一个习惯:如果是为了内部目的做某件事,我们会试着把它公开。这一直是 ThoughtWorks 精神的重要组成部分。这也是我为什么在这里的原因之一,你知道,我们谈论我们做的所有事情,我们分享一切,我们总是把我们的“秘方”(secret sauce)免费送人。
[原文] [Martin Fowler]: so we did that and people were very interested and so we continued doing it now the process has changed changed a bit over time at that original meeting many of the people that were in the room were actually hands-on on projects advising clients all the time
[译文] [Martin Fowler]: 所以我们这么做了,人们非常感兴趣,于是我们就坚持了下来。现在的流程随着时间推移发生了一些变化。在最初的那次会议上,房间里的很多人实际上都是在一线做项目、时刻在给客户提供建议的人。
[原文] [Martin Fowler]: now as we've grown an order of magnitude um it's much harder to do that and we've also created more of a process where people can submit blips nominate them a blip is being a point on the radar an entry
[译文] [Martin Fowler]: 现在我们的规模增长了一个数量级,这就难多了。我们也建立了一套流程,人们可以提交“光点”(blips)来提名——光点就是雷达上的一个点,一个条目。
[原文] [Martin Fowler]: and um they will go to somebody that uh either connected through geographically or through the line of business or or technology or whatever and say "hey we think this technology is interesting." they'll brief us a little bit about it and then they brief the members of the what's now called the doppler group because we make a radar yeah i mean we can be a bit loose with our metaphors at times
[译文] [Martin Fowler]: 他们会找到某个人——可能是按地理区域联系的,或者是按业务线、技术领域等——然后说:“嘿,我觉得这项技术很有趣。” 他们会简要介绍一下,然后汇报给现在被称为“多普勒小组”(Doppler Group)的成员。因为我们做的是雷达嘛(注:多普勒效应与雷达有关),是的,我们在使用隐喻时有时比较随意。
[原文] [Martin Fowler]: um and they and then at the meeting we'll decide which of these blips to put on the radar and not and obviously you get some crosspollination because somebody will say oh yeah i talked to somebody about this as well and and so it's very much this bottomup exercise and that's how it's created now
[译文] [Martin Fowler]: 然后在会议上,我们将决定哪些光点放在雷达上,哪些不放。显然会有一些思想碰撞(cross-pollination),因为有人会说:“哦对,我也听别人说过这个。” 所以这在很大程度上是一个自下而上(bottom-up)的活动,这就是它现在的生成方式。
[原文] [Martin Fowler]: so we will have these we will do blip gathering sessions about a month or two before the radar meeting and gradually shake them up and then in the meeting itself we go through them one by one
[译文] [Martin Fowler]: 我们会在雷达会议前一两个月举行光点收集会,逐步筛选整理,然后在正式会议上逐一过审。
[原文] [Martin Fowler]: and for me it's a bit weird because i'm so detached from the day-to-day these days that it's just this this lineup of technologies and things i have no idea what most of them are but interesting to hear about and sometimes i latch on to certain themes or something like that um and that was an important part of microservices about 10 years ago because that came up in through that radar process
[译文] [Martin Fowler]: 对我来说这有点奇怪,因为我现在已经脱离了日常工作,面对这一长串的技术和事物,我根本不知道大部分是什么。但听听很有趣,有时我会抓住某些主题或类似的东西。比如大概10年前的“微服务”(Microservices),那就是通过雷达流程浮现出来的重要内容。
[原文] [Martin Fowler]: and uh we got together with james lewis and we ended up writing a good bit further about that um but that's really what happens is we go through this process of spotting this stuff
[译文] [Martin Fowler]: 后来我和 James Lewis 聚在一起,针对那个话题写了很多深入的内容。但这确实就是我们的运作方式:通过这个流程来发现这些东西。
[原文] [Gergely Orosz]: yeah and and the the radar analogy i know some companies also take the idea which by the way thoughtworks encourages saying make your own radar take it in your own company you can i think they even like have tools around it
[译文] [Gergely Orosz]: 是的,关于雷达这个类比,我知道有些公司也采用了这个想法。顺便说一下,ThoughtWorks 是鼓励这么做的,你们说:“制作你们自己的雷达,在你们公司内部使用。” 我想你们甚至还为此提供了工具。
[原文] [Gergely Orosz]: i really like how thoughtworks never said like this is the thing for the industry they said this is the thing for us this is what we see this is what we recommend our team our team members or or maybe our our clients to consider or there's also i like that there's a hold maybe just be beware we're we're not seeing great results with this and and here's the reasons for it
[译文] [Gergely Orosz]: 我真的很喜欢 ThoughtWorks 的态度,你们从来不说“这是行业的标准”,而是说“这是适合我们的东西,这是我们要看到的,这是我们推荐给我们的团队成员或客户去考虑的”。我也很喜欢那个“暂缓”(Hold)环——意思是“也许要小心,我们在使用中没看到好结果,原因是这些”。
[原文] [Gergely Orosz]: and yeah i guess the reason it feels fresh is uh probably a lot of work that thork works does is it feels cutting edge because it's all it's all about half of it or a third of it feels that it is around the hottest topic right now ai lms and and all the techniques that people are trying to see if they work or are the things that we are seeing that actually starts to work
[译文] [Gergely Orosz]: 我猜它感觉很新鲜的原因,可能是因为 ThoughtWorks 做的工作很多都很前沿。现在感觉有一半或者三分之一的内容都是围绕着目前最热门的话题——AI、大语言模型,以及人们正在尝试验证是否有效的所有技术,或者我们看到确实开始起作用的东西。
[原文] [Martin Fowler]: yeah i mean what i mean for works has basically got several thousand technologists all over the world doing projects of various kinds to all sorts of different organizations and the radar is a mechanism that we've discovered is a way of getting some of that information out of their heads and spreading it around both internally and to the industry as a whole
[译文] [Martin Fowler]: 是的,ThoughtWorks 基本上有数千名技术人员分布在世界各地,为各种不同的组织做着各种各样的项目。雷达是我们发现的一种机制,用来把他们脑子里的信息提取出来,并在内部以及向整个行业进行传播。
[原文] [Martin Fowler]: and you're right i it is a recommended thing for clients to do is to try and do their own radars it's slightly different when it's a client radar thing because sometimes there it can be more of a this is what we think you should be doing with a bit more of a forcefulness to it than than we would give
[译文] [Martin Fowler]: 你说得对,我们确实推荐客户尝试制作他们自己的雷达。不过客户的雷达稍微有点不同,因为有时它更多是一种“这是我们认为你们应该做的事情”,带有一种比我们通常给出的建议更强的强制性。
[原文] [Martin Fowler]: and also they can be a bit more choosy in the sense of they can say yeah we're just not interested in doing certain technologies while for us it's a case if our clients are doing it then we we're going to find out about it right we have to use it
[译文] [Martin Fowler]: 而且他们可能会更挑剔,比如他们可以说“是的,我们就是对某些技术不感兴趣”。而对我们来说,情况是:如果我们的客户在用它,那我们就得去了解它,对吧?我们就得去使用它。
📝 本节摘要:
在本章中,Martin Fowler 将 AI(尤其是大语言模型)的兴起视为他职业生涯中最大的技术变革,其量级堪比从汇编语言到高级语言的跃迁。他指出,这次变革的核心并非仅仅是抽象层级的提升,而是从“确定性”(Determinism)向“非确定性”(Non-determinism)的根本转变。他通过对比传统编程的精确逻辑与结构工程中的“容差”(Tolerances)概念,强调软件工程师需要适应这种新的思维方式。最后,他警告说,如果我们在安全领域忽视了这种非确定性,可能会导致类似“桥梁坍塌”的严重事故。
[原文] [Gergely Orosz]: of course the the radar is full with a lot of ai and lm related things because this is a huge change in in my professional career it it feels by far the biggest technology innovation changes coming in looking back on your career what similar changes have you seen that could compare to some extent to ai in the technology field
[译文] [Gergely Orosz]: 当然,雷达上充满了各种与 AI 和大语言模型相关的内容,因为这不仅是我职业生涯中的巨大变化,感觉也是迄今为止最大的技术创新变革。回顾你的职业生涯,你在技术领域见过哪些类似的变革可以某种程度上与 AI 相提并论?
[原文] [Martin Fowler]: i it's the biggest i think for my career i think if we looked back at the history of software development as a whole the comparable thing would be the shift from assembly language to the very first highle languages which is before my time right when we when first started coming up with cobalt and forran and the like i would imagine that would be a similar level of shift
[译文] [Martin Fowler]: 我认为这对我职业生涯来说是最大的。如果回顾整个软件开发的历史,能与之相比的大概只有从汇编语言到第一批高级语言的转变。那是在我入行之前的事了,也就是最初出现 COBOL 和 Fortran 之类语言的时候。我想那应该是一个同等级别的变革。
[原文] [Gergely Orosz]: so you started to work with forran and you probably knew people who were still doing assembly or at least knew knew some of people from that generation there was a bit of assemble around when i was working still from from what you picked up around that time uh what was that shift like in terms of mindset or or you know like because it it was a big change right you really needed to know the internals of the hardware and the instructions and the the different uh i i did very little assembly at university but it it's been very useful because i never want to do it again
[译文] [Gergely Orosz]: 你是从 Fortran 开始工作的,你可能认识一些还在写汇编的人,或者至少认识那一代的人。你说当你工作时周围还有一点汇编的存在。从你在那个时期了解到的情况来看,那种思维模式的转变是怎样的?因为那确实是一个巨大的变化,对吧?在那之前你必须非常了解硬件内部、指令集以及各种不同的……我在大学时只写过很少的汇编,但这很有用,因为它让我知道我再也不想写汇编了。
[原文] [Martin Fowler]: very wise but but what did you pick up in in terms of what needed to change and and how it changed the industry just moving from mostly assembly to mostly higher level languages
[译文] [Martin Fowler]: 非常明智。
[译文] [Gergely Orosz]: 但你从中领悟到了什么?关于什么需要改变,以及从主要使用汇编转向主要使用高级语言是如何改变这个行业的?
[原文] [Martin Fowler]: well i mean for a start as you said things were very specific to individual chips you had the instructions were different on every chip the you know as well things like registers where you access memory you had these very convoluted ways of doing even the simplest thing because your only instruction was for something like move this value from a memory location to this register um and you so you've always got to be thinking in these very very low-level forms
[译文] [Martin Fowler]: 嗯,首先如你所说,当时的东西是非常针对单个芯片的。每个芯片的指令都不同。你知道还有像寄存器、访问内存这些东西,即使做最简单的事情你也得用非常复杂的方式,因为你唯一的指令可能就是类似“把这个值从内存地址移动到这个寄存器”。所以你总是不得不用这些非常、非常底层的形式来思考。
[原文] [Martin Fowler]: and even the very relatively poor um high level language like forran at least i can write things like conditional statements and loops else is in my conditional statements in forran 4 but i can at least go if and i can get one statement i can't do a block of statements i have to use go-tos but you know it's better than what you can do in assembly right
[译文] [Martin Fowler]: 即便像 Fortran 这样相对简陋的高级语言,至少我可以写条件语句和循环。虽然在 Fortran 4 的条件语句里我只能写 IF 然后接一条语句,不能接一个语句块,我必须使用 GOTO,但这毕竟比汇编强多了,对吧?
[原文] [Martin Fowler]: and so there's a definite shift of moving away from the hardware to thinking in terms of something a bit more abstract and i think that is a very very big shift and then of course once i'm using forran i can be insulated to some degree away from the hardware i'm running on i'm now am i running this on a main on a mainframe am i running this on a mini computer i mean there's there's issues because the language is always varied a little bit from place to place but you've got a degree of decoupling there um that was really quite significant
[译文] [Martin Fowler]: 所以这确实是一个明确的转变:从关注硬件转向用更抽象的方式思考。我认为这是一个非常非常大的转变。当然,一旦我使用了 Fortran,我在某种程度上就与运行代码的硬件隔离了。不管我是在大型机上运行,还是在小型机上运行——虽然因为不同地方的语言版本总有些微差异会有一些问题——但你获得了一定程度的解耦,这真的很重要。
[原文] [Martin Fowler]: i think i mean i only did it on small uh microprocessor like units because again it was the electronic engineering part right so we were fairly close to the metal anyway for some of that um but um you you definitely had that mind shift and i i think it's with llms it's a similar degree of mind shift although as i've you know written about it i the interesting thing is the shift is not so much of an increase of a level of abstraction although there is a bit of that the biggest part of it is the shift from determinism to non-determinism
[译文] [Martin Fowler]: 我主要是在类似微处理器的单元上做的,因为那是电子工程的一部分,所以我们在某些方面本来就很接近底层(close to the metal)。但你确实经历了那种思维转变。我认为大语言模型(LLMs)带来的也是类似程度的思维转变。不过正如我写过的那样,有趣的是,这次转变与其说是抽象层级的提升——虽然确实有一点——不如说最大的部分是从“确定性”(determinism)向“非确定性”(non-determinism)的转变。
[原文] [Martin Fowler]: and suddenly you're working in a non with an environment that's non-deterministic which completely changes you have to think about it
[译文] [Martin Fowler]: 突然之间,你是在一个非确定性的环境中工作,这彻底改变了你需要思考的方式。
[原文] [Gergely Orosz]: can we talk about that shift in abstraction because one very naive or naive way of looking at is saying like well we we've had the three levels right we have assembly where you have commands for the hardware you need to be intimately aware of the hardware we have high level programming languages starting with c later java later javascript and uh where you don't need to be aware of the hardware you're aware of the logic and what you might say as well we have a new abstraction is you have the english language which will you know generate this code you're saying you don't think it's an abstraction jump why do you think this is
[译文] [Gergely Orosz]: 我们能谈谈关于抽象层级的转变吗?因为一种很天真或者说朴素的看法是:好吧,我们经历了三个层次。首先是汇编,你有针对硬件的指令,你需要非常了解硬件;然后是高级编程语言,从 C 开始,后来是 Java、JavaScript,你不需要了解硬件,你关注的是逻辑;现在你可能会说我们有了新的抽象,也就是英语,你可以用它来生成代码。但你说你不认为这是一个抽象层级的飞跃。为什么你会这么认为?
[原文] [Martin Fowler]: i think there's a bit of an abstraction jump i think the abstraction jump difference is smaller than the determinism nondeterminism jump and it's it's worth remembering one of the key things about highle languages anguages which i didn't mention as i was talking about earlier on is the ability to create your own abstractions in that language
[译文] [Martin Fowler]: 我觉得还是有一点抽象层级的飞跃的。但我认为这种抽象上的差异比起“确定性与非确定性”之间的差异要小。值得记住的一点是——我刚才没提到——高级语言的一个关键特性是能够在语言中创建你自己的抽象。
[原文] [Martin Fowler]: that is particularly important as you get to things like object orientation towards u more um expressive functional languages like lisp which didn't really have so much in i mean forran and cobalt you could do that to some extent um because because at least with forran you can create subutines and build abstractions out of that but you've got so many more tools for building abstractions when you've got the the abilities of more modern languages and that ability to build abstractions is crucial so you can build a building block inside of the language that sets you
[译文] [Martin Fowler]: 这在面向对象以及像 Lisp 这样更具表现力的函数式语言中显得尤为重要。Fortran 和 COBOL 虽然在某种程度上也能做到——至少在 Fortran 里你可以创建子程序(subroutines)并以此构建抽象——但在现代语言能力的加持下,你拥有更多构建抽象的工具。这种构建抽象的能力是至关重要的,它可以让你在语言内部构建出适合你的积木。
[原文] [Gergely Orosz]: and of course here we have like domain driven development later enables these things and so on
[译文] [Gergely Orosz]: 当然,这也让我们后来的领域驱动开发(Domain Driven Development)等成为了可能。
[原文] [Martin Fowler]: exactly i mean an old lisp adage is really what you want to do is to create your own language in lisp and then solve your problem using the language that you've created and i think that way of thinking is a good way of thinking in any programming language you're both solving the problem and creating a language to to describe the kinds of problems you're trying to solve in and if you can balance those two nicely that is what leads to very maintainable and flexible code
[译文] [Martin Fowler]: 正是。Lisp 有句老话:你真正想要做的是在 Lisp 中创造你自己的语言,然后用你创造的这个语言来解决你的问题。我认为这在任何编程语言中都是一种很好的思维方式。你既在解决问题,又在创造一种语言来描述你试图解决的那类问题。如果你能很好地平衡这两者,就能写出非常易于维护且灵活的代码。
[原文] [Martin Fowler]: so the building of abstractions that's i think to me a key element of high level languages and ai helps us a little bit in that because we can build abstractions a bit more easily a bit more fluidly but we have this problem and now we're talking about non-deterministic implementations of those abstractions which is an issue
[译文] [Martin Fowler]: 所以,构建抽象对我来说是高级语言的关键要素。AI 在这方面对我们有一点帮助,因为我们可以更容易、更流畅地构建抽象。但我们面临的问题是,现在我们谈论的是这些抽象的“非确定性实现”,这就是个问题了。
[原文] [Martin Fowler]: and we've got to sort of learn a whole new set of balancing tricks um to get around that my colleague unmesh jooshi has been has written a couple of things um that i really been really enjoying about his thinking about how because he's really pushing this using the llm to co-build an abstraction and then using the abstraction to talk more effectively to the llm and that i'm finding really really interesting way of thinking about how he's working with that because he's really pushing that direction
[译文] [Martin Fowler]: 我们必须学会一套全新的平衡技巧来应对这个问题。我的同事 Unmesh Joshi 写过一些东西,我非常喜欢他的思考。他正在大力推行这种做法:使用大语言模型来共同构建(co-build)一个抽象,然后使用这个抽象更有效地与大语言模型对话。我觉得这是一种非常有趣的思维方式,因为他确实在往这个方向努力。
[原文] [Martin Fowler]: there's a a thing i read in and i can't remember the book off the top of my head we'll have to dig it out later that talked about how apparently if you can describe to an llm a whole load of chess matches and describe it just in plain english and the llm when you do that the llm can't really understand how to play chess but if you take those same chess matches and describe the llm to those chess matches in chess notation then it can and i thought that was really interesting that you that by obviously you're shrinking down the the token size because you've but you're also using a rigorous a much more rigorous notation to describe the problem so maybe that's an angle of how we use llm what we have to come up is a rigorous way of speaking and we can get more traction that way
[译文] [Martin Fowler]: 我在一本书里读到过一个例子——书名我一时想不起来了,回头得找找——书中提到,如果你用简单的英语向大语言模型描述一大堆国际象棋比赛,它其实并不能真正理解如何下棋;但如果你用国际象棋的记谱法(chess notation)向它描述同样的比赛,它就能理解了。我觉得这非常有趣。显然你缩小了 token 的规模,但你也使用了一种严谨得多的符号系统来描述问题。所以这也许是我们使用大语言模型的一个角度:我们需要通过一种严谨的表达方式,从而获得更好的效果。
[原文] [Gergely Orosz]: and i guess is this the first time we're seeing a tool that is so wide in software engineering that is nondeterministic because we did have neural nets for example in the past they were not but they were more i feel the application of those was a lot more kind of niche and not not everywhere now every single developer is i mean if you're using code generation you are using non-deterministic things of course we're integrating them left and right trying out where it works is is it fair to say that this is probably the first time we're facing this challenge of deterministic computers which we know very well we know their their limits and all those things and of course there's some race conditions and some exotic things but now we have exactly problem to solve for it's a whole new way of thinking
[译文] [Gergely Orosz]: 我在想,这是否是我们第一次在软件工程中看到应用如此广泛的“非确定性”工具?因为我们过去确实有神经网络,但它们的应用感觉更加小众,并不普及。而现在每个开发者——如果你在使用代码生成——你就在使用非确定性的东西。当然我们在到处整合它们,尝试哪里有效。能不能说,这是我们第一次面临这种挑战:以前是确定性的计算机,我们要解决的问题非常明确,我们了解它的局限性,当然也有竞争条件(race conditions)和一些奇怪的东西;但现在我们必须为这种非确定性本身去寻找解决方案,这是一种全新的思维方式。
[原文] [Martin Fowler]: it's got some interesting parallels to other forms of engineering other forms of engineering you think in terms of tolerances and my wife's a structural engineer right she always thinks in terms of what are the tolerances how much how much extra stuff do i have to do beyond what the math tells me because i need it for tolerances because yeah i mean i mostly know what the properties of wood or concrete or steel are but i've got to you know go for the worst case we need probably some of that kind of thinking ourselves what are the tolerances of the non-determinism that we have to deal with and realizing that we can't skate too close to the edge because otherwise we're going to have some bridges collapsing
[译文] [Martin Fowler]: 这与其他工程领域有一些有趣的平行之处。在其他工程领域,你是从“容差”(tolerances)的角度来思考的。我妻子是一名结构工程师,她总是思考:容差是多少?在数学计算之外我还需要做多少额外的工作?因为我知道木头、混凝土或钢铁的属性,但我必须为最坏的情况做打算。我们需要可能也需要这种思维:我们要处理的非确定性的容差是多少?我们要意识到不能在边缘试探得太近,否则会有桥梁坍塌。
[原文] [Martin Fowler]: i i suspect we're going to do that particularly on the security side we're going to have some noticeable crashes i i fear um because people have got skated way too close to the edge in terms of the non-determinism of the tools they're using
[译文] [Martin Fowler]: 我怀疑我们会遇到这种情况,尤其是在安全方面。恐怕我们会看到一些明显的崩溃事故,因为人们在使用这些非确定性工具时,真的在边缘试探得太过了。
📝 本节摘要:
在本章中,Martin Fowler 深入探讨了 AI 在软件工程中的几个具体应用场景。除了众所周知的快速原型开发,他特别强调了 AI 在理解遗留系统(Legacy Systems)方面的巨大价值——通过语义分析和图数据库技术,开发者可以高效地追踪数据流向。此外,他提出了一种名为“薄切片”(Thin Slices)的开发模式:将 AI 视为一个高效但极不可靠的“狡猾合作者”(dodgy collaborator),必须对其生成的代码进行严格审查。他同时指出,虽然 AI 擅长理解代码,但在修改代码(如重构)方面仍存在局限,且 AI 时代下的团队协作模式仍是一个未解之谜。
[原文] [Gergely Orosz]: oh for sure but before we go into where we could crash what are some either new workflows or new software engineuring approaches that you've kind of observed or or aware of that that sound kind of exciting that we we can now now do with lms or at least we can try to give them a goal that would have been impossible with you know our old deterministic toolkit right
[译文] [Gergely Orosz]: 确实如此。但在我们讨论哪里可能会“翻车”之前,我想问问,你观察到或了解到了哪些新的工作流或软件工程方法?有哪些听起来很令人兴奋?就是那些我们现在可以用大语言模型去做,或者是尝试去达成某个目标,而这在以前使用那种旧的确定性工具集时是不可能做到的?
[原文] [Martin Fowler]: one area is one one that has got lots of attention already is the being able to knock up a prototype in a matter of days that's just way more than you could have done previously so this is the vibe coding thing um but it's it's more than just that because it's also an ability to try explorations um people can go hey i not really quite sure what to do with this but i can spend a couple of days exploring the idea much much more rapidly than i could have before and so for throwaway explorations for disposable little tools and things of that kind um and including stuff by people who aren't don't think of themselves as software developers i think there's a whole area and you know we can with good reason be very suspicious of taking that too far because there's a danger there but we also realize that as long as you treat that within its right bounds that's a very valuable area
[译文] [Martin Fowler]: 有一个领域已经受到了广泛关注,那就是在几天内就能快速搞出一个原型(prototype)。这比以前能做到的要多得多。这就是所谓的“氛围编码”(Vibe Coding)。但这不仅仅是那样,它还是一种进行探索的能力。人们可以说:“嘿,我不太确定该怎么处理这个,但我可以花几天时间探索这个想法,速度比以前快得多。” 所以对于那些用完即弃的探索、一次性的小工具之类的东西——包括那些不认为自己是软件开发者的人所做的东西——我认为这有一整块很大的领域。当然,我们有充分的理由对过度使用这种方式保持怀疑,因为那里有危险;但我们也意识到,只要你在正确的范围内使用它,那是非常有价值的。
[原文] [Martin Fowler]: and i think we'll that's that's really good on a completely opposite end of scale u one area that's really interesting is helping to understand existing legacy systems so my colleagues have have put a good bit of work in this um year or two ago and basically the idea is you take the code itself um do the the essentially the the semantic analysis on on it populate a graph database essentially with that kind of information and then use that graph database as kind of in a ragl like style and you can begin to interrogate and say well what happens to this piece of data which bits of code touch this data as it flows through the program incredibly effective
[译文] [Martin Fowler]: 我觉得那真的很好。而在另一个完全相反的极端,有一个领域非常有趣,那就是帮助理解现有的遗留系统(Legacy Systems)。我的同事在一两年前在这方面投入了不少精力。基本思路是:你把代码拿来,对其进行语义分析,然后基本上用这些信息填充一个图数据库(Graph Database)。接着,你可以像使用 RAG(检索增强生成)那样使用这个图数据库。你可以开始通过提问来查询,比如:“这块数据发生了什么变化?当数据在程序中流动时,哪些代码片段接触了这些数据?” 这极其有效。
[原文] [Martin Fowler]: and in fact if i remember correctly we put actually understanding of legacy systems into the adopt ring because we said yeah you if you're if you're doing any work with legacy systems you should be using llms in some way to help you understand
[译文] [Martin Fowler]: 事实上,如果我没记错的话,我们把“理解遗留系统”放进了技术雷达的“采用”(Adopt)环里。因为我们认为:是的,如果你正在处理任何遗留系统的工作,你应该以某种方式使用大语言模型来帮助你理解它。
[原文] [Gergely Orosz]: so so in this ring in the thought force radar the the fewest things are in the adopt adopt says we strongly suggest that you look at this at least you know thought works themselves look at it there's only four items and one of them is yes uh to to to use genai to understand legacy code which to me tells that you have seen great success which is it's refreshing to hear by the way i did not hear this as much and i guess it helps at thought works i'm sure you have to work with a lot of
[译文] [Gergely Orosz]: 在 ThoughtWorks 技术雷达的这个环里,条目是最少的。“采用”意味着你们强烈建议大家去关注这个,至少 ThoughtWorks 自己在关注。里面只有四个条目,其中之一就是使用生成式 AI(GenAI)来理解遗留代码。这告诉我你们已经看到了巨大的成功。顺便说一句,这听起来很耳目一新,我之前没怎么听到过这个观点。我猜这对 ThoughtWorks 很有帮助,因为我确定你们必须处理大量的……
[原文] [Martin Fowler]: well i mean it came from the fact that some of the folks who had done some really interesting work on on legacy code stuff um happened to bump into and look at this and say "hey let's try this out." and they found it to be very effective and it also has been an ongoing interest for many of us at thoughtworks because we have to do it all the time and how do you effectively work with the the modernization of legacy systems because every big company that you know is older than a few years has got this problem y and they have it in spades
[译文] [Martin Fowler]: 嗯,这源于一些在遗留代码领域做过非常有趣工作的人,他们碰巧遇到了这个技术,并说:“嘿,咱们试试这个。” 结果发现非常有效。这也是 ThoughtWorks 许多人长期以来的兴趣所在,因为我们时刻都要面对这个问题:如何有效地进行遗留系统的现代化改造?因为你知道,任何一家成立超过几年的大公司都有这个问题,而且问题非常严重。
[原文] [Gergely Orosz]: and then especially just simple things people leave right as as as simple as that and having uh gen ai that can help you make some progress is it's already better than making no progress
[译文] [Gergely Orosz]: 特别是还有一些简单的情况,比如人员离职,就这么简单。拥有一个能帮你取得一些进展的生成式 AI,总比毫无进展要好。
[原文] [Martin Fowler]: exactly so those are two areas that are clearly um right away i would say those are there's great success for using llms and then there's the areas that we're still figuring out i mean i'm certainly seeing some interest more in more and more interesting stuff as people try to figure out how to work with an llm on a one-to-one basis to build decent quality software
[译文] [Martin Fowler]: 正是如此。所以我认为这是两个非常明确的领域,大语言模型在其中取得了巨大的成功。然后还有一些我们在摸索的领域。我确实看到人们越来越感兴趣,大家在尝试弄清楚如何在一对一的基础上与大语言模型合作,构建出高质量的软件。
[原文] [Martin Fowler]: we're seeing some definite signs of how you you got to work with very thin rapid slices small slices you've got to treat every slice as a pr from a rather dodgy collaborator who's very productive in the lines of code sense of productivity um but you know you can't trust a thing that they're they're doing so you've got to review everything very carefully when you play with the genie like that the genie is gk kent's term for it or or dusty the uh sort of the anthropomorphic donkey which is how bita i love her take yeah
[译文] [Martin Fowler]: 我们看到了一些明确的迹象,表明你需要以非常薄、非常快的“切片”(thin rapid slices)来工作。你必须把每一个切片都看作是来自一个相当“狡猾的合作者”(dodgy collaborator)提交的 Pull Request(PR)。这个合作者在代码行数的产出上非常高效,但你知道你不能信任他们做的任何事情,所以你必须非常仔细地审查每一处。当你这样和“精灵”(Genie)——这是 Kent Beck 的叫法,或者 Birgitta 称之为“Dusty”,那头拟人化的驴子,我喜欢她的比喻——一起工作时……
[原文] [Martin Fowler]: but using it well you can actually definitely get some speed up in your process it's not the kind of speed up that the the the advocates are talking about but it is non-trivial it's certainly worth learning how to to make some use of this and it's folks like burgita or kent or um steve jagg those are the those are the folks i think who are pushing this we're still i think learning how to do this everyone is learning it absolutely
[译文] [Martin Fowler]: 但如果用得好,你确实可以加快流程。这虽然不是那些鼓吹者所说的那种(惊人的)加速,但也绝非微不足道。绝对值得去学习如何利用它。我认为像 Birgitta、Kent 或者 Steve Jagg 这些人正在推动这方面的发展。我觉得我们还在学习如何做这件事。
[译文] [Gergely Orosz]: 每个人都在学习,确实如此。
[原文] [Martin Fowler]: and it's still the question and most of the experience we're gaining is building in a green field environment so that leaves big questions in terms of a the brownfield environment well we know that that llms can help us understand legacy code can they help us modify legacy code in a safe way it's still a question
[译文] [Martin Fowler]: 这仍然是个问题。我们获得的大部分经验都是在全新项目(Greenfield)环境中建立的。这就给旧项目(Brownfield)环境留下了巨大的疑问。我们知道大语言模型可以帮助我们理解遗留代码,但它们能帮助我们安全地修改遗留代码吗?这还是个未知数。
[原文] [Martin Fowler]: i mean i was just chatting with with james lewis because he's in town as well this morning and he was commenting about he was playing with cursor and he's been was just building something like this and he said "oh i i wanted to change the name of a class um in a not too big program and he sets it off to do that." and comes back an hour and a half later and has used you know 10% of his monthly allocation of tokens and all he's doing is changing the name of a class
[译文] [Martin Fowler]: 我今天早上刚和 James Lewis 聊过,他也在这座城市。他提到他在试用 Cursor,他在做类似的事情。他说:“我想在一个不太大的程序里修改一个类的名字。” 他让 AI 去做这件事,结果一个半小时后回来,发现耗费了他每月 Token 配额的 10%,而它做的仅仅是改了一个类名。
[原文] [Gergely Orosz]: and and we actually in ids we actually have functionality which which i i still remember when was cutting edge this was probably 20 years ago when visual studio it wasn't even visual studio it was jet brains who came out with an extension called resharper which helped refactor code and people paid serious money this was like $200 per year or something to get this plugin and now you could right click and say rename class and it went and it built that the graph behind the scenes somehow it went and changed you could rename variables and again this was a a huge deal in fact uh in xcode apple's developer uh plat uh id for a while when swift came out you couldn't do these refactors and it was you know people were like so it's interesting how some things are easy we've solved it and lms are not very very efficient at not very good at it
[译文] [Gergely Orosz]: 实际上我们在 IDE(集成开发环境)里早就有了这种功能。我还记得这在大约 20 年前是很前沿的。当时甚至不是 Visual Studio,而是 JetBrains 推出了一个叫 ReSharper 的扩展插件来辅助代码重构。人们愿意为此花大钱,大概每年 200 美元之类的,就为了买这个插件。你只要右键点击说“重命名类”,它就会在后台构建图谱,然后去修改。你可以重命名变量。这在当时是个大事。事实上,在苹果的开发者工具 Xcode 里,当 Swift 刚出来的一段时间里,你是没法做这些重构的,大家都疯了。所以有趣的是,有些事情其实很简单,我们已经解决了,但大语言模型在这些方面却效率极低,并不擅长。
[原文] [Martin Fowler]: y yes and then i mean he did that just to see what it was going to be like right cuz he knows you can just i mean we've had this for a long technology for a long time so it's kind of amusing i mean but it's also to the point that when working with an existing system and modifying an existing system we that's still really up in the air
[译文] [Martin Fowler]: 是的。我想他这么做只是为了看看效果如何,对吧?因为他知道我们早就有这种技术很久了。这有点好笑,但也说明了一点:在处理现有系统并修改它时,AI 的能力仍然悬而未决。
[原文] [Martin Fowler]: and then another area that's really up in the air both green field and brownfield is what happens when you've got a team of people because most software has been built by teams and will continue to be built with teams because even if and i don't think it will um ai makes us order of magnitude more productive we still need a team of 10 people to build what a team of 100 people needed to build and we will always want this stuff there's no sign of demand dropping for software so we will always want teams and then the question is of course how do we best operate with ai in the team environment and we're still trying to figure that one out as well
[译文] [Martin Fowler]: 另一个无论在新项目还是旧项目中都悬而未决的领域是:当你有一个团队时会发生什么?因为大多数软件都是由团队构建的,而且将来也会继续由团队构建。即便 AI 能让我们效率提高一个数量级——虽然我不认为会这样——我们仍然需要一个 10 人的团队来完成以前 100 人团队的工作。我们总是需要软件,需求并没有下降的迹象,所以我们总是需要团队。那么问题来了:在团队环境中,我们如何最好地与 AI 协作?这也是我们要努力弄清楚的。
📝 本节摘要:
本章深入探讨了热门概念“氛围编码”(Vibe Coding)。Martin 将其定义为一种“完全不看输出代码”、仅凭直觉的开发方式。虽然这在快速探索和一次性原型(Throwaways)中行之有效,但他通过一个生成 SVG 图表的失败案例,揭示了其致命弱点:生成的代码往往极度复杂且难以维护,一旦需要微调只能“从轨道上核平”(nuke it from orbit)重来。更重要的是,这种模式切断了程序员与计算机之间的“学习闭环”(Learning Loop),导致开发者失去对技术的深层理解。Gergely 则将其与早期的 Stack Overflow 复制粘贴现象作类比,指出盲目使用 AI 可能让人退化为“无脑提示词输入者”。
[原文] [Gergely Orosz]: you mentioned vibe coding what what is your understanding and take on vibe coding
[译文] [Gergely Orosz]: 你提到了“氛围编码”(Vibe Coding)。你对氛围编码的理解和看法是什么?
[原文] [Martin Fowler]: well when i use the term vibe coding i used i try to go back to the original term which is basically you don't look at the output code at all maybe you know take a glance at it out of curiosity but you you really don't care and maybe you don't look don't know what you're doing because you don't you've got no knowledge of programming it's just spitting out stuff for you so that's my how i define vibe coding
[译文] [Martin Fowler]: 嗯,当我使用“氛围编码”这个词时,我试图回到它最初的定义,也就是基本上你完全不看输出的代码。也许你会出于好奇瞥一眼,但你真的不在乎。甚至你可能根本不知道自己在做什么,因为你不懂编程,它只是为你吐出东西来。这就是我对氛围编码的定义。
[原文] [Martin Fowler]: um and my my take on it is kind of as i've indicated i think it it's good for explorations it's good for throwaways disposable stuff um but you don't want to be using it for anything that's going to have any long-term capability
[译文] [Martin Fowler]: 我对它的看法正如我之前暗示的那样,我认为它很适合用于探索,适合那些用完即弃的一次性东西。但你绝不想把它用于任何需要长期维护的功能。
[原文] [Martin Fowler]: because it's i mean again just this is a a silly anecdote but i was working um my colleague unesh he's just wrote something that we published yesterday and uh as part of doing this we we create this little pseudo graph of capability over time kind of thing which is you know one of those silly little pseudo graphs that helps illustrate a point
[译文] [Martin Fowler]: 再说个傻傻的轶事。我和我的同事 Unmesh 一起工作,他刚写了一些我们昨天发布的东西。在做的过程中,我们要创建一个关于“能力随时间变化”的伪图表,你知道就是那种用来辅助说明观点的简单图表。
[原文] [Martin Fowler]: and he asked the uh at llm to create this he described the curves he wanted and produ came up with and put it up there and i and he he committed it to our repo and i was looking at it and thinking yeah that's a good good enough graph i want to tweak it a little bit i want to you know the labels are a bit far away from the lines they're labeling so i'd like to bring them closer
[译文] [Martin Fowler]: 他让大语言模型去创建这个,描述了他想要的曲线,模型生成了,他就放上去了。然后他把它提交到了我们的代码库。我看着它想:“嗯,这图还可以。但我稍微想调整一下,标签离线条有点远,我想把它们移近点。”
[原文] [Martin Fowler]: so i open up the svg of what the llb has produced and oh i mean it was astonishingly how complicated and convoluted it was for something that i had written the previous one myself and i knew it was you know a dozen lines of svg and svg is not exactly a compact language right because it's xml but this thing was gobsmackingly um weird
[译文] [Martin Fowler]: 于是我打开了 LLM 生成的 SVG 文件,天哪!它的复杂和扭曲程度简直令人震惊。以前那张图是我自己写的,我知道它只需要十几行 SVG 代码。虽然 SVG 本身不算是一种紧凑的语言(因为它是 XML),但这东西简直怪异得让人目瞪口呆。
[原文] [Martin Fowler]: and i mean that's the thing when you vibe code stuff it's going to produce god knows what and often it really is and you cannot then tweak it a little bit you have to basically throw it away and hope that you can generate whatever it is you're trying to tweak
[译文] [Martin Fowler]: 这就是问题所在:当你进行“氛围编码”时,它会生成天知道什么东西。通常情况确实如此,你无法对它进行微调。你基本上只能把它扔掉,然后祈祷你能重新生成出你想调整后的样子。
[原文] [Martin Fowler]: and the other thing of course that's the difference and this is the the heart of the article that unmesh wrote um that we published yesterday is when you're using vibe coding in this kind of way you're actually removing a very important part of of something which is the learning loop
[译文] [Martin Fowler]: 当然还有另一点不同,这也是 Unmesh 昨天发表的那篇文章的核心观点:当你以这种方式使用氛围编码时,你实际上移除了非常重要的一部分,那就是“学习闭环”(learning loop)。
[原文] [Martin Fowler]: if you're not looking at the output you're not learning and the thing is that so much of what we do is we come up with ideas we try them out on the computer with this constant back and forth between what the computer does with what we're thinking we're constantly going through that learning loop program approach and unash's point which i think is absolutely true is you cannot shortcut that process
[译文] [Martin Fowler]: 如果你不看输出,你就学不到东西。我们在做的大部分事情就是:产生想法,在电脑上尝试,在电脑的反馈和我们的思考之间不断来回往复。我们不断经历这种学习循环的编程方法。Unmesh 的观点——我认为绝对正确——是你不能在这个过程中抄近道。
[原文] [Martin Fowler]: and what llm do they just kind of skim over all of that and you're not learning and when you're not learning that means that when you produce something you don't know how to tweak it and modify it and evolve it and grow it all you can do is nuke it from orbit and start again
[译文] [Martin Fowler]: 而大语言模型所做的只是略过了所有这些过程,结果你什么都没学到。当你没学到东西时,这意味着当你生产出某个东西后,你不知道如何微调它、修改它、演进它或扩展它。你唯一能做的就是通过轨道轰炸彻底摧毁它(nuke it from orbit),然后重新开始。
[原文] [Gergely Orosz]: the other thing i've done occasionally with vibe coding is oh vibe coding as a consulting company so many problems to fix for sure but you are right on the learning the the the learning side both on on vibe coding and ai one one thing that i'm noticing on on myself is it is so easy to you know give a prompt you get a bunch of output and you know you should be reviewing a lot of this code either yourself or or in a code review but what i'm seeing on myself is i'm at some point i start to get a bit tired and i just let it let let it go
[译文] [Gergely Orosz]: 还有一件事……哦,把氛围编码作为一家咨询公司的业务,那肯定有很多问题要修。但你在学习方面说得很对。不论是氛围编码还是 AI,我注意到我自己身上发生的一件事是:给出一个提示词,得到一堆输出,这太容易了。你知道你应该审查这些代码,无论是自己看还是通过代码审查。但我发现自己到了某个点就会开始有点累,然后就放任它过去了。
[原文] [Gergely Orosz]: and this is also what i'm hearing when talking with software engineers is the ones who are working at companies which are adopting these tools which is pretty much every company it's there's a lot more code going out there a lot more code to review and they're asking "how can i be vigorous at code reviews when there's just more and more of them than before?"
[译文] [Gergely Orosz]: 这也是我和软件工程师交谈时听到的。那些在采用这些工具的公司(基本上每家公司都在用)工作的工程师说,现在的代码量大了很多,需要审查的代码也多得多。他们在问:“当代码量比以前多得多的时候,我怎么能在代码审查时保持严谨?”
[原文] [Gergely Orosz]: i wonder if this is not all that new in the sense that i remember you know one of the last kind of big productivity boosts in the industry uh about 10 or 15 years ago was stack overflow appearing... you bump into this site called experts to change and there was the question and you had to pay money... but then stack overflow came along and suddenly you had code snippets that you could copy
[译文] [Gergely Orosz]: 我在想这是否并不新鲜。我还记得行业上一次巨大的生产力提升大概是在 10 到 15 年前,那时 Stack Overflow 出现了……(以前)你会撞到一个叫 Experts Exchange 的网站,那里有你要的问题,但你得付钱才能看……但后来 Stack Overflow 来了,突然之间你有了可以复制的代码片段。
[原文] [Gergely Orosz]: and of course what a lot of young people or like less experienced developers even like myself did is you just take the code put it in there and see if it works... but i feel we've been there was a few years where where we were going back and forth of people mindlessly copying pasting uh snippets... i feel we kind of been around this already
[译文] [Gergely Orosz]: 当然,很多年轻人或者像我这样经验不足的开发者所做的,就是把代码拿过来,放进去,看看能不能跑……我觉得我们确实经历过几年人们无脑复制粘贴代码片段的时期……我觉得我们以前就经历过这种状况。
[原文] [Martin Fowler]: yeah it's a similar kind of thing but maybe at a smaller scale yeah but even more boosted and on steroids
[译文] [Martin Fowler]: 是的,这是类似的事情,但可能以前规模较小。而现在是被极大增强了,像是打了激素(on steroids)。
[原文] [Gergely Orosz]: so i i i wonder if what we're getting to is like you need to care about the craft you you need to understand what the llm's output is and it's there to help you and if you're not doing it i mean like you should but but if you're not you'll eventually be no better than someone just prompting it mindlessly
[译文] [Gergely Orosz]: 所以我在想,我们是否回到了这一点:你需要在乎这门手艺(craft)。你需要理解 LLM 的输出是什么,它是来帮助你的。如果你不这么做——我是说你应该这么做——但如果你不这么做,你最终将和一个只会无脑输入提示词的人没什么两样。
[原文] [Martin Fowler]: exactly yeah i mean it i mean i have no problem with taking something from the llm and stick putting it in to see if it works but then once you've done that understand why it works as you say and also look at it and say is this really structured the way i'd like it to be don't be afraid to refactor it
[译文] [Martin Fowler]: 确实如此。我是说,我并不反对从 LLM 那里拿点东西放进去看看能不能跑。但一旦你这么做了,正如你所说,要理解它为什么能跑。而且还要审视它,问自己:“这真的是我想要的结构吗?” 不要害怕去重构它。
📝 本节摘要:
本章聚焦于 AI 编程中的核心风险——“非确定性”带来的信任危机。Martin 引用 Simon Willison 和同事 Birgitta 的观点,强调在使用 AI 生成代码时,测试(Testing)比以往任何时候都更为重要。Gergely 分享了一个令人啼笑皆非的案例:AI 在简单的配置文件日期任务中反复“撒谎”(Gaslighting),甚至无法正确获取“今天”的日期。Martin 对此总结了应对 AI 的黄金法则:绝不信任,必须验证(Don't trust, but verify)。
[原文] [Martin Fowler]: don't be afraid to put it in and then of course the testing combo anything you put in that works you need to have a test for and and if you constantly are doing that back and forth with the testing process
[译文] [Martin Fowler]: 不要害怕把它放进去,然后当然是“测试组合拳”(testing combo)。任何你放进去能运行的代码,你都需要有对应的测试。如果你能持续地在这个测试流程中来回往复……
[原文] [Martin Fowler]: i mean one of the people i i particularly uh focus on in this space is simon willis and something he stresses constantly is the importance of tests but testing is a huge deal to to him and being able to make these things work
[译文] [Martin Fowler]: 我在这个领域特别关注的一个人是 Simon Willison,他不断强调测试的重要性。对他来说,测试是至关重要的大事,是让这些东西能够正常工作的关键。
[原文] [Martin Fowler]: and of course you know bea is is from fort works we're very much an extreme programming company so she's steeped in in in testing as well so she will say the same thing you got to really focus a lot on making sure that the tests work together
[译文] [Martin Fowler]: 当然,你知道 Birgitta(注:ThoughtWorks 同事)来自 ThoughtWorks,我们是一家非常推崇极限编程(Extreme Programming)的公司,所以她也深受测试文化的熏陶。她也会说同样的话:你必须非常专注于确保测试能够协同工作。
[原文] [Martin Fowler]: and of course this is where the llm struggle because you tell them to do the tests and i'm i'm only hearing problems or experiencing them myself like when the llm tells me "oh and i ran all the tests everything's fine you got npm test five failures."
[译文] [Martin Fowler]: 当然,这也是大语言模型(LLM)挣扎的地方。因为你让它们去写测试,但我听到的或者我自己经历的都是问题。比如 LLM 告诉我:“噢,我运行了所有测试,一切正常。” 结果你自己一跑 npm test,五个失败。
[原文] [Gergely Orosz]: h yeah i i i see some improvements there by the way with with clock code also like other agents but yes it's the nondeterministic angle sometimes they can lie to you which is weird right i'm i'm still not they do lie to you all the time in fact if if if they were truly a junior developer which is how sometimes people like to say they should be characterized i would be having some words with hr yeah
[译文] [Gergely Orosz]: 哈哈,是的。顺便说一句,我看到 Claude code 和其他智能体(Agents)在这方面有一些改进。但是没错,这就是“非确定性”的角度——有时它们会对你撒谎,这很奇怪,对吧?我还是不太习惯……实际上它们一直在撒谎。如果它们真的是一个初级开发者——人们有时喜欢这样给它们定性——那我恐怕得去和 HR 谈谈了。
[译文] [Martin Fowler]: 是的。
[原文] [Gergely Orosz]: like i the other day i just had this really weird experience which is the simplest thing i have a configuration file where i add just new items a new json you know blob and i i put the date of when i added it just in the comments saying added on you know october 2nd added on november 1st it's always a current date
[译文] [Gergely Orosz]: 就像前几天,我有一次非常奇怪的经历,做的是最简单的事情。我有一个配置文件,我要往里面添加新条目,一个新的 JSON 数据块。我会在注释里写上添加日期,比如“10月2日添加”、“11月1日添加”,总是当前的日期。
[原文] [Gergely Orosz]: and i told the lm can you please add this configuration thing and add the current date and it added it and it added it just copied the last date and i said that is not today's date i said oh i'm so sorry you know let me correct that for you and it put yesterday's date
[译文] [Gergely Orosz]: 我跟 LLM 说:“请添加这个配置项,并加上当前日期。” 它加了,但它直接复制了上一条记录的日期。我说:“那不是今天的日期。” 它说:“噢,非常抱歉,让我为你更正。” 然后它填了一个昨天的日期。
[原文] [Gergely Orosz]: and and i i feel you need to get this experience to see that it can gaslight you for a simple thing of today's date which uh you know you know you could call a function whatnot but it's it's down to which who knows which model i was using how that model works whether the company creating it is optimizing for token usage or not etc etc etc
[译文] [Gergely Orosz]: 我觉得你需要亲自体验一下这种感觉,看看它是如何在一件像“今天的日期”这样简单的事情上对你进行煤气灯操纵(Gaslight)的。你知道,你本可以调用一个函数什么的来获取日期,但这取决于我用的是哪个模型、模型怎么工作、开发它的公司是否在优化 Token 使用量等等。
[原文] [Gergely Orosz]: so like in the end even for the simplest things you are as as a when you're a professional working on important stuff you should not trust
[译文] [Gergely Orosz]: 所以到底,即使是最简单的事情,当你作为一个专业人士处理重要工作时,你也不应该信任它。
[原文] [Martin Fowler]: yeah absolutely never yeah it's got to you've got to don't trust but do verify verify yes
[译文] [Martin Fowler]: 是的,绝对不要。这是必须的:不要信任,但要验证(Don't trust, but verify)。
[译文] [Gergely Orosz]: 验证,没错。
📝 本节摘要:
本章探讨了 AI 时代下“规格驱动开发”(Spec-Driven Development)的复兴与风险。Martin 警告说,如果试图一次性编写庞大的规格说明书,可能会重蹈“瀑布模型”(Waterfall)的覆辙;相反,他主张在极短的反馈循环中通过“薄切片”(Thin Slices)来迭代规格与代码。进一步地,他将这一理念连接到领域特定语言(DSL)与通用语言(Ubiquitous Language)的概念上:利用 AI 协助构建严谨的业务抽象,使非技术人员(如会计师)也能读懂并验证核心逻辑,从而真正打破业务与开发之间的隔阂。
[原文] [Gergely Orosz]: yeah one interesting area that burgetta is exploring ing is spec development there's this idea of what well you know lms have have their own limitations but what if we define pretty well what we want it to do and give it this like really good specification and you know it can run with it it can run long it had iterations and so on what is your take on this and do you have a bit of a dja vu because we we've heard this once right your your career started around this thing called waterfall development so how how how are you seeing it similar but also different this time
[译文] [Gergely Orosz]: 是的,Birgitta 正在探索的一个有趣领域是“规格开发”(Spec Development)。这个想法是这样的:虽然大语言模型有其局限性,但如果我们能很好地定义我们想要它做什么,给它一份非常好的规格说明书(Specification),它就可以照着做,甚至可以长时间运行、迭代等等。你怎么看这个?你会有似曾相识的感觉吗?因为我们以前听过这个,对吧?你的职业生涯开始于所谓的“瀑布式开发”(Waterfall Development)。所以你觉得这次有什么相似之处,又有什么不同?
[原文] [Martin Fowler]: well the the this the similar to waterfall is where people try and say let's create a large amount of spec and not pay much attention to the code and here i mean whether you whether you talk again this is what you mean by speciment is it so much focusing on that or is it doing small bits of spec do the tight loop
[译文] [Martin Fowler]: 嗯,这与瀑布模型的相似之处在于,人们试图说“让我们创建大量的规格说明”,而不怎么关注代码。在这里,这取决于你所谓的“规格”是指专注于编写大量文档,还是做一小部分规格,然后进行紧密的循环(tight loop)。
[原文] [Martin Fowler]: i mean to me the key thing is you want to you want to avoid the the waterfall problem of trying to build the whole spec first it's got to be do a do the smallest amount of spec you can probably you can possibly get to make some forward progress cycle with that build it get it tested get it in production if possible and then cycle with these thin slices
[译文] [Martin Fowler]: 对我来说,关键是你要避免瀑布模型的问题,即试图先构建完整的规格说明。你必须做你能做的最小量的规格说明,以便取得一些进展,然后以此进行循环:构建它,测试它,如果可能的话把它投入生产,然后在这些“薄切片”(thin slices)中不断循环。
[原文] [Martin Fowler]: what role a spec may play to drive in either case could be argued to be a spec form of spec driven development but to me what matters is the tight the tight loops the the thin slices that kind of thing and i know big definitely agrees on that point coming because she and you have to be the human in the loop verifying every time that's that's clearly crucial
[译文] [Martin Fowler]: 在这种情况下,规格说明扮演什么角色,都可以被称为某种形式的“规格驱动开发”。但对我来说,重要的是紧密的循环、薄切片这类东西。我知道 Birgitta 肯定同意这一点,因为你必须作为“人在回路”(human in the loop)每次进行验证,这显然是至关重要的。
[原文] [Martin Fowler]: where the spectrum and development then ties in interesting again it comes back to this thinking of building domain languages and domain specific languages and things of that kind can we craft some kind of more rigorous spec to talk about
[译文] [Martin Fowler]: 规格驱动开发在这里变得有趣的地方,又回到了构建“领域语言”(Domain Languages)和“领域特定语言”(Domain Specific Languages, DSLs)这类思维上。我们能否构建某种更严谨的规格来进行讨论?
[原文] [Martin Fowler]: and that's you know i mentioned what the wood mesh was doing there using it to build an abstraction because essentially what we're saying is that it gives us the ability to build and express abstractions in a slightly more fluid form than we would be able to do if we were building them purely within the codebase itself but we still don't want them to deviate too much from the codebase right
[译文] [Martin Fowler]: 我之前提到过 Unmesh 在做的事情,即使用 AI 来构建抽象。因为本质上我们是在说,这赋予了我们以一种比单纯在代码库中构建更流畅的形式来构建和表达抽象的能力。但我们仍然不希望它们偏离代码库太远,对吧?
[原文] [Martin Fowler]: we still want the ubiquitous language notion that it's the same language in our head as is in the code and we're seeing the same names and they're doing the same kinds of things the structure is clearly parallel but obviously the way we think is a bit more flexible than the way the code can be and then you know can we blur that boundary a bit by using the llm as a tool in that area so that's the area that i think is interesting in in that direction
[译文] [Martin Fowler]: 我们仍然想要“通用语言”(Ubiquitous Language)的概念,即我们头脑中的语言与代码中的语言是一致的:我们看到相同的名称,它们做着同样的事情,结构明显是平行的。但显然,我们的思考方式比代码的实现方式要灵活一些。那么,我们能否利用大语言模型作为工具,在某种程度上模糊这一界限?这就是我认为在这个方向上很有趣的领域。
[原文] [Gergely Orosz]: it it's interesting as new because i i feel we've never been able to use language as close to representing code ever or or like business logic and this is very new
[译文] [Gergely Orosz]: 这很有趣,也很新颖。因为我觉得我们以前从未能够使用如此接近代码或业务逻辑的语言来表达,这非常新。
[原文] [Martin Fowler]: yeah although again people i mean there are plenty of people who take that kind of dsl like thinking into their programming and i would to i know people who would say yeah i would i would get to the point where i could write certain parts of the business logic in you know a programming language like say ruby and show it to a domain expert and they could understand it they wouldn't feel the ability to be able to write it themselves but they could understand it enough to point out whether what was wrong or what was right in there
[译文] [Martin Fowler]: 是的,虽说如此,但我知道有很多人已经把这种 DSL 式的思维带入到了编程中。我认识一些人,他们会说:“是的,我可以做到这一步:用像 Ruby 这样的编程语言编写某些业务逻辑部分,然后展示给领域专家看,他们能看懂。” 他们虽然不觉得自己能写出来,但他们能理解,足以指出哪里错了或哪里是对的。
[原文] [Martin Fowler]: and this is just programming code but it it that requires a certain degree of the way you go about projecting the language in order to be able to get that kind of fluidity and so it's but that kind of thinking like trying to make an internal dsl of a programming language or maybe building your own external dsl dsl meaning domain specific language like if you're working with accountants you're going to have the terms that they they use the way they use it and so on
[译文] [Martin Fowler]: 这虽然只是程序代码,但为了获得那种流畅性,需要你在语言投射方式上下一定功夫。这种思维方式就像是试图在编程语言内部构建一个“内部 DSL”,或者构建你自己的“外部 DSL”。DSL 的意思是领域特定语言。比如,如果你和会计师一起工作,你就会使用他们使用的术语、他们使用的方式等等。
[原文] [Martin Fowler]: yeah and what you're trying to do of course is create that communication route where pe where a non-programmer can at least read what's going on and understand it enough to to be able to find what's wrong about it and and to suggest changes which may not be syntactically correct but you can easily fix them because you as a programmer you can see how to do that and that's the kind of goal and some people have reached that goal in some places so the interesting thing is whether whether llms will enable us to make more progress in that direction and see that happening more widely
[译文] [Martin Fowler]: 是的,你试图做的当然是建立那条沟通路径,让非程序员至少能读懂正在发生什么,理解程度足以发现问题并建议修改。这些建议可能在语法上不正确,但这很容易修复,因为作为程序员你知道怎么改。这就是目标,有些人在某些地方已经达成了这个目标。所以有趣的是,大语言模型是否能让我们在这个方向上取得更多进展,并让这种情况更广泛地发生。
📝 本节摘要:
本章将视线转向了复杂的企业级环境。Martin 指出,与初创公司不同,大型企业(如银行、航空公司、政府机构)深受遗留系统、监管法规和历史包袱的束缚。他以波士顿联邦储备银行(Federal Reserve)为例,形象地描述了其核心业务(处理现金)的高风险属性如何决定了其在软件开发上的极度审慎态度——目前甚至严格限制触碰大语言模型。Gergely 则观察到,尽管存在这种“技术鸿沟”,AI 的渗透速度依然惊人,连最保守的机构也在评估。Martin 最后强调了一个关键洞察:大企业并非铁板一块,其内部不同部门间的创新差异往往比企业之间的差异更大。
[原文] [Gergely Orosz]: and i guess this must be i'm just assuming correct me if i'm wrong this must be especially important in enterprises these very large companies where software developers are not the majority of people let's say they're 10 or 20% of staff and there's going to be accounting marketing special business divisions who all want software written for them and they know what they want and historically there's been layers of people translating this may that be the project manager the technical pro etc so you're saying that there could be a pretty interesting opportunity or or just an experiment uh with lm that maybe we can we can make this a bit easier for both sides
[译文] [Gergely Orosz]: 我猜——如果我错了请纠正我——这在企业级环境中一定特别重要。在这些非常大的公司里,软件开发人员并不是大多数,可能只占员工的 10% 或 20%。还有会计、市场营销、特殊业务部门,他们都想要为他们编写软件,而且他们知道自己想要什么。历史上,这里存在着层层叠叠的“翻译人员”,可能是项目经理、技术专家等等。所以你的意思是,这可能是一个相当有趣的机会,或者说是一个实验,利用大语言模型也许我们可以让双方的沟通变得更容易一些?
[原文] [Martin Fowler]: that is the world i'm most familiar with right is that world i mean um one i mean i i my sense is you're very familiar with the big tech company and the startup worlds but this corporate enterprise world of course is a whole different kettle of fish because exactly the reason that you said suddenly the software developers are a small part of the picture and there's very complex business things going on that we've got to somehow interface in and of course also there's usually a much worse legacy system problem as well
[译文] [Martin Fowler]: 那正是我最熟悉的世界。我的感觉是,你非常熟悉大型科技公司和初创公司的世界,但这个企业级世界完全是另一回事(a whole different kettle of fish)。正是因为你说的那个原因,突然之间软件开发人员只占图景的一小部分,而且正在发生的业务非常复杂,我们必须以某种方式接入其中。当然,通常那里还有更严重的遗留系统问题。
[原文] [Martin Fowler]: um and and there's going to be regulation there's going to be a history there's going to be exceptions because of all the knowledge i i think we can all just think of banks of all the things cuz there's there's perfect storm right they have regulation that changes all the time they have incidents that they want to avoid going future they'll have special vip i don't know accounts or whatever that they'll want to do and of course they have all these business units that all know their own rules and and frameworks and they've been around since before technology some of some of the banks have been around for you know 100 plus years
[译文] [Martin Fowler]: 那里会有监管,会有历史包袱,会有各种因知识积累而产生的例外情况。我想我们都能想到银行,因为那简直是“完美风暴”:他们的监管规定一直在变;他们有必须避免再次发生的事故;他们有特殊的 VIP 账户或其他无论什么东西要处理。当然,他们还有所有这些业务单元,每个单元都有一套自己的规则和框架。而且早在技术出现之前他们就存在了,有些银行已经存在了 100 多年。
[原文] [Gergely Orosz]: yeah and remember the banks tend to be more technological advanced than most other corporations in software
[译文] [Gergely Orosz]: 是的,而且要记得,银行在软件方面往往比大多数其他企业在技术上更先进。
[原文] [Martin Fowler]: that's a good one you're looking at the at the good bit when you're talking about banks you you have worked with some with some of the less advanced folks as well i mean yeah retailers airlines government agencies things of that kind i mean it was interesting i was chatting with some folks working in the federal reserve in boston and uh you know they're they have to be extremely cautious they are not allowed to touch llms at the moment because you know the the consequences of error when you're dealing with you know a major um government banking organization are pretty damn serious so you've got to be really really careful about that kind of stuff
[译文] [Martin Fowler]: 这话说得不错,谈论银行时你看到的是好的一面。你也和一些不那么先进的机构合作过,比如零售商、航空公司、政府机构之类的。这很有趣,我曾和波士顿联邦储备银行(Federal Reserve in Boston)的一些人聊天。你知道,他们必须极其谨慎,目前他们是不允许触碰大语言模型的。因为当你处理一个主要的政府银行机构的事务时,出错的后果是非常严重的。所以你必须对这类事情非常非常小心。
[原文] [Martin Fowler]: and and yeah their constraints are very different and and it it it brought to mind this there's a an adage that says that to understand how the software development organization works you have to look at the core business of the organization and see what they do
[译文] [Martin Fowler]: 是的,他们的约束条件非常不同。这让我想起了一句格言:要理解一个软件开发组织是如何运作的,你必须观察该组织的核心业务,看他们是做什么的。
[原文] [Martin Fowler]: interesting i i was at this agile conference for the federal reserve in boston and they took me a tour of the federal reserve but where they handle the money and so i saw the places where they bring in the the notes that have been brought in from the banks and they kind of clean them and count them and all the rest of it and and send out the stuff again and you look at the degree of care and control that they go through own as you could imagine i mean when you're bringing in huge wges of cash and it has to be sorted and counted and all the rest of it the controls have to be really really strenuous
[译文] [Martin Fowler]: 有意思的是,我在波士顿参加了联邦储备银行的一个敏捷会议。他们带我参观了美联储处理现金的地方。我看到了他们把从各银行收回的钞票运进来的地方,他们清洗钞票、清点钞票,处理所有后续工作,然后再把钱发出去。你看看他们所采取的那种小心程度和控制力度——正如你可以想象的那样,当你运进来巨额现金,必须分类、清点和处理时,控制措施必须非常非常严格。
[原文] [Martin Fowler]: and you look at that and you look at the care with which they do all of this and you say "yep i can see why in the software development side that mindset percolates because they are used to the fact that they really have to be c careful about every little thing here." a lot of corporations of course have that similar notion you're you're involved in an airline you are really concerned about safety you're really concerned about um getting people to their death that affects your whole way of thinking or ought to and it does
[译文] [Martin Fowler]: 当你看着这些,看着他们做这一切时的谨慎,你会说:“是的,我明白为什么这种心态会渗透到软件开发方面了,因为他们习惯了必须对这里的每一件小事都极其小心。” 当然很多大公司都有类似的概念。如果你在航空公司工作,你会非常关注安全,非常担心把人送上绝路。这会影响你的整个思维方式——或者说应该影响,而事实也确实如此。
[原文] [Gergely Orosz]: and i guess this is a reason we are clearly seeing we always see a divide in technology usage because you have the startups which is a group of people they just raised some funding or they have no funding they have nothing to lose they have they have zero customers they have everything to gain they they need to jump on the latest bandwagon they want to try out the latest technologies oftentimes build on top of them or sell tools to use the latest technology and they're here to break the rules and you know midway when there's when you start to have a few customers in a business you're starting to be a bit more careful and of course you know 50 or 70 years down the road when the founders have gone and and now it's a large enterprise you will just have different risk tolerance right
[译文] [Gergely Orosz]: 我想这就是我们总是能清晰看到技术使用上存在鸿沟的原因。一方面你有初创公司,这群人刚融到资或者没钱,他们没什么可失去的,他们没有客户,只有赢得一切的机会。他们需要跳上最新的潮流,尝试最新的技术,通常是在此基础上构建产品或者出售使用这些最新技术的工具。他们就是来打破规则的。而当你处于中间阶段,有了一些商业客户时,你会开始变得小心一点。当然,如果是 50 年或 70 年后,创始人已经离开,现在是一个大型企业,你的风险承受能力就会完全不同,对吧?
[原文] [Martin Fowler]: exactly yeah but what what what i find fascinating talking about this that i'm unsure if there has been any new technology that has been so rapidly adopted everywhere you mentioned that let's say the federal reserve or some other government organizations might say let's not touch this yet but they are also evaluating it sounds like it so if they're you know they're the one of the most i guess behind in the technology curve for very good reason they're already aware of it or using it which probably means that it's everywhere now
[译文] [Martin Fowler]: 确实如此。
[译文] [Gergely Orosz]: 但让我觉得着迷的是,我不确定是否有任何新技术曾像这样被如此迅速地广泛采用。你提到像美联储或其他政府机构可能会说“我们先别碰这个”,但听起来他们也在评估它。所以如果连他们——我想是因为很好的理由而处于技术曲线最末端的人——都已经意识到了它或者在使用它,这可能意味着它现在真的无处不在了。
[原文] [Martin Fowler]: oh it is i mean it is i mean we see it all over the place but again with that with with more caution in the enterprise world where they're saying "yeah we we also see the dangers here."
[译文] [Martin Fowler]: 噢,确实是。我的意思是,我们到处都能看到它。但在企业界确实更加谨慎,他们会说:“是的,我们也看到了这里的危险。”
[原文] [Gergely Orosz]: and then you're you're seeing kind of more nimble companies that you work with and the more enterprise focused what would you say is the biggest difference between their relationship of of ai uh their approach is it is it this caution or are there other characteristics that the the the big more traditional less more riskaverse companies approach it differently
[译文] [Gergely Orosz]: 既然你既看到了那些敏捷的公司,也看到了更注重企业的公司,你会说它们在 AI 关系或方法上最大的区别是什么?是这种谨慎吗?还是有其他特征让那些大型的、更传统的、风险厌恶型公司采用了不同的方法?
[原文] [Martin Fowler]: the the important thing to remember with any of these big enterprises is they are not monolithic so it'll be small portions of these companies can be very adventurous and other portions can be extremely not so and so what you'll see is small i mean like you know when i when i started at cheetah lightwe right and i was in this little bit that was being very very aggressively doing really wacky things right i mean you'll find that in any any big organization you'll find some small bits doing some stuff um and so it's really the variation within an enterprise often is bigger than the variation between enterprises good to keep that in mind
[译文] [Martin Fowler]: 关于这些大企业,要记住的重要一点是:它们不是铁板一块(not monolithic)。这些公司的一小部分可能非常具有冒险精神,而其他部分可能极度保守。所以你会看到一些小的……就像我刚在 Coopers & Lybrand(注:即前文提到的 Cheetum and Lightum)工作时,我就在那样一个小部门里,非常激进地做着真正古怪的事情。在任何大组织里,你都会发现一些小团队在搞事情。所以实际上,企业内部的差异往往比企业之间的差异还要大。记住这一点很有好处。
📝 本节摘要:
在本章中,Martin 回顾了他经典著作《重构》(Refactoring)的诞生始末。他提到自己是在克莱斯勒项目中从 Kent Beck 那里偷师学到了这一技巧,并被“微小步骤”汇聚成的巨大威力所震撼。他解释了为何在 2019 年的第二版中将演示语言从 Java 换成了 JavaScript:为了触达更广泛的受众并展示非面向对象的重构。谈及 AI 时代,Martin 认为随着 AI 生成大量“质量存疑”的代码,重构的重要性不降反升。他设想了一种理想的工作流:AI 不应直接修改代码,而应充当“驾驶员”,去驱动那些可靠的、确定性的重构工具来完成任务。
[原文] [Gergely Orosz]: so speaking about refactoring lm are very good at refactoring and and you you've written the book back in 1999 called refactoring ... why did you decide to write this book back in 1999 can you bring us back on what the envir environment was like and what was the impact of the first edition of this book
[译文] [Gergely Orosz]: 说到重构,大语言模型(LLM)很擅长重构。你在 1999 年写了《重构》这本书……你当时为什么决定写这本书?能不能带我们回到那个时代,讲讲当时的环境是怎样的,以及第一版书产生了什么影响?
[原文] [Martin Fowler]: okay so i first came across refactoring at chrysler yeah when i was working with kemp beck right early on in the project um we we i remember in my hotel room the courtyard or whatever in detroit him showing me how he would refactor some small talk code ... what he was doing was taking these tiny little steps and and i was just astonished at how small each step was but how because they were small they didn't go wrong and they would compose beautifully and you could do a huge amount with this sequence of little steps and that really blew blew my mind away i thought "wow this is a big big deal."
[译文] [Martin Fowler]: 好吧,我第一次接触重构是在克莱斯勒项目上,当时我和 Kent Beck 一起工作。那是项目早期,我记得在底特律的一家万怡酒店(Courtyard)还是什么地方的房间里,他向我演示他如何重构一些 Smalltalk 代码……他所做的就是采取这些极其微小的步骤。我当时非常震惊,每一步都那么小,但也正因为它们很小,所以不会出错,而且它们能完美地组合在一起。通过这一系列的小步骤,你可以完成巨大的工作量。这真的让我大开眼界,我想:“哇,这真是个了不起的大事。”
[原文] [Martin Fowler]: but kent was at the time his energy was to write the first extreme programming book the white book he didn't have the energy to write a refactoring book so i thought well i'm going to do it then ... and i did it in java not in small talk because small talk was dying sadly and java was the language of the future
[译文] [Martin Fowler]: 但当时 Kent 的精力都花在写第一本极限编程(Extreme Programming)的书——那本白皮书上了,他没有精力写重构的书。所以我想,好吧,那我就来写。我用 Java 而不是 Smalltalk 来写,因为 Smalltalk 很遗憾正在消亡,而 Java 是未来的语言。
[原文] [Martin Fowler]: but it was the jet brains folks that really caught the imagination because they put it into the early versions of intelligj idea and really ran with it then you ran into it with resharper of course um and um they really made the automated refactorings become something that people could rely on
[译文] [Martin Fowler]: 但真正抓住这一想象力的是 JetBrains 的人,因为他们把重构功能放进了 IntelliJ IDEA 的早期版本中,并真正将其发扬光大。后来当然你也通过 ReSharper 接触到了它。他们确实让自动化重构变成了人们可以依赖的东西。
[原文] [Gergely Orosz]: what made you do a second edition for the book 20 years later in 2019 which was fairly recent
[译文] [Gergely Orosz]: 是什么让你在 20 年后的 2019 年——也就是不久前——推出了这本书的第二版?
[原文] [Martin Fowler]: well it was a sense of um wanting to refresh ... i was also concerned that i mean when you've got a book that's written in late 1990s java it it shows its age a bit yes ... and in in the end i decided to switch to javascript i felt it would reach a broader audience that way and also allow a less object-oriented centered way of describing things so instead of extract method it's extract function
[译文] [Martin Fowler]: 嗯,是想更新一下内容的感觉……我也担心,你知道,一本用 90 年代末的 Java 写的书,确实有点显老了。最终我决定换成 JavaScript。我觉得这样能触达更广泛的受众,同时也允许我用一种不那么以面向对象为中心的方式来描述事物。所以不再是“提炼方法”(Extract Method),而是“提炼函数”(Extract Function)。
[原文] [Gergely Orosz]: looking ahead with ai tools they they generate a lot more code a lot faster so we're just going to have a lot more code ... how do you think the value of of refactoring thinking about the your intended meaning of of those small ongoing changes is going to be important
[译文] [Gergely Orosz]: 展望未来,AI 工具生成代码的速度要快得多,量也大得多,所以我们会有更多的代码……你认为重构的价值——即你所指的那种持续的小幅修改——会有多重要?
[原文] [Martin Fowler]: i can certainly expect it to be increasingly important um because again if you're going to produce a lot of code of questionable quality but it works then refactoring is a way to get it to into a better state while keeping it working
[译文] [Martin Fowler]: 我完全可以预期它会变得越来越重要。因为如果你要生产大量质量存疑但能运行的代码,那么重构就是一种在保持其可运行的同时、将其状态变好的方法。
[原文] [Martin Fowler]: it'll be interesting as well to see if it provides a way for us to control the tool ... i think those kinds of things are really quite interesting using the llm as a starting point to drive a deterministic tool and then you're able to see what the deterministic tool is doing that's i think where there's some interesting interplay
[译文] [Martin Fowler]: 看它是否能为我们提供一种控制工具的方式也会很有趣……我认为这类事情真的非常有趣:使用大语言模型作为起点,去驱动一个确定性的工具,然后你能看到那个确定性工具在做什么。我认为那是这两种技术之间会有趣的互动点。
📝 本节摘要:
本章探讨了软件架构模式(Software Architecture Patterns)在过去二十年间的地位变迁。Gergely 观察到,从《设计模式》(Gang of Four)和 Martin 的《企业应用架构模式》盛行的 2000 年代,到 2010 年后,行业内关于“模式”的讨论似乎逐渐冷却。Martin 解释道,模式的本质是建立一套精准沟通的“词汇表”(类似于医学术语),而非为了在简历上“挂勋章”。两人探讨了模式衰落的可能原因:初创公司对“老派”规则的抵触、公司内部“黑话”(Jargon)的兴起,以及 Grady Booch 的观点——云服务(AWS、Google Cloud)提供了封装好的架构积木,使得开发者不再需要像以前那样关注底层模式。最后,Martin 指出,大企业内部复杂的历史遗留和独特的命名体系,往往构成了比技术本身更大的理解壁垒。
[原文] [Gergely Orosz]: speaking about going on from refactoring to software architecture you were very busy writing books around the early 2000 you wrote the book patterns of enterprise application architecture in 2002 and this was a collection of more than 40 patterns uh things like lazy load identity map template view and many others
[译文] [Gergely Orosz]: 说完重构,我们聊聊软件架构。你在 2000 年代初非常忙于写书,你在 2002 年写了《企业应用架构模式》(Patterns of Enterprise Application Architecture)。那本书收集了 40 多个模式,比如延迟加载(Lazy Load)、身份映射(Identity Map)、模板视图(Template View)等等。
[原文] [Gergely Orosz]: and i remember around this time there was your book about enterprise uh architecture patterns there was also the gang of four book there was a lot of talk when i was interviewing around that time on interviews they were asking me questions about how to do a factory pattern and singleton and and all of these things software architecture was talked about my sense was in a lot of places or a lot more then something happened something starting from the 2010s i i no longer hear most technologists talk about patterns or architecture patterns how have you observed this period of when the book came out what was the impact of it and why why was it important to to talk about it and and put it into the industry and how have you seen this change of where we stopped talking more on on patterns and why do you think it happened
[译文] [Gergely Orosz]: 我记得那个时候,除了你的企业架构模式书,还有“四人帮”(Gang of Four)的那本书。当时有很多讨论,我去面试的时候,他们会问我如何实现工厂模式(Factory Pattern)、单例模式(Singleton)以及所有这些东西。我的感觉是,那时候很多地方都在谈论软件架构。但后来发生了一些变化,大概从 2010 年代开始,我不再听到大多数技术人员谈论模式或架构模式了。你是如何观察这本书出版时的那个时期的?它的影响是什么?为什么当时谈论它并将它引入行业很重要?你又是如何看待后来我们不再过多谈论模式这种变化的?你认为为什么会发生这种情况?
[原文] [Martin Fowler]: yeah that i mean i've always found it a i mean what you're doing with patents is you're trying to create a vocabulary to talk more effectively about this kind of these kind of situations i mean it's just like in you know in the medical world they come up with this jargon in greek and latin to more precisely talk about things that are quite involved and complex
[译文] [Martin Fowler]: 是的,我一直觉得……使用模式其实是在试图创造一种词汇表(vocabulary),以便更有效地讨论这类情况。这就像在医学界,他们发明了那些希腊语和拉丁语的术语(jargon),是为了更精准地讨论那些相当深奥和复杂的事物。
[原文] [Martin Fowler]: yes and with patents what we're trying to do is trying to evolve that same kind of language except we're not doing it in greek and latin i certainly feel that they they do help communication flow more effectively you know once people are familiar with that terminology
[译文] [Martin Fowler]: 是的,而我们用模式试图做的,就是演化出同样的语言,只不过我们不用希腊语和拉丁语。我确实觉得,一旦人们熟悉了这些术语,它们确实有助于让沟通更顺畅。
[原文] [Martin Fowler]: i mean you don't look at them as some kind of you know how many of them can you cram into the system you're building it's more a sense of how can you use it to describe your alternatives and the options that you have and also think about more about when to apply things or not apply them i mean patterns are only useful in certain contexts so you you you very much got to understand the context of when to use them
[译文] [Martin Fowler]: 我的意思是,你不应该把它们看作是那种“看我能往系统里塞进多少个模式”的东西。它更多的是一种工具,用来描述你的替代方案和选项,以及更多地思考何时应用或不应用它们。模式只在特定语境(context)下有用,所以你必须非常理解何时使用它们的语境。
[原文] [Martin Fowler]: and yeah it's it's kind of a shame that some of the the wind has gone out of the sails of that perhaps because people were overusing them in terms of trying to use them as a sort of a like pinning medals on a chest but it can still be very i mean i i mean i worked very recently with unmesh on his book on dist patterns in distributed systems and i felt that was a very good way of coming up with again a language to describe how we think about the core elements and better gain an understanding of how distributed systems work which is an important aspect of how to deal with life these days because we're all building these kinds of distributed systems so i still feel that they can be a very good way of expressing that
[译文] [Martin Fowler]: 是的,这股风潮确实有点退去了,这有点可惜。也许是因为人们过度使用了它们,把它们当成了某种“挂在胸前的勋章”(pinning medals on a chest)。但这仍然非常有用。我最近和 Unmesh 合作了他的关于分布式系统模式(Patterns in Distributed Systems)的书。我觉得那是一种非常好的方式,再次提出一种语言来描述我们如何思考核心要素,并更好地理解分布式系统是如何工作的。这是当今处理问题的一个重要方面,因为我们都在构建这类分布式系统。所以我仍然觉得模式是一种很好的表达方式。
[原文] [Gergely Orosz]: i i wonder if because i i've i' i've seen i've worked at places where we we used these things and then places where we just like threw them out the window no one was using it and a difference was honestly just kind of the age and the attitude of the company cuz there was a sense at some point that the patterns there were for legacy companies so startups would just start from a blank sheet of paper you know a whiteboard
[译文] [Gergely Orosz]: 我在想……因为我在一些地方工作过,我们在那里使用这些东西;我也在一些地方工作过,我们把这些东西扔出窗外,没人用它。老实说,区别就在于公司的年龄和态度。因为在某种程度上,人们觉得这些模式是给“遗留公司”(Legacy Companies)用的,而初创公司则从一张白纸开始,你知道,就是白板。
[原文] [Gergely Orosz]: you know uml was a perfect example where uml had pretty strict rules on how to do the arrows and if you do that right you could even generate code and do all these things and at startups the software architecture still exists but you just put it on the whiteboard and you just drew a box or a circle and you didn't care about the arrows and it was just uh i guess we we're not going to lock ourselves into existing ways of doing things
[译文] [Gergely Orosz]: UML 就是一个完美的例子。UML 对如何画箭头有非常严格的规则,如果你画对了,甚至可以生成代码做所有这些事情。但在初创公司,软件架构虽然存在,但你只是把它画在白板上,画个框或画个圆,你不在乎箭头怎么画。我想这就像是“我们不想把自己锁死在既有的做事方式中”。
[原文] [Gergely Orosz]: and i guess it's a generational thing as well you know every every few years a new generation comes out and the same way where at some point uh i i was one of the first people in college where it was super cool to use facebook and it was just all scholar students and then when my parents went on there it was super uncool to use facebook or my grandparents came on there like i i kind of like stopped using it when they started using it so i i wonder if there there's like like these waves going back and forth
[译文] [Gergely Orosz]: 我猜这也是代际差异(generational thing)。你知道,每隔几年就会有新的一代人出来。就像在某种程度上,我在大学时是第一批觉得用 Facebook 超酷的人,那时只有学生在用;但后来我父母上去了,用 Facebook 就变得超不酷了;或者我祖父母也上去了……当他们开始用的时候,我就有点不想用了。所以我在想是不是也有这种来回摆动的浪潮。
[原文] [Gergely Orosz]: because inside of these startups there is a language uh like you know lingo uh about how they talk about the architecture and it starts to form over time you start to see it whether it's longer tenure people you get more and more of the jargon except it's not in a book that anyone can read but you have to go in there or go to similar company where they take the jargon with them
[译文] [Gergely Orosz]: 因为在这些初创公司内部,其实也有一种语言,你知道,就是那种谈论架构的“行话”(Lingo)。它会随着时间推移而形成。你会开始看到,不管是不是老员工,行话越来越多。只不过这些行话不在任何一本大家能读到的书里,你必须进入那家公司,或者去一家类似的公司,因为人们会把这些行话带过去。
[原文] [Martin Fowler]: exactly and and people will create these jarens um and it's an inevitable part of communication you need to you need to can't explain everything from first principles requiring five paragraphs every single time if you're using the term all the time you just make a word out of it and then everybody creates their own words and all you're doing when you're coming up with a book like the patterns of distributed systems is you're trying to say "okay here's a set of words with a lot of definition and explanation of them and let's hope we can kind of converge on that so that we can communicate a bit more widely um but it's also quite natural for people to say you know within our little environment we create our own little jargon so we don't take notice of that and and then you get the the mismatches that occur as you only you only really notice that as you cross these different environments
[译文] [Martin Fowler]: 确实如此。人们会创造这些行话(jargons),这是沟通中不可避免的一部分。你不能每次都从第一性原理出发,用五个段落来解释所有事情。如果你一直用某个概念,你就会为此造一个词。每个人都会创造自己的词。当你写像《分布式系统模式》这样的书时,你所做的就是试图说:“好吧,这里有一组词,附带了很多定义和解释,希望我们能在这上面达成共识,以便我们可以更广泛地交流。” 但人们在自己的小环境里创造自己的小行话也是很自然的,所以他们可能不会注意那些书里的词。然后当你跨越不同的环境时,你才会真正注意到这种错位(mismatches)。
[原文] [Gergely Orosz]: grady bhc had a interesting take on this by the way so i asked him about the same thing because he's he's been so much into software he still is into software architecture and he's progressed the field a lot and he said that what he thinks happened is that starting in like 20 cuz the patterns died out from mainstream industry i'll say again it's it's still in some pockets but around the 2010s one interesting thing that happened around that time is cloud the cloud started to get bigger aws google cloud and a lot of companies started to build similar things
[译文] [Gergely Orosz]: 顺便说一句,Grady Booch 对此有一个有趣的看法。我也问过他同样的问题,因为他在软件领域投入了太多,至今仍热衷于软件架构,并推动了这个领域的发展。他说,他认为发生的事情是……因为模式从主流行业中消失了——我再次强调,它仍在某些小圈子里存在——但在 2010 年代左右,发生了一件有趣的事,那就是“云”(Cloud)。云开始变大,AWS、Google Cloud,很多公司开始构建类似的东西。
[原文] [Gergely Orosz]: and grady said that the these hyperscalers the cloud providers aws for example they they built all these services that are really well architected so you can kind of use one after the other and it's it's well done you don't need to worry too much about your data storage you just use let's say dynamob or or a managed postgress service so suddenly architecture is not all that important because these blocks take it care of you you have these building blocks and now you're talking about using this database on top of this system his observation was maybe architecture was solved with a well architectured building block that you could use and you didn't have to reinvent the wheel
[译文] [Gergely Orosz]: Grady 说,这些超大规模云服务商(Hyperscalers),比如 AWS,构建了所有这些架构非常完善的服务,你可以一个接一个地使用它们,它们做得很好。你不需要太担心数据存储,你只需要使用比如 DynamoDB 或者托管的 Postgres 服务。所以突然之间,架构变得不那么重要了,因为这些积木块(building blocks)替你解决了问题。你拥有了这些积木,现在你讨论的是在这个系统之上使用这个数据库。他的观察是:也许架构已经被这些架构良好的、可直接使用的积木块解决了,你不需要重新发明轮子。
[原文] [Martin Fowler]: yeah or but i suspect there's still patterns of using these things and that's something i haven't delved into because i just haven't had the the opportunity to focus on that or more precisely i haven't had enough of my colleagues uh banging my banging me on the door with with uh draft articles to be able to publish on it
[译文] [Martin Fowler]: 是的,但我怀疑在使用这些东西的过程中仍然存在模式。这方面我还没深入研究过,因为我还没机会专注于此,或者更准确地说,还没有足够多的同事敲我的门,拿着文章草稿来找我发表这方面的内容。
[原文] [Gergely Orosz]: well one pattern that i do see is every every company you know names their system some have wacky names some have logical names but when you talk about architecture you typically talk about like you know like like at at at uber we had the the bank emoji service which called which was be migrated to gulfream which was you know these all sound like doesn't make too much sense if if if you're from the outside sometimes they have like proper names they try with that the payment profile service but then there's a new version and that's now the payment pro that's pp pp2 anyway but inside any every company like you will talk about these specific names and you will talk about how they work how small they are how large they are and that's kind of i feel that's oftentimes the lingo
[译文] [Gergely Orosz]: 嗯,我确实看到的一个模式是,每家公司都会给他们的系统起名。有些名字很古怪,有些很合逻辑。但当你谈论架构时,你通常会说……比如在 Uber,我们有一个“银行表情包服务”(Bank Emoji Service),它后来被迁移到了“湾流”(Gulfstream)。如果你是外人,这些听起来完全没道理。有时他们也会尝试用正经名字,比如“支付档案服务”(Payment Profile Service),但后来有了新版本,就变成了 Payment Pro,或者是 PP、PP2。总之,在任何公司内部,你会谈论这些特定的名字,谈论它们怎么工作、多小、多大。我觉得这通常就是那种行话。
[原文] [Martin Fowler]: yeah it is it becomes that's again again part of the lingo of larger organizations and again you take a company that's been around for much longer than uber and of course that lingo is baked into the organization can take you several years just to figure out what the hell's going on because it just takes you that long to learn all of these systems and how they interconnect
[译文] [Martin Fowler]: 是的,这再次成为了大型组织行话的一部分。如果你看一家比 Uber 历史更悠久的公司,那种行话已经融入了组织内部。你可能要花好几年才能搞清楚到底发生了什么,因为光是学习所有这些系统以及它们如何互联就要花那么长时间。
📝 本节摘要:
在本章中,Martin 回顾了 2001 年参与制定《敏捷宣言》(Agile Manifesto)的往事。他坦言自己对那几天的具体细节记忆模糊,但清晰地记得 Bob Martin 坚持要写一份“宣言”,而他当时认为这东西写出来肯定会被无视,参与的价值仅在于同行间的交流。然而,这份宣言的影响力远超预期,成功改变了行业对软件开发的认知——从 2000 年代初客户坚持要“五年计划”,转变为如今普遍接受小步快跑的迭代模式。面对 AI 时代,Martin 坚持认为敏捷的核心逻辑未变:AI 不应被用来追求“一步到位”的完美,而应被用来进一步压缩反馈循环(Feedback Loops),让我们能更快地完成更小的切片。
[原文] [Gergely Orosz]: speaking of uh change and iteration uh on and agile so you were part of the 17 people who created the agile manifesto and i previously asked ken beck about this who was another person involved can you tell me from your perspective what was the story there on on how you all came together how this pretty chaotic i i think day played out and what was the reception as as you recall back then
[译文] [Gergely Orosz]: 说到变化和迭代,以及敏捷(Agile)。你是当年共同制定《敏捷宣言》的 17 人之一。我之前问过同样参与其中的 Kent Beck。你能从你的角度告诉我当时的故事吗?你们是怎么聚到一起的?那天我想应该挺混乱的,它是怎么进行的?另外在你回忆中,当时的反响如何?
[原文] [Martin Fowler]: this was 2001 right so i mean the the origin of it i always feel was actually a meeting we had that kent ran about a year before we did the agile manifesto and it was a gathering of extreme programming folks who were working with extreme programming and we had it at this uh place near where kent was living at the time in middle of nowhere oregon
[译文] [Martin Fowler]: 那是 2001 年的事了。我觉得它的起源其实是我们在《敏捷宣言》发布前一年开的一次会,那是 Kent 组织的。那是一次极限编程(Extreme Programming, XP)实践者的聚会,地点在 Kent 当时住的地方附近,那是俄勒冈州一个鸟不拉屎的地方(middle of nowhere)。
[原文] [Martin Fowler]: and uh he also invited some people who weren't directly part of the extreme programming group folks like jim highmith um along as well and part of the discussion we had was should extreme programming be the relatively narrow thing that kent was describing in the white book or should it be something more broad that had many of the similar kind of principles in mind
[译文] [Martin Fowler]: 他也邀请了一些不直接属于极限编程圈子的人,比如 Jim Highsmith。我们当时的讨论之一是:极限编程应该保持 Kent 在白皮书中描述的那种相对狭义的定义,还是应该成为一种包含了许多类似原则的更广义的东西?
[原文] [Martin Fowler]: and kent decided he wanted something more concrete and narrow and then the question is well what do we do with this broader thing and how it overlaps with things like what the scrum people were doing and all that kind of stuff that's what led to the idea of getting together people from these different groups
[译文] [Martin Fowler]: Kent 决定他想要更具体、更狭义的东西。那么问题就变成了:我们要怎么处理这个更广义的概念?它如何与 Scrum 圈子正在做的事情以及所有这类东西重叠?正是这个问题引出了把来自不同流派的人聚在一起的想法。
[原文] [Martin Fowler]: and we had the argument about whether we were going to hold it in utah because alistister wanted it in utah and then dave thomas wanted to have it in anguila in the caribbean and for whatever reason we ended up in utah um and the skiing
[译文] [Martin Fowler]: 我们还争论过要在哪里举办。Alistair Cockburn 想在犹他州(Utah),而 Dave Thomas 想在加勒比海的安圭拉岛(Anguilla)。不知什么原因,我们最终还是去了犹他州,还去滑了雪。
[原文] [Martin Fowler]: and we gathered together the people that we did and of course it was a case of who actually came along and because obviously lots of people were invited who didn't come um and i wasn't terribly involved with that although bob martin does insist that i was involved got involved in he mentioned some lunch in chicago which is very likely because i was going to chicago all the time for works at the time so i probably did but i don't remember
[译文] [Martin Fowler]: 我们把人聚在了一起,当然这也取决于谁真的来了,因为显然有很多受邀的人没来。我当时对此并没有太深度参与,虽然 Bob Martin 坚持说我参与了。他提到在芝加哥的一次午餐,这很有可能,因为我当时为了 ThoughtWorks 的工作经常去芝加哥,所以我可能确实去了,但我记不清了。
[原文] [Martin Fowler]: um and of the meeting itself i actually don't remember very much of it which is a shame i i i you know curse myself for not writing a detailed journal of of those few days um i'd love to know you know how did we come up with that this over that um structure for the values for instance which i think was really wonderful but i have no idea how it got how that got put together
[译文] [Martin Fowler]: 至于那次会议本身,我也记不太清了,这真遗憾。我因为没有在那几天写详细的日记而责怪自己。我很想知道我们是怎么想出这个而不是那个的……比如价值观的结构,我觉得那个结构真的很棒,但我完全不知道它是怎么拼凑出来的。
[原文] [Martin Fowler]: so unfortunately i get very vague about the actual doing of it i do remember have a have a fairly clear memory although we should be wary about that i'll come to that perhaps later about why of uh bob martin being the one who was really insistent on i want to make a manifesto and me thinking oh well yeah we can do that it'll the manifesto itself will be a complete useless and ignored of course but the exercise of writing it will be interesting it
[译文] [Martin Fowler]: 所以不幸的是,我对实际的过程印象非常模糊。我确实有一个相当清晰的记忆——虽然我们应该对记忆保持警惕——那就是 Bob Martin 是那个坚持要写一份“宣言”的人。而我当时的反应是:“噢好吧,我们可以写。但这宣言本身肯定会完全没用,被人无视。不过,写它的过程应该会很有趣。”
[原文] [Martin Fowler]: um and that was my reaction to it and matter how i felt about the manifesto i felt ah nobody will take any notice of this oh wow but um hey we're having fun writing it and we're going we're understanding each other etc and that will be the value right we'll understand each other better and then of course the fact that it made a bit of an impact was kind of a shock
[译文] [Martin Fowler]: 这就是我当时的反应。不管我对宣言感觉如何,我觉得:“啊,没人在乎这个的。”——哦哇——我想的是:“嘿,我们写得很开心,我们在互相理解对方,这就是价值所在,对吧?我们会更了解彼此。” 然后当然,事实证明它产生了一点影响,这算是个震惊。
[原文] [Gergely Orosz]: well it also helps that the manifest to us four different lines and so people just pick and choose which one they want to point 12 principles oh and the 12 principles which yes
[译文] [Gergely Orosz]: 嗯,而且那个宣言只有四行字,所以人们很容易挑自己喜欢的引用。
[译文] [Martin Fowler]: 还有那 12 条原则。
[译文] [Gergely Orosz]: 对,还有 12 条原则。
[原文] [Martin Fowler]: and and the fact that it says and says at the beginning we are uncovering um and that this is a continuous process and what the manifesto is just this is what we've got how how we got so far um so it's a snapshot of a point in time of where we were in 20201 yeah all sorts of subtleties to to the to the manifesto
[译文] [Martin Fowler]: 而且事实是,它在开头就说了“我们正在探索(uncovering)”,这是一个持续的过程。宣言只是我们目前得到的东西,是我们目前走到哪一步的记录。所以它是我们在 2001 年所处位置的一个时间快照。是的,宣言里有各种微妙之处。
[原文] [Martin Fowler]: but um it i think it had an impact in the sense that i my feelings were was a certain way that we wanted to write software at fort works for our clients in 2000 000 and it was a real struggle because they didn't want to work the way we wanted to we've said we want to put all this effort into writing tests and we was we want to have a build pro an automated build process and we want to do these kinds of things we want to be able to progress in small increments all of these kinds of things which were anathema you know no we got to we've got to have a big plan over five years and we'll spend two years doing a design and we'll produce a design and then it'll get implemented over the next year or so and then we'll start testing right i mean that was the the mentality of how things ought to be done
[译文] [Martin Fowler]: 但我认为它确实产生了影响。在 2000 年左右,我们在 ThoughtWorks 想以某种特定的方式为客户编写软件,但这真的很难,因为客户不想按我们的方式工作。我们说我们要投入精力写测试,我们要有自动化构建流程,我们想做这些事,我们想以小增量推进。所有这些对他们来说都是“诅咒”(anathema)。他们会说:“不,我们必须有一个五年的大计划。我们要花两年做设计,产出设计文档,然后在接下来一年左右实施,再之后开始测试。” 对吧?那就是当时人们认为事情该怎么做的思维定势。
[原文] [Martin Fowler]: and our notion of no we we'd like to do that entire process for a subset of requirements in one month please only a month and of course we really wanted to do it in a week but you know baby steps and so to me the great thing about agile is that we can actually go into organizations and operate it much closer to the way that we'd like to be able to do our clients will let us work the way we want to to much greater extent than we would were able to do back in 2000 and so that is the success i just wanted the world to be safe for those people that wanted to work that way to be able to work that way
[译文] [Martin Fowler]: 而我们的理念是:“不,我们想在一个月内针对一小部分需求完成这整个流程。” 当然我们其实想在一周内完成,但你知道,得一步步来(baby steps)。所以对我来说,敏捷最棒的地方在于,我们现在可以进入组织,以更接近我们理想的方式去运作。比起 2000 年,现在的客户在很大程度上允许我们按想要的方式工作。这就是成功。我只是希望这个世界对那些想这样工作的人来说是安全的,让他们能够这样工作。
[原文] [Gergely Orosz]: now of course ai is is coming and it it is now every it is everywhere and it will be everywhere and one things with with ai so the core idea behind agile was that you make incremental improvements and the shorter the better now with and you could then build software that incrementally start to improve but today with ai especially with ai there's going to be more software everywhere there already is and there's a sense that customers don't necessarily want to wait for incremental improvements they they want to see quality upfront do you think that agile will work just as well with with with ai with even shorter increments or do you think we might start to think about like some different way to work with with ai putting on the quality lens up front as well and getting back to a little bit of you know the spec driven development like getting a version of the software that is just great to start with
[译文] [Gergely Orosz]: 现在 AI 来了,它无处不在,将来也会无处不在。敏捷的核心理念是进行增量改进,而且周期越短越好。但现在有了 AI,特别是 AI 会让软件变得更多。有一种感觉是,客户不一定想等待增量改进,他们想一开始就看到高质量。你认为敏捷在 AI 时代、在更短的增量下还能运作得一样好吗?还是说我们可能会开始考虑一种不同的工作方式,比如一开始就注重质量,甚至回到一点点那种“规格驱动开发”,以便一开始就得到一个很棒的软件版本?
[原文] [Martin Fowler]: i don't know how the ai thing is going to play out because we're still in the early days i still feel that building things in terms of small slices with the human sort of humans reviewing it is still the way to bet what ai hopefully will allow us to do is to be able to do those slices faster um and maybe do a bit more in each slice but we need to it's i'd rather get smaller more frequent slices than more stuff in each slice improving the frequency is usually what we i think we need to do and just cycled out those steps more rapidly
[译文] [Martin Fowler]: 我不知道 AI 会如何发展,因为现在还处于早期阶段。我仍然觉得,通过“小切片”(small slices)构建并让人类进行审查,仍然是值得下注的方式。AI 有望让我们做到的,是能更快地完成这些切片,或者也许在每个切片里多做一点。但我宁愿要更小、更频繁的切片,而不是在每个切片里塞进更多东西。我认为我们需要做的是提高频率,更快速地循环这些步骤。
[原文] [Martin Fowler]: that's where i felt we've had our biggest gains is is through that more rapid cycle rather than trying to do more stuff in the same cycle as it were and i i still get a sense of that when talking to people still saying you know can you look at all of the things that you do in software development and and increase the frequency do half as much but in half the time and and and speed up that cycle look for ways to speed that through and also you know just look at where what you're doing look for the cues in your flow and figure out how to cut those cues down if you were able to get some ideas from idea to running code in two weeks how do you get it down to a week just try to constantly improve that cycle time and i still feel that that's our best form of leverage at the moment is improving cycle time
[译文] [Martin Fowler]: 我觉得那是我们获得最大收益的地方:通过更快速的循环,而不是试图在同一个循环里做更多的事。当我和人们交谈时,我仍然有这种感觉,我会说:“你能不能看看你在软件开发中做的所有事情,然后提高频率?做一半的事情,但只用一半的时间,以此加速那个循环。” 寻找加速的方法,观察你在做什么,寻找流程中的等待队列(queues),想办法削减它们。如果你能把从想法到运行代码的时间控制在两周,那你怎么把它缩短到一周?试着不断改进那个周期时间(cycle time)。我仍然觉得那是我们目前最好的杠杆。
[原文] [Gergely Orosz]: yeah and i i've been talking with some of the leading ai labs on how they use it because of course they're going to be on the bleeding edge ... one of the creators of clot code boris he shared how he did 20 prototypes of of a feature ... and he built 20 different prototypes that he all tried out and and got feedback on and decided which one to go in two days
[译文] [Gergely Orosz]: 是的,我和一些领先的 AI 实验室聊过他们怎么用 AI,因为他们当然处于最前沿……Claude code 的创造者之一 Boris 分享了他如何为一个功能做了 20 个原型……他构建了 20 个不同的原型,全部试了一遍,获取反馈,并在两天内决定用哪一个。
[原文] [Gergely Orosz]: to me this was like wow like if if you would have told me i built 20 prototypes and you asked me how long it took it i would have said two weeks maybe a week if you if they were small like paper prototypes but as you can still speed it up and it is still manageable
[译文] [Gergely Orosz]: 对我来说这简直是“哇”。如果你告诉我你做了 20 个原型,问我要花多久,我会说两周,如果只是纸面原型可能也要一周。但(用 AI)你确实可以加速它,而且它仍然是可控的。
[原文] [Martin Fowler]: yeah it comes back to feedback loops i mean so much of it is trying how do we introduce feedback loops into the process i mean how do we tighten those feedback loops so we get the feedback faster so that we're able to learn because in the end again it it comes back to you know we have to be learning about what it is we're trying to do
[译文] [Martin Fowler]: 是的,这又回到了“反馈循环”(feedback loops)。这其中很大一部分是尝试如何将反馈循环引入流程中。我们如何收紧这些反馈循环,以便我们能更快地得到反馈,从而能够学习。因为归根结底,这又回到了这一点:我们必须不断学习我们究竟试图做的是什么。
📝 本节摘要:
在本章中,Martin 分享了他目前的学习方式:主要是通过与他人合作、编辑发布在自己网站上的文章来吸收新知,同时持续关注 Birgitta、Simon Willison 和 Kent Beck 等值得信赖的同行。面对当今世界的“认识论危机”(Epistemological Crisis),Gergely 询问如何筛选高质量的信息源。Martin 给出的核心标准是寻找“不确定性”(Lack of Certainty)。他认为,那些声称拥有绝对答案的人通常不可信;相反,他更信赖那些愿意探讨细微差别(Nuance)、权衡取舍(Trade-offs)并承认“这取决于具体情况”的作者。
[原文] [Gergely Orosz]: speaking about learning uh and keeping up to date uh how do you learn about ai how do you keep up to date with with what's happening what approaches work for you and what are approaches you see your colleagues uh follow who are also staying up with you know what's going on
[译文] [Gergely Orosz]: 说到学习和保持与时俱进,你是如何学习 AI 的?你是如何跟上正在发生的事情的?什么方法对你有效?你看到那些同样紧跟潮流的同事们采用了什么方法?
[原文] [Martin Fowler]: well the main way i learn these days is by working with people who are writing articles that um are going on onto my site because my primary effort these days is getting good articles onto my site and and my view is that i'm not the best person to write this stuff because i'm not doing the day-to-day production work haven't been doing for a long time
[译文] [Martin Fowler]: 嗯,我现在主要的学习方式是与那些为我网站撰写文章的人合作。因为我目前的重心是把好文章发到我的网站上。我的观点是,我不是写这些东西的最佳人选,因为我并不做日常的生产环境工作,我已经很久没做了。
[原文] [Martin Fowler]: the only production code i write is ironically the code that runs the website i still write code i still generate stack traces but it's only within this very very esoteric little area
[译文] [Martin Fowler]: 讽刺的是,我唯一写的生产代码就是运行这个网站的代码。我还在写代码,还在制造堆栈跟踪(stack traces)报错,但这仅仅局限于这个非常非常隐秘的小领域。
[原文] [Martin Fowler]: um so as a result i it's better for me to work with people who actually are doing this kind of work and help them get their ideas and what their lessons and express them to the as many people as possible so i'm learning through the process of working with people to write their ideas down which is a very interesting way of learning because of course you're you're very deeply involved in in the editing process for a lot of that material and that was that's my primary form
[译文] [Martin Fowler]: 因此,更好的方式是让我与那些真正在做这类工作的人合作,帮助他们整理想法和经验教训,并尽可能传达给更多人。所以我是在通过与人合作、把他们的想法写下来的过程中学习的。这是一种非常有趣的学习方式,因为在很多材料的编辑过程中,你会卷入得很深。这就是我的主要学习形式。
[原文] [Martin Fowler]: i do do some experimentation when i get the chance not as much as i'd like but i do see that as a second priority to working with people so you know it's necessity only in the in the off time that i get to do that
[译文] [Martin Fowler]: 有机会时我也确实会做一些实验,虽然没有我想的那么多。但我把这看作是次于与人合作的第二优先级。所以你知道,只有在业余时间不得不做的时候我才会去做。
[原文] [Martin Fowler]: um and of course reading from where i feel are some of the better sources i mean fortunately one of those better sources is bita who has been um writing with me so that's good um simon he's excellent yeah spittita stuff is superb um simon willis i keep an eye on what he's doing all the time
[译文] [Martin Fowler]: 当然还有阅读我认为比较好的来源。幸运的是,其中一个好的来源就是 Birgitta,她一直在和我一起写作,这很好。还有 Simon,他非常棒。是的,Birgitta 的东西是一流的。Simon Willison,我时刻关注着他在做什么。
[原文] [Martin Fowler]: um i wish i had his energy work rate for getting stuff out actually i wish i had your energy you the man of stuff you get out these days and so i look for sources like that i'm always interested in what folks like kent are up up to because let's face it so much of my career has been leeching off kent's ideas and um there's no reason to stop doing that if it's still working right
[译文] [Martin Fowler]: 我真希望我有他那种产出内容的精力。其实我也希望我有你的精力,你最近产出的东西真多。所以我寻找那样的来源。我也总是对像 Kent Beck 这样的人在做什么感兴趣,因为让我们面对现实吧,我职业生涯的大部分时间都在“剽窃”(leeching off,自谦说法,意为汲取)Kent 的想法。如果这一招还能用,我就没理由停止,对吧?
[原文] [Martin Fowler]: um and so those are the kinds of sources i mean then sometimes some books that come out that come through and and work through those so a lot of it is in that kind of direction i might even watch a video occasionally although i really hate watching videos so yeah
[译文] [Martin Fowler]: 所以这些就是我关注的那类来源。有时也会有一些新书出来,我会去读。大部分都是在这个方向上。偶尔我甚至可能会看个视频,虽然我真的很讨厌看视频。
[原文] [Gergely Orosz]: so sounds like find the sources of the people you trust the sources you trust again your your blog i can very much recommend it because you have several people writing on it uh so you actually have a pretty good frequency of in-depth articles about interesting like i i i rarely see topics that have been discussed in depth and so i i enjoy checking checking out because of because of it
[译文] [Gergely Orosz]: 所以听起来就是要找到你信任的人的来源。再次推荐你的博客,因为你有好几个人在上面写作,所以其实你们发布深度文章的频率很高,而且话题很有趣。我很少看到被讨论得那么深入的话题,所以我很喜欢去看看。
[原文] [Gergely Orosz]: i mean one of the questions that i've been i've been pondering on is when asked of so how do you identify what a good source is of information and this is more general this is due to to our profession but of course due to to the world generally as we seem to be in an epistemological crisis of trying to understand what's going on in the world and and at some point i'm going to sit down and write this down and i'll get a more coherent um answer from it
[译文] [Gergely Orosz]: 我一直在这个问题上思考:当被问到如何识别什么是好的信息源时——这不仅针对我们的职业,也针对整个世界,因为我们似乎正处于一种试图理解世界正在发生什么的“认识论危机”(epistemological crisis)中。在某个时候我会坐下来把这个写下来,得出一个更连贯的答案。
[原文] [Gergely Orosz]: but part of what i'm always looking for is um a lack of certainty is i think a good thing when people tell me oh i know the answer to this i'm usually a good bit more suspicious and i'm much more conscious of when people say this is what i understand at the moment but it's fairly unclear
[译文] [Gergely Orosz]: 但我一直在寻找的一点是:我认为“缺乏确定性”(a lack of certainty)是一件好事。当人们告诉我“哦,我知道这个的答案”时,我通常会多几分怀疑。而当人们说“这是我目前的理解,但这还相当不清楚”时,我会更加留意。
[原文] [Martin Fowler]: i i remember one of my favorite early books when i was writing on the the um software architecture um i was des i remember desperately looking for something in the microsoft world as opposed to something in the java world there was a lot being written written in java world this is back around the late 90s lots of stuff was being written in java land not much in microsoft land
[译文] [Martin Fowler]: 我记得我早期写软件架构相关内容时,最喜欢的一本书……我记得当时我拼命在微软(Microsoft)的世界里寻找资料,而不是在 Java 的世界里。Java 世界里有很多资料,那是 90 年代末,Java 领域写了很多东西,但微软领域不多。
[原文] [Martin Fowler]: and when i discovered this swedish guy jimmy nielson and his book was full of stuff that says well this is how i'm feeling about this is the way to approach this stuff he was very tentative all the time very much clear of this was how he was currently feeling but he understood that things might change
[译文] [Martin Fowler]: 当我发现了这个瑞典人 Jimmy Nilsson,他的书里充满了这样的内容:“嗯,这是我对这件事的感觉,这是处理这类事情的方法。” 他一直非常试探性(tentative),非常明确地表示这只是他目前的感受,而且他明白情况可能会改变。
[原文] [Martin Fowler]: i've since got to know jimmy really well and he's a fantastic guy but what impressed me so much and what influenced me so much is i felt very much the degree to which oh this is somebody i can trust because they're not trying to give me this false sense of certainty and confidence and i think that's important
[译文] [Martin Fowler]: 我后来和 Jimmy 成了很好的朋友,他是个很棒的人。但当时让我印象深刻并深深影响我的是,我强烈地感觉到:“噢,这是一个我可以信任的人。” 因为他没有试图给我这种虚假的确定性和自信感。我认为这很重要。
[原文] [Martin Fowler]: also someone who's keen to explore nuances and saying well this works in these circumstances not if somebody tells me oh you should always use microservices or somebody says you should never use microservices i mean those both of those arguments can completely discounted
[译文] [Martin Fowler]: 同样,那些热衷于探索细微差别(nuances)并说“嗯,这在这些情况下有效,但在那些情况下无效”的人也是可信的。如果有人告诉我“哦,你应该永远使用微服务”,或者有人说“你应该永远不要用微服务”,我是说,这两种论点都可以完全无视(completely discounted)。
[原文] [Martin Fowler]: it's when you say "ah these are the factors that you should be considering about whether to go in this direction or that direction." whenever someone is stepping back and saying "ah it's it's a trade-off there's various things involved here's the factors you should go." and it's not going to be a simple answer you've got to dig into the nuances then again that increases my confidence because again i'm feeling this is someone who's thinking these things through and not just coming on a on a sort of simple railroad and and going down it
[译文] [Martin Fowler]: 只有当你说:“啊,关于是往这个方向走还是那个方向走,这些是你应该考虑的因素。” 每当有人退一步说:“这是个权衡(trade-off),涉及很多事情,这些是因素。” 这不会是一个简单的答案,你必须深入挖掘细微差别。那会增加我的信心,因为我感觉这是一个经过深思熟虑的人,而不是那种只知道沿着一条简单的铁轨一直走到黑的人。
[原文] [Gergely Orosz]: and i guess with these sources you can also trust that everything we do in software engineering it's going to be trade-offs right the the most common answer of of like how long will it take is it depends it depends on on are we doing a prototype it depends on on do i know the technology etc
[译文] [Gergely Orosz]: 我想对于这些来源,你也可以相信:我们在软件工程中所做的一切都是权衡,对吧?关于“这要花多长时间”,最常见的回答就是“视情况而定”(it depends)。取决于我们是不是在做原型?取决于我是否懂这个技术?等等。
[原文] [Gergely Orosz]: so if you if you're reading sources or if you're accessing sources where they tell you okay in my situation you actually learn about their situation and you can figure out like okay in this specific case for them this worked or it didn't work and later you can probably apply it a bit better because again it's it's very different if you're going to be working as a software engineer inside a highly regulated retailer that's 70 years old versus you've just started a brand new startup where go and knock yourself out zero customers a huge difference
[译文] [Gergely Orosz]: 所以如果你阅读的来源告诉你“在我的情况下……”,你实际上了解了他们的情况,你就能明白“好吧,在这个特定案例中,这对他们有效或无效”。以后你可能就能更好地应用它。因为如果你是在一家成立 70 年、受高度监管的零售企业做软件工程师,和你刚加入一家全新的初创公司、没客户随便你怎么折腾,那是非常不同的。
[原文] [Martin Fowler]: yeah and then that's i mean and again you see it i mean we see it with we frankly we see it with clients a lot of clients say give us the answer give us the the the cookbook straightforward answer that i just need to apply yeah if you're looking for that kind of cookbook answer you're going to get in trouble because anybody who will tell you there's a cookbook answer they either don't understand it or they're deliberately covering it up for you because there's always tons of nuance involved we we we keep going back to this like now more than 50 year old art the no silver bullets right
[译文] [Martin Fowler]: 是的。再说一次,我们坦率地说,我们在客户那里经常看到这种情况。很多客户说:“给我们答案,给我们那个食谱(cookbook)式的、直截了当的答案,我只需要照做就行。” 如果你在找那种食谱式的答案,你会惹上麻烦的。因为任何告诉你存在食谱式答案的人,要么是他们自己不懂,要么是故意在掩盖真相,因为总是涉及大量的细微差别。我们总是回到这个已经有 50 多年历史的论调:没有银弹(No Silver Bullets),对吧?
📝 本节摘要:
本章聚焦于行业现状与新人发展。针对初级工程师,Martin 建议在利用 AI 工具的同时,务必寻找一位经验丰富的导师(Mentor),因为人类导师的指导价值远超 AI。他提醒新人要对 AI 的输出保持警惕,像审问人类一样追问其“观点来源”。在谈及宏观环境时,Martin 直言当前科技行业正处于一种“奇怪的混合状态”:一方面是 AI 的狂热泡沫,另一方面是因“零利率时代终结”导致的广泛经济萧条与裁员。尽管短期入行时机不如 2005 年那样理想,但他坚信软件开发作为一种以沟通为核心的职业,其本质不会因 AI 而消亡。
[原文] [Gergely Orosz]: one question uh i got from online i asked what people would like to ask from you is what would your advice be today for junior software engineers who are starting out there's all this ai stuff going on we know with with learning i think you also mentioned or it might have been umesh who mentioned with junior engineers it it it could be a bit iffy of if you're relying too much on ai will that hinder your learning because learning is important if one of these engineers asked you like "hey i'm a junior engineer i'd like to eventually become a more experienced engineer what tactics would you advise me especially with ai tools should i rely on them should i not is is there something that might work better than other things?"
[译文] [Gergely Orosz]: 我从网上收集了一个大家想问你的问题:对于今天刚入行的初级软件工程师,你有什么建议?现在到处都是 AI 的东西。关于学习,我想是你或者 Unmesh 提到过,对于初级工程师来说,过度依赖 AI 可能会有点问题,因为这可能会阻碍学习,而学习非常重要。如果有一个工程师问你:“嘿,我是个初级工程师,我想最终成为一名更有经验的工程师,你会给我什么战术建议?特别是关于 AI 工具,我应该依赖它们吗?还是不应该?有没有什么比其他方法更有效的东西?”
[原文] [Martin Fowler]: well i mean certainly we have to be using ai tools and exploring their use the hard part with if you're more junior is you don't have this sense of is to what extent is the output i'm getting good and in many ways the answer is what it's always been find some good senior engineers who will mentor you because that's the best way that you're going to learn this stuff and a a good experienced mentor is worth their weight in gold
[译文] [Martin Fowler]: 嗯,不管是肯定的,我们必须使用 AI 工具并探索它们的用法。但如果你是初级人员,难点在于你没有那种判断力来确定“我得到的输出在多大程度上是好的”。在很多方面,答案和过去一样:找一些优秀的资深工程师来指导你。因为那是你学习这些东西的最佳途径,一位经验丰富的好导师简直价值连城(worth their weight in gold)。
[原文] [Martin Fowler]: and in fact many ways it's worth prioritizing that above many other things that you when it comes to your career is is getting that met i mean again me finding jim odell early on in my career was enormously valuable the best thing that could have possibly happened to me was just blind luck um but seek out somebody like that who can be your mentor
[译文] [Martin Fowler]: 事实上,在很多方面,这值得你将其优先级排在职业生涯许多其他事情之上,那就是获得这种指导。我在职业生涯早期遇到 Jim Odell 具有巨大的价值,那可能是我遇到的最好的事情,虽然那纯粹是瞎猫碰上死耗子的运气。但你要去寻找那样能成为你导师的人。
[原文] [Martin Fowler]: i mean although we're peers in some ways i often see think of kemp beck as a mentor um because you know we may be the same age or whatever but his thinking is always leaping forwards and so watching what he's doing has been very val so again find somebody like that
[译文] [Martin Fowler]: 虽然我们在某些方面是同辈,但我经常把 Kent Beck 视为导师。因为你知道,虽然我们可能年龄相仿,但他的思维总是通过跳跃式前进的。所以观察他在做什么非常有价值。所以再次强调,找到那样的人。
[原文] [Martin Fowler]: the ai can be handy but always remember it's gullible and it's likely to lie to you so be probing on asking it okay why do you giving me this advice what are your sources what what's leading you to say this i mean i i remember this this is generally a good thing is whenever people are pro giving you something is to say what is leading you to say that what is the background what is the context you're coming from what are the things that are leading you to this point of view
[译文] [Martin Fowler]: AI 可能很有用,但要永远记住它很容易轻信(gullible),而且很可能会对你撒谎。所以要通过提问来探究它:“好吧,你为什么给我这个建议?你的来源是什么?是什么让你这么说的?” 我记得这通常是一件好事,每当人们给你某种建议时,你都要问:“是什么让你这么说的?背景是什么?你基于什么语境?是什么因素导致你得出这个观点?”
[原文] [Martin Fowler]: and by probing that you can get a better understanding of where where they're coming from and you i think you have to do the same thing with the ai because in the end the ai is is it's it's just regurgitating something it saw on the internet so the question is did it see good stuff on the internet or did it see most of the crap that's on the internet right and but if you can find your way to the good stuff then that can be much more useful
[译文] [Martin Fowler]: 通过这种探究,你可以更好地理解他们的出发点。我认为你必须对 AI 做同样的事情,因为归根结底,AI 只是在反刍(regurgitating)它在互联网上看到的东西。所以问题是:它是在互联网上看到了好东西,还是看到了互联网上大部分的垃圾?对吧?如果你能设法找到好东西,那会更有用。
[原文] [Gergely Orosz]: and looking at all this change that that's happening right now with ai lms how do you feel about the tech industry in in general
[译文] [Gergely Orosz]: 看着现在随着 AI 和大语言模型发生的所有这些变化,你对整个科技行业的总体感觉如何?
[原文] [Martin Fowler]: i mean in in a broad sense i'm positive because i' i still feel there's a hu so many huge things that can be done with technology and software um and we are on you know we're still in a situation where demand is way more than we can imagine but that's a long-term view
[译文] [Martin Fowler]: 从广义上讲,我是积极的。因为我仍然觉得利用技术和软件可以做很多巨大的事情。你知道,我们仍然处于需求远超我们想象的状况中。但这只是长远的看法。
[原文] [Martin Fowler]: i mean at the moment we're in this very i'm going to say very str it's life has always been a strange phase i mean in strange in different ways the current strangeness is we're basically in a huge certainly in um in uh the developed world depression i mean we've seen a huge amount of job layoffs i mean i i've heard numbers banded around of quarter million half a million jobs lost i mean it's that kind of magnitude
[译文] [Martin Fowler]: 眼下我们正处于一个非常……我想说非常奇怪……生活总是一个奇怪的阶段,只是奇怪的方式不同。当前的奇怪之处在于,我们基本上处于巨大的——至少在发达国家——萧条(depression)之中。我们看到了大量的裁员。我听到流传的数字是 25 万、50 万个工作岗位消失了。就是这种量级。
[原文] [Martin Fowler]: i mean we're seeing it i mean at fort works we used to be growing at 20% a year all the time until about 2021 i mean we've we've we've hit a wall and we see our clients are just not spending the money on um this stuff i mean ai is doing its own separate thing but it's almost like a separate thing going on and it's clearly bubbly but we don't but the thing with bubbles is you never know how big they're going to grow you don't know how long it's going to take before they pop and you don't know what's going to be after the pop
[译文] [Martin Fowler]: 我们也亲眼目睹了这一点。在 ThoughtWorks,直到 2021 年左右,我们一直保持着每年 20% 的增长。但现在我们撞墙了(hit a wall)。我们看到客户就是不把钱花在这些东西上了。我是说,AI 在搞它自己那一套,几乎就像是一个独立发生的事情,而且显然有泡沫。但关于泡沫的问题是:你永远不知道它们会长多大,不知道要过多久才会破裂,也不知道破裂后会剩下什么。
[原文] [Martin Fowler]: i mean all this stuff is unpredictable i do think there's value in ai in a way that say there wasn't with blockchain and crypto there's definitely stuff in ai but exactly how it's going to pan out who knows and i mean i went through this cycle with stuff in in the '9s and 2000 so it's it's it's a repeat of that only at probably an order of magnitude more scale
[译文] [Martin Fowler]: 这一切都是不可预测的。我确实认为 AI 是有价值的,这一点不像区块链和加密货币那样(虚无)。AI 里面肯定有东西。但具体会如何发展,谁知道呢?我经历过 90 年代和 2000 年的那种周期,这只是那次历史的重演,只是规模可能大了一个数量级。
[原文] [Martin Fowler]: um so all of that's going on but really what's happening the most important thing that's hit us is not ai it's the end of zero interest rates that's the big thing that really hit us and that's what the job losses started before ai because of that kicking in and we don't know how that's going to change because this is a this is a much more macroeconomic thing
[译文] [Martin Fowler]: 所有这些都在发生。但真正打击我们的最重要的事并不是 AI,而是“零利率时代的终结”(the end of zero interest rates)。这才是真正打击我们的大事。这就是为什么裁员在 AI 之前就开始了,就是因为这个原因。我们不知道这会如何变化,因为这是一个更宏观的经济问题。
[原文] [Martin Fowler]: we have looney driving the bus in the in the united states we have all sorts of other pressures going on in internationally great uncertainty at the moment and that's affecting us because it means that businesses aren't investing and while businesses aren't investing it's hard for to to make much progress in in the software world
[译文] [Martin Fowler]: 在美国,掌舵的人有点疯狂(looney driving the bus);在国际上,我们面临各种其他压力。目前存在巨大的不确定性,这正在影响我们,因为这意味着企业不再投资。而当企业不投资时,软件世界就很难取得太大进展。
[原文] [Martin Fowler]: and so we have this weird mix of no investment pretty much depression in the in the software industry with an ai bubble going on and they're both happening at the same time and one of mass the other end
[译文] [Martin Fowler]: 所以我们面临这种奇怪的混合状态:一方面是软件行业的零投资和近乎萧条,另一方面是一个正在进行的 AI 泡沫。它们同时发生。
[原文] [Gergely Orosz]: yeah depends on where you are like i was in silicon valley and if you're an ai company it all inside it looks all great if you're outside again you can benefit from it but it's it's it's a lot more careful and if you're outside of this bubble let's say you're at a a startup or or a company that is not in ai it's it's just tough so you you have these these worlds happening
[译文] [Gergely Orosz]: 是的,这取决于你在哪里。比如我在硅谷,如果你是一家 AI 公司,内部看起来一切都很棒;如果你在外部,你可能会受益,但也更加谨慎。如果你在这个泡沫之外,比如你在一家非 AI 的初创公司或大公司,那日子真的很难过。所以你有这样两个平行的世界。
[原文] [Martin Fowler]: i mean this is still i think an industry with plenty of potential in the future i think it's a it's a good one to get into it's not uh you know the timing is not as great as it would be getting into this industry in say 2005 um but you know it i still feel there's a there's a good profession here
[译文] [Martin Fowler]: 我的意思是,我认为这个行业未来仍然潜力无限。这仍是一个值得进入的好行业。当然,现在的时机不如 2005 年那时候那么好,但我仍然觉得这是一个好职业。
[原文] [Martin Fowler]: i don't think ai is going to wipe out software development um i think it'll change it in a really manifest way like the change from assembly to high level languages did but the core skills are still there and the core skills of being a good software developer in my view are still it's not so much about writing code that's part of the skill a lot of the skill is understanding what to write which is communication and particularly communication with the users of software and crossing that divide which has always been the most critical um communication path
[译文] [Martin Fowler]: 我不认为 AI 会消灭软件开发。我认为它会以一种非常显著的方式改变软件开发,就像从汇编语言到高级语言的转变那样。但核心技能依然存在。在我看来,成为一名优秀软件开发者的核心技能,并不在于编写代码——那只是技能的一部分;很大一部分技能在于理解要写什么,也就是沟通,特别是与软件用户的沟通,以及跨越那道鸿沟,这通过一直是最关键的沟通路径。
[原文] [Gergely Orosz]: and and you've also mentioned the expert general is becoming a lot more important which all of that when i looked into the details we'll link it in the the show notes the article that i think it was again unmesh has been on fire he's on fire but but it all all the traits seem to do nothing to do with ai it's about curiosity it's about going deep uh it's about going broad it it it sounds like i'm i'm hearing more and more people who are thinking longer of like what it means to be a standout software engineer the basics don't seem to change right
[译文] [Gergely Orosz]: 你也提到了“专家型通才”(Expert Generalist)变得越来越重要。我看过那篇文章的细节——我们会在节目备注里加上链接,我想那又是 Unmesh 写的,他最近真是火力全开——所有的这些特质似乎都与 AI 无关:它是关于好奇心,关于深入钻研,关于涉猎广泛。听起来我听到越来越多的人在长远地思考“成为一名杰出的软件工程师意味着什么”,而那些基础似乎并没有改变,对吧?
[原文] [Martin Fowler]: yeah i and i i do think that and it is it is always been communication and being able to collaborate effectively with people has always been to my mind the outstanding quality of what really makes the the very best developers um come through certainly in the enterprise commercial world which is the one i'm most familiar with
[译文] [Martin Fowler]: 是的,我确实这么认为。一直以来都是沟通,以及与人有效协作的能力。在我看来,这一直是造就最优秀开发者的杰出品质,尤其是在我最熟悉的企业商业世界里。
📝 本节摘要:
在访谈的最后部分,Gergely 进行了一轮快问快答。Martin 透露他目前最常用的编程语言是 Ruby,但他内心的“真爱”依然是 Smalltalk,并怀念其高效的开发环境。在书籍推荐方面,他首推 Daniel Kahneman 的《思考,快与慢》以提升对概率统计的直觉,以及 Robert Caro 的《The Power Broker》(罗伯特·摩西传),盛赞其对权力运作的描写和极其优美的文笔。作为一个桌游爱好者,他推荐了《Concordia》(协和/和谐)作为入门首选。最后,两人互道感谢,庆幸能在阿姆斯特丹实现这次面对面的交流。
[原文] [Gergely Orosz]: so as closing i just wanted to do some rapid questions where i i'll fire and then you come what comes to mind what is your favorite programming language and why
[译文] [Gergely Orosz]: 作为结语,我想做一些快速问答。我负责提问,你回答你脑海中想到的第一个答案。你最喜欢的编程语言是什么?为什么?
[原文] [Martin Fowler]: um i would say at the moment my favorite programming language is ruby because it's become it's i'm so familiar with it i've been using it for so long but the one that is my love is small talk without a doubt small talk there was nothing as much fun as programming in small talk when i was able to do it in the uh in the '9s that that was such a fantastic environment
[译文] [Martin Fowler]: 嗯,我会说目前我最喜欢的编程语言是 Ruby,因为我对它太熟悉了,我已经用了很长时间。但我内心的“真爱”毫无疑问是 Smalltalk。在90年代我有机会使用 Smalltalk 时,没有比那更有趣的编程体验了,那真是一个梦幻般的环境。
[原文] [Gergely Orosz]: you and kenbeck and kenbeck is is writing his small talk server it's it's it's his baby i i think he's making progress and and i mean there is still stuff going on there is the pharaoh project in small talk and i keep thinking you know i if i could just take off some weeks and and stop everything else i was doing maybe investigate see what's going on in the small talk world again cuz it was i mean and has still so much power in that language
[译文] [Gergely Orosz]: 你和 Kent Beck 都是。Kent Beck 正在写他的 Smalltalk 服务器,那是他的宝贝项目,我想他正在取得进展。我的意思是,那个领域仍然有事情在发生,比如 Smalltalk 的 Pharo 项目。我一直在想,如果我能抽出几周时间,停下手里其他所有事情,也许去调查一下,看看 Smalltalk 世界现在发生了什么。因为它曾经——我是说现在依然——蕴含着巨大的力量。
[原文] [Gergely Orosz]: what are one or two books you would recommend uh and why
[译文] [Gergely Orosz]: 你会推荐哪一两本书?为什么?
[原文] [Martin Fowler]: so a book i i do particularly like to recommend is thinking fast and slow by daniel kaneman i like it because um he does a really good job of trying to give you an intuition about numbers in and spotting some of the many mistakes and fallacies we make when we're thinking in terms of probability and statistics
[译文] [Martin Fowler]: 我特别想推荐的一本书是 Daniel Kahneman 的《思考,快与慢》(Thinking, Fast and Slow)。我喜欢它是因为他在培养读者的数字直觉方面做得非常好,帮助我们识别在思考概率和统计时常犯的许多错误和谬误。
[原文] [Martin Fowler]: and this is important in software development and because i mean a lot of what we do is greatly enhanced by the fact if we could understand um the statistical effects of what we see but also in life in general because i think uh our world would be a hell of a lot better if way more people understood a bit more about probability and statistics yeah than they do
[译文] [Martin Fowler]: 这在软件开发中很重要,因为如果我们能理解所见事物的统计效应,我们的很多工作都会得到极大提升。但这在生活中也同样重要,因为我认为如果有更多人能多懂一点概率和统计,我们的世界会变得好得多。
[原文] [Martin Fowler]: i mean i like most kids probably when they did maths at school it was heavily calculus-based i really do feel that it would have been a lot better if you know it was much more statistics based because that the knowledge of being able to use that well i mean one of the things that has helped me more with probabil probability is and probabilistic reasoning has been the fact that i'm heavily into tabletop gaming where you have to constantly think in terms of probabilistics and um i i just honestly feel that knowing that is important and this book is i think a great way to get into that and so it was one of the best reads i've had in the last few years
[译文] [Martin Fowler]: 我像大多数孩子一样,在学校学的数学主要是微积分基础。我真的觉得如果数学教育能更多地基于统计学,那会好得多。因为能运用统计知识真的很重要。对我来说,在概率和概率推理方面帮助我最大的一件事,是我非常热衷于桌面游戏(Tabletop Gaming),在那里你必须不断地从概率角度思考。老实说,我觉得掌握这些很重要,而这本书是入门的绝佳途径。它是我过去几年读过的最好的书之一。
[原文] [Martin Fowler]: another book that i'd mention that is completely separate and is in challenging in a completely different way that i've been totally obsessed with is a book called the power broker um so this is a book about uh a guy called robert moses who most people have never heard of but was the most powerful official in new york city for about 40 years um from about 192 to 1960 he was never elected to any office he controlled more money than the mayor or the governor of new york during that time and this book is about how he rose to power um how power works in a in a democratic society often in not in plain sight um and it's a fascinating book for that
[译文] [Martin Fowler]: 我要提到的另一本书完全不同,它在另一个维度上极具挑战性,我也完全沉迷其中。这本书叫《The Power Broker》(罗伯特·摩西传)。它是关于一个叫 Robert Moses 的人的,大多数人可能从未听说过他,但他曾是纽约市大约40年间最有权势的官员——大概从1920年到1960年。他从未当选过任何公职,但他当时控制的资金比纽约市长或州长还要多。这本书讲述了他如何崛起,以及权力如何在民主社会中运作——通常是在不为人知的地方。就这点而言,这是一本令人着迷的书。
[原文] [Martin Fowler]: it's also a fascinating book because it is so well written there have been moments when i would just you know i've been reading a several page passage of something and i would just have to stop to just appreciate how brilliant what was just read was and that's valuable because to be a better writer and i think we all gain by being a better writer it's really important to read really good writing and his writing is magnificent
[译文] [Martin Fowler]: 它之所以令人着迷还在于它写得太好了。有些时候,当我读完几页长的段落,我不得不停下来,仅仅是为了赞叹刚才读到的内容是多么精彩。这很有价值,因为要成为更好的写作者——我认为我们都能从成为更好的写作者中获益——阅读真正优秀的文字是非常重要的。而他的文笔简直是宏伟壮丽(magnificent)。
[原文] [Martin Fowler]: the downside is it's 1,200 pages it's a really long book but i was enjoying it so much that i didn't mind and then once you go on from that you move on to his second biography because he's only written two biographies and that's his currently five volume biography of lyndon baines johnson lbj which is equally brilliant and i've been reading it but it's a lot more to ask because it's four volumes so far and he still hasn't finished the fifth but again there are moments when i was just gobsmacked by how brilliant the writing was and gossmacked by the way again power works in a democratic society and uh i think to understand how our world works these kinds of books are really really valuable
[译文] [Martin Fowler]: 缺点是它有1200页,真的是本很长的书,但我读得非常享受,所以并不介意。读完那本后,你会接着读他的第二部传记——他只写了两部传记——那就是他目前写了五卷的林登·约翰逊(Lyndon Baines Johnson, LBJ)传记。同样精彩绝伦。我一直在读,但这要求更高,因为目前已经有四卷了,第五卷还没写完。但同样,有些时刻我会被其文笔的精彩程度惊得目瞪口呆(gobsmacked),也会被权力在民主社会中的运作方式惊得目瞪口呆。我认为要理解我们的世界是如何运作的,这类书籍真的非常非常有价值。
[原文] [Gergely Orosz]: and finally can you give us a board game recommendation you are very heavily into board games your your website has a list of them as well
[译文] [Gergely Orosz]: 最后,你能给我们推荐一款桌游吗?你非常热衷于桌游,你的网站上也有一个清单。
[原文] [Martin Fowler]: yeah it's a tricky one because it's kind of like saying i'm really interested in getting into watching movies which would be the movie you would recommend right because i get it so many different tastes and things if i'm going to pick something that's i think not too complicated for someone to get into that i think is is still got quite a lot of richness at the moment i think the game i'd pick out would be something called concordia it's fairly abstract in its nature but it's easy to get into and it's got quite a good bit of uh decision making in in the process
[译文] [Martin Fowler]: 是的,这很难选。因为这就像有人说“我很想开始看电影,你会推荐哪部电影?” 对吧?这取决于太多不同的口味和因素。如果要我选一个我觉得不太复杂、适合入门,但目前看来仍然蕴含丰富内涵的游戏,我会选一款叫《Concordia》(协和/和谐)的游戏。它的本质相当抽象,但很容易上手,而且过程中包含相当不错的决策环节。
[原文] [Gergely Orosz]: well martin thank you so much it was great that we could make it happen in person as well
[译文] [Gergely Orosz]: 好的,Martin,非常感谢你。我们能面对面完成这次访谈真是太好了。
[原文] [Martin Fowler]: yes having that that worked out really well i just happened to be in amsterdam for something else and uh i know somebody in amsterdam so i thought i'd get in touch and we finally get the chance to meet face to face it was amazing thank you thank you
[译文] [Martin Fowler]: 是的,这样的安排真的很棒。我刚好因为别的事在阿姆斯特丹,而且我知道有人(指 Gergely)在阿姆斯特丹,所以我想联系一下。我们终于有机会面对面见面了,这太棒了。谢谢,谢谢你。