工作第八个月:从安卓调整到服务端后的思考

    • 前言
    • 客户端开发的侧重点
    • 后端开发的侧重点
    • 浮躁的心
    • 架构师之梦
    • 跳出局限
    • 总结
    • 其他
    • Thanks

前言

距离写上篇博客已经有一个月了,年后由于岗位调整转去写后台,开发框架、开发模式的不同让我适应了好一阵子,更难的是后端开发与客户端开发的思维习惯的转变

客户端开发的侧重点

在我看来,客户端开发最重要的是:

  • 业务流程的理解与建议
  • 交互方式的理解与建议
  • 数据的展示(快速、高效)
  • 数据的获取(用户主动输入、UBT 采集)
  • 保证应用的性能(内存、弱网、耗电)

实际工作中,产品经理拿到业务需求后会分析背后的真实需求,提出解决方案,然后与研发沟通是否能实现:

  • 如果是偏交互方式的,一般是找客户端开发沟通;
  • 如果是偏业务流程的,一般是找后端开发沟通。

相较而言,“业务流程”当然比“交互”更为重要。不管是移动应用,还是WEB 网站,在满足用户最基础的需求之后,才有资格谈体验。

水彩笔都学不出字儿了,谁管你颜色多漂亮。

因此,上面的前两点中我强调的是 理解与建议

在拿到原型图、设计稿时,其实业务流程已经基本确定了,客户端要做的基本上是照着设计图实现效果。

后端开发的侧重点

在长期习惯了客户端开发后,转入后端开发没几天,就被我司架构师怼了一顿。

原因是我在写接口时,除了增删改查,不知道还能写什么,去问架构师C 哥,C 哥让我“自己想需要什么接口”。

( ?◇?) ?自己想?原型图都没有,我哪儿知道需要什么接口。

此话一出,C 哥眉头一皱,语重心长地对我说:“服务端开发,重点就在服务二字!你有增删改查多个数据的能力,如何将这些能力组合起来,尽可能多地为其他人提供服务,才能发挥价值。很多时候服务端启动开发时,原型图还没设计好呢,难道你就不写了?你应该从不同业务场景,思考对不同业务系统需要提供哪些数据,设计能处理更多要求的接口!”

“自己思考能提供什么服务”,这点上就和客户端开发大不相同。

根据我对服务端的了解,服务端开发时的主要流程有:

  • 从不同业务场景,思考对不同业务系统需要提供哪些数据
  • 设计数据库表结构
  • 层级拆分,模块拆分
  • 设计能处理更多要求的接口
  • 实现接口

浮躁的心

虽然我在上面夸了半天后端,但实际上,在写这篇博客之前,我的心已经纠结、痛苦了好长段时间。

痛苦的是公司要我离开自己擅长的安卓开发,去做后端。

做后端就做吧,能好好学后端开发也不错。然而最近业务紧,天天写业务代码,一点儿意思都没有。

虽然我很认同业务抽象、建模能力的重要性,但这一定是以扎实的技术为基础。

借用知乎上一位前辈说的话:

现在架构师大部分都是业务架构,用现有的技术傀儡搭建。比如选型的时候参考xx网的技术架构或者认识人在里面给你说下他们系统的架构,然后自己用 zookeeper redis 等等各种存储和中间件搭建一套系统。

平台架构是设计 Netty Dubbo 这些中间件并能带领牛逼开发一起实现的神人,平台架构是非常非常少的,需要阅读大量开源代码和积累多年开源经验才有机会做到,写了几年业务代码天天 get set if else foreach 是绝对做不到的。

因此我很纠结,究竟是要继续走下去,还是回归安卓,把安卓做精通。

内心辩论、抉择了许多天后,突然有一天,我看到了我的中级软考《软件设计师》证书,想起了当时报名这个考试的初衷。

架构师之梦

早在开始学习编程时,我就有个愿望:成为一名架构师。

那时对架构师的定义很模糊,只知道普通程序员是搬砖的码农,而架构师就是绘制盖楼图纸的人,所有程序员都得听他的,好威风啊!(:3 」∠)

大二时学校有朋友告诉我“软考”这个考试,里面有个高级别的考试“系统分析师”,它的要求让我感觉很接近架构师:

根据系统分析师百度百科的介绍:

系统分析师是计算机行业的高级人才,是一个大型软件项目的核心领导者,他的主要职责是对软件项目进行整体规划、需求分析、设计软件的核心架构、指导和领导项目开发小组进行软件开发和软件实现,并对整个项目进行全面的管理工作。

