0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

优秀Android软件工程师的定义

工程师人生 来源:wv 作者:简书网 2019-09-25 15:25 次阅读

在过去五年中,我一直做Android相关的工作。在这期间,我与不同背景,不同水平的工程师进行过合作。有些工程师有非常丰富的经验,有些是刚走出校园的应届生,它们拥有的只是学校学习到的知识并利用业余时间进行App的开发。还有些工程师甚至不是CS专业,仅仅是自学的。在合作过程中,我目睹了不同类型工程师的工作交付内容和方式。

所以,如果你是一个Android软件工程师,可以尝试读一下这篇文章。首先,很多人误认为移动开发非常简单,移动应用就是把根据后端的设计把一些界面组合在一起。真的是这样吗,其实这与实际情况差的很远。实际上,如果你看一下PlayStore上的应用,你就会发现app的质量分布其实是一个高斯分布,低质量的app很少,同时高质量的app也很少。

这里我定义一下平庸的App是什么

在一个非常基本的层面上, 一个平庸的app 与操作系统不能很好地兼容。首先,不遵循平台要求的 设计语言,这会使得用户感到困惑。第二,不考虑运行环境(内存、cpu、带宽、电量)实际上是有限制的。第三,在某些条件下不能工作(比如在弱网环境下)。现在的大部分软件都存在最后一个问题。

简而言之,以上三点就是构建一个好的移动应用的挑战。此外,App需要与公司的基础需求合理地整合,适应不断变化的业务需求。

所以如果我要寻找可以处理以上三个挑战的软件工程师,以下几点是我关注的:

较好的软件工程和技术水平 这包括:SOLID(面向对象设计)原则,clean code,应用架构和测试。数据结构和算法也很重要。但是我不在意面试者是否可以平衡二叉排序树。我关注面试者是否理解基本的数据结构(Lists, queues, trees, hash maps),是否理解 O 是什么,可以讨论时间和空间的交换,就是最基本的技能。

熟悉java语言(如果面试者非常熟悉其他的语言,我也不会拒绝)。

理解并发 因为App是响应式的,所以不可以在主线程中执行耗时任务。很多事情需要在其他线程执行,如果面试者不能处理并发编程,他们需要在工作和项目中学习。

理解分布式系统 随着移动应用变得越来越灵敏,需要设计为可以离线使用。这意味着如果网络有故障,相同的用户可能会面对不同的状态。因此,面试者需要了解CAP(Consistency,Availability,Partition Tolerance theorem)理论和分布式系统的共识模型。

分析解决问题的能力 面试者需要对事物的工作原理保持好奇,并且有大局观。

较好的口头和书面表达能力 在技术上,沟通交流非常重要。面试者清晰地表达自己的想法,同时合理的文档说明是非常重要的。其实,是否擅长写文档一定程度上也代表了代码能力。

理解当前的技术环境和对设计与工程的影响

我并不担心面试者是否对SDK本身理解多少。如果面试者理解以上的几点,即使他只是一个Android的用户,也可以快速地学习。也就是说,面试者同时拥有好的CS背景,了解android生态环境,还要知道以下的一些基本概念:

可以画出Android的基本架构

可以描述在点击Android studio的一个按钮之后具体发生了什么逻辑

理解基本的Dalvik和ART 虚拟机

Android进程间通信原理

app的沙箱机制以及为什么要用沙箱

权限系统(权限在底层是如果实现的)

进程和应用生命周期

还有一点是可以和面试者聊他擅长的话题,如果他擅长ui,就可以和他聊UI。

可以发现重要的是判断面试者是否知道核心的基础和概念,从而较好地处理分给他们的任务。一定不要雇佣只会使用一两个library的员工。工程师不仅在必要时会使用library,而且可以在提供解决问题的方法之前可以分析使用情景,预见可能的问题。

再次强调,一定不要雇佣只会使用一两个library的工程师。

当然,我这里描述的条件适用于senior 工程师。同样也需要雇佣一些junior工程师。但是一定要控制好两种工程师的比例。如果团队中有太多初级工程师,那么开发过程非常艰难,需要修改一个接一个的线上问题,直到可以代码达到维护性和测试性良好的程度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3918

    浏览量

    127069
  • 软件工程师
    +关注

    关注

    8

    文章

    217

    浏览量

    21113
