Loading

文章分类 -  软件工程

软件工程:实践者的观点
摘要:[原文链接] 昨天收到一个读者留言,问作为程序员,有什么学习和工作上的好习惯可以借鉴?想了想,干脆附庸风雅一下,总结个『高效能程序员的七个习惯』吧。Disclaimer:一家之言,可不信,但不可全信。 拥抱 unix 哲学 每个程序员入门的第一堂和第二堂课应该是和 unix 哲学相关的内容,简... 阅读全文
posted @ 2014-05-30 20:44 dai.sp 编辑
摘要:[原文链接]你是何时坠入爱河,什么时候铁心分手的?Facebook可能比你知道的还早。钛媒体注:不论“大数据”概念是不是个陷阱,我们的时代,互联网巨头坐拥海量信息是无人可以否认的事实,社区产品和社交产品赖以生存的基础就是从用户那儿来的数据。他们都是怎样八仙过海、各显神通让你感受到大数据的?比如,去年... 阅读全文
posted @ 2014-04-29 18:13 dai.sp 阅读(560) 评论(0) 推荐(0) 编辑
摘要:如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列。 代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,... 阅读全文
posted @ 2014-04-02 18:19 dai.sp 阅读(183) 评论(0) 推荐(0) 编辑
摘要:[原文链接]今年获得图灵奖的成就是一种算法,可以支持从云计算到多核处理器等架构。莱斯利·兰波特图灵奖(Turing Award)常被称为计算机界的诺贝尔奖,这一奖项在3月18日揭晓。今年的获得者是计算机科学家莱斯利·兰波特(Leslie Lamport),他的研究让我们可以开发大型、网络化的计算机系统。而这类系统真是今天的云计算和网络服务的驱动之一。美国计算机协会(Association for Computing Machinery)每年颁发图灵奖,奖金为25万美元。现年73岁的兰波特是微软公司的研究员,他因20世纪70年代起的一系列重大突破而知名。他设计的算法让软件能可 阅读全文
posted @ 2014-03-31 14:24 dai.sp 阅读(331) 评论(0) 推荐(0) 编辑
摘要:[原文链接]本文的作者 Andrea Dallera技术债务,是指匆忙的实现一个功能,却对现有的程序库造成了破坏(在实现的过程中污染了代码库的设计),这对于一些项目经理/客户来说就像是天书奇谈。也许他们是明白的,只是不愿意承认罢了,我估计是这样的。不管怎样,我想起来一个小故事,当下次遇到这种情况,需要向他们解释增加某些新功能的代价时,也可用讲这个故事给他们听。一个农夫有3只母鸡。每只母鸡每天下一个蛋。农夫跟当地的一个食品店老板做生意。食品店老板每天从农夫那里买2给鸡蛋放在店里出售。一切都很好,直到有一天,食品店老板出现在农夫家里:食品店老板: 哎呀,今天我需要一些鸡肉。农夫: 鸡肉?你和我的生 阅读全文
posted @ 2014-03-30 22:29 dai.sp 阅读(133) 评论(0) 推荐(0) 编辑
摘要:[原文链接]其实软件很像房子。想让你的房子整洁舒适,你必须每周打扫。随着时间的流逝,有些东西会出问题,你必须修理它或换新的。但大多时候你需要做的只是简单的给门或窗刷一道漆就行了。如果房子料理的好,人们就会喜欢住在里面。但想象一下,你现在要离开这个房子。刚开始,这个房子还会保持不错的外观,室内一切正常。可是,一旦不再有人打扫地板或清理垃圾,房子就开始落灰积沉。一段时间后有些东西开始出问题。起初只是一些小的、不重要的东西出问题,但有一天一场暴风袭击了它,毁坏了很多东西。如果这些毁坏的东西没有人来修理,房子就会持续破败。一段时间后,房子变得破败不堪,没有人再愿意去哪里。人们会告诉你,与其去修好它,不 阅读全文
posted @ 2014-03-30 09:03 dai.sp 阅读(129) 评论(0) 推荐(0) 编辑
摘要:[原文链接]云计算你应该听说过“云计算”,对吧?云计算无外乎Internet, 云计算就是以Internet为基础的计算服务。 在云计算模式下,一切的资源、软件和信息都通过网络按照你个人的计算需求按需提供给你。 例如,你不再需要使用Word或Excel这样的桌面应用程序,而是使用Google Docs来创建和编辑你的文档。不少人认为云计算就是我们的将来,它将会给我们的生活的很多方面带来变革。 而其他的人则怀疑这种模式的可行性,认为如果云计算成为一种标准模式,那会导致很多问题出现(例如,安全问题,带宽瓶颈问题,等等)。我是属于支持云计算的。事实上我们今天用的很多应用程序都是典型的云计算模式了(例 阅读全文
posted @ 2014-03-30 08:58 dai.sp 阅读(106) 评论(0) 推荐(0) 编辑
摘要:[原文链接]场景内容云计算因其软件上的按需付费模式而大获成功,它创造了一种伸缩性模型:如果有两个公司,它们正好在相反的时区里,白天都需要10台服务器,晚上减少到1台。那么一个云计算服务商需要11台服务器就能同时为这两个公司提供服务——在任何一个时间点,拿出10台给一家公司用,1台给另一家。如果这两家公司都使用自己的机器,他们每家都要买10台(总共20台)。其中9台机器会在夜里闲置。时区可不是来共享这些闲置资源的唯一理由:运算需求同样是一个很好的应用场景。有些公司会在圣诞节时需要很强的运算能力,而另外一些公司则是在财政年度结束时需要,等等。有些公司很可能是不能预知何时需要多少资源。例如slash 阅读全文
posted @ 2014-03-30 08:57 dai.sp 阅读(428) 评论(0) 推荐(0) 编辑
摘要:[原文链接]Paul Graham向我们展示了一个有趣的比较各种编程语言的方法:阐述各种编程语言都是用来解决什么问题的。我发现这种方法放在数据库上同样好用:Oracle: 我们需要企业级数据库。MySQL: Oracle不开源。PostgreSQL: MySQL的功能不够多。SQLite: 你可以把我嵌入到任何地方。这样,4种数据库够大家用了。MongoDB: 为什么我们要用join和模式(schema)?CouchDB: 为什么我们要有集合(collection)?Redis: 为什么我们要面向文档?Memcached: 为什么我们要用硬盘?Neo4j: SQL缺乏足够的关系。Bigtabl 阅读全文
posted @ 2014-03-30 08:55 dai.sp 阅读(293) 评论(0) 推荐(0) 编辑
摘要:[原文链接]软件开发里有很多有趣的事情,你通常只接触某种特定类型的应用,见识太少。比如,这HTTP 414 错误:请求的URI太长。对于这个长度没有一个标准的上限,很多web服务器都没有说明多长的GET请求会太长。当我在维护这家公司的服务处的应用时,Ben在SQL Server里发现了一个相似类型的错误。Incorrect syntax near '('.//你的一部分SQL语句嵌套的太深。Some part of your SQL statement is nested too deeply. //请重写你的查询语句,或把它们分成小语句。Rewrite the query o 阅读全文
posted @ 2014-03-30 08:54 dai.sp 阅读(301) 评论(0) 推荐(0) 编辑
摘要:[原文链接]本文的作者Martin Fowler本文的作者是著名的技术作家、敏捷软件开发宣言的编写人Martin Fowler,本文是他在编写一本关于NoSQL的新书《NoSQL Distilled》时附带写出的一篇博客。当我们开始着手写《NosqlDistilled》的时候,我们遇到了一个棘手的问题——要写什么?究竟什么是NoSQL数据库?对这个概念我们没有发现一个很权威的定义,没有任何商标注册,没有标准化组织,甚至没有一个宣言。NoSQL这个术语最初出现在2009年6月11日在旧金山由Johan Oskarsson组织的一个非正式的会议上。与会人员来自Voldemort,Cassandra 阅读全文
posted @ 2014-03-30 08:53 dai.sp 阅读(269) 评论(0) 推荐(0) 编辑
摘要:[原文链接]在 “SQL 数据库的终结? (第一篇/共三篇)” 里我简要介绍了一下关于SQL语言和关系型数据库的背景知识,包括它的过去和将来,介绍了一些以隐藏数据库编程的复杂度为目的模式框架的流行和NoSQL 数据库的兴起。在 “SQL 数据库的终结? (第二篇)” 里,我将介绍一些现有的开源的或非开源的NoSQL数据库。在本篇里,我将会告诉大家一些因特网上关于 NoSQL 的资料,过去和将要发生的事件,以及一些关于本文前两部分的相关评论。如果你想收集更多的关于 NoSQL 和 非关系型数据库的信息,请参考下面的一些网站,博客和文章:No to SQL? Anti-database movem 阅读全文
posted @ 2014-03-30 08:51 dai.sp 阅读(135) 评论(0) 推荐(0) 编辑
摘要:[原文链接]在 “SQL数据库的终结? (第一篇/共三篇)” 里我简要介绍了一下关于SQL语言和关系型数据库的背景知识,包括它的过去和将来,介绍了一些以隐藏数据库编程的复杂度为目的模式框架的流行和NoSQL数据库的兴起。在本文的第二篇里,我将介绍一些现有的开源的或非开源的NoSQL数据库。之后,在第三篇里,我将引导你去发现网上的关于NoSQL的资料,告诉你一些跟NoSQL相关的已经发生的和即将发生的一些事件,给软件开发者提供一些这方面的指导。你想象不到,如今竟然有了那么多开源的/非开源的NoSQL数据库产品。而同时,每天都有新的品种出现。如果我的列举中遗漏了你喜爱的NoSQL数据库,请发评论告 阅读全文
posted @ 2014-03-30 08:50 dai.sp 阅读(171) 评论(0) 推荐(0) 编辑
摘要:[原文链接]SQL 的发展起始于 E.F.Codd 博士1970年六月发表于计算机协会的“通信”上的一篇论文, “大型共享数据库的关系模型“。当时他和他的在IBM工作的同事 Donald Chamberlin 和 Raymond Boyce 正在研究一种查询语言(最初叫做SQUARE, Specifying Queries As RelationalExpressions 的首字母缩写),并于1974年以论文”SEQUEL:A Structured English Query Language“将此成就推向顶峰。从此以后,SQL就成了关系数据库系统的最主要的语言。近些年,软件开发业内出现了一些 阅读全文
posted @ 2014-03-30 08:48 dai.sp 阅读(158) 评论(0) 推荐(0) 编辑
摘要:[原文链接]如果你认为风急火燎的做事是好的现象,认为一天工作超过12小时并周末加班是值得赞扬的表现,那你很可能会对这个由一些公司和一些科学研究针对这个问题所做的报告感兴趣。工作效率定律:8个你不需要再重演的关于工作效率的试验(英文)举其中一个例子,Ford公司发现,每周工作60小时的员工的工作产出量会有小幅度的提升,但这样下去的第四周开始,工作效率会骤降。除此之外,每周工作超过40小时的人创造力会大量下降,设计出来的作品会很糟。一个有趣的事情是看那些每周工作超过40小时的人如何认为自己比正常情况下完成了更多的任务的。37Signals公司的Jason Fried在他的《重来(Rework)》这 阅读全文
posted @ 2014-03-30 08:43 dai.sp 阅读(257) 评论(0) 推荐(0) 编辑
摘要:[原文链接]又一次情绪激动、气氛高度紧张的会议,这一次是商议如何让目前这个重要项目“重回正轨”——计划的完工日期早已超了几个星期。所有的这些场景听起来都很耳熟吗?我想说的是,项目超期在任何行业里都是常见的事情。然而,软件行业里看起来更容易出现这种情况。我们怎么会走到这种地步的?这还要从我们梦开始的地方说起。所有的开始都是精神抖擞、干劲十足。一个漂亮的创意,这次我们发誓绝不会重蹈上次的覆辙,不会犯上次的错误。这次我们告诉自己,这次的计划将会“正确”的执行,不会图省事,也不会中途变更。经常有时候我们会感觉梦想正朝正确的方向前进,设计很成功,每个人都很乐观,外界评论也很好。然后,噩梦开始降临,因为各 阅读全文
posted @ 2014-03-30 08:36 dai.sp 阅读(131) 评论(0) 推荐(0) 编辑
摘要:[原文链接]ACME公司的Widgets系统出了点问题。这个系统被他们用来管理器材的库存,当初设计时没考虑到如今这样大量的数据的增长。他们的员工因为这个问题备受折磨。很显然,需要想办法解决这个问题,让系统恢复正常。经过对本地软件公司的一番筛选,ACME联系到了Hamster软件公司,看看他们能否解决这个库存系统中的问题。他们很喜欢Hamster软件公司的网站,他们没有任何软件开发的经验,但根据网站的外观,他们估计这个软件公司能解决他们的问题。这件事上他们并没有做错,但也不是很对。于是,ACME公司和Hamster软件公司开始讨论如何解决他们库存系统中的问题。私底下,Hamster软件公司的开发 阅读全文
posted @ 2014-03-30 08:35 dai.sp 阅读(557) 评论(0) 推荐(0) 编辑
摘要:[原文链接]这个问题是我最常碰到的一个,也是我最难回答的一个。对这种问题最好的回答方式是用全职员工来推算天数。这非常容易,你只需要找出有多少个不重叠的功能特征,然后每个人负责一个。一旦各个功能块被分成了不能再分的任务,你计算需要多少人天,这就是你的答案。你无论如何都不可能用比这更少的时间开发完这个项目。“一个女人生一个孩子要10个月,不论你再增加多少个女人来做这事,都不会缩短这个时间”“只有当一个任务的完成可以分配多人,并且不需要他们之间相互交流合作的情况下能完成时,人和月才能互相替换。”“往一个已经延迟的项目里添加程序员只会使项目进一步延迟”(因为项目中现有的人需要培训新来的人)-《人月神话 阅读全文
posted @ 2014-03-30 08:32 dai.sp 阅读(162) 评论(0) 推荐(0) 编辑
摘要:[原文链接]一种态度认为,应该对程序员在软件开发中的行为进行约束(DirectingAttitude)。持这种态度的人认为大部分的程序员水平都不高(谣传说有50%的人低于平均水平),所以应该对他们所做的事情进行管教约束。要防止他们做一些可能会给他们正在开发的系统带来危害的事情。通常,这种态度体现在一些系统设计和工具中时,你会发现它们会试图阻止程序员去做某些事情,限制程序员的一些做法,以此避免他们陷入过于复杂的境况。另一种态度认为程序员都是可以信赖的专业人员,应该给他们做自己任何想做的事情的自由。秉持这种态度的软件设计以好用易用为目标,但前提假设是程序员必须知道自己在做什么。所以,遵循这种态度的 阅读全文
posted @ 2014-03-30 08:30 dai.sp 阅读(157) 评论(0) 推荐(0) 编辑
摘要:[原文链接]重构代码很危险,它会给测试工作增加巨大的负担。除非你的程序需要重构,一定不要轻易重构代码。我这里所说的并不是把一个for循环改成while循环,或把一个StringBuffer改成StringBuilder,我说的是大动作,例如重写一个方法,一个函数,甚至整个类或包。如果你缺乏对一个方法... 阅读全文
posted @ 2014-03-27 20:00 dai.sp 阅读(172) 评论(0) 推荐(0) 编辑