IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:软件工程

共 48 篇相关文章

IT 累计浏览 109

如何写好设计文档?

本文基于Go官方proposal仓库中的五个优秀设计文档,提炼其共性结构与写作方法,形成一份可复用的设计文档写作指南。Go设计文档以朴素语言讨论重要取舍,让陌生读者快速理解问题、方案及原因。总结出的通用模板包括元信息、摘要概述、背景动机、设计提案、理由取舍、兼容性、实现过渡计划和附录等部分。关键点包括:标题用一句话说清做什么;摘要埋下最重要承诺;背景动机用具体代码示例说明痛点,让读者‘疼’起来;设计提案采用渐进式教学,配Go声明和代码示例,明确边界;理由取舍主动对比备选方案,解释‘为什么不是别的’;兼容性诚实承认代价,提供渐进迁移路径;实现计划用数据和工具支撑可落地性;附录后置完整API和FAQ。文章强调设计文档应注重可读性、实用性和长期价值,适用于软件工程师和技术负责人参考。

IT 累计浏览 141

01 引言:软件工程范式的五十年之变

文章回顾了软件工程自1968年以来的范式演变,从瀑布模型到敏捷、DevOps,指出核心假设“代码由人编写”首次被大语言模型打破。AI Coding Agent的演进分为四层:补全、对话、任务、自主流程,逐步将人类角色从作者转变为指挥者和审查者。Vibe Coding虽降低编程门槛,但易导致代码质量陷阱,需通过Agentic Engineering和结构化方法提升产出。核心主张是从Prompt-Driven转向Skill-Driven,强调持久化、可复用的Skill系统,如Spec-Driven Development和Ralph Loop等方法论。这些变革基于“用结构化知识驾驭非结构化AI能力”的原则,为AI时代软件工程提供新框架,凸显工程素养的关键作用。

IT 累计浏览 126

00 卷首语:当 Karpathy 说他半年没写一行代码

Andrej Karpathy宣布半年未亲手写代码,转而使用AI Agent驱动开发,标志软件工程进入新纪元。他提出软件3.0概念:LLM作为新型计算机,编程通过提示实现,产生‘参差不齐的智能’。行业趋势显示AI编程工具从Copilot到Claude Code快速进化,效率提升数百倍。然而,AI放大工程缺陷,Vibe Coding可能导致技术债务,而Agentic Engineering强调人类在架构、验证和责任感上的核心作用。方法论如Matt Pocock的Skills系统、Spec-Driven Development、Ralph Loop的自主循环和Garry Tan的gstack虚拟团队,共同应对验证差距。Harness Engineering聚焦Agent运行环境,确保可靠性。文章指出,当开发速度不稀缺,工程化成为壁垒,人类需提升品味、判断力和系统审美。作为卷首语,它引出本书对AI时代软件工程方法论的系统探讨。

IT 累计浏览 1,717

程序员职业生涯巡礼

这篇文章是作者基于十多年从业经历的总结,围绕程序员职业生涯的八点核心感想展开,既是对个人路径的回顾,也是对行业规律的洞察。 作者首先肯定了程序员是一个投入产出比高、能创造价值的好职业,并指出它已具备长久生命力,“35岁危机”更多是早期行业的误读。他强调,职业生涯的不同阶段应有不同侧重——写代码并非永恒任务,当角色需要你从更高维度把握方向时,应勇于转型。 文章特别深入探讨了“入行三到五年”的关键探索期。作者认为这段时间对于发现自身特质、建立深度技术栈不可或缺,即便领域知识浩如烟海,这段摸索也是巨大财富。同时,他犀利地指出了专业深度与广度的平衡问题:既要深耕以免缺乏竞争力,又要避免陷入过于冷门的技术孤岛。 在个人技能之外,作者着重谈到了协作与产品思维。他以张小龙等为例,说明优秀的产品离不开程序员与产品经理的深度协同,鼓励程序员主动介入产品全流程。最后,他认为职业规划不必僵化,踏实写好每一行代码、在时代浪潮中把握机遇,本身就是一种可行的规划。 这些源自实践的思考,为身处不同阶段的开发者提供了兼具共鸣感与方向性的参考。

IT 累计浏览 1,530

程序员应该怎样提高自己

