黑客和敏捷开发

黑客和敏捷开发

前段时间读了一下Paul Graham的《黑客与画家》(Hackers and Painters: Big Ideas from the Computer Age),虽说这书已经出版良久了,但是读书往往是不讲究时间的,有收获就好。这本书是文集,相对内容比较散,针对的也并非是业内人士,所以不同人在不同角度可以把这本书看出千滋百味。但不管怎么说,我觉得绝大多数人,都可以从这本书中收获良多。本人是IT行业人士,仅从IT创业者角度谈谈自己的理解。

”如果观察那些做出伟大作品的人,你会发现他们的共同点就是工作的非常艰苦。如果你工作的不艰苦,你可能正在浪费时间。 并非所有的痛苦都是有益的。世界上有有益的痛苦,也有无益的痛苦。你需要的是咬牙向前冲刺的痛苦,而不是脚背钉子扎破的痛苦。解决难题的痛苦对设计师有好处,但是对付挑剔的客户的痛苦或者对付质量低劣的建材的痛苦就是另一回事了。“

创业的辛苦是必然,但是绝不是随随便便的辛苦就能成功的。辛苦要用在往目标冲刺当中,与对手博弈之中,而不是无谓的的消费。而这也跟Hacker们所一贯追求的相符(本文中的Hacker与书中的Hacker所指一致,均是指有追求的Geekers)。对于创业过程来说,在搭好了开展事业所需要的基本的条件之后,就专心致志于自己的主业吧。而在主业中,也需要集中在一两个点重点突破,而不要总被别的事情所分散。

那么具体到这一个过程,又有哪些可以注意的地方呢?

首先,我们需要明白,"创业一直有一个潜规则: 一旦创业了,很多事情是不由你的。创业前, 你只想努力2-3倍,从而得到相应的回报。 但真正创业后,你的竞争对手决定了你到底要有多辛苦。 而他们做出的决定都是一样的: 你能吃多少苦,我们就能吃多少苦,所以创业者才会很苦逼。这种情况下,你应该超越出来,从层次上高于你所在的环境。否则你势必将做得异常累。"那么,我们需要做的,就是要用超出对手的层次与境界与对手竞争。而这个竞争过程又分为战略和战术两个层次,两者相互配合,缺一不可。战略上要从产品本身,定位,核心功能等方面入手,要站的比对手高,看的比对手远。而要做到这点,有两个方面需要注意:一是确立好需要解决问题的初衷而不是为了Show技术,二是不要盲目的认为自己就是比别人想的远,而是要通过大量的验证来调整,而为了支持不断大量的调整,敏捷思想必不可少。在战术上,就要考虑到每一个细节的实现是否得当。而具体到IT创业的话,这个战术跟写程式就密不可分了。而写程式的相关内容,我们下面再说。

第二,我们还需要明白,“人们真正注意到你的时候,不是第一眼看到你站在那里,而是发现过了这么久你居然还在那里。” 有的时候不是你不美,而是你的美丽没有绽放太久就中道崩殂了。坚持的重要性无需多言,但是把握好坚持与变通的临界,这是一门艺术活。

第三,在创业这个问题上,“致富的最好办法是创造财富(而不是掠夺)”。只要能够创造财富,就能获得财富。而掠夺财富的话,财富的持久性是值得怀疑的。“要更好的创造财富,你做的事情需要两点保证:可测量性,可放大性。硅谷的诀窍,可测量性来自小团队,可放大性来自开发新技术。”而针对小团队的测量创造财富的能力,和开发新技术来真正创造财富,无疑是小团队们的核心竞争力。

现在再回到创业战术的问题上来,针对IT创业的话,具体的战术跟写程式十分密切。而为了能在战术上比对手快速而高效,选择非常敏捷的语言是个好主意。在书中为了能高效的写程式,作者对Lisp十分推崇。对此,我持部分赞同意见。对于Lisp语言的思想,无疑是现在程序设计语言的典范。但是针对具体的开发过程,直接使用Lisp未必真能非常高效。 第一,目前已经掌握Lisp语言的程序员相对小众,如果你本来没有掌握Lisp,为了Lisp而Lisp,没有几年的积累,很可能成为“只有宝剑而没有对应剑术”,所以是否使用Lisp得视情况而定。第二,不可否认,目前Lisp的库相对不够丰富,但是对此也有解决方法,就是使用支持Java类库Clojure。这也是我认为Clojure优于Common
Lisp和Scheme的重要原因。第三点就是由于Lisp程序员由于太小众了,确实在想扩张的时候容易捉襟见肘。即使是Clojure在国内也丰富不到哪去,对此我的观点是,为什么不试试Ruby呢?当然本文并非语言之争,上述观点也只是鄙人浅见,是鄙人针对目前情况的看法而已,如果读者不认同,还请批评指正。

应该来说,《黑客与画家》还是非常值得一读之书,相信你读了之后,也会有新的理解和体会。最后,我想用《黑客与画家》中的一句话结束文章:“画作永远没有完工的一天,你只是不再画下去而已。 ” 我们的生命,就是作画。

黑客和敏捷开发

时间: 2024-10-14 17:55:04

黑客和敏捷开发的相关文章

敏捷开发

