编程开发观点杂谈(3)

时间:2021-10-09 23:25:23


      从关注技术到关注人

      软件开发界一向关注技术,直到苹果以其精湛的科技产品设计征服世人, 始知做产品最终是为人而服务。

      传统软件开发注重功能的实现, 只要能够提供功能, 不管是否好用, 客户爱用不用; 现代软件开发则更加注重人本设计, 力图创造对用户友好的交互。

      由此, 在技术人员面试中,也应该增加一个环节: 考察面试者对人类社会的理解。 如果一个人沉迷于技术, 不懂得如何运用技术为人类服务, 那么, 这样的人很可能会制造“技术壁垒”, 即使不这样, 也很难保证其开发的软件真正好用。

      从另一个角度来说, 开发者周末应该多出去走走, 了解人们的观念和需求, 这样, 才能设计出更好的软件和应用。


        我的软件开发方法

        通过阅读不少软件开发书籍, 结合自己的实践, 谈谈自己的开发经验。最有效率的开发方法必然不是遵照某种方法论搬出来的, 而是借鉴、汲取、融合, 最终自成一套适合自己的体系。

       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%的开发效率, 但也改变不了写重复代码的命运; 只有真正提高自己的开发设计技能, 思考问题的深度和广度, 找到更优雅的解决方案, 才能真正提升效率和质量。


       架构是什么   

       不需要急于给架构下一个定义或结论,先从多维度描述架构反而对实际工作更有益。
       架构对开发和客户的意义最密切。
          对开发而言,架构意味着:
                1.  一个合理的整体结构和一个稳固的基础设施。可以专注于业务逻辑而不为基础功能而分心;
                2.  便于扩展,  灵活性恰到好处。
          对客户而言,架构意味着:
                1.  使确信能够满足其重要的关注点;
                2.   可以在指定工期按时完成项目。

         如何提高架构设计能力? 
          1. 学习架构设计的基本技能和思想;
          2. 从优秀软件中汲取优秀的做法;
          3. 多思考,大胆实践。

          服务端主要是服务与功能的整体规划,
          前端主要是展示与交互的整体规划。