这篇文章是一位拥有近30年经验的资深程序员,对“程序员如何提高自己”这一高频问题的系统性回应。作者认为,成长始于对代码优化的乐趣——正是“写出更高效代码”的追求,驱动着程序员自发去理解操作系统、内存模型等底层原理。 精通一门语言是基石,但这意味着要了解其所有特性的代价与惯用法。作者指出,设计模式本质上是语言特定惯用法的总结。而要突破瓶颈,则必须掌握第二门语言,通过对比不同范式来拓宽解决问题的思路。 在掌握具体技能之外,更高阶的能力在于分解问题、保持简洁的架构设计思维。作者强调,真正的简洁源于对优化与代价的深刻理解,而非一味追求技巧。同时,他呼吁重视工具链掌握、脚本编写等“软能力”,并积极参与开源协作,将沟通与理解能力视为与编码同等重要的核心素养。 这些源于长期实践的经验,为年轻程序员勾勒出一条从兴趣驱动到工程思维的成长路径。

IT 累计浏览 3,286

技术跃迁书单推荐

作者结合自身8年互联网行业经验,分享了一份带有个人色彩的技术书单,核心观点是:读书是形成体系化知识的关键,其作用无法被工作、看博客等碎片化学习所替代。 书单主要覆盖编程基础、设计与架构、网络三大领域。在编程基础部分,推荐了被誉为“一部神书”的《代码大全》,以及《重构:改善既有代码的设计》;设计架构部分,推荐了讲解深入浅出的《设计模式之禅》、免费的《Software Architecture Patterns》电子书以及经典著作《Software Architecture in Practice》;网络部分则推荐了入门读物《图解HTTP》与《图解TCP/IP》、案头常备的《HTTP权威指南》以及实践派的《Web性能权威指南》。 作者对每本书都给出了直白的个人评价,例如指出《代码大全》能帮读者“大概率超越80%的程序员”,而《重构》则“看起来厚,读起来很快,忘得更快”,更适合当作常备工具书。这份书单会不定期更新,为处于不同阶段的开发者提供了清晰、具体的阅读指引。

IT 累计浏览 2,209

四年努力,梦归阿里,和大家聊聊成长感悟

这篇文章讲述了技术博主“五月的仓颉”在工作四年后,成功加入阿里的经历与感悟。作者从毕业初期的迷茫讲起,分享了他如何通过系统性地研究招聘需求、制定学习计划,并在一年内高强度学习JDK源码、虚拟机等核心知识,最终实现目标的具体过程。 文中重点探讨了程序员成长的阶段划分。作者认为,工作五年是一个关键节点,此时应从扎实的个人基本功(如框架原理、JVM、分布式知识等)和项目实战能力(独立处理复杂业务、排查疑难问题、带领小团队)两方面同步提升。他特别强调“深度优先、广度次之”的学习策略,即在一到两个方向上深耕,远胜于广泛涉猎但浅尝辄止。 最后,作者指出进入大厂并非终点,而是更努力的新起点。全文没有空泛的鸡汤,而是用亲身经历和技术思考,为处于成长期的程序员提供了一份清晰的路线图和真诚的鼓励。

IT 累计浏览 2,603

30条编程名言佳句: 这不是Bug只是未知的特性

不是段子,是真知灼见。这篇汇集了30条来自技术书籍开篇与大佬们(包括松本行弘、Linus Torvalds、Donald Knuth等)的经典编程名言,以一种幽默而犀利的方式,道尽了软件开发的那些事儿。 文章的核心观点是,编程远不止是编写代码,它更是关于人的艺术与复杂的学问。比如Martin Fowler与Kent Beck都在强调,写出人类能理解的“好代码”并养成良好习惯,远比炫技更重要。而控制复杂性则是贯穿始终的主题,Fred Brooks用“九个女人不能生一个孩子”的比喻点破了项目管理的误区,Brian Kernighan则直指其为编程的本质。 文中也不乏那些令开发者会心一笑的“行业真理”,如“它在我的机器上能运行”、“这不是bug,只是未列出的特性”,生动反映了日常困境。从对“过早优化”的警惕到“好代码就是最好的文档”的倡导,这些凝练的句子为技术人提供了思考的支点和会心一笑的共鸣。 这些语录不仅是技术思考的结晶,更像是一个行业文化的缩影,适合放在手边,时常翻阅。

IT 累计浏览 5,800

低级程序员和高级程序员的区别

