从关注技术到关注人
软件开发界一向关注技术,直到苹果以其精湛的科技产品设计征服世人, 始知做产品最终是为人而服务。
传统软件开发注重功能的实现, 只要能够提供功能, 不管是否好用, 客户爱用不用; 现代软件开发则更加注重人本设计, 力图创造对用户友好的交互。
由此, 在技术人员面试中,也应该增加一个环节: 考察面试者对人类社会的理解。 如果一个人沉迷于技术, 不懂得如何运用技术为人类服务, 那么, 这样的人很可能会制造“技术壁垒”, 即使不这样, 也很难保证其开发的软件真正好用。
从另一个角度来说, 开发者周末应该多出去走走, 了解人们的观念和需求, 这样, 才能设计出更好的软件和应用。
我的软件开发方法
通过阅读不少软件开发书籍, 结合自己的实践, 谈谈自己的开发经验。最有效率的开发方法必然不是遵照某种方法论搬出来的, 而是借鉴、汲取、融合, 最终自成一套适合自己的体系。
1. 搭建原型与骨架。 首先, 要搭建系统的原型与骨架, 这阶段可以使用静态数据, 最重要的是使整体跑起来, 有一个基本的DEMO; 此外, 需要评估是否有技术难点。 比如要绘制大量图表, 并且需要一些交互效果, 就需要先做出一个简易的绘图框架, 简化后续绘制图表的难度; 有大量并发HTTP调用, 需要加固线程池设施。
2. 数据流打通。 在搭建起原型和骨架之后, 可以逐步使用动态获取的数据替代静态数据, 将数据流打通, 使之更贴近实际;
3. 小步重构和改进。 在编写代码的时候小步重构和改进, 有利于提高开发效率。 比如说, 你写第一个 AJAX 花费了10分钟, 那么, 写第二个AJAX调用有两种选择: A. 直接写, 大约也花个10分钟左右; B. 重构, 将 AJAX 调用的基础部分抽离出来做成公共函数并加强完善, 然后再写第二个 AJAX 调用, 重构所用的时间可能是15分钟, 但编写后续所有的 AJAX 调用可能只花费1分钟, 由此, 你可以看到重构带来的效率提升!
4. First make it right, then make it good. 首先不要立即追求最优化, 而 是追求正确, 这一方面也是为了不因为一个局部问题而影响项目全局开发时间, 另一方面, 当有了基本方案之后, 就会去思考如何更好地去实现它。
5. 绝不在精神疲乏的时候写程序。 还有不少人提倡熬夜通宵, 实际上是得不偿失。 既损害了身体素质, 又没有带来实际的益处。 仔细测试一下, 深夜里写的程序, 真的很“清醒”吗? 当已经处于“强弩之末”, 写出的程序真的解决问题了吗? 当精神已经处于衰退时期, 最好的作法是休息停顿一下, 看一看轻松的书籍, 使大脑神经松弛一下, 而不是继续勉强自己工作。
6. 更多关注开发设计技能而不是工具技能。 找到一款好的IDE, 掌握纯熟, 至多提高 10%的开发效率, 但也改变不了写重复代码的命运; 只有真正提高自己的开发设计技能, 思考问题的深度和广度, 找到更优雅的解决方案, 才能真正提升效率和质量。
架构是什么