何幻
Programming is about ideas,
languages are just a way to express them.
首页
归档
分类
2024
如何编写一个简单的 debugger
09-19
持续交付
04-28
团队管理框架
03-14
2023
论价值的可持续性
10-08
不通则痛
09-04
软件项目的新变革
09-02
如何提升软件的交付效率
09-01
项目成败要素的反思
08-23
技术讨论中的问题迁移术
07-06
从技术运营到产品体系
05-04
如何友好的讨论问题
03-30
Tech Lead 练级指南
03-22
如何快速的写完一篇文档
03-06
建立科学的数据观
02-21
研发生产力应当如何度量
02-07
管理项目风险从识别加班开始
01-30
2022
解决内卷的思路和办法
10-12
如何解决工作中的拖延问题
07-08
如何「理性的」看待 oncall
06-30
管理者容易忘记的几件小事
06-09
建立优势从聚焦开始
04-24
如何提升用户满意度
04-20
如何成为一名更好的面试官
04-11
系统化思维过程
03-04
工程化的反思
02-22
日志·工作模式
02-09
如何制定软件项目规划
01-03
2021
方案的 “推动” 和 “拉动”
12-19
如何提升 “开发体验”
12-17
从语言角度看低代码平台
12-05
从向外管理到自组织
12-01
电车难题
11-29
团队的分分合合
11-22
前端研发体系的思考
11-20
团队管理的关注点
10-18
如何判断哪个观点是对的
09-14
“源码” 应该怎么读
09-13
什么是有技术难度的事情
09-08
事项管理心得体会
09-03
“用户视角” 的三重境界
07-16
大会异闻录
07-06
给新人的一些职业发展建议
06-03
为什么要避免自己的任务发生堆积
05-26
成为一名优秀的提问者
05-17
如何对进度落后的项目进行治理
04-14
客制化键盘:不完全指南
04-12
如何做好一个项目
03-04
如何编写一个简单的解释器
01-15
如何编写一个简单的 parser
01-06
2020
软件设计奇遇记(六):做事方式
12-30
软件设计奇遇记(五):发展阶段
12-22
软件设计奇遇记(四):领域杂谈
12-18
软件设计奇遇记(三):人本主义
12-15
软件设计奇遇记(二):空间关系
12-10
软件设计奇遇记(一):时间线索
12-08
技术与产品的生命周期
11-25
可编程的软件服务
11-15
对 “开发者服务” 的一些反思
11-11
四十不惑
11-05
我心中的团队经营之道
09-07
软件研发的效率与效能
09-01
编码技巧(九):少写一些
08-26
编码技巧(八):吃自己的狗粮
08-19
编码技巧(七):让代码易于排错
08-10
编码技巧(六):正视代码
08-05
编码技巧(五):适当可扩展
07-31
编码技巧(四):零缺陷
07-23
编码技巧(三):写明用意
07-20
编码技巧(二):提取工具
07-16
编码技巧(一):让主流程清晰
07-08
编码技巧(零):为食用者着想
06-30
迭代无法解决的架构问题
05-15
外驱力
05-08
“人月” 是程序猿自己争取的
04-13
红利的几种表现形式
04-03
关于商务能力的一些思考
03-06
问题的纯粹性与复杂性
02-19
我的代码需要注释
02-11
技术领域的划分形式
01-08
2019
用画像法认识自己的期望
12-26
我所钦佩程序员的三种品质
12-18
站在巨人的肩膀上
12-11
写好一个系统需要额外付出多少努力
12-02
像企业一样考虑问题
12-01
程序猿群体的自嘲之风
11-25
最近学会的做事方式
11-21
怎样有效的执行计划
10-29
思辨方法(九):外部效用
10-09
思辨方法(八):计划之外
10-08
思辨方法(七):价值交付
09-26
思辨方法(六):游戏规则
09-23
思辨方法(五):评定标准
09-17
思辨方法(四):推理前提
09-16
思辨方法(三):可解条件
09-12
思辨方法(二):问题定义
09-11
思辨方法(一):思维框架
09-10
别出心裁,自出机杼
08-06
带着问题去学技术
07-21
编程语言的表述习惯与信息损失
06-28
软件开发过程中风险管理
06-13
软件开发者的绩效管理
06-02
为什么软件项目总会延期
05-24
虚假的因果性
05-23
反省的假象
05-15
要不要让用户可编程
04-24
编程经验谈
04-21
996反思录
04-17
信息的隐藏、暴露和传递
04-16
不写代码?
03-21
你居中了么
03-15
功利心与目标感
03-06
Algebraic Effects 是什么鬼
02-26
别人在说什么
02-25
前端开发心理学(九):顺应自然
01-29
前端开发心理学(八):容忍矛盾
01-25
前端开发心理学(七):同理心
01-22
前端开发心理学(六):好好说话
01-17
前端开发心理学(五):不要急于求成
01-16
前端开发心理学(四):梦想是怎样实现的
01-10
前端开发心理学(三):攻防战
01-07
前端开发心理学(二):选择和坚持
01-04
前端开发心理学(一):开篇
01-03
2018
我们付出的努力还不够
12-27
一般性之外的考虑
12-15
我们的用户是聪明人
11-22
怎样让自己写的代码更通用
11-09
最难的是在面试的时候保持谦虚
11-04
非技术手段
10-26
尊重别人的创造力
10-18
代码形式
09-29
考察开发者的九个经验法则
09-25
从源代码到领域知识
09-21
系统架构的重要性
09-20
推广的误区
09-18
生疏的技能
09-14
共识是怎样达成的
09-07
创造用户价值
08-29
从敏捷看板到精益看板
08-22
怎样快速的掌握一项编程技能
08-18
如何避免过早优化
08-05
如何像十个人一样工作
07-25
前端对用户价值流的拉动作用
07-16
问题本身
06-29
经验悖论
06-19
教学之法
06-13
Gradual Typing
05-31
软件方案的能力范围
05-30
可扩展性到底有多重要
05-11
为什么喷人者恒被喷之
04-26
也谈工匠精神
04-23
异常先行
04-15
抽象层的稳定性
04-05
我们赞的是我们自己
04-04
制定个人发展规划时的产品思维
03-21
项目中的信息流动
02-28
语言背后的代数学(十):Curry-Howard-Lambek correspondance
02-23
语言背后的代数学(九):笛卡尔闭范畴
02-19
如何写好一篇文档
02-12
语言背后的代数学(八):范畴
02-11
语言背后的代数学(七):数学结构
02-09
语言背后的代数学(六):Henkin模型
02-04
语言背后的代数学(五):
代数
02-03
语言背后的代数学(四):哥德尔定理
01-30
语言背后的代数学(三):语义模型
01-27
语言背后的代数学(二):初等代数
01-20
语言背后的代数学(一):语义解释
01-14
2017
李群和李代数
12-25
如何在阅读的过程中开启上帝视角
12-22
敢于为改变付出代价
12-12
使用二分法排查问题
11-28
编程经验浅谈
11-12
警惕过分熟练
11-07
理智的问题求解者
10-25
你好,类型(十):Parametric polymorphism
10-21
你好,类型(九):Let polymorphism
10-14
你好,类型(八):Subtype
10-13
你好,类型(七):Recursive type
09-23
你好,类型(六):Simply typed lambda calculus
09-19
你好,类型(五):Predicate logic
09-16
Hilbert-style和Gentzen-style演绎系统
09-15
你好,类型(四):Propositional logic
09-10
你好,类型(三):Combinatory logic
09-07
你好,类型(二):Lambda calculus
09-06
你好,类型(一):开篇
09-05
结构与细节
08-25
源码的误区
08-17
黎曼几何基础
08-13
不要盲目相信逻辑结论
08-07
工程师的两难困境
08-06
良基归纳法
07-30
Free Algebra
07-04
概率论的数学基础
06-28
代码的组织和管理方式
06-23
Pumping Lemma
05-24
自学只是一种学习方法
05-07
也谈服务化
03-24
递归函数(九):最小不动点定理
03-21
递归函数(八):偏序结构
03-20
什么样的代码才算是好代码
03-16
递归函数(七):不动点算子
03-14
不要做出改变
03-12
递归函数(六):最多有多少个程序
03-10
递归函数(五):递归集与递归可枚举集
03-09
递归函数(四):全函数与计算的可终止性
03-06
递归函数(三):归纳原理
03-03
递归函数(二):编写递归函数的思路和技巧
02-25
递归函数(一):开篇
02-24
走出技术的舒适区
01-26
2016
软件工具的设计艺术
12-27
遥远的侧面
11-08
我们眼中的自己
10-07
抽象与现实
09-21
决策的秘密
09-12
为什么作者无法不持有偏见
09-07
性格的弱点
09-03
相信不证自明
08-24
思路和想象力
08-18
拓扑学拾趣
08-13
专业程序猿的修炼指南
08-05
懵逼的上同调群
08-02
可计算性理论名词释义
07-23
挑战极限
07-18
重在表达
07-01
不动点算子与完全偏序
06-25
代数数据类型的语法和语义
06-08
如何应对需求变更
06-02
让事情去发生
05-29
类型理论之拙见
05-19
不要依赖『道听途说』
05-18
面向痛点的应变之道
05-16
如何突破瓶颈
05-12
出奇制胜
04-27
教育和职业
03-18
观看AlphaGo与李世石比赛有感
03-14
论工具
03-11
软件工程师的前瞻性
03-08
团队建设中的博弈论
03-06
形式证明与逻辑推理
03-01
真实在哪里
01-29
多做不如少做,不做不如去做
01-26
软件开发的节奏
01-21
第四重境界
01-18
Hask范畴上的Monad
01-11
2015
积极成长
12-22
守住天赋
12-01
问题洁癖
11-25
数理逻辑定义汇总
11-23
论证与直觉
11-08
先后之分
10-30
愉快的三天
10-15
不同的前提
10-12
Scheme元编程
09-21
消除重复与可复用相距多远
09-11
无法扭转的颓势
09-02
前端程序员的自我修养
09-01
道德的不对称性
08-29
潮流的推手
08-23
call/cc是怎样实现的
08-20
思想与表达
08-17
词法作用域是怎样实现的
08-15
抽象的层次
08-11
怎样阐述一个论点
08-03
高手为何剑不出鞘
08-02
尾递归优化
07-25
正则表达式的能力范围
07-18
惰性求值
07-12
吸星大法
07-04
模型观
06-24
英雄悖论
06-22
EcmaScript 2015引入的generator
06-19
真正的难题
06-15
不动点组合子与匿名递归函数
06-10
自省能力
06-05
语言的威力
06-04
运行机制
05-26
CPS的地位
05-23
清醒的选择
05-17
加班的艺术
05-10
Lisp程序员眼中的λ演算
04-11
理解S表达式
04-02
可替换的设计策略
03-31
Haskell的纯函数性
03-27
巨人与泥足
03-26
jQuery插件的把玩方式
03-24
简介卫生宏
03-22
设计的连续性
03-20
闭包就是对象
03-19
函数>>=的多态性
03-18
Lisp语言中的引用
03-17
难易程度
03-14
Monad入门
03-07
你有多少时间用来创造
03-06
优秀的程序员在哪里
02-28
设计的正交性
02-07
使用CPS将fact和fib改为tail recursion
01-30
封装的内涵
01-29
Y combinator in javascript
01-27
Y combinator in lisp
01-27
Continuation入门指南
01-18
回调函数
01-15
相同与不同
01-12
驽马十驾
01-11
2014
刻舟求剑
12-16
真相只是缺少发现
12-16
怎样学习
12-14
软件 - 编程 = ?
12-07
在Lisp的光环之下
12-06