这篇讲的是程序员能力差异背后的关键分水岭。作者从常见的误解切入:许多人以为高级程序员只是“写代码更快、bug更少”,但实际上,真正的分野在于看待问题的方式。 文章以网络购票系统为例做了生动对比。一个典型的“低级”实现可能99%的时间都运行良好,但它把订单状态简单交付给一个网络请求。高级程序员会立刻想到:网络是不可靠的,请求的每一步都可能中断。正确的做法不是假设TCP协议“绝对可靠”,而是将每一次交互都视为可能失败,并从逻辑上设计补偿机制——比如引入独立的对账进程,通过“重试”和“状态确认”来保证系统最终一致性。 作者指出,高级程序员之所以高级,在于他们深刻认识到bug的必然性,并致力于用严谨的逻辑与系统抽象,构建一个滴水不漏的防御体系。这不仅仅是编码技巧,更是一种面对复杂性的设计哲学。

IT 累计浏览 2,561

互联网公司和软件工程那些事

这篇从作者在新浪的一次通宵加班经历讲起,具体描绘了当年大型项目开发时,团队如何在高强度工作中依然面临延期困境。由此,他开始了对软件工程的长期思考。 作者的核心发现是,延期问题的根源往往在于需求定义的粗糙。在他后来负责新浪云计算项目时,通过将需求分解到技术实现级别,做到了以小时为单位的精准排期,将延期控制在极小范围内。这揭示了互联网时代需求与开发关系的本质变化。 在质量控制方面,文章分享了两个生动实践:一是为降低技术门槛而设计的LazyPHP框架,二是通过资源配额实现代码优化的新浪云平台策略。同时强调,单元测试、编码规则等硬性指标必须集成到发布系统中,形成自动化约束。 最终,作者提出了一个前瞻性观点:传统的“软件工程”概念已经过时。他主张未来会走向“产品工程”,即以产品为核心、以天为周期的全流程迭代,并认为大型技术团队将分化为平台支撑与业务实现两类角色。文章融合了个人实战经验与行业趋势洞察,对互联网时代的技术管理方式提出了独到反思。

IT 累计浏览 2,367

函数要多小才够好——谈小函数之道

作者从“函数设计的本质是内聚”这一共识出发,深入探讨了一个常被忽视但至关重要的实践细节:函数到底应该写多长、多小才算好。文章指出,函数的“小”并非目的,而是其内聚性与可读性的外在表现。 为此,作者提出了一个核心衡量标准:“代码最小处理单元”。他将一次赋值、一次比较乃至一次函数调用视为一个单元,并基于人脑认知负荷(不超过7个单位),建议单个函数内的最小处理单元也应控制在7个以内。这为“多小”提供了一个可操作的参考尺度。 作者进一步分享了四个明确的拆分信号:函数过长无法一览无余、局部变量超过七个、缩进嵌套层级过多,以及最重要的——函数内部代码处于不同的抽象层次。他通过一个初始化函数的改造示例,清晰展示了如何将混杂的底层细节封装成更小的、抽象单一的函数。 文章的点睛之笔在于,它定义了小函数的“下限”与“意义”。哪怕函数体只有一行代码,如经典的 `int max(a, b)`,其存在的价值在于通过函数名将具体逻辑抽象为意图清晰的“做什么”,在调用处极大地降低了阅读者的认知成本。文末,作者建议开发者多尝试编写10行以内的短小函数,逐步体会其带来的清晰与可维护性的“大威力”。

IT 累计浏览 1,960

对屌丝要抱有敬畏之心

这篇讲的是作者从亲身经历出发,对社会中努力奋斗的普通人应抱有敬畏之心的观点。文章通过两个故事展开:一个是去哪儿网在上市成为巨头前,其核心高管曾是一名在技术社区活跃的“屌丝”,却因追求被拒而错过缘分;另一个是作者目睹一位辛苦看守电瓶车停车场的收费员,凭借认真负责的态度,后来转型成为业绩出色的房产经纪人,收入远超作者。 作者借这两个“屌丝逆袭”的案例指出,在中国特别是互联网行业的大变迁时代,机遇无处不在。今天看似平凡甚至处于困境的人,明天就可能凭借努力创造出改变生活的产品,或获得更自由的人生选择。因此,他提出,无论你是正在奋斗中的普通人,还是已有所成者,都应对身边每一个认真、偏执的个体保持尊重与敬畏,因为他们蕴藏着不可小觑的潜力。

