美文网首页Android开发Android开发经验谈Android技术知识
程序员:做技术的搞不过做PPT的?我敢肯定你完全不懂啥叫技术!

程序员:做技术的搞不过做PPT的?我敢肯定你完全不懂啥叫技术!

作者: 木木玩Android | 来源:发表于2021-02-24 19:51 被阅读0次

    最近一直很迷茫,迷茫了就喜欢胡思乱想一些东西,大家从我最近的文风也可以看出来,写的东西都是些零零散散的东西,因为这些也确实是我最近的一些思考,希望对大家有用。

    今天,我们来讨论一个问题:技术实力的本质究竟是什么?

    在工作中,你可能会遇到,为什么他的实力不如我,他却可以晋升?在面试中,你可能会遇到,我把系统性能优化了10倍,为什么面试官还是看不上我?

    为什么?到底是为什么?如果你有同样的困惑,或者彻夜难眠,我认为你需要停下来思考一下了。

    可能是你的学习方法错了,你并不是不努力,只是努力的方向错了。

    我举个简单的例子:

    我的父母特别勤奋,当我还是个小屁孩的时候,他们每天早上四五点就起床把菜园里刚摘的新鲜蔬菜挑到村大队上去卖,一年四季如此,他们的目标也很简单,就是把我和哥哥送入大学,当然,最后他们的愿望也确实实现了。

    你说他们努力吗?是的,很努力。

    但是,你说他们很成功吗?不见得。

    所以,你看,有时候并不是说,你努力了就一定会成功。

    更不用说我们做程序员的,有那么多的知识要学习,就拿Android来说,你真的就只需要学习Android本身的东西吗?性能优化要不要学?各种框架要不要学?各种UI要不要学?

    有这么多东西要学习,学得过来吗?通宵达旦地学也学不过来呀。

    所以,技术实力的本质到底是什么?

    我认为技术实力的本质是解决问题的能力,或者换个说法,技术源于业务,技术是为业务服务的。

    这么说,可能大家不乐意了,你莫不是产品弟弟派过来的间谍?!


    我再举个简单的例子:

    在很久很久以前,这个世界上没有火,突然有一天,一道闪电划过,劈在了树上,着了火,引起了森林火灾,后面火灭了,人去捡被火烧熟的动物尸体吃,嗯,味道竟然很好。

    后面,人就形成了一种共识,“火烧过的肉很好吃”。

    所以,他努力的想掌握生火的技能,经过一番尝试,终于习的了钻木取火的技能,从此,可以天天吃烤肉了。

    在这个故事中,业务是什么?技术是什么?

    业务其实是吃烤肉,技术是取火,钻木取火是取火的一种方式,除了钻木你还可以使用打火机。

    忽然有一天,一个人说我要喝水,你却给他打火机,你说你解决了他的问题(业务)了吗?

    并没有,打火机虽然是更高级的技术,但是对于喝水这个需求并没有什么卵用。

    所以,技术实力的本质是解决业务问题,你解决的业务问题越大越复杂,代表你的技术实力越强。

    那么,如何才能增强自己的技术实力呢?

    我认为分成以下几个步骤:

    首先,领悟业务,引导业务,这个你可以去学习一些DDD的思想,并落地到你的业务中,可以帮助你快速理清业务边界,甚至引导业务未来的方向。

    其次,学习通识技术 + 技术储备 ,学习一些你所在领域的通识,并储备一些在现在和未来能帮助你解决业务问题的技术。

    在这么多技术中,我认为最重要的是学习你所在领域的通识。

    通识是什么呢?就是在一个行业公认的比较有前景,有核心竞争力的东西。

    那么所谓的技术储备,根据自己的业务方向,提前去学习了解,当前还未涉及但今后必然要接触使用的技术或是其他方面的知识点,也就是未雨绸缪。

    我们以Android为例,你可以从以下几个方向和技术点去学习钻研:

    • 架构师筑基必备技能

    目前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终端内存优化实践
    360°全方位性能调优
    • Android框架体系架构

    Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

    Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

    本篇知识要点:
    1、高级UI晋升
    2、Android内核组件
    3、大型项目必备IPC
    4、数据持久与序列化
    5、Framework内核解析

    Android框架体系架构
    • 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、机器学习

    NDK模块开发
    • Flutter学习进阶

    2019 年无疑是 Flutter 技术如火如荼发展的一年。

    每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

    本篇知识要点:
    1、Flutter跨平台开发概述
    2、Windows中Flutter开发环境搭建
    3、编写你的第一个Flutter APP
    4、Flutter Dart语言系统入门

    ......

    Flutter学习
    • 微信小程序开发

    微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。

    本篇知识要点:
    1、小程序概述及入门
    2、小程序UI开发
    3、API操作
    4、购物商场项目实战

    微信小程序开发
    • Android相关源码解读
      只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
    Android相关源码解读
    Android相关源码解读部分内容
    由于篇幅原因,需要以上完整学习笔记pdf如有需要,可以 点赞+评论 支持下我,然后点击这里免费自取

    所以,在此就这么的简单的分析一下,大家也可以根据自己的业务需求,或是职业规划,去琢磨琢磨自己该要学习哪些储备技术了,我这里只抛砖引玉,并不是说这就是全部。

    你可以排一个优先级,一个一个去学习这些技术,但是,并不是说每一个都要去达到源码这种级别,你只要去掌握他们用到哪些底层技术,适用于哪些场景,有什么优缺点,有什么坑,简单的使用案例,我认为掌握到这种程度就够了,真正遇到需要用到这个技术的场景的时候,你能信手拈来即可,然后再去深入学习。

    最后,去尝试持续学习沟通能力,表达能力,思维能力,总结能力,并落实到工作生活中。

    这一部分如果用一个词来概括的话,可以称之为社交能力。

    你写了一个特别牛逼的框架,但是你不会表达出来,别人也不知道你在说啥,有什么用?正所谓天才与傻子只是一步之遥,可能是我们无法理解傻子,或者说傻子不会表达自己。

    你在工作中是不是只会闷头干活,交给你的活都能搞定,但是,你就是比不过那个PPT写的好的,那是你的思维能力和总结能力不如别人。你可能只列举了你做过哪些东西,但是,他会归类总结,最后以结构化的方式呈现出来,甚至还可能通过对以往数据的汇总,预测下一年的方向,这个在老板看来是更重要的东西。

    所以,你必须学习思维能力和总结能力,而且是持续学习持续实践,这方面的能力是贯穿一生的,即使以后你不做程序员去送外卖了,可能也能比别人赚得多。

    相关文章

      网友评论

        本文标题:程序员:做技术的搞不过做PPT的?我敢肯定你完全不懂啥叫技术!

        本文链接:https://www.haomeiwen.com/subject/hyvsfltx.html