学习内容: 敏捷开发 Agile Development 是一种软件开发流程,开发方法,能够知道我们按照规定的环节一步步的去完成项目的开发任务,主要驱动核心是人,采用的是迭代式的开发. 是相对于瀑布开发模式的缺点改进的一种开发模式,就是把一个大项目切分成多个子项目,然后分别开发.测试. 是以用户的需求变化为核心,采用迭代和循序渐进的方式进行软件开发. 四句开发宣言: 个体和互动  胜过     流程和工具 可用的软件    胜过     详尽的文档 客户合作 胜过     合同谈判 响应变化  

利用敏捷开发的原则开发自己的大学生校园博客系统

  敏捷开发原则 我们的做法 1 尽早并持续交付有价值的软件以满足顾客需求 软件暂时未完成,但目前已经交付某些文档,可以通过文档与用户进行交互. 2 欢迎需求的变化,并利用这种变化来提高用户的竞争优势 不时向同学询问或自我思考看自己所要做的能否使大学生满意. 3 经常发布可用的软件,发布间隔可以从几周到几个月,能短则短 由于我们的项目是要求在一个月内进行交付,所以我们并没有进行软件的交付,但是我们每周都会交一些设计文档,对项目及完成进度进行说明. 4 业务人员和开发人员在项目开发过程中应该每天共

Project Management: 敏捷开发纵横谈

摘要:在IT界中,“敏捷”是一个很酷的词汇,“敏捷”的相关理论可谓铺天盖地.“敏捷”一词实质没有统一定义,各家有自家的说法,本教程将让你了解“敏捷”的来龙去脉,抓住“敏捷”本质,并能在工作中实践“敏捷”. 特别声明:如需转载此文,请给出指向本网站的连接,如下:作者:张传波摘自:http://www.umlonline.cn如不能按此要求,请不要转载此文. 大纲:“敏捷”陷阱为什么会有“敏捷”这个说法?极限编程敏捷开发RUP敏捷开发的实质是什么?如何才能敏捷起来? 正文: “敏捷”陷阱 小甲想到某

瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别

瀑布式开发.迭代开发,区别[都属于,生命周期模型]         两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说. 传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好.特别是前期阶段,设计的越完美,提交后的成本损失就越少.我现在从事的外包项目就是这样的流程. 迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目

互联网公司的“敏捷开发”流程是怎么样的,每个职位的角色和分工是什么?

作者:暗灭 第一   为什么需要敏捷开发. 在几万年以前,软件项目的开发都是以年来计算的,这代表什么意思呢 ?需求设计了半年多,方案设计做了半年多,开发了三年多,测试了半年多,修改Bug用了半年多.总计花了很长很长的时间,然后上线后发现有很多需求已经不存在了,同时又出现了很多新的需求. 怎么办?继续改.这一改又是半年多的时间过去了.马丹用户的需求还再改,怎么办? 这是困扰软件开发项目的最大的问题,越大的项目,参与的人越多,风险越大.文档越规范,维护起来的难度就越高,导致项目中遇到的问题越来越多.

敏捷开发实施方案

今天把前段时间,给公司讲解敏捷开发流程的PPT文档发出来.由于近来比较喜欢用Markdown编写文档,发现博客园不支持Markdown编辑,有点失望.小小吐槽,O(∩_∩)O~ 敏捷开发实施流程 敏捷开发实施流程 1.迭代计划 2.每日晨会 3.看板 4.迭代验收 (ShowCase) 5.迭代回顾会议 6.敏捷使用管理工具 7.敏捷开发总结回顾 8.瀑布模式与敏捷开发区别 敏捷开发的最大特点是:积极响应用户的需求,快速高质量的交付软件; 其核心是:以人为本,发挥人的主观能动性. 1.迭代计划

敏捷开发系列文章目录

敏捷开发在国内是不是只是一个理想化的工作环境? 经常有人问,你们搞敏捷开发工作量是由开发人员自己估的,而不是由经验丰富的技术主管估的,他们自己肯定会把工作量估得非常大,那什么时候项目才做得完?你们每天开那么多会,怎么不把时间放在好好写代码上面?一个迭代这么短的时间既要做设计.又要编码.还要测试,这么急着做出的东西质量肯定不高.系统设计肯定得经验丰富的老手做更靠谱.每当我听到有人说这些问题,我就知道他肯定没有真正的认识敏捷开发,如果真的有实践过,自然就会发现这些问题根本就不是问题,只是杞人忧天而已

什么是敏捷开发?(扫盲)

敏捷开发的4句宣言 个体与交互 胜过 过程与工具 可以工作的软件 胜过 面面俱到的文挡 客户协作 胜过 合同谈判 响应变化 胜过 遵循计划 最近一直听人说"敏捷开发",一脸懵逼,根本不知道什么是敏捷开发,然后百度了一下,上面四句是比较普遍的总结! 什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的

敏捷开发和极限编程

敏捷软件开发(Agile software development): 它是一种用来应对软件需求的不断变更的新的软件开发技术. 强调整个开发过程中业务人员和开发人员紧密协作在一起,面对面交流,频繁性的交付软件,随时应对需求的变更.追求在尽可能短的时间内交付较小的可用的功能,并在整个项目周期中持续改善和增强. 极限编程(Extreme programming,简XP): 极限编程是敏捷开发中最富有成效的几种方法学之一. XP是一种近螺旋式开发方法,它将复杂的开发过程分解成一个个小的开发周期,对需求