隆重推荐国内第一本项目管理的实践书籍——《IT项目管理那些事儿》

 

本书的多位编者都是我的好友,项目管理的专家。

CSDN创始人蒋涛写序中国过程与系统改进协会秘书长王钧、中国计算机学会秘书长杜子德研究员、盛拓传媒CTO廖志强、神州数码VP潘冬博士等人推荐。

ISBN9787121140716

20118月下旬上市

定价:59.00


项目管理的实践,有的轻松活泼、有的痛苦辛酸,可就是真实的项目经理生涯。没有永远的鲜花,没有永远的泪水,只有日复一日的坚持,和项目成功时的喜悦。让你体会项目经理人的挫折,分析他们努力的轨迹,分享他们的悲欢,这就是咱们IT项目经理人自己的故事!
本书四大卖点:
     1、 作者阵容空前强大
作者团队来自于不同的行业、不同的企业背景、不同的工作职位,从经验丰富的一线项目经理、项目总监到技术总监、PMO总监、CTO

作者均为PMBAR社区专家:@标志为新浪微薄ID

@不胜人生一场醉PMBAR@蔡晓东_、老谷@冯国馨PMBAR@传说中的王鹏举@richard李明、RobertZee史昀、@张权先生@恺墨、老倪、nancy刘玲

2、 叙事风格的项目管理书籍
与其它项目管理书籍不同,本书采用的是叙事的风格,通过分享项目经理人自身的实践和经验的案例,诸如一个个精彩绝伦的项目实施案例,组织级项目管理的实施过程,项目经理的成长和团队成员的培养历程,从而和读者达到共鸣并跟随作者叙事的脉动,以从中得以进一步的思索和升华。简而言之,通过感受项目经理人的喜怒哀乐,经验教训,达到“它山之石可以攻玉”的目的。
     3、 PMBAR社区支持和项目管理群
本书作者团队来自于PMBAR社区,PMBAR项目研发管理实践社区聚合业内从事和关注项目与研发管理的专家及朋友,提供理论研究、实践分享和咨询培训指导。同时MSN项目管理群已经凝聚了几百位从事项目管理的PM、项目总监、技术总监和CTO,进行不定期线上线下的项目管理分享。
     4、 广泛关注构建畅销动力:本书从创作过程中就吸引了大量有志于成为项目经理的、已经成为项目经理的,甚至企业管理者的IT人士的关注,知名的IT作者、相关论坛的顶贴支持、QQ群的广泛热议。知名作者、小说式的讲解、魅丽作品、全面营销的支持,构建起畅销动力!
京东商城

http://book.360buy.com/10804899.html

当网

http://product.dangdang.com/product.aspx?product_id=22483332
卓越亚马逊
http://www.amazon.cn/IT%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E9%82%A3%E4%BA%9B%E4%BA%8B%E5%84%BF-%E7%8E%8B%E4%BF%9D%E5%BC%BA/dp/B005FY3U2G
China-pub
http://product.china-pub.com/198482&ref=browse
电子工业出版社
http://www.phei.com.cn/bookshop/bookinfo.asp?bookcode=TP140710&booktype=main

本书作者的博客地址: 
PMBAR社区
http://www.pmbar.net
不胜人生一场醉的博客
http://blog.csdn.net/baoqiangwang
谷雨霖的博客
http://space.itpub.net/3433/
刘羚的博客
http://liuling.csai.cn
蔡晓东的博客
http://www.caixiaodong.com/
史昀的博客
http://robertzee.wordpress.com/

 

Windows下客户端软件的自动化构建

这是自己06年写的东西,在翻看以前邮件的时候看到了。

 

目的:提高开发效率,减少软件的打包过程中因为人为因素引起的错误。

一个项目大了以后,每次需要重新编译,打包,都会变得非常复杂而且重复,而在这工程中也容易发生错误,这就需要一种方式来批量的自动化完成这个工程。在java中有ant这种工具可以完成这一系列工作,而在C++的客户端开发中,还没有相应的工具来完成,但是因为有makefile文件,所以可以通过编写批处理文件,调用版本控制系统中的相应命令来实现这个过程。

