软件的人性

    大家都知道,软件是程序员设计出来的,算法是软件的核心,算法决定了软件行为方式。传统的软件可以通过测试,来预先判断软件是否按照所描述的算法正确的执行,算法是否合理。

    程序都是由程序员设计的。软件的许多细节是由程序员设计时决定的,程序员在设计过程中也可能使软件的某些行为出现偏差。总而言之,软件的许多特征和程序员的性格,兴趣爱好,喜好,世界观,人生观相关。

      关于这个问题,有一个康威定律,它的大致含有是软件的架构和开发组织内部的沟通方式类似。那么,还有那些特征和编写软件的人有关呢?我开始对这个问题产生了兴趣。软件会含有设计师更多的人性特征。

比如,如果程序员是一个简约主义者,那么他设计的用户界面就会是简约风格的。

       当软件面临危机的时候,是采取利己主义的处理方式,还是见义勇为的方式?比如,程序员面临了妈妈和女朋友同时掉进河里先救谁的问题时,编写的软件显然会融入他的选择方式。我一直在想,假如我来设计自动驾驶汽车的算法时,如果面临另一辆迎面开来的飞驰汽车,程序该怎样编写程序呢?人驾驶汽车的时候,主要是人们本能的反应。大多数会采取利己主义的方式处理,个别英雄也许会将个人的安危置之度外。当自动驾驶汽车时,面对危机的本能反应变成了冷静的程序员决定的事情,这就两难了。编写自动驾驶汽车软件面临更加极端地问题是,当刹车失灵的时候,前方一边是4个孩子,一边是4个成年人,汽车该冲向何方?还是选择孩子和成人中间的方向冲去?如果这样棘手的问题,交给一个程序员来决定,视乎并不合适。

同样的问题有许多,比如,同一个大数据技术,善良的人会用来为客户提供更贴心的服务,而居心不良的人会用来杀熟,斩客。

    所以说, 软件的算法中或多或少地融入了程序员的善恶,那么,当使用者选择购买自动驾驶车辆的时候,又该做出什么样的选择呢?

软件研发团队

      既然开发者对软件产品的影响如此之大,软件研发团队的建设就非常重要。要将团队看做一个超人(superman)来看待,这个超人的性格,情怀,能力会给未来的产品产生重大的影响。至少在下面几个方面:

1 团队成员的人格,道德和品味

2 团队的知识结构

   团队要具有互补的知识结构。

  不要轻易地引入其它成员不熟悉的技术。程序员往往比较随性,喜欢使用一些新技术,但是如果某一个人擅自使用某些新的技术,架构和库,也许会增加团队沟通方面的困难。

  人工智能时代的软件

      我们已经进入了人工智能,大数据的时代。未来AI技术也许会彻底地改变计算机软件设计的方式。软件的行为既与编写原始程序的程序员有关,也和后期的大数据训练相关。即便我们编写了一个善良的软件,符合人之初,性本善的原则,但是在后天的数据训练过程中,如果给与大量邪恶的数据,可能就会渐渐地“性相近,习相远”,最后变成了一个大恶魔。如果真的是这样的话,我们该如何购买软件呢?既要看这个软件是谁写的,还要看是谁训练出来的软件?能否在原始的软件中融入“善良的基因”呢?

  也许在将来,人们会像养宠物那样来领养软件,然后慢慢培养它的性格和做事方式。免得购买一个“坏人教育的孩子”。

这些内容足以写一本有意思的书。有人感兴趣一起来写吗?

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值