看待代码的两个角度
产品从需求到上线,需要经历开发、测试等阶段,对产品的想象和规划最终会落实成代码,之后的迭代也是在之前代码的基础上迭代。看待代码除了从用户使用产品的角度外,还有另一个角度,开发者的角度。
如图,用户感知到的是产品的功能、使用的体验、产品的性能等,而开发感知到的是代码的可读性、可维护性、可扩展性这些。
产品迭代与代码质量
互联网时代的竞争从最初的争夺流量到现在的精细化运营,人口红利过后,对产品本身的优化变得至关重要。这和我们产品的发展一样,从最初的从0到1,实现产品基本功能,去抢占市场,到之后的不断优化产品、持续迭代。从用户角度感知到的是产品功能越来越完善、体验越来越好,流畅度也越来越高,而从开发角度就是代码的不断迭代。
随着产品的发展,代码本身需要不断的迭代,新增功能或者对之前功能的优化,这些都是基于之前代码的,所以迭代成本与代码质量关系很大。因此,我们会对代码制定一些规范、设计更松散耦合、易于扩展的架构。如果对代码质量没要求的话,就如同负重前行,难维护的代码越积越多,最终会导致需要整个的推倒重写。
预见到将来的问题,为了避免后期的不必要的重构、重写,在产品的初期、前期,在问题没那么尖锐、包袱没那么重的时候就要开始防患于未然了。虽然我们现在处在产品的基础版本实现的阶段,业务是最最重要的,但是分一些精力去保证代码质量也是有意义的。
对代码质量要求高低与产品是不是需要长期迭代有关系。很多sass类产品的公司都会有code reivew环节,技术方案的评审也会比较严格,因为产品需要不断迭代,代码也就需要长期维护,代码质量对效率有着很大影响。而一些外包公司,因为代码是一次性的开发,不需要后期维护,质量怎么也就不回去关心了,我们开发的一些活动页也是一样。
总结
产品的实现需要落实成代码,产品功能完善的过程也就是代码不断迭代的过程。
看待代码可以从用户角度和开发者角度。用户角度关心的是产品的功能、体验、运行的性能等,而从开发者角度则更加关注代码本身,包括代码的可读性、可维护性、可扩展性等,具体一点就是代码的冗余率、代码组织结构、命名规范、模块耦合度等。
随着产品的不断迭代,代码质量会变得越重要,如果开始架构有问题或者代码的实现上有问题,会给之后的迭代埋下隐患,最终可能导致需要重构或重写。为了避免之后的问题,在开发的初期,除了快速的实现产品功能外,也要对代码本身投入一些精力。当然,不同的产品对代码质量的要求也不一样,不需要迭代的代码,问题没那么突出。
我们的产品是需要不断迭代的,虽然我们还在产品的初期,业务是最主要的驱动力,但对代码本身的优化也是要投入一些精力的。