You don't have to be smart if you can think clearly2 months agohttps://www.seangoedecke.com/you-dont-have-to-be-smart-if-you-think-clearly/聪明的工程师依赖快速直觉,但面对无法立即解决的问题时会感到困难。强大的工程师使用有条理的方法,即使在缓慢的速度下也能清晰思考。清晰思考的关键是关注不变量——关于系统的真实信念。缓慢而清晰的思考往往令人不满意,但能产生高价值。能够在不确定性中清晰思考的工程师非常高效。
Solution-space Taste2 months agohttps://grantslatton.com/solution-space-taste解空间品味类比利用二维障碍场来表示软件设计中的问题求解,其中路径即为解决方案。初级工程师往往只关注眼前的障碍,导致解决方案过于复杂,类似于LLM编码代理,它们会针对小错误进行大刀阔斧的修改,比如编辑React.js的源代码。经验丰富的开发者会进行局部探索,并在察觉到意外复杂性时回溯,他们采用启发式方法,例如设定一天的实施限制,以表明对问题的理解不足。高级实践者会无序地探索解空间的部分区域,以创建更强的启发式方法,基于先前的领域经验更高效地连接草拟的片段。这一类比简化了现实世界的复杂性,但作为直觉泵,有助于导航问题空间,并培养区分简洁与过于复杂解决方案的品味。培养品味需要编写至少10万行代码,接受更优秀程序员的反馈,并仔细研究专家编写的代码。
What Languages Fix2 months agohttp://www.paulgraham.com/fix.htmlKevin Kelleher 提出通过编程语言解决的问题来描述它们。许多编程语言可以根据它们解决的具体问题来简洁地描述。例子范围从早期的语言如Algol和Fortran(解决低级汇编的问题)到现代语言如Python和Ruby(解决Perl的权宜之计)。这种方法揭示了每种语言如何演变以解决其前身公认的缺点。
Ideas for Startups2 months agohttp://www.paulgraham.com/ideas.html创业想法并非百万美元的点子;它们是通过探索和质疑而演变的起点。产生想法的最佳环境是接触新技术以及与志同道合的朋友合作,例如在大学里。想法常常源于思维习惯和涂鸦,需要一个真正的问题来集中注意力。要创建成功的创业公司,就要创造人们想要的东西,可以通过修复有缺陷的产品、将奢侈品大众化或简化使用方式来实现。大多数创业公司都被收购,因此要考虑构建多家大公司可能想要的产品,并让想法从有趣的项目中自然涌现。
How To Choose A Subproblem2 months agohttps://millicosm.substack.com/p/how-to-choose-a-subproblem初级研究人员在长期问题上挣扎,需要将400小时的问题分解成更小的1小时问题。子问题可以通过提出更简单的问题、研究更简单的系统或进行事实调查来创建。玩具问题和限制条件有助于简化复杂问题,以便更容易分析。有价值的子问题能提供可操作的信息、技能培养和战略洞察。图表是高信息量的工具,即使不能立即付诸行动,也常常能揭示意外发现。通过学习进行人力资本投资是有价值的,但应与主要问题相关。过早失败并不总是最优的;坚持和补丁可以挽救有希望的方法。糟糕的子问题模糊不清、太难(缺乏计划)、太容易(收获甚微)或毫无用处。简单的检查可以节省时间,即使它们通常只是确认预期。寻求外部视角,以避免在过于困难或无用的子问题上浪费时间。
Three ways people respond to a problem (other than solving it)2 months agohttps://improvesomething.today/responses-to-problems/顾问往往在问题变得足够严重、雇佣成本变得合理之后才被聘请。除了解决问题外,常见的回应还包括推诿问题、保留问题以及催生新问题。推诿问题涉及局部优化,即解决一个问题会恶化另一个问题;责任应归咎于激励机制,而非个人。保留问题发生在机构依赖问题而存在时,因此解决问题会威胁其存在目的。催生新问题意味着解决一个问题可能会引发另一个问题,这要求意识到意外后果。顾问必须接受解决问题是一个持续的过程,并放弃完成的幻想;平衡解决与忽视问题是关键。