16.03.03 三里屯,李瑞@猿题库小猿搜题

经历

以前没接触过安卓,研究生毕业之后想加入移动互联网行业,就去了猿题库,从事了安卓开发,现在快两年了。

难点

大部分时候安卓开发无所谓难易,产品经理设计出来的功能基本都是有参考的,都是别人实现过的,所以肯定是可行的,只有知道与不知道。不过也有时候需要做第一个吃螃蟹的人,这时候就要靠自己创造了。

设计师设计的效果很可能很不好实现,但他们通常无法理解为什么他们可以做出效果来,但是程序实现不了。有一个很有意思的比方,就好比拿一个小勺子去挖东西,和用一个大铲子去挖东西,设计师拿的是小勺子,任意细节任意边边角角都可以随意拼凑,没有限制,而代码实现则好比拿着大铲子,大部分时候强力快捷,但细节通常难以顾及(启发自Edx CS50,对比C和PHP)。但这个问题其实也能解决,代码实现也有基本操作(Canvas绘制),总归是能实现的,这一点要有信心。

痛点

产品经理经常变动需求,产品经理的有些需求很特殊,为了实现不得不让代码不优雅 :(

尽管蛋疼,但还是需要解决的:首先设计/实现的时候,就要设想可能会变动,代码的实现要有较好的可扩展性,另外就是注意职责分离,单一职责的代码需求改了之后改代码也是很容易的。

另外还有一点,其实大部分创业项目,技术都不是致胜点,技术没有任何壁垒,大多都是靠产品/运营来走向成功,那么工程师就需要深刻理解产品的思路,如果是工作量,或者确实难以实现,产品可以妥协,后面再持续优化,但是如果可以实现,即便会让代码略丑陋,还是应该用hack/trick的代码实现产品的功能。

深技术,新技术

framework也正在看,最近打算研究插件化技术,所以开始更深入了。Rx/Retrofit/Dagger等都没有使用,网络请求使用的volly,因为有Google背书。

测试完全依赖QA,没有写测试代码。创业初期产品功能/业务变动非常大,节奏也非常快,验证功能才是最重要的,而且一旦功能变化,有些功能相关的代码就要改动,时间精力基本不允许写太多测试(不过私以为基本逻辑的单元测试还是应该有的 :) )。等到市场认可了,规模变大了,产品稳定了,再补上各种各样的自动化测试,降低维护成本,提高产品的稳定性。

豌豆荚有个做客户端自动化测试比较深入的人:芈峮,以后有机会勾搭一下。

核心竞争力

安卓开发这块,不能看表相,做的快、能实现功能需求,不代表什么,二流甚至三流工程师也许都能做到。但是更深入的时候,例如代码的结构,代码质量,稳定性,可扩展,可维护,设计模式等方面,并非安卓开发特有的能力,才是体现竞争力的地方。

另外,关注技术前沿,技术发展趋势,解决特别难/特别蛋疼的问题的经验,以及有挑战性的技术(例如插件化)等等,这些也是很有竞争力的。关注未来趋势,技术肯定是把事情从复杂变简单。现在APP上线/更新速度比不上web,因此热更新/插件化/React native等技术则是很有发展空间的。此外安卓不仅仅是一个手机的操作系统,更是一个完整的生态系统,可以保持对各个领域的关注,随时淘汰落后的技术/思维,紧跟时代的步伐。

最后,就是职业发展了,如果继续选择技术向,就需要对技术更全面的了解,扩展技术栈,同时也注意技术深度。或者选择产品向,管理向。

results matching ""

    No results matching ""