软件三重门——业务功能,业务性能及业务智能

简介: 软件三重门:业务功能,业务性能,业务智能。这是我在看的《码农》第二期里酷壳博主陈皓说的。原文如下: 我在“软件开发‘三重门’”里说过,第一重门是业务功能,在这重门里,的确是会编程就可以了;第二重门是业务性能,在这一重门里,技术的基础就很管用了,比如操作系统的文件管理、进程调度、内存管理,网络的七层模型,TCP/UDP的协议,语言用法、编译和烦请库的实现,数据结构,算法等等就非常关键了;第三重门是业务智能,在这一重门里,你会发现很多东西都很学院派了,比如搜索算法、推荐算法、预测、统计、机器学习、图像识别、分布式架构和算法,等等,你需要读很多计算机学院派的论文。

软件三重门:业务功能,业务性能,业务智能。这是我在看的《码农》第二期里酷壳博主陈皓说的。原文如下:


我在“软件开发‘三重门’”里说过,第一重门是业务功能,在这重门里,的确是会编程就可以了;第二重门是业务性能,在这一重门里,技术的基础就很管用了,比如操作系统的文件管理、进程调度、内存管理,网络的七层模型,TCP/UDP的协议,语言用法、编译和烦请库的实现,数据结构,算法等等就非常关键了;第三重门是业务智能,在这一重门里,你会发现很多东西都很学院派了,比如搜索算法、推荐算法、预测、统计、机器学习、图像识别、分布式架构和算法,等等,你需要读很多计算机学院派的论文。


这段话让我感触很深。

从大三开始,学习Android 开发,小打小闹了一年半,而后实习及第一份正式工作共一年里,做的不是Android 应用开发,自然也把应用开发的学习停了近一年。到第二份工作,才继续了老本行。


在大四开始,折腾过所谓“开发框架”的东西,拿了学校的优秀论文但项目却在工作半年后自己对其宣布死亡。尽管这几个月里,在README上写着停止维护的时候,还有几个人fork了。但项目中自己挖的坑太多,没有精力去补,而在国情中许多用github的人都把fork当star来用。无力维护时,也只好考虑停止它了。

另外,就是自己的想法的改变。以前很热衷于去做一个东西,把常用的功能给包含进来,以后自己开发项目的时候就能直接拿来用了,不用引一大堆jar包。但这一份工作一年以来,自己的想法也正在改变,我发现自己越来越需要的,不是一个仅仅能完成功能的东西,而是对所需要的功能,能够灵活调用满足各种蛋疼需求且稳定使用的东西。这样下来,自己以前去折腾的所谓“开发框架”自然就不在此列了。自己开发的东西,自己都在减少使用了,那还有多少存在的意义呢。

还有第三个原因,就是开发工具的改变导致的工作方式的变化。从Eclipse到Android Studio。从以前需要手动下载一个一个的jar包复制进去,到现在只需要声明一个依赖。于是,我所想要的就再也不是一个把所有所谓主流功能都涵盖但是用起来总有各种限制的“框架”了,而是,我需要哪一种功能,我就添加哪一个功能的类库。添加类库并不麻烦,一行代码就可以。

而这种想法的改变,也是我去写一些很小众的类库的开始。比如,我会去写可以只通过xml就来定义drawableTop, drawableBottom, drawableLeft 或 drawableRight的宽高的控件。原本需要用一个ImageView和一个TextView的布局代码,就可以只用一个我自定义的继承自TextView的一个控件来实现,这样在布局文件中我就能省下很多代码。


而在做应用开发的过程中,从所需要的各种功能都能独立开发完成之后,有时会在项目完成时打开过去的代码,看来一坨坨乱糟糟的代码,深呼吸一口气,然后去优化,调整,重构,直到自己在那一刻感到满意。而过段时间,有了更深的理解之后,又继续优化,调整,重构。我想,这也是这一年来我在不断进步的表现。


在这个时候,我应该是属于能熟练完成各种非高难度开发的工作了。也在这个时候,开始关注程序的优化和优美的代码。当然以前也关注程序性能,但也无非是java层面的一些东西。而现在写代码时,会更经常地想包结构,各种dimen,color,string等等资源的命名。然后就是怎样更好地使用style。