为了实现这种自动化构建方式,需要的条件是:

1.首先要有一个版本控制系统(VSS),并且在VSS上创建一个只有读权限的用户。

2.每个工程要有对应得makefile文件,这个在VC中可以直接导出makefile文件。

3.每次在提交测试,打包前,要给提交到VSS上的代码打上标签(可以是当前构建的版本号),标签的好处在于,当测试发现问题后,可以很容易的回滚到上一版本。

4.最后就是根据这些条件按照打包的要求生成一个批处理文件,从而实现一定程度上的软件自动化构建。

一个批处理的文件中的基本步骤是:

l  把本机的VSS的路径设置到path环境变量中。

l  设置相应的VSS路径,源码目录和打包目录。

l  从版本控制系统中(VSS)中取得对应标签的代码。

l  在源码目录,根据makefile文件编译生成可执行文件。

       把可执行文件和相应的其他文件和目录拷贝到打包目录下,并邮件通知相关人员(测试、产品经理等)。

Windows下常用的查错和调试工具

因为自己有多年的Windows下的开发经历,对于Windows下的查错调试工具做个简单总结,这里面的提到的工具不包括那些IDE本身自带的工具。

1.Windbg,微软出品,Windows下第一调试利器,其主要功能有:可以Attach正在运行的进程进行调试;可以打开可执行文件调试运行;可以打开Crash Dump文件进行错误分析;配合配套的pdb文件可以迅速定位问题所在。Windbg拥有丰富的命令,并且可以设置复杂的条件断点(我曾经的老大在这方面有非常高的造诣)来进行查错调试。

2.Boundscheck,Compuware Numega 公司出品,Numega公司是一个著名的调试工具出品公司,写过驱动的同学应该都使用过SoftICE,当年自己第一次写驱动时候,使用的就是SoftICE,它是完全仿真出了Windows操作系统的内核构成,因此也容易出现蓝屏,当时自己调试驱动的时候就经常蓝屏,BoundsCheck是一款非常不错的资源泄漏检测工具,可以检测出内存泄漏,句柄泄漏,同时它也可以定位出代码中可能存在写溢出的地方。

3.Gdi Usage,哪个公司产品不知道,主要的功能是用来定位GDI泄漏,对于经常写界面的同学非常有用

4.DBMon,主要用于显示程序中使用OutPutDebugString输出的调试信息

5.Taskinfo,主要用于查看进程及线程的运行状态和资源占用情况,比Windows自带的任务管理器功能更强大

6.Ethereal,网络抓包工具,如果是写通络通讯程序,是必备良器,可以抓取各种协议的数据以便验证和定位问题,Win7叫做Wireshark

之前工作自己常用的查错调试工具就是这些,如果能够很好的掌握以上工具,相信在Windows下大部分的Bug你都能够定位并解决了。

我对优秀程序员的理解

虽然自己也写了十几年代码,做了十几年的程序员,从最初级程序员,一步步走来,但是我自认自己算不上优秀的程序员,只能说是一个合格的程序员,但是非常有幸的是在我工作的十几年时间里,经历过的6,7家公司中我结交和认识了很多优秀的程序员,从他们身上我总结了一些我对于优秀程序员的理解。

1.扎实的基础知识,这点相信大部分人都会认可的,没有一个坚实的基础就不可能构建摩天大楼

2.对于问题的深究不放,优秀的程序员对于在工作中出现的一个bug,不会仅仅停留在解决bug的层面上,他们还会深入的发掘这个bug后面的知识,会深挖这个问题背后的原因,这样他们不但能够掌握更多的知识,而且对于已有的知识也是个巩固和加强

