优秀Android软件工程师的定义

在过去五年中,我一直做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工程师。但是一定要控制好两种工程师的比例。如果团队中有太多初级工程师,那么开发过程非常艰难,需要修改一个接一个的线上问题,直到可以代码达到维护性和测试性良好的程度。

对抗谷歌Chrome OS的操作系统微软Win10 Cloud系统曝光
字符串匹配算法
造成EMC辐射超标原因有哪些(精彩案例分析)
雨量监测站概述/优势/参数/功能/特点
Acrel-2000E/B配电室综合监控系统在经开某街道南一所中的应用
优秀Android软件工程师的定义
艾拉比总裁芮亚楠:在5G时代 ,OTA一定是物联网和车联网的标配
惠普、亚马逊涉案 美国ITC正式对电子设备启动337调查
台积电只要再涨5元,总市值便能超越英特尔
人工智能风险不得不去思考一下
日本扩大半导体制造设备出口管制 中国半导体行业协会发布严正声明
激光退火技术制备石墨烯
苹果公司警告客户不要关闭带有相机盖的笔记本电脑
三星西安12英寸闪存芯片二期一阶段项目竣工投用
过电压保护器在出现过压的时候是怎样进行工作的?
高速电机冷却方法有哪些
国家电网有限公司在京发布《国家电网有限公司服务新能源发展报告2020》
云徙CTO李元佳:做到"数据通",是件很艺术的技术活儿| 直击阿里云上海峰会
如何制作Flash和Shockwave电影
铝空气电池实现产业化的路还要走多久?