您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > Android

给Android开发者的几点启发性建议

时间:2019-11-28 11:45:15  来源:  作者:

作者:大飞哥

“垃圾的业务逻辑!!!” 估计很多程序员在刚接触一个新项目的业务代码的时候,都会在心里骂娘,说不准已经把前几任维护者的家人都给问候了一遍。

在我自己的职业生涯里面,也遇到过不少写得跟 “屎” 一样的业务代码,但业务代码,业务逻辑是一个程序员不可避免要接触的东西。

按 “二八原则”, 估计有80%的程序员是业务开发,而事实上,我觉得这个比例可能要到90%, 毕竟系统工程师,基础架构工程师,业务组件开发工程师等纯技术的岗位是很少的,当然这些 “纯” 技术岗位,也非完全不接触业务,只是上比例更少而已。

可以说,90%的程序员,职业生涯里80%的时间都是在跟业务打交道的,所以我们很有必要探讨一下这个话题。

技术服务于业务

纯技术驱动的公司,我觉得是不存在的,只不过有些公司的技术氛围会更好,技术人员的决策权会更大。

在目前的市场上, 产品+技术, 市场+技术 是比较正常的企业结构模式,至于技术人员在不同公司里面权重的大小,就要看具体情况了。

像腾讯是产品驱动的公司,阿里是电商,更多由市场驱动,一个是消费者市场,一个是商家市场;拼多多跟阿里类似,头条其实也是产品驱动的公司;美团由消费者市场驱动,小米卖的是产品,百度的搜索由消费者驱动,AI由企业市场驱动。

当然,这里不是说技术就只能从属于其它岗位了,目前很多企业对技术人员的重视度是越来越高的,而技术人员在实际工作中的决策权也在加大。我觉得这个跟技术的发展有关。

比如说,目前在市面上火爆的推荐型产品,如头条,抖音,技术在里面的决策比重就要比一般性产品的高。这个很好理解,因为产品形态本身就很依赖于技术,虽然产品的交互体验,UI 设计依然很重要,但最关键的还是你推荐出来的东西,用户有没有兴趣,而推荐这部分,就是技术驱动的。

还有一类是 AI型的产品,比如商汤科技,沐瞳科技这类,他们销售的是自身的AI能力,虽然还是市场主导,但技术在里面会有更多的决策权。

未来,我相信随着技术的发展,AI化的产品会越来越多,技术人员在里面的决策权也会越来越大。

另外,随着存量时代的到来,从增量市场进入到了存量市场。增量时代比拼的是快,存量市场比拼的是品质,这里的品质包括产品品质,也包括企业品质(高效的运作模式),这必然对技术提出更高的要求,技术人员在决策上的比重也自然会增加。

踩坑,阅读恶心的业务逻辑代码,是不是一件有价值的事情?

以上依然是不可避免的一件事情,在你实际面对那些恶心的业务逻辑代码的时候,你必定要吐槽一番,然后开始陷入深深的自我怀疑:"我这是在干什么?简直是在浪费时间!"

12年做存储的时候,我们遇到了一个问题,存储系统搞完了,却没有业务愿意接进来。

他们说,你的系统不稳定,而且性能也没有特别好(早期版本),为什么要接?

以上的反问,我也无可辩驳,但项目还是要向前推进,后来我们决定这些事情都由我们自己来搞。

于是我找了具体业务的负责人,跟他们说,我们来修改业务代码接入新的存储系统,中间过程如果出了问题,责任都算我们的。

第一批的业务,就靠这种方式推动起来了。

后面,我加入到业务团队后,第一接手的,是个核心但却恶心的业务系统,当时那个系统极不稳定,经常出问题,但上面下了死命令,你们就是要搞好,要不,你们团队就没有存在的价值!

于是噼噼啪啪,整了两个多月的时间,重构了很多的业务逻辑,才慢慢好起来。

我的实际经验是:踩坑,看恶心的代码本身,不会产生很大的价值,但是踩坑的过程中获得的经验,看恶心代码,修改恶心代码的过程中获得的负反馈,却极有价值。

它们虽然没有给你展示什么是好的,但是给你展示了什么是不好的,这过程中,你会慢慢明白,你应该怎么做,才不会重蹈前人的覆辙。

终日跟业务打交道,应该如何来提升自己

1、学会思考和总结

比如当 if else 写得太长的时候,是不是分析下判断条件的内在逻辑,有没有可能去构建一个状态机。

比如一段代码逻辑,当你写第二次的时候,是不是考虑抽成一个单独的函数,因为有第二次,就意味着会有第三次,第四次。

有不少同学觉得业务逻辑繁杂且没有技术含量,所以一直对业务逻辑有抵触的心理,但实际上,业务逻辑也不完全是无章可循,不可复用的。

如果你留心观察市面上的各类产品,各种App,你会发现,大家在功能上都会有很多的相同点。