3.超强的查错调试能力,原则上来说,我们都是追求保证自己写出的代码不出现问题,但是现实是,很少有人可以做到自己的代码写完后,肯定不出问题,因为有太多的可能性导致出问题,特别是客户端程序,一千台机器就有一种环境,就可能会出现你意想不到的问题,服务器的程序相对来说,环境的问题要小些,但是服务器程序可能面对的大负荷带来的问题也是意想不到的,这个时候就非常考验一个程序员的查错和调试能力,优秀的程序员能够利用其调试手段准确的定位问题并解决问题,所以Troubleshooting能力是优秀程序员的一个最主要的特征

4.优秀的程序员在对待新技术的使用上,都会采取非常谨慎的态度,他们对于新技术都是非常敏感的,会第一时间的去学习新技术,但是如果在实际工作中需要用到某种新技术的时候,他们一定会判断自己对于这种新技术是否能够完全把控住,出现问题后自己是否有能力找到问题解决问题,如果不能,那么就不会采用

5.优秀的程序员一定都是具有天赋的,这种天赋就是作为优秀程序员应该具备的才干,这点也非常关键,优秀有时候真的不是你花时间花功夫就能做到的,真的需要具有天赋

6.优秀的程序员,至少我遇到的都非常低调,从来不会认为自己比别人有多强,也非常愿意和别人交流自己所掌握的知识

看完《黑客与画家》后,我觉得我原来认为的优秀程序员就可以理解为黑客——专家级的程序员。

我看敏捷

我是一个写了十几年代码的老程序员了,至少在2010年5月之前,我从未间断过coding。下面谈谈我自己这十几年的程序员生涯对于敏捷的一点浅薄的理解。

1.敏捷我不认为是什么思想,CMMI叫软件成熟度模型,那敏捷也就是一种轻量级的软件开发模型或者叫开发方法,冯 诺依曼的二级制是一种思想,但是敏捷不是。

2.敏捷为什么会出现,个人认为敏捷是为了应对需求的多样性及产品的快速更新的一种手段和方法,这也是我一直认为互联网公司可能更适合借鉴和使用敏捷,但是同样就是在互联网公司内,也不是所有的产品都适用,至少像很多互联网公司都有庞大的后台服务和底层技术支持,这部分我认为并不适宜。

3.其实我们已经在敏捷了,不管知道敏捷还是不知道敏捷,我们很多时候都已经在使用敏捷里经常提到的快速迭代,我自己至少就经历过,在曾经服务过的一家互联网公司,我们每周都会有一次上线,因为互联网产品是永远Beta的,因为我们不可能花三个月甚至更长的时间就能拿出一个让用户满意的产品,因为你根本做不到,所以我们需要试错,我们需要快速的拿出我们的产品,让用户告诉你,你哪儿做对了,哪儿做错了,所以我们需要以更快的产品周期来开发(现在很多移动应用的产品周期可能就是2,3天或者更短),我们让产品人员,测试人员,开发人员形成了一个战斗队伍,我们会让测试人员第一时间介入到产品中来,我们也会让产品人员随时跟踪产品进度,我们也会采用一些自动化的方式来保障开发质量,提高测试效率,保证一次性部署成功。

4.敏捷不可能提高研发能力和研发质量,至少我看了半天,也没看到从哪儿能看出敏捷可以提供研发能力和研发质量,研发能力是取决于研发团队的个人能力的,而这种个人能力,不是简单的能够通过一种方法可以提高的,并且很多研发技能,就我自己的了解,就是需要一些高手来引导的,而且还得看每个人的悟性,有人真的能提高,有的人可能真就不行,我自己带过的人就有这样的例子,我相信那些高手很多都不知道敏捷吧,而且敏捷也不可能让你在网络编程方面有提高吧,至于说研发质量,我的理解,研发质量可能是代码质量+测试质量,这两部分有很多手段来提高,比如codereview,比如各种检查工具,单元测试工具,自动化测试工具,但是应该不是敏捷能做到的。