IT 累计浏览 2,299

熬夜

作者回顾了自己在北京近二十年来,几种不同性质的“熬夜”经历。从学生时期为赚取生活费、在机房“偷电”学习计算机的被动熬夜,到初入IT行业为掌握新技术而如饥似渴的主动学习,再到后来出入三里屯工体、社交饮酒带来的“模糊”熬夜,最终在创业阶段,熬夜成为伴随日常的“理所当然”。 文章并非讨论健康建议,而是通过个人时间线,呈现了一个技术人生活状态的变迁缩影:初期是生存与求知驱动,中期混杂着社交惯性,后期则是被事业责任与焦虑裹挟。作者坦言,熬夜早已成为难以摆脱的习惯,并坦诚表达了对未来的担忧。 这篇分享的动人之处在于其真实性,它映照出许多同龄人相似的矛盾——一边熬夜,一边焦虑。最终,作者送上了朴素的祝福,希望所有熬夜的朋友都能身体健康。

IT 累计浏览 2,852

工作与价值观

这篇文章探讨了一个看似简单实则深刻的问题:我们工作究竟是为了什么。作者以观察到的三种典型选择为起点——有人为了薪水支持自己的生活方式,有人为了证明和提升个人能力,有人则是为了实践自己信奉的价值观。文章明确指出,这三者并非递进关系,而是相互排斥,你只能选择一个作为核心驱动力。 作者着重阐述了第三种选择:在日常工作中,通过选择“做”与“不做”来体现并践行个人价值观。文中引用了Sam Altman的观点以及对代码质量、技术实践的容忍度等具体细节,说明当个人对事业的认同感足够强烈时,许多技术琐事都显得微不足道。 延伸到创业层面,文章对比了“选对人”、“选对方向”与“选对事(共同认可)”三种不同理念。作者明确倾向于后者,认为基于对事业本身的共同认可而组建的团队,其根基更为稳固。他以土豆网为例,说明推动公司前进的可能不是某个创始人,而是一个被广泛认可的价值主张。 读完此文,你或许也会开始重新审视,支撑自己日复一日工作的,究竟是什么。

IT 累计浏览 5,490

领导如何应对员工离职

这篇讲的是管理者如何系统性地应对员工离职,尤其是技术团队中常见的程序员离职问题。作者没有纠缠于个案原因,而是直指核心:想留住人,必须满足“员工觉得公司有发展”和“觉得自身有发展”这两个条件。 对于如何让员工感知公司发展,作者批判了传统的“宣传”模式,认为其不可信。他提出的方案更根本:领导要为员工设定真正有意义的工作,并让员工看到自己工作的价值。比如,让程序员亲眼见证自己编写的程序如何大幅提升业务效率,这种实实在在的关联比任何口号都能建立归属感。 而在员工个人发展方面,文章强调领导不能只当任务分配者。需要主动了解员工的潜力和意愿,将挑战性任务与他们的成长阶段相匹配,并通过持续沟通提供发展建议。这不仅能预防因“没头脑”的跳槽造成的被动,也是团队建设的一部分。 最后,文章驳斥了那种认为“领导有权力就不怕离职”的观点,指出单纯依赖权力无法驱动知识工作者。好的领导必须通过赋能和成长来赢得团队,而不是仅仅依赖职级赋予的控制力。

IT 累计浏览 4,484

每个程序员都应该了解的知识有哪些?

这篇内容整理自Stack Overflow一个关于“网站上线前开发者需要考虑哪些关键技术细节”的高赞问答。作者以资深开发者的视角指出,许多像Jeff Atwood这样的技术专家也可能忽略基础要点,并系统梳理了从界面体验到安全防护的核心清单。 在界面与用户体验方面,文章强调了跨浏览器兼容测试的必要性,至少需覆盖Gecko、Webkit、IE和Opera等主流引擎。同时,需关注移动端与无障碍访问(如WAI和Section508标准)等非常规使用场景。作者还提醒注意用户交互的细节,比如避免显示明文邮箱、为用户添加的链接设置rel="nofollow"属性,以及实现POST后的重定向以防重复提交。 安全部分则重点引用了《OWASP开发指南》,详细列出了应对SQL注入、XSS、XSRF等常见攻击的方法。文中特别指出,必须对用户密码进行加盐哈希处理(推荐使用bcrypt或scrypt),并切勿自创认证系统。此外,使用SSL/HTTPS加密敏感页面、及时更新系统补丁等,都是必须坚守的底线。 这些知识点虽基础,却易被实际项目中的赶工心态所忽略。文章的价值在于提供了一份清晰的自查清单,帮助程序员在追求新功能的同时,巩固这些关乎产品可用性与安全性的根本防线。

