在新浪微博上关于敏捷的一些讨论
作者在发布对Scrum的质疑后,收到不少敏捷实践者通过微博发起的讨论邀请。他很欣赏这种开放交流的态度,但也直言不讳地准备给出自己的“板砖”式点评。 这篇文章记录的就是这些互动中的思考片段。作者从自己被频繁@的经历出发,坦率地回应了敏捷粉丝们提出的一些典型话题。他并未一味否定,而是基于实践观察,对敏捷特别是Scrum在实际落地中可能遇到的惯性、变形或效果不及预期的现象,提出了带有批判性的观察。 文中透露出一个关键视角:敏捷不是一套僵化的仪式,而需要根据团队和环境进行真正的适配。作者准备挑战的,或许正是那些被机械执行、却未能带来实效的“敏捷实践”。对于那些在推行敏捷时感到困惑或收效甚微的团队,这篇文章中针对具体讨论的反思,或许能提供一些跳出框架的思考角度。
挣值分析
这篇讲的是项目管理中的“挣值分析”方法,它如何通过量化指标来精准把控项目健康度。作者从传统项目监控中常遇到的进度与成本脱节问题出发,详细拆解了挣值分析的三个核心参数——计划值、挣值和实际成本,并解释了它们如何协同工作来揭示项目的真实状态。 文章特别指出,单纯对比计划和实际花费并不能说明全部问题,而挣值分析引入了“已完工作的预算价值”这一维度,能够同时衡量进度绩效与成本绩效。通过计算成本偏差和进度偏差这两个关键指标,项目团队能清晰地知道是超支了还是节省了,是延期了还是提前了。 更进一步,作者结合实例说明了如何运用绩效指数进行趋势预测,从而在项目早期就对潜在风险发出预警。这种方法将模糊的“感觉项目不太顺利”转化为了可计算、可追踪的数据,为决策提供了扎实依据。
匿名类型的硬伤:围绕this的成员捕获策略
这篇讲的是一个关于编程语言特性的深层观察。作者从C#程序员对Java匿名类特性的向往谈起,但随后话锋一转,带我们深入Java语言规范,揭示了其中关于`this`引用的一个根本性矛盾。 文章的核心观点犀利:Java匿名类(及内部类)中的`this`关键字,其作用域被“向外”指到了外部类的实例上,而非匿名类自身。这种设计会导致作用域混淆和意外的成员捕获行为,作者称之为难以避免的“硬伤”。相比之下,C#通过匿名类型与lambda表达式结合,其捕获局部变量形成闭包的策略则清晰得多,变量归属一目了然。 通过这个具体的`this`捕获问题,文章揭示了语言特性设计中一个重要的权衡:便捷性与可预测性之间的取舍。它让读者意识到,一些看似“缺失”的语法糖,背后可能隐藏着避免更深复杂性的深思熟虑。理解这一点,或许能让我们对所用语言的特性选择有更清醒的认识。
IBM面试记
这篇讲的是作者一次久违的正式面试经历。作者回顾了从微软实习、加入创业公司到被盛大创新院招聘的过往,指出自己经历的“非典型”求职路径:面试较少,更多依赖推荐或内部沟通。正因如此,面对“正经渠道”时,他对自身竞争力产生了些许不确定。 这次IBM的面试,对他而言更像是一次“补考”,旨在重新检验在传统且严谨的招聘流程下的应对能力。文章记录了他从最初的一丝忐忑,到逐步适应并享受整个深度交流过程的心路变化。对他而言,这不仅仅是争取一个职位,更像是一次职业能力的“校准”和心态上的“健身”。 文章的核心并不在于分享面试题库或具体技术点,而是透过个人视角,呈现了一位技术人在职业过渡期,主动选择走进传统大厂面试场,进行自我评估与重塑的经历。这种对自身舒适区的主动突破,以及在标准化流程中重新定位的思考,或许能给同样面临职业转换或自我怀疑的技术同行带来一些共鸣与启发。
创业前应先做出一个好的非盈利产品
这篇讲的是作者对程序员创业前准备的建议。作者从观察到很多程序员梦想创业出发,指出创业就像骑独轮车丢球的杂技,需要同时处理产品开发和市场推广两件难事,极易失败。因此,核心观点是:创业之前,先至少做出一个很好、很有用的非盈利产品。 在非盈利状态下,开发者可以专注于做出成功的产品,而无需考虑盈利压力。这避免了为了赚钱而伤害用户的行为,比如功能不全的软件“初级版”、讨厌的广告或隐藏的间谍软件。文章用“软件就像一个管家”来比喻,强调好的软件应该纯粹服务用户,而非推销劣质东西。 虽然非盈利产品不会带来财富,甚至需要财政支持,但它的收获是学会如何做出成功的产品——这比在大学学习理论具有更高的投资回报率。作者建议,先掌握产品开发技能,再应对商业挑战,就像先学会骑独轮车再学杂技。这样,当从独轮车上摔落时,至少不会有额外的杂技球砸到头上。 对于有志于创业的程序员来说,这提供了一个务实的起步路径:通过非盈利项目积累经验,降低风险,提升核心能力。
给年轻程序员的建议
这篇文章源自一位资深程序员对行业新人的真诚分享。作者结合自身多年经验,从调试心态、技术选择到职业成长,给出了许多具体而直接的建议。 比如,他强调年轻程序员不必急于精通所有技术栈,而是应该先在一个领域建立深度,再横向拓展。文章还谈到如何有效阅读源码、怎样在代码评审中学习,甚至提到了管理精力和避免倦怠的实用技巧。这些建议没有空泛的口号,更像是一个老手在告诉你哪些坑不必亲自踩一遍。 对于刚入行或工作几年的开发者来说,这些经验能帮助校准早期的职业方向,把时间花在真正重要的事上。
产品经理如何行之有效的提高执行力
这篇讲的是产品经理如何摆脱“想法多、落地少”的困境,切实提升个人执行力。作者从产品迭代中常见的目标模糊、反馈滞后等痛点出发,提出了一个核心观点:执行力不是靠意志力硬扛,而是依靠一套可重复、可优化的工作系统来驱动。 文章详细拆解了这套系统的几个关键部件:如何将宏观目标拆解成每日可验证的“微小胜利”来保持节奏;如何建立面向关键干系人的快速反馈闭环,避免闭门造车;以及如何通过定期复盘,把成功经验和失败教训都固化为自己的“操作手册”。作者强调,这套方法的关键在于让行动本身产生正向激励,形成“行动-反馈-优化”的增强回路。 文中的方法都配有具体场景说明,比如如何用“十五分钟原型法”快速验证一个想法,或是怎样在周报中呈现进度以获取有效支持。这些实操技巧,旨在帮助产品经理将精力聚焦于真正推动项目前进的动作上,最终把执行力转化为可持续的职业能力。
register、volatile、restrict 三关键字的用法
这篇博客聚焦于C语言中三个关键但容易被误解的修饰符:register、volatile和restrict。作者从开发者的常见实践困惑出发,逐一对比了它们的语法细节、设计意图和适用场景。 register关键字原本用于建议编译器
每个程序员都应该学习使用Python或Ruby
这篇讲的是程序员是否需要学习Python或Ruby。作者从翻译一篇经典文章出发,核心是对当前主流编程语言做了一次横向对比。 文章将Python/Ruby与C/C++/Java、VB/PHP、Lisp系、Perl以及Shell脚本分别进行了比较。作者指出,相比Java等语言,Python/Ruby能以约五分之一的代码量完成相同任务,极大提升了单个程序员的产出效率。与设计感较差的PHP/VB相比,它们语言设计更优。同时,它们又比Lisp等“酷”语言更“主流”和实用,在功能与工程应用间取得了良好平衡。对于Perl,作者认为它虽曾辉煌,但已逐渐被Python/Ruby取代,对新人不够友好。 作者的核心观点是,掌握Python或Ruby能让学生和程序员更高效地完成项目(甚至节省一半时间),并推荐阅读文章中给出的官方学习资源,比如谷歌Python课程。文末附带的xkcd漫画,生动描绘了Python赋予程序员的“超能力”。
如何做业务规划
这篇讲的是对一次内部业务规划培训的总结。培训讲师声谷用了三个小时,核心是引导大家通过回答三个问题来构建规划思路:Why(为什么要做)、What(具体要做什么)以及How(如何达成)。 作者在理解的基础上进一步阐释了这三个问题如何层层递进。Why部分强调要从战略目标与市场现状出发,找到业务的必要性和紧迫性;What部分则聚焦于将宏观目标拆解为具体、可执行的关键举措与里程碑;How部分涉及资源匹配、团队协作与风险预案,确保规划能落到实处。整个框架清晰,把业务规划从“想做什么”的模糊愿景,梳理成“为什么做、做什么、怎么做”的可行动路径。 对于不少技术或业务负责人来说,规划往往难在开头和落地。这篇文章通过一个经过实践检验的简洁框架,提供了一套从意图推导到执行计划的思考工具,帮助读者系统性地理清业务规划的脉络。
数字技术演进下的组织结构
这篇讲的是,随着数字技术的快速演进,企业的组织结构和人才模式正在发生深刻变革。 文章以近期IT圈频繁的人员流动为引子,特别是百度高级副总裁沈皓瑜离职、传闻加盟京东出任COO这一事件,作为切入点。作者没有停留在八卦层面,而是指出这种高层变动并非偶然的个人选择。它揭示了一个更本质的趋势:在数字化驱动的商业竞争中,具备综合运营与战略能力的人才正成为稀缺资源,而灵活、开放的人才流动是组织保持创新与活力的关键表现。 文章的核心观点在于,传统的、层级固化的组织结构难以适应数字时代瞬息万变的市场需求。技术的演进,尤其是数据和平台化能力的深化,正在倒逼企业打破部门墙,构建更敏捷、更网络化的协作形态。人才的“出走”与“引进”,正是组织形态新陈代谢的具体体现。对于管理者而言,如何设计一个既能留住核心人才,又能与外部优秀大脑高效连接的生态系统,可能比严防死守更为重要。 这为我们理解现代科技公司的竞争力提供了一个组织视角。技术的较量背后,更是人才机制与组织活力的较量。
谈谈我的阅读经验――从刘瑜的一篇文章谈起
作者从与豆瓣网友的一次闲聊说起,对方推荐了刘瑜的文章《秘密书架:从经典到经验》,这促使他系统思考并分享了自己对“如何阅读”的理解。他指出,很多人混淆了“读书”与“会读书”,而真正的关键在于后者。 文章没有停留在泛泛而谈,而是从刘瑜的观点出发,提炼出几个确保“会读书”的核心原则。例如,作者强调阅读时需要与文本保持批判性距离,主动进行思辨,而非被动接受信息。他具体谈到如何通过提问、做笔记和建立知识连接来深化理解,将阅读从简单的信息获取,转变为一种深度的思维训练和知识构建过程。 这篇分享的价值在于,它没有给出刻板的书单,而是提供了一套可操作的阅读心法。它提醒我们,阅读的质量不在于速度和数量,而在于我们能否通过主动思考和有效方法,将书中的内容真正内化为自己的见识与能力。
给程序员新手的一些建议
这篇讲的是作者参与公司实习生招聘后沉淀下的观察与思考。从筛选简历到面试沟通,作者发现不少新人对“程序员”这份职业的理解仍停留在技术本身,而忽略了更关键的部分:比如如何清晰地描述自己参与的项目,如何拆解一个陌生问题,以及面对 bug 时第一反应是查日志还是反复试错。 文章从这些实际案例出发,给出了几点切实的建议。比如,强调代码之外的沟通能力——你需要能用几句话向面试官讲清楚你项目的核心价值;比如,培养结构化的问题解决习惯,而不仅仅是堆砌技术;再比如,保持对技术的热情但避免盲目,要清楚自己技术栈的边界在哪里。作者没有讲大道理,而是用招聘中遇到的正面与反面例子,点明了从“会写代码”到“做好工程师”之间需要跨越的门槛。对于刚入行或即将步入职场的新人,这些来自招聘一线的观察,或许能帮你少走一些弯路。
软件公司的两种管理方式
这篇讲的是软件公司管理中两种截然不同风格的碰撞。作者从一位外国同事的亲身经历和强烈推荐切入,探讨了一种“宽松信任”与另一种“严密管控”的管理模式。文章并未停留在理论对比,而是深入到日常协作、代码评审、决策流程等具体场景中,分析了这两种方式如何影响开发效率、团队创新和工程师的主观能动性。 核心观点在于,管理方式的选择没有绝对对错,但其与公司文化、产品阶段及团队特质必须高度契合。作者通过实例指出,生搬硬套某种“最佳实践”往往会适得其反,比如在需要快速创新的环境中过度管控,或在关键质量节点上缺乏必要审视。 这篇文章对技术管理者和创始人极具参考价值。它促使读者思考:自己团队正在奉行的,究竟是哪种管理哲学?它是否真正匹配当前的核心目标?文中的洞察或许能帮助管理者在“放手”与“把控”之间,找到那个更适配当前土壤的微妙平衡点。
进程的一生
这篇讲的是Linux内核中进程如何从fork创建、exec变身,到最终退出回收的完整生命周期。作者从内核实现的角度,清晰地串联起了一个进程从诞生到消亡的全流程。 文章不仅描述了fork创建子进程这一经典场景,更深入剖析了随后的exec家族函数如何为进程“换上新装”,执行不同的程序文件。其核心在于解释内核如何通过描述符、信号、内存映射等机制,来管理这个不断变化中的实体。例如,它解释了进程状态(如就绪、运行、阻塞)的转换逻辑,以及父进程如何通过wait系统调用来收割子进程的“遗产”,避免成为孤儿或僵尸进程。 作者将分散的内核知识点,围绕“一生”这条时间线有机地组织起来,让抽象的进程管理概念变得连贯且易于理解。对于想从底层机制上搞明白“一个程序运行起来到底发生了什么”的开发者,这篇文章提供了一份非常清晰的路线图。
如何成为Python高手
这篇源自《How to become a proficient Python programmer》的译文,探讨的是从Python使用者进阶为高手的实践心法。作者并未罗列语法,而是聚焦于如何写出“像Python一样”的、地道的Python代码。 文章的核心观点在于,真正的效率提升和代码质量飞跃,来自于对语言惯用法和社区共识的深度遵循。它强烈建议将《PEP 8 — Python代码风格指南》作为第一准则,并详细解释了诸如代码可读性、命名规范、异常处理等具体实践为何重要。例如,作者指出,高手写的代码应当让其他Python程序员能轻松理解,而不仅仅是机器能执行。 此外,文章还强调了代码复审、持续测试以及深入理解标准库和流行第三方库设计哲学的重要性。这些实践共同作用,最终让代码变得清晰、可维护,从而为长期项目和团队协作打下坚实基础。这不仅是一份进阶清单,更是一种融入Python社区文化的方法论。
把 lua 的 gc 移到独立线程
这篇讲的是如何将 Lua 的垃圾回收(GC)机制从主线程剥离,放到独立线程中运行的技术方案。 作者首先剖析了 Lua 现有 GC 工作机制的细节,指出了其核心痛点:GC 的标记、清除等阶段会与业务代码共享同一个执行线程,不可避免地导致不可预测的长时间停顿,这对于延迟敏感的应用(如游戏、实时服务)是个棘手问题。 文章的核心思路是实现一个“GC 线程”,让它与主线程并行工作。难点在于如何让 GC 线程安全地遍历和清理仍被主线程使用的对象。作者从 Lua 源码出发,阐述了实现的关键点,包括设计一套轻量级的屏障(barrier)机制来记录对象修改、协调两个线程间的对象图访问,以及处理字符串等特殊对象的清理逻辑。 经过改造后,GC 工作主要转至后台,主线程仅需付出很小的屏障开销,从而大幅降低了 GC 引起的峰值停顿。文章不仅给出了清晰的实现路径,也坦诚讨论了并行 GC 带来的额外内存占用等权衡,为需要进行类似优化的开发者提供了扎实的参考。
如何写出无法维护的代码
这篇讲的是编程圈里一种有趣又危险的现象——那些让人眼花缭乱的“炫技”代码为什么总是特别受欢迎。作者从酷壳网站后台数据说起,发现“6个变态的Hello World”、“如何加密源代码”这类文章长期占据热门榜,而那些扎实讲设计模式或调试技巧的内容反而没那么高流量。 文章接着拆解了这类代码的共同特征:它们往往刻意使用晦涩语法、复杂嵌套或非常规技巧,初看确实能让人觉得“这都能写出来”,但几乎无法被团队协作或后期维护。作者指出,这种追求智力优越感而忽略工程价值的倾向,其实在不少程序员的成长过程中都埋着种子。 最终文章回到一个朴素却常被忽视的原则:好的代码应该像一封清晰的信,而不仅仅是留给自己的谜题。真正的高手不是靠写出别人看不懂的代码来证明实力,而是能让代码在复杂系统中长期稳定运行。这大概是所有进阶程序员都需要反思的一课。
如何与异地的开发人员沟通
这篇讲的是资深产品专家 Marty Cagan 对远程协作的洞察,尤其针对开发团队分布在不同时区的常见挑战。作者从产品管理和工程实践结合的视角出发,指出沟通的核心障碍往往不是技术,而是时差、文化差异和信任缺失。文章节选自经典著作《启示录》,分享了建立有效远程协作流程的具体方法,比如如何安排异步沟通、确保需求对齐,以及管理团队期望。 另一个高频痛点是当程序员提出“我想重写代码”时该如何应对。文章没有简单评判,而是引导读者思考代码重写背后的真正驱动力——是技术债务、架构缺陷,还是业务需求发生了根本变化?作者提供了一套决策框架,帮助技术管理者平衡短期交付压力与长期系统健康度,避免陷入情绪化的对抗或无原则的妥协。 这些经验源于作者在网景、eBay等一线公司的实战总结,将抽象的管理原则转化为了团队可操作的沟通习惯和决策依据。
我在网易的十年
这篇讲的是作者回顾自己在网易的十年技术生涯。从十年前在广州36楼办理入职手续的那一天起,他亲历了网易从一家传统门户站点向技术驱动型公司的转型。文章详细梳理了网易在移动互联网和云时代的技术演进,包括从早期PHP架构到Java微服务、云原生的迁移过程,特别描述了团队如何通过容器化和自动化部署提升系统弹性,使服务可用性达到99.99%。具体案例中,作者分享了优化网易邮箱性能的实战,通过引入分布式缓存和数据库分库分表,将邮件收发延迟降低了60%;在网易云音乐项目中,他参与了推荐系统的重构,利用实时数据流和深度学习模型,使歌曲推荐点击率增长了20%,用户留存率提升15%。除了技术深度,文章深入探讨了网易的