比如,每个APP,几乎都会有这些功能:注册,登录,用户头像,昵称,用户资料管理。

有些APP会有消息聊天,有的APP会有论坛功能,有的APP会有内容推送,有的APP会有商城,会有支付。

总的来说,你可以认为To C 产品的业务逻辑是有限的( To B的业务丰富性会更高,但也是有限的),虽然具体的业务逻辑不同,但设计的关键点,其实是相同的。

比如说登录。一个产品的登录模块,一般会涉及:就近接入,IP重定向,加密设计,密码验证等。

比如说消息逻辑,消息逻辑的关键点一般是:消息的唯一性和顺序性。

类似论坛,内容推送,商城,支付,都一样,每个具体的业务都有其关键点,而且这些关键点几乎都有业内最佳实践,也有很高的经验可复用性。(代码不一定可以复用,但设计思路几乎都是相同的)。

所以这里一定要学会思考和总结,你的成长只能你做主,没人可以帮你!

2、不要只守着自己的一亩三分地

很多人做事,只守着自己一亩三分地,来一个需求,做一个需求,做完就不理了,不愿意进行更多的总结,也不愿意接触需求以外的代码和逻辑。

一个超过5人维护的系统,就可以认为是一个大系统了。这类系统,按一般比例,有 80% 的逻辑不是你维护的,所以这里就是关键了。有的人会去了解覆盖面更广的剩余的 80% 的逻辑,有的人就终日只守着自己那块。

所以最终,一定是更愿意了解全盘的人可以胜出,升职加薪,开始负责统筹整个项目

这个道理很浅显的,只是很多人或懒或不屑去做,但人跟人的差距,确实就是在这些额外的付出中拉开的。

围绕业务经验规划职业发展

我发现不少同学的职业规划有点问题,有些人是围绕新技术来规划自己的职业发展的,这显然有问题了。这么做的结果,就是终日在追新技术,终日焦虑,但却没有形成核心的竞争力。

我觉得业务的同学应该围绕业务技术经验来规划自身的发展。

其实大家日常接触的所有需求,延展开来看,都是跟一个具体的行业相关的。

比如做微信,QQ,是 To C 的产品,再细分是社交产品,业务技术经验是社交架构和海量服务。

头条,抖音,是推荐型产品,业务技术经验是推荐系统。

企业级应用,SaaS,是 To B 的产品,业务技术经验是企业级应用,比如如何在共性需求和个性需求之间进行取舍。

搜索,电商等都是如此。

以上的这些业务技术经验都是有很高技术经验壁垒的,一旦你积累起来,后面就是猎头来挖你了。

跟挖人的猎头接触的时候,他们喜欢问,你有没有做社交产品的经验,你有没有做过搜索系统,做过推荐系统,有没有做过企业级的应用等。

挖人的猎头,招聘的面试官,都希望能够找到有相关经验的从业者,而客观来说,行业经验的壁垒比技术栈的壁垒要高很多。

新的技术栈,你可能花几个月的时间,就可以掌握到一定程度了,但行业经验,却是要经年累月积累的。

所以,你在做职业规划的时候,一定要认真思考这个问题,自己所在的行业是什么,未来可选择的有哪些公司,自己应该注重积累哪些业务技术经验。

最后

技术服务于业务,这是客观存在的,不过随着技术的发展和存量时代的到来,技术人员的决策权会越来越大。

踩坑,阅读恶心的业务逻辑代码,是一件很有价值的事情,很多人不愿意做,但做的人,可以获得一份独到的经验,这个便是竞争的壁垒。

做业务的同学,平日要多思考,多总结,尝试思考业务的共性,思考业务的标准化,这能够极大的提高自身软件设计的能力。

职业发展的规划,是个开放性的问题,我的建议是围绕业务技术经验做职业规划,而非围绕技术栈做职业规划。

强烈推荐!十年大厂经验总结,给Android开发者的几点启发性建议

 


感谢大家能耐着性子看完这篇文章