收藏 人收藏

    评论

    相关推荐

    FPGA算法工程师、逻辑工程师、原型验证工程师有什么区别?

    ,还需要与软件工程师、硬件工程师紧密合作,对整个系统进行集成和测试。 总的来说,FPGA 算法工程师着重于算法优化,FPGA 逻辑工程师专注于逻辑设计,FPGA 原型验证
    发表于 09-23 18:26

    正是拼的年纪|65岁电子工程师上班VLOG #65岁退休 #电子工程师 #搞笑 #上班vlog

    电子工程师
    安泰小课堂
    发布于 :2024年07月25日 11:31:02

    嵌入式软件工程师如何提升自己?

    嵌入式软件工程师如何提升自己? 作为一名嵌入式软件工程师,在这个充满机遇和挑战的领域里,如何提升自己显得非常重要,它决定了你未来的发展方向和成就。接下来,我们一起探讨一下。 1.奠定扎实
    发表于 06-12 11:20

    索尼诚邀软件工程师参与PS免费手游平台设计

    据悉,近日,澳大利亚知名媒体TweakTown发现,索尼互动娱乐正在为其旗下的PlayStation Studios Mobile招募一名资深的软件工程师,负责设计PlayStation的免费手机游戏平台。
    的头像 发表于 05-23 17:08 685次阅读

    嵌入式软件工程师和硬件工程师的区别?

    、机器人等。 定义和工作职责 嵌入式软件工程师的主要职责包括但不限于:设计、开发、测试和调试嵌入式软件应用程序,以满足特定硬件和软件要求。他们需要理解并掌握嵌入式系统的基本原理,熟悉相
    发表于 05-16 11:00

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    Cognition发布首款AI软件工程师Devin

    据报道,Cognition公司今日公布了其首款人工智能软件工程师——Devin,掀起了打造软件模式变革的序幕。该产品在SWE-bench代码测验中展现出卓越表现,甚至超过了部分顶级人类工程师的水准。
    的头像 发表于 03-13 10:57 583次阅读

    优秀电源工程师需要哪些必备技能?

    随着电源市场的不断扩张,开关电源行业飞速发展,企业对电源工程师的需求日益增加,对电源工程师的技能要求也日渐提高,相信没有一位电源工程师会错过让自己变得更优秀的机会。作为一名数字电源从业
    发表于 01-29 11:29

    鸿蒙Harmony是如何影响Android工程师的呢?

    迅猛,目前已经有包括社交、金融、影音、游戏、资讯、食品等多个领域的企业以及开发者加入到鸿蒙的生态建设中,可以说是从日常工作生活的各个领域全面展开。 为什么会影响Android开发工程师? 因为自从华为
    发表于 01-14 22:14

    如何构建linux开发环境和编译软件工程、应用程序

    前文介绍了如何使用官方提供的镜像文件启动开发板,本文将说明如何构建linux开发环境和编译软件工程、应用程序。
    的头像 发表于 01-03 12:31 1882次阅读
    如何构建linux开发环境和编译<b class='flag-5'>软件工程</b>、应用程序

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不一样,所以我整理了一下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266、ESP32
    的头像 发表于 12-24 08:00 618次阅读
    嵌入式<b class='flag-5'>软件工程师</b>常用的

    优秀电源工程师的必备技能大揭秘!

    随着电源市场的不断扩张,开关电源行业飞速发展,企业对电源工程师的需求日益增加,对电源工程师的技能要求也日渐提高,相信没有一位电源工程师会错过让自己变得更优秀的机会。作为一名数字电源从业
    的头像 发表于 12-19 08:23 1664次阅读
    <b class='flag-5'>优秀</b>电源<b class='flag-5'>工程师</b>的必备技能大揭秘!

    嵌入式硬件和软件哪个好?

    方案,要求理解嵌入式系统架构,有一定的C语言基础,熟悉ARM、protel设计软件,有四层板开发经验。 成为优秀的嵌入式硬件开发工程师需具备以下技能:由需求分析至总体方案、详细设计的规划能力;熟练运用
    发表于 12-05 15:17