发布网友 发布时间:2022-04-22 09:57
共1个回答
热心网友 时间:2022-05-12 23:08
架构师是什么?
架构师这词其实很有意思,很多人的Title是这个,但其实我们对架构师都干什么并没有太统一的认识。往大了说,比尔盖茨当年好像也称自己为架构师,往小了说随便一个小的软件上做设计的也说自己是架构师。所以如果把这个词泛化而不局限于特定的场景,估计单是说清楚什么是架构师就要花费不少口水。下面我们用一个取巧的办法,在一个具体的场景下来看看,架构师都该干什么,而不把这个词泛化,如果在特定场景下这个角色应该干什么清楚了,那它就可以为其它场景下提供不错的参考。
我们只考虑从头开发一款产品的场景,不考虑这款产品可能是个家族,可能需要在公司里与许多东西配合这样繁琐的事情。这样问题就简化成:当我们要开发一款新产品的时候,架构师都要干些什么?为让事情更具体,我们进一步假设公司想做一个Trello,Worktile这样的协同办公工具。
在产品初期除了UI这类东西,还能明确的一些关键需求大概是这样:
简单、迅速,追求极致的用户体验,这时也许能想到看板这样的功能
打入社交元素(任务分配与沟通时打入信息流的机制)
移动端支持
公司判断:如果产品能在1年内上线,时机比较好
其他的需求呢就是感觉上肯定有,但暂时说不清楚
基于这样的简单提示,长做程序的可能脑子里会立刻冒出来无数东西,比如:
快的确保?
看板里拖动的实现?
SaaS时伸缩性的确保?
数据库中表的设计?
数据库类型的选择?
移动端的支持方式?
人员的现状?
迭代式开发的支持?
... ...
但显然不是每个事情都要在架构设计阶段搞定,否则等于是被弄蒙了,这时候架构师的一个关键职责就是要能区分出哪些东西预先需要搞定,而哪些东西则要在迭代过程中解决。
一般来讲重置成本越大,牵涉的人越多的事情越应该由架构师预先搞定,否则就容易做无用功,对开发工作产生致命伤害。具体来讲这类事情由三个核心部分组成:
选定Tech Stack
概要设计,确立分工的基础
协同方式
下面来分别解释下这三个方面的具体含义。
选定Tech Stack是指要选定包括编程语言,基本框架等一系列东西,比如Trello选完之后大致是下面这个样子:
http://www.csdn.net/article/2014-07-28/2820883