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

简介: 软件三重门:业务功能,业务性能,业务智能。这是我在看的《码农》第二期里酷壳博主陈皓说的。原文如下: 我在“软件开发‘三重门’”里说过,第一重门是业务功能,在这重门里,的确是会编程就可以了;第二重门是业务性能,在这一重门里,技术的基础就很管用了,比如操作系统的文件管理、进程调度、内存管理,网络的七层模型,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,也都拿起来吧?

目录
相关文章
|
传感器 数据可视化
LC串联谐振拓扑仿真建模
该文介绍了直流高压电源的应用领域,如高端分析仪器、静电应用等,并重点讲解了其中常用的LC串联谐振拓扑。文章详细阐述了电路设计过程,包括变压器变比、谐振频率等参数的计算,以及如何使用Simulink搭建和仿真电路模型,通过开环和闭环调试验证了输出电压的可控性。
266 4
|
存储 弹性计算 关系型数据库
阿里云服务器ESSD云盘性能等级PL0、PL1、PL2、PL3区别,云盘性能级别PL知识点参考
在我们选择阿里云服务器系统盘和数据盘时,如果是选择ESSD云盘,还需要选择云盘的云盘性能级别PL,PL性能级别有PL3、PL2、PL1、PL0四个性能级别的云盘规格,如果是通过阿里云的活动来购买云服务器的话,由于系统盘默认一般为20G或40G容量,可选的PL性能级别通常只有PL0(单盘IOPS性能上限1万)和PL1(单盘IOPS性能上限5万)可选择,有的用户肯能并不清楚ESSD云盘的性能等级之间有何区别,单盘IOPS性能指的是什么,本文为大家介绍一下ESSD云盘的云盘性能级别PL3、PL2、PL1、PL0相关知识点。
阿里云服务器ESSD云盘性能等级PL0、PL1、PL2、PL3区别,云盘性能级别PL知识点参考
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
861 138
|
8月前
|
人工智能 自然语言处理 Serverless
AI 大模型+智能客服:自动识别客户意图,实现高效沟通
本方案旨在介绍如何部署 AI 大模型实现对客户对话的自动化分析,支持多人、多语言识别,精准识别客户意图、评估服务互动质量,实现数据驱动决策。
903 14
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
392 10
|
Java
Error:java: 无效的目标发行版: 11解决方案
Error:java: 无效的目标发行版: 11解决方案
605 0
|
网络协议
Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
632 0
|
缓存 NoSQL 关系型数据库
Redis与MySQL的数据情感:延迟双删的秘密揭示
Redis与MySQL的数据情感:延迟双删的秘密揭示
1130 0
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用合集之官方的调优文档在哪里看
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
存储 SQL 负载均衡
【PostgreSQL架构】PostgreSQL的最佳群集高可用性方案
【PostgreSQL架构】PostgreSQL的最佳群集高可用性方案