Android开发的现状貌似已经是一个老生常谈的问题了。但今天不想写Android开发的现状,什么Android前景如何、Android凉凉之类被别人写烂了的话题。
今天我们来聊聊我们自己,我们Android程序员的现状。
各位朋友也都是从标题看起点进来的。确实,标题很扎心,也很真实。架构师是程序员晋升的顶点,谁不想成为一名架构师呢?为什么大部分程序员从入行到转行,自始至终还是一个码农呢?我们带着思考看下去。
大部分程序员都是从小公司、小团队做起。特别是非科班出身的程序员,除非技术过硬,不然很难进到大公司或BAT之类的大厂。小团队一般 10个 人左右,其中常常是技术最好的做架构师(或CTO)。所以,架构师在广大码农中的占比平均不到 10%。
而架构师也可以分为初级、中级、高级,江湖上真正高水平的软件架构师就更少了。
所以,可以说90%以上码农肝了几年、甚至十几年,还是做不了架构师,这是什么原因造成的呢?
什么是架构师?
架构( Architecture)这个词,来自于建筑领域。我们经常将编程比喻成造建筑。工地上分工明确,各有等级,按照一所建筑的流程来看:
首先是开发商提出需求(公司客户)
到承包商拦下项目(公司本身)
总工程师画出建筑图纸,这一步最为关键,房子的总体框架,模型,建好后长什么样子,钢筋水泥瓷砖地板装修用料都要给出明确的流程和步骤(架构师)
工头领队施工(TL)
和水泥的和水泥,砌砖师傅砌砖等等(码农,业务代码)
可以说,建房子和编程开发的流程,完美的契合。
插一个自己的小故事
要明白一点:写业务代码和做架构是两个完全不同的事情。
刚踏进大学入门Android开发的时候,对架构师这个词并没有太多的概念,就觉得肯定很牛13,我以后工作了也肯定是个架构师。
后来开始写代码,从Java学起,然后四大组件,写Activity,然后学UI,学布局等等等。
学校毕业出来,我已经能独立开发自己的APP,虽然就是些什么图书借还APP,壁纸下载APP。但我依旧觉得自己很牛13。但是这份资历加上科班出身,毕业后我还是轻松得到了一家小公司的offer。工作一年后,我已经能基本上独立解决自己开发岗位上的问题了。
我贼牛逼。但是我不会口头上说出来,我要跳槽,这家小公司的舞台已经不够我发挥了,但我不会说出来,先找好下家,再提辞职,刚步入社会的我,就有如此远见,佩服自己。
于是我拿着自己1年工作经验的简历,投给了阿里巴巴,Android研发工程师。淦,面试都没收到。
然后我又投了当时如日中天的字节跳动,号称年轻人的天下。淦,又没收到面试。
是我眼高手低了?投了一家上市公司,金融行业,程序员最赚钱的行业,我**,又不给面试。
???
最后终于面到了一家中大型的企业,嗯…中级Android工程师。
自我介绍完,说了一下我做过的项目后,leader脸上一副:就这?就这?的表情。
当然,作为成年人的他,还是有着该有的涵养和礼貌,并没有打断我说话之类的。
然后到面试问题环节
leader一上来就问:看你简历上写熟悉 AIDL,说一说 oneway 吧
我:啊?oneway 是什么?跟 AIDL 没关系吧,我熟悉 AIDL 指的是使用 AIDL 接口进行跨进程通信。
面试官:…
啊哈,接下来的15分钟我羞耻的恨不得立马破门而出!binder通信原理是什么?说不清。子线程可以创建Handler吗?母鸡啊。activity启动流程总能说一说吧?哈哈哈,忘记了…
我人生中的第一次跳槽就这样羞辱的结束了。。。。。。。
这件事过后,我如梦方醒。光会砌砖(写业务代码)就想当总工头(架构师)?不可能。
这也是大部分码农无法成为架构师的一个原因。一直停留在业务层面,把砖砌的再好,终究只是砌砖师傅。
怎样能成为一名架构师?
我们依旧比喻成造房子,也就是说,从一个砌砖师傅怎么才能一步步成为总工头呢?