最新文章
如何在面试中发现优秀程序员 求职面试
英文原文:Finding awesome developers in programming interviews 我曾在一次面试中要求一个很有经验的嵌入式软件开发人员写出一个反转一段字符串并输出到屏幕上的程序。他在这个题目上挣扎了很久。这个家伙是个很神奇的人。你给他一些没用的零件,他能建造一...
通过心理学知识提高问题定位与解决能力(下) 程序人生
前言 本文上篇主要介绍了解决问题的心理过程以及问题表征阶段影响问题解决的一些心理因素,并分享了另外相关案例和指导意见。本文继续介绍影响问题解决的其它心理因素。 影响问题解决的心理因素 自我监控技能大胆假设,小心求证––– 胡适 在设计好解题计划后,问题解决者并不是简单地执行解题计划,而是...
通过心理学知识提高问题定位与解决能力(上) 程序人生
相关文章:通过心理学知识提高问题定位与解决能力(下) 前言 软件开发工作无论是从宏观还是微观上看,都可以看作一个问题解决的过程。从宏观上看,软件开发,简单来说,就是弄清楚客户的需求是什么,然后通过分析、设计、编码和测试等一系列活动解决如何将需求转换为代码的问题。从微观上看,开发人员的日常工作...
用医生的思考方式调试你的代码 程序人生
英文原文:Debug like a doctor“现在的编程工作就像是对你需要解决处理的部分做科学研究。”——Gerald Sussman 设计和维护好的软件就像是一个抵制复杂度的永无止境的奋斗过程。任何足够大小的应用程序的代码路径和组件都能迅速成长成令人眼花缭乱的组合爆炸。 一点都不简单。...
代码审查的价值——为何做、何时做、如何做? 软件工程
对于很多公司来说,代码审查是开发人员日常工作中的重要环节。通过代码审查,可以及早发现项目中存在的问题、促进同事之间的沟通与交流,并且可以在讨论中迸发出智慧的火花。但要想成功实施代码审查却并不是一件轻松的事情,为什么要进行代码审查、何时做、如何做,这是摆在我们面前的3个重要问题。针对于这3个问题,...
所有程序员都应该遵守的11条规则 程序人生
英文原文:11 Rules All Programmers Should Live By 我是一个倾向于生活在规则下的人。 现在,这些规则大部分是我本人为自己设立的,但它们依然是规则。 我发现为自己创建规则可以让我过得更好,因为这样做可以提前决定一些事情,而不是要在匆忙中做出所有的决定。 ...
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 更少,代码更具可读性、逻辑性和可维护性。程序员不...