5.敏捷好吗,好,但是敏捷和CMMI一样都是因为某种开发场景而诞生的,他们都有自己适用的场景,就像我们做开发的经常会听到这样的论调“XXX语言就是好”,“XXX架构就是强”,其实最适合的语言和架构就是最好的开发语言和最好的架构,同样再采用一种新的语言和架构来改造你目前的系统时候,你也必须对于新语言和新架构非常的了解,否则它不断不会带来好处反而是致命的后果,敏捷也同样,如果认为敏捷适合,那也需要真正理解敏捷,能够正确使用它。那种把敏捷当红宝书,当放之四海而皆准的真理,我真的不能苟同。

不管敏捷还是非敏捷,能够满足你需要的就是好方法。

关于互联网产品的一些看法

这几天在微博上参加了几场关于产品经理、关于产品及互联网产品的讨论,也看了知乎上相关的一些提问和回答。结合自己也近7,8年的互联网从业经验,就有了下面的这些对于互联网产品的看法。

 

1.互联网产品时间决定市场,这就要求我们尽快的推出产品原型(一个60分的产品,实现了核心功能和基本功能点),然后根据用户反馈不断的修正产品(这里面微博上的一个好友@孟晓林Ralph 定义为产品的自然进化),通过这样的迭代方式做出一个80分甚至90分的产品。 

2.好产品是运营出来的,运营能力的优劣对于互联网产品的成败起着关键的作用,这里面的运营主要包括了产品推广、品牌推广、数据分析(BI)、用户反馈分析整理、市场维护。、

3.互联网产品要打动用户,你就需要找到用户的痛点,而这个寻找痛点就是一个试错的过程,这也就是在第一点提到的我们需要尽快拿出产品面向用户,这就是一个寻找用户痛点的过程,往往就是这一点,让你在所处的市场上赢取了大部分的用户

4.产品人员一定要具备区分用户要求和用户需求的能力,这个在《用户凭什么跟你走里》有一个非常好的列子,村民说需要一口井,但是如果你深入挖掘,村民真正需要的是水,如果你不去深入的挖掘用户所描述的要求背后的东西,你可能只是为用户打了一口井,这口井可能有水,但是也有可能完全没有水,而如果你帮助用户找到了水源,那你就从根本上解决了用户的需求,你真正赢得了用户。

5.在中国的互联网,绝大多数是产品驱动的,因此原则上这里面的产品经理应该是负责整个产品生命周期,应该是以他们为核心来构建产品团队,他们具有对于整个产品设计的判定权,而事实是在这些公司里这个角色往往由大Boss担任了,而其中不少大Boss并不是一个称职的合格的产品经理,这是很悲催的一个事情。

6.什么是优秀的产品经理,他应该跟一个优秀的铸剑师一样,这把剑出来后是具有剑魂的,而这个魂就应该是铸剑师把自己的魂浇注进去了。我跟很多朋友交流的时候经常会说,我认为一个好的产品经理就是需要具有独立风格的,产品经理其实跟很多艺术家是相似的,好的艺术作品是需要具有独立的风格的,同样产品也是这样,它应该骨子里透着设计它的人的风格。

《黑客与画家》读后感

读《黑客与画家》缘于微博上有好几个“大牛”级的人物推荐,按耐不住好奇心,先在豆瓣上看了看书评,确实不错,因为是好书,所以第一个反应就是上China-pub上把书买了,虽然已经很少买书了,如果是好书还是必须买下来看纸质的,电子书真的还没完全达到那种阅读的享受。

 

《黑客与画家》的作者是硅谷创业之父,Y Combinator合伙人Paul Graham,同时是一个忠实的Lisp使用者,对Lisp语言推崇备至。先说一下整体感觉,这本书是Paul的一个文集,是之前他发布在各种场合的内容的一个整理,所以文章中的每一章节没有必然的前后联系,无需按照顺序阅读,这里面提到的很多内容,在其个人网站http://www.paulgraham.com/多少也都能找到。本书的原版是由O'Reilly出版,一个Paul非常推崇的出版社,而我看的中文版则有人民邮电出版,应该说译者总体上翻译的还是比较不错,但是读的过程中还是感觉某些地方译者翻译的很让人费解,这里面涉及到Lisp部分,也由国内非常著名的一个Lisp使用者“网易冰河”来校译。

 