IT 累计浏览 3,144

打开视野

这篇讲的是作者在ThoughtWorks做面试官时,观察到一种普遍的成长瓶颈。许多在原公司表现不错的程序员,面试时却在宏观思考和问题陈述上显得零散,因为他们长期只负责执行被“嚼碎”的具体问题,视野被日常项目所限。 作者指出,视野的局限会让程序员误把“局部峰值”当成自己的水平。他给出的解药是主动打破环境限制:通过互联网接触更广阔的天地和高手的思维方式;阅读经典书籍进行系统学习;以及走出去参加技术聚会,以近乎零成本的方式与不同经验的人交流。 文章最后,作者用自己早年的故事做了印证:当他在东软感到能力“过饱和”时,正是凭借对外部世界的好奇和探索,最终加入了能持续激发成长的ThoughtWorks。他想提醒的是,具体学什么、怎么学是后话,程序员最怕的是固步自封,第一步永远是把视野打开。

IT 累计浏览 4,321

做正确的事情,等着被开除

这篇讲的是一种在技术公司里“反常识”的生存哲学。作者从谷歌工程师陳一鳴的一句话“做正确的事情,等着被开除”出发,剖析了现代科技公司普遍存在的“精神分裂”:一方面用严格的流程、考核与框架来规范团队,另一方面又殷切期待员工能打破这些框架,去冒险、快行动,做出真正的创新。 文章的核心观点是,卓越的成就往往诞生于规则之外。它鼓励技术人员建立强大的内心判断,在面临流程僵化、技术债务累积或需要快速验证时,敢于为了团队和产品的长期利益站出来,做出那些“正确但可能违反当前政策”的决策——比如为了快速上线而承担可控风险,或者为了长期可维护性而放慢速度进行重构。作者将这种行为定义为真正的职业精神:做你被雇来该做的事。 这对技术人员的启发在于,职业成长不仅是技术精进,更是责任承担与风险判断力的修炼。失败了不可怕,关键是要从结果中学习,并且绝不犯同样的错误。最好的工程师,往往是那些懂得在合适的时机,勇敢打破规则的人。

IT 累计浏览 3,831

编码规范集锦

这篇文章探讨的是编码规范——一套团队共同遵守的编码约定。作者认为,规范不仅仅是风格统一,更是构建健壮软件的基石。它能帮助新成员快速融入、减少低级错误,甚至防止滥用语言特性带来的隐患。 文章没有停留在理论层面,而是直接列举了几个业界著名的规范作为参考。比如,谷歌的风格指导因其同时剖析了建议的优点和局限而备受作者推崇;Linux内核那标志性的8空格缩进规则则令人印象深刻;而GNU规范则更全面地涵盖了编程中的一致性与错误预防。 作者通过这些具体例子说明,选择何种规范取决于项目和团队,但遵循一个成熟的规范本身,能大幅提升协作效率与代码可维护性。它让编码从个人习惯上升为可工具化、可文档化的工程实践。

IT 累计浏览 3,815

创业并快乐着的六个习惯

这篇分享来自Buffer创始人Joel Gascoigne的创业心路。他回顾了自己从决定创建Buffer,到此前长达一年半的另一段创业旅程,在近2年多的实践中,逐渐提炼出了一套能让自己在创业高压下保持快乐与平衡的规律。 文章并没有谈论复杂的产品策略或融资技巧,而是聚焦于创业者的内在状态。作者发现,快乐并非偶然,而可以通过一些刻意的习惯来培养。这些习惯帮助他应对创业必然伴随的起伏,让过程本身变得可持续。比如,如何设定节奏、处理压力、从日常工作中获取正反馈,这些具体的行动准则构成了文章的核心。 对于技术创业者和开发者来说,这篇文章的价值在于,它跳出了“增长黑客”或“技术架构”的视角,从更本质的“人”的层面提供洞察。它提醒我们,打造一款成功的产品,首先需要构建一个能持续创造、保持健康的自己。文中分享的习惯具体且具有可操作性,能为身处长期项目中的读者提供切实的参照。