外界对程序员的印象就是坐在电脑前面写程序。甚至有人问过我“真的有那么多程序要写吗”这样的话。
总体来说,大多数做程序员的都是帮着公司开发一个产品。这个产品按平台分的话可以是一个网站,可以是一个手机APP,可以是传统的桌面程序,也可以是嵌入式系统的软件部分等等等等。但不管是什么,所有产品开发都要经过以下主要流程:
产品设计 -> 技术构架 -> 进度计划 -> 产品开发 -> 产品测试 -> 运行与维护
而程序员,特别是经验丰富的程序员几乎会参与到每一个步骤中。所以很多程序员既要会写文档会画流程图,还要会和客户打交道。
1
产品设计
根据市场或者特定客户确定这个产品应该满足哪些需求,然后转化为一个明确的需求文档。有了这个文档,程序员才知道要开发什么,怎么样才算开发完成,交付检测的时候也才有依据。
虽然编写需求文档不是程序员的工作,但是资深的程序员在这个过程中要给出很多建议,特别是在开发复杂度上。
有些开发难度太大、用时需要很久的功能和需求会被去掉。毫无疑问,开发复杂度精确的估算对于在最短时间内交付一个拥有最佳用户体验的产品至关重要,而这些是需要丰富经验积累的。
所以程序员收入包括了这部分经验值的钱。
2
技术架构
接下来就要根据需求文档设计整个系统。简单来说就是根据产品特性,选择合适的技术解决方案。