Practice

老王和小菜的公司 ReOrg 了

组织变革 1. 由于重组,一些管理人员变成了个人贡献者。他们担心随着工作范围缩小,职业发展路径受限。对此有何建议? 小菜:“老王啊,最近公司重组,好多 Manager 一下子变成 IC 了,他们现在可焦虑了,老担心往后职业发展没出路,您说咋整啊?” 老王:“这事儿啊,首先得跟他们坐下来,好好聊聊职业规划,在咱这新架构里,给他们找找潜在的上升通道,让他们心里有底。然后呢,多鼓励鼓励,让他...

Swagger Master - AI 帮我做的第一个开源项目

最近在做项目的时候发现团队内部的 API 文档越来越多,每个服务都有自己的 Swagger 页面,来回切换非常麻烦。于是我花了 3 个小时,用 Cursor(众人皆知的 AI 辅助编程工具)做了一个项目:Swagger Master。 这是什么? 一个单文件的 Swagger UI 管理器,可以在一个页面里管理多个 OpenAPI 文档。没错,就是一个 HTML 文件搞定所有事情。 ...

2024年,再见

一年总共 365 天,今天是第 365 天。 这一年过得不好不坏,发生了一些不大不小的事,简单总结一下。 工作 很忙碌,有时候会忘记时间,有段时间甚至会觉得自己像陀螺,旋转得很快,但还在原地。不过能很快调整自己的状态,达成想要达成的结果,我会给自己正面和积极的反馈,我相信相信的力量。 如果自己的状态不好,就很难用虚假的表演来让别人相信你的决策和行动是可靠的。精神面貌很重要,好的精神面...

从设计模式聊到乔布斯,再到DevOps

一段优雅的代码,一部iPhone,和一次丝滑的软件发布,这三者之间有什么共同之处? 答案是:它们都体现了我们这个时代最伟大、也最被低估的一种哲学——对复杂性的精妙隐藏。 一、 秩序的起源:外观模式的智慧 在软件设计的世界里,有一个经典的设计模式,叫做“外观模式”(Facade Pattern)。它的理念朴素而强大:当一个系统内部由无数个复杂的组件和凌乱的调用关系组成时,我们可以在...

防御性编程应该是一种习惯

防御性编程是一种编程习惯和方法论,其核心思想是预见并处理各种潜在的错误和异常情况。它要求开发者在编写代码时,假设最坏的情况可能会发生——外部数据是不可信的、函数的调用者可能会传入非法参数、依赖的系统可能会失败等等。 这种编程方式的目标不是消除所有错误,而是确保当错误发生时,程序能够: 优雅地处理:程序不会因为意外输入或内部状态错误而崩溃。 保证数据完整性:防止错误数据污染系统。...

从哲学角度审视软件设计模式

用哲学的角度去审视软件设计模式,可以帮助我们超越具体的代码实现,去理解它们存在的根本意义和价值。 如果我们要根据“最有意义”来对设计模式进行排序,那么这个“意义”就不应是“使用频率”或“实现难度”,而应是它们所解决的问题的根本性、普遍性和抽象层次。 一个模式越是致力于解决软件工程中最核心、最无法避免的矛盾,它的存在就越有哲学意义。 第一层级:秩序的缔造者 (The Creators...

2023年,再见

一年又到头了,365 天还剩 1 天,奥斯特洛夫斯基说过,一个人的生命是应该这样度过的,当他回首往事的时候,不因虚度年华而悔恨,也不因碌碌无为而羞耻。还好吧,没有很悔恨,没有很羞耻。 读书 脱离学生的身份以后,我们还是会读书,但读书仿佛是一件奢侈的事情,没有沉浸式的环境,没有一起讨论的伙伴,也很难有连续的时间。我问过很多人,你最近读的一本书是什么,很多人告诉我不记得了。 当然,我身边大...

你根本不知道用户想要什么

你根本不知道用户想要什么 认知的偏差 看过《三体》的朋友都知道,地球人最厉害的武器,就是不透明的思想。这是最世界最美好的东西,因为不透明的想法里有希望,有诉求,有未知的美好;但也是万恶之源,因为不透明的大脑里很多时候是模糊的,变化的,捉摸不透的。 需求,正是这样的存在。不管你是学过《梦的解析》,还是倒背如流马斯洛的需求层次,对人类的需求没人敢说自己真的理解了,包括对自己的需求。 ...

如何组织你的代码结构

如何组织你的代码结构 任何设计师都会告诉你,结构设计是设计过程中最重要的步骤。创造开始的前几笔,承载着其余部分的命运。— Christopher Alexander 我们开始看一个程序的第一步是什么?就是它的目录结构。一起从结构开始,程序好坏,从结构上大致就能分辨出来。 最佳实践 以下示例可以作为 Java 项目的一种最佳实践,核心思想来源于一个博主的视频和最近看的一些文章...