2、知识的提升以及视野的开阔
在三天的演讲中,议题丰富,多数内容是来自于一线工程师的实践总结,自然内容也很实用。
敏捷软件工程--吴穹(敏捷实施的Roadmap)
很遗憾没有及时赶上这个讲座,只能席地而坐,但是颇有所得。
1. 敏捷就是为了消除浪费,目标是可持续的最短价值交付时间。可持续意味着团队要保持活力,所以惜时是最大的误区。有一次公司内部的敏捷开发培训也提到,每天工作量的估算都是按照6个小时,而不是8个小时。事实证明,这种看似工作时间不充分的方法,最后是很有效率的。
2. 敏捷的误区不能为敏捷而敏捷。如今敏捷是一个很时髦很响亮的名词,但是我们要避免为了敏捷而敏捷,而是要根据项目而定。
3. 小团队本身就是敏捷的,难得是大型团队的敏捷工程。小团队本身人员较少,大家都比较容易沟通,不存在交流障碍。而当一个几百人的团队要实行敏捷就是一件很困难的事情了。
4. 敏捷开发的几个最佳实践:测试驱动开发、持续集成、快速迭代、特性团队。测试驱动开发就是先编写测试,然后编写实现代码,确保实现通过所有测试用例。测试驱动开发的副产品就是大量可用的自动化测试用例,这在以后的迭代中保证产品质量有重要的作用。
5. 敏捷开发每次迭代的交付都要是一个可用的完整程序,可能不完善,但是绝对不是每次交付系统的一部分。敏捷开发一定是螺旋式,如果你是瀑布式的开发,那么就一定不是敏捷。最佳的迭代周期是2--4周。注意,迭代不是分步开发。迭代的前提是需要可拆分,具备快速验证版本质量的手段。传统意义上的功能拆分时白盒的,而用户故事或用例是黑盒的。
6. 特性团队是指一个长期的跨功能的团队,一个一个交付许多端到端的客户特性。这样一个团队的分工不是那么明确,每个人都可以有好几种角色,极大提高了组员的水平,也保持团队的相对稳定性。
7. 传统软件企业向敏捷转变的建议。首先应该明白,敏捷的实施是一个长期的过程,不会立竿见影,有研究表明大概4年以后才会逐渐显出效果。其次,传统软件企业都是流水线的工作,由需求分析部、设计部、开发部、测试部等多个部门组成,因此要分步实施。第一步,需求分析部门可以通过用例和用户故事描述客户需求,开发部门实行测试驱动开发和持续集成;第二步,设计部门实行敏捷建模,同时开发部门和测试部门实行开发编码迭代;第三步,开发全过程迭代;最后,企业实现按照特性团队来组织。
软件调试--张银奎《如何调试应用程序崩溃和挂死》
调试在我的工作中也经常用到,无论是使用GDB调试Linux下的C程序,还是用Eclipse远程调试Web程序,又或是使用FireBug调试客户端的JavaScript。调试不仅能帮助我快速定位错误的位置,找到修复Bug的方法,更有助于程序的运行机制。
虽然张银奎老师的讲解内容是针对我并不是熟悉的Windows应用程序的,但是他的讲解还是给我留下深刻的印象,获益匪浅。他那句独特“上调试器”至今在耳边回响,回味无穷。
调试关键的几点:1. 善于使用调试器。在讲解中,张老师使用了windebug作为默认的调试器。当然针对不同情况要选择合适的调试器,工欲善其事,必先利其器。2. 善于使用栈回溯,找到错误发生的准确位置。3. 调试需要耐心和技巧。
移动开发新视野
移动开发主要划分了Android和IPhone两个大主题,其中Android的专场又包含了移动的OMS即OPhone。由于前几天看书才得到一个“教训”,开发IPhone程序首先需要一个Mac Book,这个至少暂时无法实现了,所以就放弃了IPhone。Android的演讲中更是集中了高焕堂、卢育圣等著名的前辈。
最先开场的卢育圣 老师主要是和大家分享了他在Android Market取得成功的开发心得。这里借用他的outline,大概是:
1. 前期市场调查和分析。他给出了令人很意外的数字,无论是AppMarket还是Android Market,应用和游戏的比例分别为80%和20%,而之前大家都以为是游戏的比例要高些。
2. 品牌经营的理念。很遗憾没有听到。
3. 善用定价策略。首先使用免费版聚集人气,要低价和高价相互使用。其次,还要看竞争对手以及程序可以给用户提供的价值。他给出数
据显示,排名靠前的定价范围大概是$0.99 -- $3.99之间。
4. 创意要独特。在开发移动应用时,一定要站在移动设备的角度去考虑问题,而不是简单的把PC上的应用照搬到Mobile上。他提出了一个GIGI原则,即GSM、Internet、GPS和Intelligent(各种Sensor)。
5. 功能简单易用。重要的是UI要具有移动特性。
关于如何提升自己的排名时,卢育圣老师给了一点小窍门。数据显示Android Market娱乐和工具的潜在客户数量最大,因此首先可以将应用放在这里1--2周,然后再移动到专门的类别下面。
下午最精彩的就是高焕堂老师关于《Android框架、核心服务与软硬整合技术》 的演讲。
虽然标题是关于Android的,但是通篇演讲都是围绕软硬结合的开发架构的。他提倡的最核心的概念就是架构,我们一定要有架构的思想去设计软件。在好莱坞有句名言“Don't call me, I will call you back.” 这句话形象的说明了架构的重要性。什么叫做事件驱动机制,那是架构定义好了的东西,你必须按照那样的方式去写代码,否则就编译不同。可是现在Android已经开源,硬件也已经开放,我们要转变思路。
长久以来,我们用横向的眼光只看到Application,没有看到底层。如今我们要用纵向的眼光看待软件,一看到底,直到硬件。因此程序
我们要用架构的思想,来做软件,把软件做到底层。让别人按照咱们制定的规范来使用我们的架构。
在讲过自己的思想之后,高焕堂老师有一个实际的示例,逐步展示了如何编写具有架构意义的软件代码。始终遵循的原则就是“不要让别人来调用你!”
我这里能记下的只是微乎其微的一部分,还有很多精彩的演讲如蔡学镛的《DSL的设计和实践》和岳旭强的《构建基于Java的大规模C2C网站》,即使提到几个演讲也是能表达出精彩内容一小部分。
这三天的活动还是很值得的!