系统分析师的工作职责决定了他必须是计算机行业各个领域的精通者,因此一个合格的系统分析师,能够精通各种计算机前沿理论、具体的软硬件开发技术、大型数据库的知识、项目的整体规划和框架设计、模块式设计和开发技术、数字化建设知识等等。

系统分析师具备在一个信息化项目从立项到正式上线整个过程中,在过程的各个不同阶段担任不同的核心角色的能力,其中最为重要的能力就是系统架构的整体设计能力和详细设计能力,这个能力直接关系到一个软件项目的成败。

碍于个人能力以及系统分析师考试的要求,当时的我选择了先报考中级。

一晃眼毕业快一年了,随着对 IT 行业的逐渐了解,我逐渐意识到:展示数据可以有 app、网页、微信公众号、小程序等多种平台技术,但处理数据,必须依赖一个强有力的后台。

终于明白为什么架构师一般都是做后台的了:后台决定了业务!

跳出局限

人们常说:

黑夜里行走,需要仰望星空才不至于跌倒。

从事编程其实也很相似,如果我没有想起自己当初的目标,只是想着当下的得失,恐怕会一直活的不开心。

Android 也好,后端也罢,其实并不矛盾,都是我通往目标可以走的路。

我会努力把一个学精,然后横向拓展的。

总结

最近内心积攒了太久,不知不觉扯了这么多。

写博客还是有很大益处的,让我能冷静思考反省,而不是因为工作上的变动就胡思乱想,看着各种各样的文章眼红、纠结。

借以此文警醒差点忘记目标的我!

其他

《系统分析师教程》图书目录(平时积累相关知识):

  • 第1章 绪论
  • 第2章 经济管理与应用数学
  • 第3章 操作系统基本原理
  • 第4章 数据通信与计算机网络
  • 第5章 数据库系统
  • 第6章 系统配置与性能评价
  • 第7章 企业信息化战略与实施
  • 第8章 软件工程
  • 第9章 系统规划
  • 第10章 系统分析
  • 第11章 软件需求工程
  • 第12章 软件架构设计
  • 第13章 系统设计
  • 第14章 系统实现与测试
  • 第15章 系统运行与维护
  • 第16章 新技术应用
  • 第17章 嵌入式系统分析与设计
  • 第18章 系统安全性分析与设计
  • 第19章 系统可靠性分析与设计
  • 第20章 项目管理

一些知乎上关于“如何成为一名架构师”的回答:

  • 其实和代码水平无关,看你占在什么高度看问题。不过不写代码,可能没人敢让你沾架构。
  • 通过接触这些优秀项目的开发者,了解他们解决问题的方法会让人受益终身。
  • 一个架构师,如果没有对技术的敏感度和前瞻性,一直抱着一套技术架构不变,估计很快会被淘汰。
  • 现在的软件开发封装的层次已经非常高了,只要学会 Java 就能做一个编程工作了,随着你做的越来越深,越来越专,这些基础的问题就会浮现出来。更重要的是,计算机软硬件的基本思想在这几十年里其实变化不大,例如缓存,增加抽象层等,有了这么基本的思想的武装,去学习新的东西不但学的快,理解的会更透彻。
  • 理解了技术的本质以后就能够触类旁通,就能够快速学习,这在技术更新很快的软件行业尤为重要。 只是学会使用是不行的,不但要知道how,还要知道why。 停下来,思考,才是进步的本质。设计模式一直强调的『发现变化并且封装变化』其实就是这个意思。
  • 抽象能力的训练没有捷径,就是经验的积累,勤于思考和学习。例如:学习Android的程序员可以思考下Android是怎么对未知的,纷繁复杂的应用程序进行抽象的?为什么有Activity、Service、BroadcastReceiver、ContentProvider这四大组件?

Thanks

回顾15年程序生涯,我总结的7点经验

如何成为一个架构师?

解读客户端开发流程

时间: 2024-10-06 23:47:04

工作第八个月:从安卓调整到服务端后的思考的相关文章

CSDN日报20170220——《从安卓调整到服务端后的思考》

[程序人生] 从安卓调整到服务端后的思考 作者:张世欣 在我看来,客户端开发最重要的是: 业务流程的理解与建议 交互方式的理解与建议 数据的展示(快速.高效) 数据的获取(用户主动输入.UBT 采集) 保证应用的性能(内存.弱网.耗电) 实际工作中,产品经理拿到业务需求后会分析背后的真实需求,提出解决方案,然后与研发沟通是否能实现: 如果是偏交互方式的,一般是找客户端开发沟通: 如果是偏业务流程的,一般是找后端开发沟通. 点此阅读全文 [Android 开发]Android逆向之旅-带你爆破一款

工作一年八个月了

