最新文章
RESTful架构详解 软件设计
1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:“我这篇...
优秀程序员眼中的整洁代码 程序人生
有多少程序员,就有多少定义。所以我只询问了一些非常知名且经验丰富的程序员。 Bjarne Stroustrup,C++语言发明者,C++ Programming Language(中译版《C++程序设计语言》)一书作者。 我喜欢优雅和高效的代码。代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少...
怎样看待比自己强的人 程序人生
这个时代对于学 IT 的人来说是幸运的。一个普通的程序员可以相对轻易地找到工作,可以轻易拿到比其他行业高得多的工资,甚至自己创建世界级的企业亦非空想。马云、马化腾等企业家的成功,似乎时刻提醒人们:即便是草莽出身的人,也能通过努力令世界瞩目。马云自己也说过:“如果我能成功,那么中国 80% 的人都...
编程王道,唯“慢”不破 程序人生
英文原文:The Case for SlowProgramming人和人之间编程速度的差异还是很大的,有的程序猿写代码非常快,有的却常常是龟速。Jeffrey Ventrella最近在一篇文章里探讨了这种编程速度的差异,他是绝对的龟速派代表,来看看他对编程速度的看法。 我爸常跟我说的一句话是,...
程序员要有持续产出 程序人生
我相信,所有程序员都需要在下面两点之间找到一个良好的平衡: 1. 把自己关在一间私密的办公室里,针对你的程序与编译器展开一次亲密对话。 2. 出入公众场合,与其他人公开谈论你的程序。 关于这个话题,我已经谈过几次了,在此不再赘述。 大部分程序员是内向的。因此,他们通常不需要任何鼓励就会避...
代码审查过程 软件工程
英文链接:Code Review Processes 对我而言,把代码产品化而没有合适的审查流程,就像是一场抽抽乐游戏。代码当然也有可能会挺好,不过总还是有一定概率某人的哪块积木没抽好,然后一切就轰然崩塌。无论是采用持续集成服务、结对审查、QA审查,还是所有这些方案的组合,都可以大大降低引入风...
所谓软件工程 软件工程
很多编程的人包括我,头衔叫做“软件工程师”(software engineer),然而我却不喜欢这个名字。我喜欢把自己叫做“程序员”(programmer)或者“计算机科学家”(computer scientist)。这是为什么呢?这需要从“软件工程”(software engineering)...
也谈怎么学好英语这件小事 其他分类
近来翻译了不少国外的创业产品类文章到简书和虎嗅以及 36 氪等。承蒙大家错爱,很多网友都觉得鄙人翻译的水平挺高的,然后速度也挺快的-基本上每天靠着晚上那点点时间都能有一篇文章出来。不少人开始问我英语应该怎么学? 这里可能大家都只是在文章中了解到本人的英语还算有点水平,其实我个人的口语水平应该比...
前后端分离了,然后呢? Web前端
前言 前后端分离已经是业界所共识的一种开发/部署模式了。所谓的前后端分离,并不是传统行业中的按部门划分,一部分人纯做前端(HTML/CSS/JavaScript/Flex),另一部分人纯做后端,因为这种方式是不工作的:比如很多团队采取了后端的模板技术(JSP, FreeMarker, ERB等...
撰写合格的REST API 软件设计
两周前因为公司一次裁人,好几个人的活都被按在了我头上,这其中的一大部分是一系列REST API,撰写者号称基本完成,我测试了一下,发现尽管从功能的角度来说,这些API实现了spec的显式要求,但是从实际使用的角度,欠缺的东西太多(各种各样的隐式需求)。REST API是一个系统的backend和...
深入NGINX:我们如何设计它的性能和扩展性 互联网
英文原文:Inside NGINX: How We Designed for Performance & Scale 为了更好地理解设计,你需要了解NGINX是如何工作的。NGINX之所以能在性能上如此优越,是由于其背后的设计。许多web服务器和应用服务器使用简单的线程的(threaded)、...
文化编码(Coding Culture):帮你构建更强的团队,创造更好的产品 软件工程
英文原文:Coding Culture: How To Build Better Products by Building Stronger Teams 译/丛一 软件开发人员通常会付出大量的时间和精力在如何构建最好的产品上。我们常会纠结应该使用哪种Web框架,是用NoSQL数据库还是SQL...
领域驱动设计阅读思考 软件设计
2011年3月份还在华为夜以继日的时候,买过一本《领域驱动设计:软件核心复杂性应对之道》,虽然努力的看过一次,没看懂,觉得都距离我很遥远。2014年4月,在ThoughtWorks还不到一年,买了一本腾老板的《实现领域驱动设计》,看了一遍,似乎理解了一些,但还是有些摸不着头脑。 做IT的一方面...
程序员不是砌砖工人,他们是作家 程序人生
英文原文:Your Developers Aren’t Bricklayers, They’re Writers如果你有 10 个程序员,最好的那个可能至少比最差的那个好 5 倍。这绝对不是胡扯。我们这样定义“更好”:工作速度更快,产生的 bug 更少,代码更具可读性、逻辑性和可维护性。程序员不...
技术债务偿还计划 软件工程
英文原文:Technical Debt: A Repayment Plan 什么是技术债务? 许多团队都受技术债务困扰,不过,很少有团队能真正地设计一个计划从中挣脱出来。为了更好的理解如何才能摆脱债务,我们首先要正确地理解什么是技术债务。 技术债务是由团队为了短期的项目利益故意做了欠佳的技...
那些令人喷饭的代码注释:仅以此代码献给... 程序人生
程序源代码中的注释经常是一个卧虎藏龙的地方,有人就很喜欢写幽默搞笑的注释内容。解释代码含义的同时,也带给人轻松神经的机会,确实是很有意思的风格,来看看这一辑国外某公司产品中的注释。 注意:看的时候严禁喝水或进食。 1、亲爱的代码维护人员 当您尝试优化这段代码但发现这是一个极端错误的决定的时...
给代码多留一些空间 编程基础
英文原文:Give your code some space! 最近在几个不同的团队中发现他们的编码规范中对空格的用法大不相同。这激起了我的好奇心,因为我一直觉得,对于代码格式中的空格的使用,应该有一个大家都公认的最好的习惯。但是在现实开发中,似乎没有出现这样的统一。 现状 首先,我们看看...
领域驱动设计系列(2)浅析VO、DTO、DO、PO的概念、区别和用处 软件设计
上一篇文章作为一个引子,说明了领域驱动设计的优势,从本篇文章开始,笔者将会结合自己的实际经验,谈及领域驱动设计的应用。本篇文章主要讨论一下我们经常会用到的一些对象:VO、DTO、DO和PO。 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们...
新手学习编程的最佳方式是什么? 程序人生
英文链接: What are the best ways for a complete beginner to learn programming 回答这个问题是我最近两年来唯一的关注点。我觉得此处提及的许多资源尽管都很不错,然而我却注意到,成功的学生,无论使用哪种资源,往往都会在以下三个方面...
领域驱动设计系列(1)通过现实例子显示领域驱动设计的威力 软件设计
曾经参与过系统维护或是在现有系统中进行迭代开发的软件工程师们,你们是否有过这样的痛苦经历:当需要修改一个Bug的时候,面对一个类中成百上千行的代码,没有注释,千奇百怪的方法和变量名字,层层嵌套的方法调用,混乱不堪的结构,不要说准确找到Bug所在的位置,就是要清晰知道一段代码究竟是做了什么也非常困...