普通用户看来,程序就是他们能看到的用户界面,比如电脑里面装的软件,手机上装的app,浏览器能打开的网页。但是,这只是一个程序的一小部分。

程序最重要的是数据,用户感知最强的是ui,在数据和ui之间,还有一些必不可少的步骤,比如对数据提取,加工,运算。

个人认为程序的本质是数据,程序的灵魂是对数据的提取,加工和运算,或者直接叫做算法。程序对用户最直观的感受在于交互,交互最直观的就是界面风格和数据展示方式。

我们看一个界面它的整体布局,整体色调,不看任何它能做的事情,这时候其实我们对这个程序已经有了一个初步的印象,甚至很多时候已经决定了要不要尝试一下这个程序能做什么。界面风格对于新用户来说非常的重要。

数据展示方式,类似不同手机UI能做的事情都差不多,但是有的手机ui好用,有的手机ui难用,这就是数据展示方式不一样导致的,展示方式决定了使用方式,也决定好不好用。数据展示方式和用户的习惯有很大的关系,老版本的展示方式,同类产品的展示方式,还有人的思维方式,生理结构都有关系。

界面风格一般和ui设计有很大的关系,数据展示方式和产品经理设计有很大关系,然后由前端开发人员把处理过的数据按照指定展示方式填充到界面上。

数据和算法一般都由后端程序员根据需求来实现。复杂的程序里面应该有架构师对程序的算法,数据结构,部署方式,硬件等做相应规划。

算法作为一个程序的灵魂,后端对数据的加工统称算法,他们决定着这个程序数据是否可靠,决定着这个程序是否能够高效的支撑更多用户行为。同样的功能,同样的硬件成本,不同的实现能让用户负载量相差数个数量级。

ui交互作为一个程序的门面,能让用户最直观的感受到这个程序好不好用。产品经理对于一个程序的ui交互有着致命的影响。另外一个对用户影响比较大的是程序的内容,这一方面取决于产品经理对功能的设计,一方面取决于原始需求,另外一方面是后期运营。

用户很多时候是不太关心软件灵魂的,除非这个灵魂已经影响到用户的使用,界面交互加上合适的内容才是最直接影响用户要不要使用这个程序的最主要因素。

很多产品经理都是滥竽充数,完全不懂软件设计,不考虑数据闭环,不考虑用户需求,不考虑交互合理,需求也是前后矛盾,产品经理是软件开发中门槛最低的职位,也是上限最高的职位。

很多后端程序员,写的一坨垃圾代码,不考虑程序执行效率,不考虑数据一致性,不考虑数据安全,不考虑前后影响,只求完成功能,我觉得这样的人更适合做前端。