文章 关于我 RSS 订阅 邮件订阅 Email

18 Mar 2018
从零设计软件

程序的设计是一个明确的步骤 - 代码大全

从零设计软件,对程序员来说似乎不应该是件难事,毕竟程序员的工作就是设计软件并写代码去实现。

但随着项目规模变得庞大,架构师、产品经理、设计师等角色加入了软件设计的流程,这些角色以自己的专业技能聚焦某一项的设计工作。软件设计被拆分为多个流程,这对于项目来说当然是好事,更多的专业性会让产品的某些特性更加出色。但设计工作的划分难免会使部分设计者一叶障目,难以从全局来观察项目,尤其是刚步入工作的人。

很多人说自己喜欢编程喜欢写代码,但“写代码”这个词非常容易误解,编程 = 设计 + 写代码,而不仅仅是写代码。

随着程序员的成长,应该逐渐把编程的重点放在设计,如:接口、API、算法、模块划分、架构等。并更进一步了解软件的整体设计,而不仅仅是编程这一环节,了解软件的整体设计会让你分清优先级,知道什么该做、什么是多余的,下一步该做什么,软件的哪些目标达到了、哪些没有。这些意识对于提高效率至关重要。掌握这些意识,也就是有了大局观。

如果是自己做过一款产品(Side Project),会对软件整体的设计有更好的把握。很多程序员做 Side Project 时的误区是会从代码开始,冒出新想法时就不断的堆砌代码,从而导致越来越复杂,最终放弃。

这种误区是程序员在工作中养成了习惯自底向上的解决问题,而没有掌握大局,自上向下的分析问题。

从零设计软件,需要自上向下的思考,先把键盘丢开,拿起笔和纸,思考下面问题的答案:

1. 软件的目标是什么?

这个问题很简单,却直指核心。可以认为整个软件就是对这个问题的答案。

如果对这个问题没有明确答案,则需要对你的模糊想法进行大量的 Research,直到了解相关领域,得出了更明确的答案。

2. 设计软件原型(MVP)

能达到目的的最简设计。用简单的语言和草稿图来描述。

3. 细化业务逻辑、流程

根据上面的设计稿罗列功能点,用户使用软件的交互过程,流程等。

4. 划分模块组件

根据功能点来设想需要哪些程序组件、模块。

5. 制定模块接口

对上一步中的组件、模块制定详细的接口。

6. 写代码

最终实现的步骤。

经过这几个步骤,我们进行了自上向下的思考,完成了从零设计软件。

最近开始了新的 Side Project (代号: Alchemist)。思考了从零设计软件的过程,并总结成本文。欢迎评论和喷。 另外推荐下 Indie Hackers,一个国外的 Side Project 交流社区。


Til next time,
JJY 2018.03.18

文章 关于我 RSS 订阅 邮件订阅 Email