周五下班后的晚上, 我倚靠在地铁扶手边划拉着手机, 点开极客时间,发现徐昊老师正在直播, 起了兴趣赶紧就点开看看,直播的主题是<程序员如何提高效率—做一个全流的程序员而不是全栈程序员>. 在断断续续的网络连接中,我在路上听完了直播, 回到家中意犹未尽又在B站上搜索相关的内容来看, 当然了基本上都是徐昊老师讲的,这次感觉又打开了新的认知.
比起解决问题,定义问题带来的效率提高是可怕的, 正是对于定义问题的执著,那些像Martin Fowler,徐昊这些大师才获得了长久的职业生涯. 那我们回到本文的出发点, 软件开发是一个什么样的活动? 具体来说: 软件开发是更像是工厂里制造一件东西时的制造过程, 还是更像一群作家合伙共同写一本小说的过程. 在听这次直播之前, 我对于这个问题是没有深入地去思考过的, 从心底里当然更倾向于自己是个像作家样更酷些的角色,然而却找不出合适的论据去佐证它.
徐昊老师首先对软件开发做了自己的定义,即软件开发是一个知识消费的过程. 什么是知识消费的过程呢,就是说写软件的时候是没有任何的价值, 只有将自己有的知识思考被合作方正确的理解应用的时候,你写的”东西”从开始真正的起了作用.
现在大部分的商业软件开发,有两个现象基本是必须,一是角色的划分,像常见的角色有前端,后端,产品,BA. 二是职级的划分,像团队的leader,部门的leader. 这种分工的形式最早在亚当斯密的<国富论>中就论述过, 分工的出现导致了知识壁垒的产生, 而因为有了知识壁垒的存在,在人们进行交易时就提高了效率. 套用生活中的例子来说,你买个奶茶,你不需要知道奶是怎么来的,奶茶是怎么调配成的,你只需要付钱就可以获得一杯奶茶,分工的存在极大的提高的社会的效率.
前文我们说过,软件开发是一个知识消费的过程, 和买奶茶的例子不同, 为了提高效率,我们非但不应该让团队之间的知识壁垒提高, 反倒是应该让其越低越好, 因为知识壁垒越低, 团队成员之间沟通会变得更加方便, 因此知识会被更快的消化, 团队的效率也会越来越高.
正是对于定义问题的改变,才使得效率的提高方式带来了颠覆性的改变. 因此了解软件开发的全流程也就不是一个可有可无的事情了, 而是成为一名高手的必经之路.
- 本文作者: DieselNiu
- 本文链接: http://niuweizhe.cn/2022/01/23/软件开发到底是一个什么性质的活动/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!