1

漫谈互联网产品开发

 2 years ago
source link: https://limboy.me/posts/web-product-develop/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

漫谈互联网产品开发

2011-05-08

每个公司都有自己的产品开发规范,我自己也大概想了下,比较适合小团队。

借鉴 Unix 的设计哲学:一个工具只做好一件事,并提供接口。放到产品开发就是:产品可以被划分成多个模块,每个模块都有相应的 API。这样就能做到分工明确和解耦。

web / mobile / app ...

user / article / comment / ...

基础服务层

db / queue / memcache / ...

如果使用 GAE 的话,就不用花心思去构建基础服务层了。这样就只剩下表现层和 API 层。

每个人都要负责产品的一部分,有两种构建方式:水平构建和垂直构建

假如我负责用户系统,则所有与用户相关的事情都由我来完成,从前端到后端,包括 API,页面展示,互动等等。这样做的话,对开发人员的要求比较高,需要同时对前后台都比较熟悉。但能减少沟通成本,提高开发效率。假如用户系统出现了一个 bug,我就能很快地修复,因为我最熟悉,且所有与用户相关的都由我负责。

这也是大部分公司采用的方法,把开发人员分为前端/后端等等。前端的任务就是负责页面的展示和交互,后端开发人员负责 API 的构建,可能还会有专门的 DBA。这样做的好处是可以发挥每个人的特长。但也有不少问题,比如用户系统出现了一个 bug,前端相信自己的程序没有问题,就会把问题推给后端,后端查看了一遍也觉得没问题,可能又会把问题推回去。这样一来二去,不仅浪费时间,影响效率,还会破坏团队的氛围。

假如又有了一项新任务,是开发一个评论系统,前端可能 1 天就把页面做完了,然后就干别的事去了,结果后端花了 4 天才把 API 搞定。然后前端又要从别的地方把心收回来,阅读 API 文档,再整合,又耽搁了不少时间。这就有点不够敏捷了。

我推荐使用 Basecamp+Campfire+github。Basecamp 用来管理项目;Campfire 是团队讨论的地方(已与 Basecamp 集成),可以开设多个版块;github 用来管理源码。

一个高效的开发者最不能接受的就是被打断,我好不容易进入了状态,结果被迫去跟你讨论一个不太重要的问题,这简直是谋杀,所以开发项目时最好把 IM 关掉,或者设置成离开状态。

dropbox 可以作为辅助工具,用来在团队内部共享资料。

github 的开发流程,可以参考此文

  • frontController 要尽可能的薄,通常只需负责渲染页面
  • 使用hmvc将各个页面模块组合成一个页面
  • 可以使用内部 REST 的方式来合并多个 REST 请求
  • API 层可以模拟 http 的 403 状态码来减少数据传输

暂时就想到这些了,实际情况肯定要复杂地多。有哪些地方可以改进,或者根本就不现实,欢迎指出 :)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK