请举例说明安卓开发1年经验与3年经验的区别
呃,我是个做服务器后台的(大约7年了)……安卓不清楚,说说我的后台经验吧。1年是个什么概念得看你进的公司,项目组偏爱什么东西。我举3个例子。第一,我现在的公司,刚刚拿到D轮,公司没毕业的实习生和工作2~3年的很多,leader偏爱简历华丽的应届生,比如有大厂实习经验,有github,不管有多少星星……项目组也是张口hadoop闭口kafka,环境全docker,开发机都是mbp,语言python golang。然后我看代码,不算一塌糊涂吧,只是没什么深度,简单的业务逻辑,每天code也没激情,总结起来就是:知识面广而不专。第二,是我在成都时候呆的公司,广电领域老牌了,就是那种广电一提都知道,出了广电没人知道的公司。这家公司属偏爱改开源产品,比如改nginx,改ffmpeg等等,语言是C。因为经常接触大牌开源项目,技术成长特别迅速,在这里一年顶我刚毕业三年毫不为过。但是问题也来了,就是即便一些基础不错的应届生他们上来就看这些代码,比如nginx配置的4重指针,比如epoll事件机制,可以说云里雾里,出去跳巢写简历都不知道怎么写,做1年技术是扎的很深,但是到北京互联网公司面试,除了不怕笔试,其余真的一问三不知。总结起来就是:技术深而不广。第三就是我的头一年,感觉完全废了。因为我非名校出身,毕业去了小公司,代码都是自己写的,干了一年多c开发,三方库只用过zmq,属于闭门造车,代码太凌乱,无章法,总结起来就是:药丸 那么问题来了,三年后呢?我觉得这个得看运气或者自己的安排。其实做一个毕业3年的人,自己刻意安排也差不多都是盲目的,因为你啥都不懂,和运气也差不多。目前看如果是按照我的三个例子中123的顺序发展,其实挺不错的,第一步丰富阅历,第二步专研技术,第三步就可以写自己的代码了。然后就看你每一步要走几年。如果你第一步走了3年,那你是个talker,可以跟任何人滔滔不绝的探讨架构,大谈互联网技术,大谈云计算,机器学习,很专业,然而却写不出什么东西,最后成为架构师或者项目忽悠师。如果你第二步走的时间长,你会写出漂亮的代码,优雅的组织结构,没有解决不掉的问题,但是你最终会成为一个30岁退休,或者大龄实习生导师,或者你可以成为github的新星,但是你想自己做点什么或者出来创业,你甚至不会搞负载均衡……如果第三步占用了3年的大部分时间,呃,我的天呐
■网友
想来我也工作三年多了,因为你问的这个问题没设前提,所以暂且认为问题是一个普通工科生从事安卓开发一年和三年的差距。就拿我自己说,刚开始工作面临几大问题,首先,基础差,大学里把数据结构和算法,操作系统,网络通讯原理这几门课当作不挂科就行了。因为基础差,所以一开始看Framework代码包括JDK源码是一脸懵逼的,只能看别人的博客,自己写不出来,写出来的就像撕碎的片段。所以头一年基本就是补基础理论,学习下Git和SVN,学习些基本控件的使用,大多数时间被一两个bug困扰。第二年对开发岗位工作流程不陌生了,知道怎么应对大多数情况,包括掌握了自己的学习方法。这时候有了进一步追求,开始关注主流开源框架,开始学习设计模式,并发编程框架。这个时候是学习的高速时期,会发现自己进步很快。开发两年,能力强的小伙子基本能独当一面了,虽然只是停留在搭个普通框架,使用一些高级API,也能答出部分Framework、JVM的原理。第三年,基本上大多数业务场景难不倒我了,对UI非常熟练,开始尝试性能优化,研究底层原理。这一年,Framework中核心组件的原理至少过了一遍,可以灵活运用设计模式,搭建自己的应用构架,比方MVP,注解,RxJava这类应该使用的很熟练了。因为视野广了,所以JVM虚拟机原理要开始深入研究了,有了两年的基础看JDK中集合和并发框架的源码终于知其所以。这时候使用开源框架不再是用API这么简单,能看源码一定要过一遍,最好写自己的博客。其实我觉得写博客是最好的学习方法,效率不见得高,但是它会培养你的表达能力,同时因为博客是要给别人看的所以要严谨负责。三年以后,基本上大部分的业务都有涉猎,技术上对多进程多线程,TCP/Http协议通信,NDK,SQLite,安卓四大件使用非常熟练了。对一些黑科技或者小众技术也有研究,比如Android 4.0时期的进程无限重启,dex动态加载技术,hook java函数实现热更新、组件化开发等等。此时才发现原来我的程序员生涯刚刚开始!做了程序员就做好终生学习的打算吧,现在不又开始流行Kotlin了吗,我JVM还只研究了大概呢……又有React Native这样的搅屎棍,真是不知道什么时候是头。说了一大堆废话,回到正题,三年经验的程序猿也会CV,但是不把CV的每一行代码搞清楚就应用到工程上的肯定不是什么有所追求的程序员。况且我相信能直接CV解决问题的情况是少数,大部分三年程序员应该都有自己的工具库了,能CV的肯定是通吃大部分业务的代码,就该作为工具类复用。
推荐阅读
- |奥迪开发基于C-V2X校车警示系统
- 汽车|长安汽车:公司与华为、宁德时代三方正在联合开发智能网联电动汽车平台和产品
- 啥是微信开发WEB前端
- 做苹果开发,想买台MacBook,大家建议买啥
- 开发/维护 一个类似qq会员或者Amazon Prime会员的会员系统有哪些难点和挑战
- web开发,一般项目经理从项目中拿多少项目奖金
- 趣头条|海外媒体称大众正在开发两款基于MEB平台的小型车 ID.1与ID.2
- 咋搞垮一个Onlinejudge
- 盐城经济技术开发区:“创成”即启程 创建再出发
- 邮储银行|邮储银行江阴市支行成功发放首笔房地产开发贷款
