老板:搁这瞧不起谁呢?都给我干活去!
前言
大家好,之前写过一篇关于职场当中打杂文化的文章,反响不错。最近刚好有些小伙伴在准备校招,来请教我招聘信息当中的“做业务”究竟是什么意思。所以我就写下了本文,把这里面的门道给大家说道说道。
我们谈到业务这个词,大家联想得最多的应该是销售或者是售后服务这类岗位。但实际上在互联网公司也有技术和业务的区别。面试的时候,HR也经常拿这个说事:我们是技术驱动的公司,或者是面向技术的岗位。我们都明白她的言下之意是我们这个岗位很金贵的,你要好好把握。
但为什么做技术就金贵、做业务的好像就很弱呢?要想说明白这个问题,就得先说清楚究竟什么是互联网公司当中的业务。
业务和技术
究竟什么是做业务?对于这个问题老实说并没有一个标准回答,我感觉大家都是靠自己猜测。我个人对这个问题的理解是凡是产品经理让你去做的事情,就是业务。凡是其他程序员让你做的事情,往往就是技术。
其实很好理解,产品经理找我们一般都是什么事?一般都是让我们实现他们的需求,比如做一版新功能,比如做一份分析数据,比如解决一个用户问题等等。这些事情往往是直接或者是间接面向客户或者是用户的,比如做了新功能,用户就可以做之前做不到的事。比如客户对某些地方不满意,我们针对性地做出修改。这些为了达成客户需求或者是让客户更加满意的事情,就是业务。
做技术恰恰相反,不是为了让某些人满意,而是为了解决某些技术问题或者是系统问题。比如说想办法提升服务器响应的速度,想办法提供机器的吞吐量,想办法存储更大规模的数据,想办法在大规模流量下服务器不宕机等等。这些东西用户往往直观感受不明显,但是如果不做的话,要么影响公司后续发展,要么制造出更大的麻烦。这些事情的源头往往是其他的程序员,可以是架构师也可以是上下游协作的团队。很少会有产品经理找到程序员做技术升级或者是改造的。
利与弊
业务
说到做业务大家更关注的可能都是做业务的缺点,比如说技术含量比较低,很多事情比较杂。如果是开发的话,就是今天这里加一个功能,明天那里加一个按钮,简称CRUD(增删改查)。算法的话也差不多,这里做一个模型预测一下用户的喜好,那里做个模型预测一下用户留存。甚至有可能模型都用不上,跑一些SQL做做统计就满足要求了。
你说你想要用一些高端的做法,十有八九会被产品经理或者是运营小姐姐打回来。我们只要能用就行了,不追求技术,越快越好。
短时间内可能还好,时间长了会觉得非常无聊,不知道这样的日子何时是个头。工作好像都是这些枯燥琐碎的东西,技术领域很久都没有成长。你说学一点厉害一点前沿一点的技术吧,学了也派不上用场。所以很多工程师的热情都在做业务里消磨了,感觉看不到出路,也获得不了成长。因此很多人听到做业务这三个字就头疼,非常地抗拒,这些也都是非常非常正常的。
我一开始的时候也是这么觉得的,觉得做业务很没劲,整天和产品经理、运营什么的扯皮。并且压力也很大,有时候系统出问题了还要半夜起来看。感觉自己就是一个莫得感情的coding机器。但后来我现在回过头来看,对问题的看法发生了一点变化,主要是我看到了做业务的好处,认知更全面了。
不知道大家有没有听说过在一些公司当中,有一个叫做CEO大奖的东西。也就是CEO每年会选择一个他认为做得最出色的团队颁发这个奖项。一旦获得这个奖项,那么整个团队的绩效和年终奖都是非常非常可观的。听说当年王者荣耀团队拿了CEO大奖,团队当中的每个人当年光交税就上百万。
我观察过几个公司的CEO大奖,几乎无一例外都是业务团队。比如蚂蚁金服当中我知道拿过这个奖的团队有两个,一个是蚂蚁森林,另外一个是小程序,很明显,这两个都是做业务的团队。
从我们个人而言,我们可能更加看重个人能力的提升和技术成长。但是站在公司决策者和管理者的角度,他们显然更加看重的是公司的发展和壮大。对于互联网公司来说,发展和壮大主要体现在业务上,而不是技术上。技术再好不能赚钱,最终公司还是得倒闭,这样的例子也屡见不鲜。
所以做业务不是主要的,主要的是做的什么业务。如果是在核心的业务团队,无论是团队和个人的绩效还是晋升的机会,都要比其他的团队好不少。也更容易引起老板的注意和赏识,获得晋升往上走的机会。
另外一点是做业务很锻炼软实力,比如和上下游和产品经理和运营等等的沟通,再比如可能经常需要向老板和leader汇报业务的情况。并且在我们做业务的过程当中,也培养了一个我们对业务场景的理解,这对我们是非常重要的。随便拿一个广告业务举例,广告的竞价机制是如何运行的?碰到商家刷点击率怎么设计反作弊机制?CTR和CR有什么区别?在不同的场景下的广告有什么区别?
对这些问题的理解,虽然并不是直接的技术能力,但是对于我们的跳槽以及就业一样非常有用。这也是为什么很多人跳槽的时候不会换技术方向的原因,之前做广告的,换了家公司往往还是会选择做广告,就是因为有这些业务理解上的积累。
技术
说完了业务再来说是技术,其实互联网公司是很少有纯技术团队的。我想来想去可能也就只有阿里云或者是中间件这样的团队,除此之外还有一些像是人工智能实验室或者是各种实验室。我之前一度觉得叫xx实验室的部门听起来就很高大上,进去了一定光环加身。
后来我了解了一下才知道,根本不是这么回事。各种实验室里的项目往往离业务比较远,也就是说往往找不到应用场景。没有应用场景也就意味着不能给公司带来盈利,不能给公司带来营收基本上也就约等于没有太大价值。有些大公司可能还好,愿意养一拨人钻研技术,给公司的未来铺路。但即使如此风险也是很大的,一旦公司业绩不好,第一个被裁的技术团队可能就是这些。
还有一个隐藏的因素是技术方向其实会制约选择,什么意思呢?很简单,比如你是做中间件的。我们都知道中间件是非常有技术含量的岗位,但问题是中间件岗位只有一些大公司才有,小公司都用开源的中间件,基本上不会自己开发的。也就是说你空学了一身屠龙术,但是龙只有几家大公司才有,当你想跳槽的时候,你的选择会被制约。而做业务就不存在这个问题,即使做的业务很小众,只要自身技术素养OK,就不会在跳槽的时候成为问题。
做技术的优点大家应该不用我多说了,大家猜也能猜到。比较单纯,不用和产品、运营以及各路人马打交道,可以安心地写代码,学技术。也有充足的技术成长,提升自己的实力等等。
打杂
除了做业务和做技术之外,还有一种就是打杂。也就是既做不到核心业务,也接触不到核心技术,只能在边缘的团队做着边缘的事情,这也是大多数工程师的常态。老实讲这非常尴尬,我也是经历过的,深有体会。
在我们不能改变现状的时候,如果盯着现状一直看,只会让自己更加痛苦。这个时候除了想各种办法展现自己的能力,让自己脱颖而出受到重用之外,还有一个比较好的方法就是要学会自娱自乐,自己给自己提需求。比如说,老板不是不给我们有技术含量的活(也可能老板自己也没有),怎么办?那我们能不能自己做一些有技术含量的事情?
我们大可以当一个杠精,挑一挑当前系统当中的问题,然后想办法把它解决了,或者优化了。觉得哪个系统或者是工具不好用,可以自己抽空做一个更好用的工具出来。如果你有权限访问公司的一些闲置的机器,你也完全可以在上面部署一下各种分布式的集群框架,当做自己的一个实验装置。只有人规定不能用公司的资源盈利,可没有人说不能用公司的资源提升自己,对吗?
如何提升
我自己做Android开发已经是第6个年头了,毕业后两年,有幸加入到字节跳动这个大家庭。在字节的4年,见证了太多人的来来去去,印象很深一个同事,跳槽阿里薪资直接double,但也看到很多人镀着“大厂”的金四处碰壁,终究还是倒在了技术上!
我自己或许也算是个成功的例子,在4年的时间里从1-1做到了2-2,当然,这背后的“辛酸泪”就留到日后再说。总的来说,归功于自己不断地学习,复盘总结,提升技术!以下分享一下我4年来具体的学习路线及笔记文档,希望能帮助到有心提升技术的朋友!
以下完整学习笔记PDF,可以点赞+评论支持下打工人老弟,点击这里免费自取!
- 架构师筑基必备技能
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
- 设计思想解读开源框架
随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。
所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。
知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
- 360°全方位性能调优
在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。
另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。
1、设计思想与代码质量优化
2、程序性能优化
- 启动速度与执行效率优化
- 布局检测与优化
- 内存优化
- 耗电优化
- 网络传输与数据储存优化
- APK大小优化
3、开发效率优化
- 分布式版本控制系统Git
- 自动化构建系统Gradle
4、项目实战
- 启动速度
- 流畅度
- 抖音在APK包大小资源优化的实践
- 优酷响应式布局技术全解析
- 网络优化
- 手机淘宝双十一性能优化项目揭秘
- 高德APP全链路源码依赖分析
- 彻底干掉OOM的实战经验分享
- 微信Android终端内存优化实践
- Android框架体系架构
Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。
Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。
本篇知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析
- NDK模块开发(音视频系列)
NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。
在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。
本篇知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
- Flutter学习进阶
2019 年无疑是 Flutter 技术如火如荼发展的一年。
每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。
本篇知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门
…
- 微信小程序开发
微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。
本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
- Android相关源码解读
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。