style这个东西我对它又爱又恨。它像java的类一样可以进行继承,但是也差点把我埋进了深坑。改着接手过来的一个项目的界面,对于原来的style我都不敢去动,各种继承,改一下某个style,也许许多我所没有看到的界面就都改了。只好自己去定义一些style。当然吃了这亏,我也一边在想怎么使用,才能更好地使用而不至于滥用。实现了界面之后,这三天时间去调整及优化项目的所有layout代码,style, color以及drawable等等。小心翼翼地改着界面,改完之后再打开开发者模式的显示布局边界,看着那优美对称的布局,心情才舒适起来。


然后,再打开开发者选项的显示过度绘制的选项,回到程序。看着屏幕上淡红和深红的区域已经远少于以前了,也在心里得意了一把。腾讯的QQ就比较注意这个问题的,比如它的默认的聊天界面背景,并没有过度绘制的问题,哪怕连一层蓝色也没有。所以应该是直接对Activity设置的,而不是设了下面某一层layout的背景。

过度绘制也是我最近开始关注的问题。原来的项目,由于style的混乱,而导致在实际的布局xml中,许多元素不得不重写背景属性,最后就是打开显示过度绘制的选项后,满满的浅红色到深红色。这是渲染上的性能。从计算上的性能延伸到渲染上的性能,我想我在这第二重门当中,也迈了较大的一步了。


而另一方面,我又开始考虑了一个新的功能。我发现,我似乎对业务智能也有一点兴趣。以后的我,是不是还在Android应用开发的大军中, 会不会转型,甚至做服务端?因为在Android客户端开发中,我感觉,最多也就只能做到业务性能。业务智能,是需要大数据分析挖掘的,而这些是服务端进行支持的,客户端只是将服务端计算的结果表现出来,不知这样想是否正确?如果我追求业务智能,以后是不是会选择转型?这一年来,虽然在不断成长,但是还是有着各种不满意的,比如一直想学的C++, go, groovy,最终第一个完全没开始,第二个只开始了Hello World,第三个也是只看了一下语法甚至写不好超过100行的程序。或许当真正开始考虑转的时候,我会把它们,包括被我放掉的java web,也都拿起来吧?

目录
相关文章
|
25天前
|
存储 数据库
工单系统的作用与优势!为什么企业需要它?
**工单系统是管理任务和请求的软件,如ZohoDesk,能提升生产力、提供透明度、增强客户满意度、优化资源分配和促进协作。ZohoDesk工单系统特点包括直观界面、高度可定制、多渠道支持、强大集成能力和报告功能,适合不同规模的组织。**
49 1
|
3月前
|
弹性计算 人工智能 调度
弹性调度助力企业灵活应对业务变化,高效管理云上资源
本文主要介绍了弹性调企业灵活应对企业业务变化,并高效管理云上资源。
145086 119
|
6月前
|
算法 开发者
如何从写业务代码中跳出来,有效提升个人技术能力?
如何从写业务代码中跳出来,有效提升个人技术能力?
|
11月前
|
架构师 测试技术 定位技术
【业务架构】获得正确业务能力的 12 项必备措施
【业务架构】获得正确业务能力的 12 项必备措施
|
11月前
|
负载均衡 监控 架构师
【业务架构】LEANIX : 业务能力
【业务架构】LEANIX : 业务能力
|
11月前
|
传感器 人工智能 算法
关于技术、业务、产品的一点思考
关于技术、业务、产品的一点思考
159 0
|
数据采集 监控 Oracle
谈谈如何构建基于业务价值驱动的数据治理运营模式
成功的组织有各种各样的规模。这些公司的共同特点是,在优化业务流程执行的同时,通过最大化客户服务来挖掘其全部潜力。
谈谈如何构建基于业务价值驱动的数据治理运营模式
|
数据可视化 物联网 测试技术
评估企业扩展业务能力的新方法
评估企业扩展业务能力的新方法
362 0
|
运维 监控 Oracle
XX电网运维业务系统用户体验分析平台案例|华汇数据
能够从最终用户角度来评价业务系统运行质量和用户体验状况,促进IT运维质量不断提高。 通过对用户行为和体验障碍的监控,确保在用户报告之前知晓问题,并帮助运维人员快速确认、诊断和定位问题,加快问题解决速度,提升用户满意度。
396 0
XX电网运维业务系统用户体验分析平台案例|华汇数据
|
运维 供应链 监控
【上新】场景化能力包|业务系统流程协同
场景化能力包——业务系统流程协同
【上新】场景化能力包|业务系统流程协同