刚进来的时候,觉得自己很能干,什么都能做,前端,后端,页面,数据库,什么都能参和一下. 现在吧, 突然觉得自己特别菜,前端,后端,页面,数据库没有一样深入研究过.以前觉得C#简直是小case,相比java来讲,因为我之前一直是学习java的,现在看着C# via clr这本书,发现也有让我看不懂的地方,或者看了也不能马上理解透彻.   刚来的时候,实际上是大家都比我能干,我就做一些边边角角的东西,比如说查询页面,比如写下数据库,比如写一下增删改查的WCF服务.   越到后来,能干的同事都走了,剩

初入社会八个月总结

今年4月份参加工作,至今已经八个月了,以前没接触过的EF.MVC等,经过项目的磨练,已经差不多了.感觉在这八个月中,自己的姿势增长很快,这是初入社会比较欣慰的一点. 总的来说,这八个月让我对身边的人,有了些新的认识:本人在青岛上学,毕业之后跟着大学的兄弟几个一起留在了青岛,我来到了市南,他们去了青岛的各个角落.我们虽然不经常联系,但是感觉兄弟们就在我身边,让我心安.“你们同在一个城市,就算是不联系,心里也是会很充实.而我,回到家,才发现,心里真的是空落落的”一个兄弟这么说,我说:“你该找个女朋友

工作了八年之后,我准备去上海了

2008年来西安,一眨眼的功夫快十年了.也是从08年开始接触软件这个行业,从刚开始的懵懂无知,因为进北大青鸟很长一段时间,我也不知道“软件”到底是啥?自己想不明白给别人也讲不清楚,那时候只是单纯的觉得,计算机是以后发展的趋势,我想要做游戏,然后北大青鸟的咨询师告诉我,你的这些愿望只要来了这里都都可以实现!现在想想自己当初确实单纯,但所幸的是,我遇到了一个好时代,智能时代的到来,给予我们这些码农带来了一波红利,让我能在十年后的今天,依然无悔于当初的选择,即使我现在没能如愿以偿的做游戏(苦笑). 按

LVS三种工作方式八种算法

一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多. 集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务 LVS在企业架构中的位置: 以上的

大学毕业的工作第一天6月3号

今天第一天来到公司,连日来惠州都不定期的下暴雨和出猛太阳,恶心的天气反而助长了我工作的心,今天,我终于可以说:啊.......我终于工作咯.好幸福啊.哈哈...工作的日子还很长,我现在应该努力得到的并不是多少钱多少权.而是希望每天太阳升起和落下后的坚持,我能实现下面几个目标: 1要有自己的定位,我希望定位在软件方面的精英,掌握云计算或者其他的一些未来很重要的东西 2养成好的性情,感谢香港夫妇对我的知道,peter和funny 3为公司创造价值,只有这样才能获取自己的价值 4理论知识和实践动手能力

膝盖中了一箭之康复篇-第八个月暨2月份目标总结

2015年进行了右膝前十字韧带重建术,至今已经有八个月了. 右膝的恢复貌似进入了瓶颈期.平时坐久了之后突然起身走路时会感觉右膝有些瘸,但走了一会之后即可恢复正常.为了找回本体的感觉,在平常站立时我一直尝试使用右腿作为支撑腿,但是收效甚微.明显可以感觉右腿的肌肉还是要差一些,尤其是膝盖附近的肌肉明显感觉强度不够. 2月第一周还在深圳的客户现场奋战到最后一刻,直到2月6日晚上才坐飞机飞回成都.回到家里就变得比较懒散了,没有继续练习腹肌撕裂者,而且跑步也进行的比较少.好处是可以继续去家附近的健身房进行

Android工作笔记之——7月第2周

一.Android TextView内容过长加省略号 android:ellipsize="end"   省略号在结尾 android:singleline="true" android:ellipsize="marquee"  跑马灯 :: 跑马灯这个属性似乎直接这样还不行,TextView只有在获取焦点后才会滚动显示隐藏文字,因此需要在包中新建一个类,继承TextView.重写isFocused方法,这个方法默认行为是,如果TextView获

在北京工作已两个月

我进入了一家外企工作,其实是某外包外派人员.来北京后没有能实现进入一线互联网公司的计划,而且签约后是外派.不过庆幸的是做自己的产品, 是一家外企.这两个月我已快速融入了团队,氛围很好,工作环境也是很nice(芳草地).在这里我的英语特点也有了更好的发挥,毕竟需要全英文办公, 我也能够和老外架构师顺利沟通. 其实我也会纠结目前的工作到底会不会对我未来进入BAT 等有没有帮助,或者会不会让我离他们越来越远. 但对于任何一个领域而言,格外的个人学习是 非常必要的,持续成长必要的部分.学习数据结构,设计