Tags:Android   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 java heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存...【详细内容】
2021-12-23  Tags: Android  点击:(8)  评论:(0)  加入收藏
Android logcat日志封装logcat痛点在Android开发中使用logcat非常频繁,logcat能帮我们定位问题,但是在日常使用中发现每次使用都需要传递tag,并且会遇到输出频率很高的log,在多...【详细内容】
2021-12-22  Tags: Android  点击:(8)  评论:(0)  加入收藏
对项目的基本介绍 1.整个框架主要是给MVVM框架使用的,自己写完interface接口后,通过自定义的注解就能自动生成接口方法 2.用Kotlin的Flow去代替Rxjava,因为我发现RxJava功能很...【详细内容】
2021-12-08  Tags: Android  点击:(17)  评论:(0)  加入收藏
前言在Android开发过程中,有些时候会根据需要引用别的项目到当前项目里面,而且以Module形式引用。所以本篇博文就来分享一下怎么以Module形式引用别的项目到当前项目中,方便开...【详细内容】
2021-12-07  Tags: Android  点击:(22)  评论:(0)  加入收藏
新型Android恶意木马程序伪装成数十款街机、射击和策略游戏,通过华为应用市场AppGallery进行分发,从而窃取设备信息和用户的手机号码,全球目前至少有930万台Android设备被该恶...【详细内容】
2021-12-01  Tags: Android  点击:(24)  评论:(0)  加入收藏
作者:fundroid这篇文章偏阅读一些,大家可以了解下 Android 的一些最新动向。每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分...【详细内容】
2021-11-30  Tags: Android  点击:(15)  评论:(0)  加入收藏
一、 准备工作1、安装JDK,下载地址(可能需要一个oracle账号,大家百度一下或者自行注册一个就行。尽可能选择8或者11,这两个是长期版本)Java SE | Oracle Technology Network | Or...【详细内容】
2021-11-23  Tags: Android  点击:(28)  评论:(0)  加入收藏
如果你是一名忠实的Android玩家,那么可能会知道,今年的Android 12系统在版本规划上与“往届”相比可以说是很有些特殊。具体来说,除了前段时间刚刚推出正式版的Android 12外,谷...【详细内容】
2021-11-10  Tags: Android  点击:(24)  评论:(0)  加入收藏
使用Maven Publish Plugin插件。(官方支持)一、在Library的build.gradle中配置plugins { id 'com.android.library' id 'kotlin-android' id 'k...【详细内容】
2021-11-05  Tags: Android  点击:(37)  评论:(0)  加入收藏
今年5月,谷歌推出了Android 12,这是原生安卓系统史上最大的设计变化,10月4日,谷歌推出全新的Android12正式版本,并且宣布会在今年晚些时候应用于安卓设备,对比Android11的挤牙膏式...【详细内容】
2021-10-29  Tags: Android  点击:(125)  评论:(0)  加入收藏
▌简易百科推荐
今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 java heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存...【详细内容】
2021-12-23  像程序那样思考    Tags:Android开发   点击:(8)  评论:(0)  加入收藏
Android logcat日志封装logcat痛点在Android开发中使用logcat非常频繁,logcat能帮我们定位问题,但是在日常使用中发现每次使用都需要传递tag,并且会遇到输出频率很高的log,在多...【详细内容】
2021-12-22  YuCoding    Tags:Android   点击:(8)  评论:(0)  加入收藏
对项目的基本介绍 1.整个框架主要是给MVVM框架使用的,自己写完interface接口后,通过自定义的注解就能自动生成接口方法 2.用Kotlin的Flow去代替Rxjava,因为我发现RxJava功能很...【详细内容】
2021-12-08  网易Leo    Tags:Android开发   点击:(17)  评论:(0)  加入收藏
前言在Android开发过程中,有些时候会根据需要引用别的项目到当前项目里面,而且以Module形式引用。所以本篇博文就来分享一下怎么以Module形式引用别的项目到当前项目中,方便开...【详细内容】
2021-12-07  网易Leo    Tags:Android开发   点击:(22)  评论:(0)  加入收藏
作者:fundroid这篇文章偏阅读一些,大家可以了解下 Android 的一些最新动向。每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分...【详细内容】
2021-11-30  像程序那样思考    Tags:Android开发   点击:(15)  评论:(0)  加入收藏
一、 准备工作1、安装JDK,下载地址(可能需要一个oracle账号,大家百度一下或者自行注册一个就行。尽可能选择8或者11,这两个是长期版本)Java SE | Oracle Technology Network | Or...【详细内容】
2021-11-23  永沧    Tags:Android   点击:(28)  评论:(0)  加入收藏
使用Maven Publish Plugin插件。(官方支持)一、在Library的build.gradle中配置plugins { id 'com.android.library' id 'kotlin-android' id 'k...【详细内容】
2021-11-05  羊城小阳    Tags:Android   点击:(37)  评论:(0)  加入收藏
谷歌离推出Play Store应用程序的新数据隐私部分又近了一步。应用程序开发人员现在可以通过谷歌在Play控制台的新 "数据安全表 "填写相关细节。该公司表示,所需信息将从2022年...【详细内容】
2021-10-20    中关村在线  Tags:安卓   点击:(58)  评论:(0)  加入收藏
架构究竟是什么?如何更好的理解架构?我们知道一个APP通常是由class组成,而这些class之间如何组合,相互之间又如何产生作用,就是影响这个APP的关键点。细分的话我们可以将其分为类...【详细内容】
2021-09-17  像程序那样思考    Tags:Android架构   点击:(52)  评论:(0)  加入收藏
概述当Android应用程序需要访问设备上的敏感资源时,应用程序开发人员会使用权限模型。虽然该模型使用起来非常简单,但开发人员在使用权限时容易出错,从而导致安全漏洞。本文中,...【详细内容】
2021-09-07  SecTr安全团队    Tags:Android开发   点击:(66)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条