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

    文章

    3986

    浏览量

    133075
  • 软件工程师
    +关注

    关注

    8

    文章

    243

    浏览量

    21550
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工程师变身AI“指挥者”,吉利与阿里云的软件开发变革实验

    1975年,IBM工程师Fred Brooks在《人月神话》中提出软件工程的核心难题:随着系统规模和团队规模增长,复杂度会呈指数级上升。他的结论是, 软件工程“没有银弹”,没有单一技术能带来数量级
    的头像 发表于 11-13 10:43 202次阅读
    <b class='flag-5'>工程师</b>变身AI“指挥者”,吉利与阿里云的<b class='flag-5'>软件</b>开发变革实验

    硬件工程师面试必会:10个核心考点#硬件设计 #硬件工程师 #电路设计 #电路设计

    硬件工程师
    安泰小课堂
    发布于 :2025年09月23日 18:00:33

    做了电子工程师之后,最好拍的视频出现了#硬件设计 #电子DIY #电子工程师

    电子工程师
    安泰小课堂
    发布于 :2025年06月24日 17:45:57

    一个优秀的射频测试工程师需要具备哪些技能?

    一个优秀的射频测试工程师需要具备哪些技能?在无线技术高速发展的今天,射频(RF)测试工程师是确保通信设备性能与用户体验的关键角色。从复杂的调制方案到无处不在的干扰,从功耗优化到标准合规性,工程
    的头像 发表于 05-16 10:08 1518次阅读
    一个<b class='flag-5'>优秀</b>的射频测试<b class='flag-5'>工程师</b>需要具备哪些技能?

    (仰天长啸)为什么受伤的总是硬件工程师...#MDD#MDD辰达半导体 #电子工程师

    电子工程师
    MDD辰达半导体
    发布于 :2025年04月27日 18:21:47

    问,成为硬件工程师需要几只手?#硬件工程师 #YXC晶振 #扬兴科技 #搞笑

    硬件工程师
    扬兴科技
    发布于 :2025年04月25日 17:15:37

    如何成为一名嵌入式软件工程师

    如何成为一名嵌入式软件工程师? 01明确岗位的角色与定位 嵌入式软件工程师主要负责开发运行在特定硬件平台上的软件,这些软件通常与硬件紧密集成,以实现特定的功能。 不仅需要精通编程语言
    发表于 04-15 14:37

    硬件工程师:回答我!#回答我 #硬件工程师 #YXC晶振 #扬兴科技

    硬件工程师
    扬兴科技
    发布于 :2025年03月25日 18:46:59

    一招拿捏电子工程师#被AI拿捏了 #电子工程师 #电子电工

    电子工程师
    安泰小课堂
    发布于 :2025年03月25日 17:30:51

    嵌入式软件工程师就业好不好?

    嵌入式软件工程师就业好不好?会不会越老越吃香?今天一起来看看。 首先看下市场需求。 随着物联网、人工智能、5G等前沿技术的快速发展,嵌入式系统的应用领域不断扩大,从智能家居、汽车电子到工业自动化
    发表于 02-20 10:19

    Testin云测获智能化软件工程工作组优秀单位荣誉

    随着人工智能技术的深度应用,大模型等AI技术在推动软件行业智能化进程中的重要性日益凸显。软件工程,作为大模型、智能体等AI技术落地应用的前沿领域,正加速推进智能化转型。在这场变革中,企业、科研机构以及众多行业专家纷纷投身其中,共同探索智能化
    的头像 发表于 01-21 10:46 637次阅读