下面简单谈谈自己读了这本书后的几点感受:

1.对黑客有了一个新的认识,在没有读这本书之前,我对黑客的理解,就是那些利用电脑技术侵入网络,或者出于爱好,或者出于谋取私利的人,但是在这本书里,对于黑客的注解是完全不同于传统对于黑客的定义,黑客真正的意义是指专家级的程序员,而能称得上黑客的都是在软件领域或者说计算机领域的“书呆子”-是技术领域的艺术家,是能够使用自己无与伦比的技术改变自己影响世界的人。

2.关于互联网软件,Paul认为互联网软件带来的最大变化就是改变了原来桌面软件那种灾难性的发布方式,互联网软件可以随时发布,因此淡化了版本的概念,互联网软件是连续渐变的,我们在互联网创业时候,需要做的就是尽快拿出原型,把你的产品推向目标用户,关注用户数据,根据用户数据不断修正你的产品,使自己的产品做的更好,做到80分,90分。

3.关于什么是好的设计,Paul总结了以下几点:

1)好设计是简单的设计

2)好设计是永不过时的设计

3)好设计是解决主要问题的设计

4)好设计是启发性的设计

5)好设计是艰苦的设计

6)好设计是看似容易的设计

7)好设计是堆成的设计

8)好设计是模仿大自然的设计

9)好设计是一种再设计

10)好设计是能够复制的设计

11)好设计常常是奇特的设计

12)好设计是成批出现的

13)好设计往往是大胆的设计

4.最接近数学的语言是最优秀的语言,这方面,Paul认为直到今天,最高级的主流语言也只是刚刚接近Lisp的水平,至于Lisp语言有多么强大多么美好,有兴趣的可以自己去学习和领悟,Common Lisp的官网是http://clisp.org

5.Paul是一个伟大的黑客,同是他又是一个画家,这使得他对于技术的理解更多的融进了很多艺术的理念,优美的程序就如同一幅优美的画卷,他对于技术的执着,对于Lisp语言的热爱,多少已经带有一点偏执了,这也导致他对于像微软这样的企业,Windows这样的操作系统以及JAVA,C#这样的编程语言,都非常的不认可甚至有点蔑视。但是Paul对于财富、对于工作、对于创业、对于产品的很多理念还是非常值得我们去深思和学习。

我相信每个人看完这本书,自己的内心都会有一个Paul Graham。

你会使用什么样的项目管理工具

前段时间自己在微博上发起了一个关于常用的项目管理工具小调查,利用的是新浪微博的投票功能,罗列了 MS Project 、JIRA、Trac、XPlanner、Redmine这5种,个人认为可能比较常用的项目管理工具,因为自己的影响力有限,整个投票一共有37人参与,但是从最终的投票结果,多少也能反应出一些东西

从上面这个图可以看出大家使用最多的依然是微软的产品,虽然现在很多人对于微软的东西都会很鄙视,但是无法否认的一个事实是,因为Windows,因为微软产品的使用配置都相对来说比较傻瓜化,所以依然是我们的首选使用产品。78%的使用比例是最好的证明。JIRA的10%使用比例,说明JIRA正逐步成为很多人的首选,我服务的两家公司都采用了JIRA作为项目管理工具,JIRA是一个商业产品,但是在天朝这都不是问题,相信很多人使用的都是破解版:),而Trac,XPlanner,Redmine感觉在一些互联网公司,特别是采用敏捷方法进行项目管理,使用的比例比较多。随着现在云概念的火热,出现了云商务、云存储、音乐云等等,相信也会有项目云,基于云概念的项目管理平台,所有的项目管理都可以构建在云上。