工程师层次等级 + 几天工作

Programmer是真正意义上的程序员,写程序的。灵魂级
Developer是码农,搬砖的,砌代码,体力活。肉体级


做Developer的感觉就仿佛行尸走肉,被工作绑架,被代码绑架,而不是驾驭代码。

如果每天,你感觉自己仿佛就是一坨肉,每天把自己运到公司,灵魂出窍式,条件反射式地CODING,然后下班又运回家,回到家你才真正解脱,真正找到自我。 富士康的小弟小妹们也有同样感觉。

那恭喜你,你就是一名“Developer”。


应该说,广义程序员范围内,99%都是Developer,只有1%才能称之为真正意义上的狭义的Programmer。

软件行业也越来越变成,不需要每个人都具备创造力,而只需要大量软件蓝领的行业。

而Programmer也正是让软件行业保持持续创造力的灵魂力量。

其实,真正让软件行业不断往前发展,进步的应该是那些或许根本不会编程的计算机科学家,这个暂时不在这篇文章探讨的范畴。


未来软件发展的趋势,就是让Programmer驾驭Developer


普遍意义上现在中国软件行业的工程师分为以下几种


1)地板级,NULL级别:               同事驱动型,这种纯粹是“鸟笼型”公司用来凑人头的,“坐台型选手”,不懂什么是抽象。


兴趣爱好:喜欢看《快乐大本营》之类的节目。

职场规划:基本没什么想法,觉得搞IT还不错,比一些小学同学混得好。

名人崇拜:晓得盖茨是IT首富。


2)菜鸟级:                                   Google驱动型                  类库王子,API王子,浮躁型选手,  一般没有网络就无法工作,,极度容易陷入比较模式,喜欢在论坛和QQ聊天群里面装自己的B扯别个的蛋,又极度敏感,工作中擅长CPM模式(copy+paste+modify)。忽悠型技术人才,运气好的时候,能混到一份不错的工作。地板级和菜鸟级形成了中国程序员的主流人群,其他级别的在中国都可以称之为“非主流程序员”,大脑基本不抽象思考。


兴趣爱好:喜欢看一些成功学的书和名人自传,相信 《我的成功可以复制》,要《作最好的自己》

职场规划:有搞管理的迫切愿望。

名人崇拜:喜欢李开复、马云。


3)大哥级:                                    官方文档驱动型                 开始意识到独立思维和抽象思维的重要性强迫自己去抽象思维,感慨虚度了大学时光,开始喜欢写博客,有一定的抽象归纳概括能力,,能独立写程序,身边有一定数量的技术小弟。英语方面已经能初步有能力实现无障碍阅读。


兴趣爱好:开始关注一些如《大道至简》和《人月神话》之类的技术管理类书籍。

职场规划:想做技术和管理兼顾型人才。

名人崇拜:了解约翰。卡马克之类的人,开始知道高德纳、迪科斯彻之类的人。


4)大侠级:                                   理论驱动型                        开始对理论书籍有独特的钟爱,什么都喜欢上升到理论高度。能无障碍阅读大型开源项目的源代码,并理解其设计理念。开始写一些简单的框架和库。抽象思维能力已达到“习惯级”。


兴趣爱好:开始关注一些哲学方面入门级的读物。开始喜欢写一些心情随记。

职场规划:做好了做中国第二批技术老人的准备。

名人崇拜:了解高德纳、迪科斯彻之类人,并知道的更多的关于ACM获奖人员的情况及钻研领域的情况。



5)大牛级:                                    论文驱动型                         喜欢阅读论文,并随时关注前沿动态,能很容易地开发一些大型项目原型。代码水平已经达到游刃有余的框架级,抽象思维能力已达到“本能级”。


兴趣爱好:开始阅读一些哲学方面提高级的读物,并对人文领域产生浓厚兴趣,会阅读一些小说和散文,有写散文的习惯。

职场规划:已经是技术老人了。

名人崇拜:对ACM获奖人的情况及钻研领域了如指掌,并已经开始把个人崇拜转移到其他领域。



6)大师级:                                    直接写出对别人有实际意义的论文, 在大陆属“稀有濒危物种”。


兴趣爱好: unknown

职场规划: unknown

名人崇拜: unknown






Android系统也是一样,在庞大的Android开发人员群体中,我认为可以由低到高分为以下四个层次:


1)应用层开发


使用java语言,基于android的框架和类库,进行应用层程序的开发。

这类开发一般依赖于短期记忆,也就是我们所说的类库王子、API王子。

这类人员,只要会UI布局,熟悉常用的widget,写几个消息回调函数,鼓捣一下网络类,简单的数据库操作,会读写保存点配置信息,调用一下播放器,发一下短消息。

再用一哈比如Gallery这样外行看起来表面上比较炫的类。


这类开发人员一般自我感觉良好,比较自大,认为android开发也不过如此。

这类技术门槛很低,这类开发人员中的真正的熟手和高手,是充分熟悉官方文档的,已经过了什么都去Google的阶段,达到了查什么都直接去查

http://developer.android.com/reference/packages.html  的地步。

而且在大脑中已经形成了一个官方文档的索引,查什么都能达到时间复杂度为常数的地步。


充分利用好官方文档,全部类库在大脑中有比较有条路的记忆,告别了杂乱无章的短期记忆。

成为了一个高级的“类库王子”。


虽然依然知其然不知其所以然,但是已经从“码农”升级为一个“高级码农”。


所有的框架和高级语言技术(特别是虚拟机技术),其实都是为了实现软件的工程化,为广大蓝领工人准备的。这些工程技术,降低了软件开发的难度,使一些比较难的,抽象的晦涩的高级技术和概念完全对应用层开发人员透明,但是这是以牺牲一定的软件效率为代价的。


不过还好,软件开发不是竞技比赛,不是以难度值为判断标准的,实用、经济、快速适应市场才是最重要的,同时飞速的硬件和底层基础性软件系统的研究进展,和自始至终的软件分层的思想,让一切阻挡软件工程化的障碍都不再存在。


这部分人中的大部分人,一般比较注重经济利益,有一定的经济压力。尚未把编程作为自己的一种爱好和自我实现的途径。多半感兴趣的是怎么找到一份好工作,怎么得到一份好薪水。但是他们忽视了,从长远来看,中国的软件职场,最终的发展方向肯定不是“五分运气,三分做人,两分技术”。对于一个技术人员来说,技术才是获得竞争优势的唯一途径。在技术上没有竞争优势,你就失去了一个技术人员的安身立命之本


他们

盲目崇拜所谓的“创新和创意”,误以为那是不用刻苦钻研技术而又改变自己命运的捷径!

轻信那些所谓的”创富神话“,殊不知如果离开了扎实的技术功底而追逐那些“快餐技术”,而去妄谈创富只不过是误入了“你方唱罢我登场”的众多“技术生态圈的公关陷阱”。成为技术沙场上“一将功成万骨枯”的牺牲品。


他们也推崇所谓的“实用主义”,强调“做出好产品才是王道”,但是真正的好产品,都离不开一个好的技术平台。另外不对自己实用的技术平台,有比较深入的理解,是不可能做出真正的好产品的。



2)中间层开发


中间层是为应用层提供  “Infrastructure”  基础设施。 其需要更加深厚的技术功底。

不过我觉得,从应用层开发达到一定技术水平后,转到中间层或者称之为“框架层”开发的人,比一开始就坐框架层开发的人,更容易深入。

做过应用层开发的人,更有所谓的“切肤之疼”,从而更能理解一些策略和为什么的原理性的东西。


使用C/C++语言,基于NDK JNI方式的开发。

需要对android的整体框架机制和android系统codebase非常熟悉.

一般都会自己自己下载android的系统源代码,自己编译IMAGE.

熟悉android系统的Custom Building System.

能修改和扩展Android的框架和 服务.

移植和定制nativelibray 和框架 ,如opencore,opengl,webkit

定制一套系统的UI,制作点ROM

也就是我们国内所谓的自主研发的手机操作系统。


这类开发人员一般属于稍微资深一点的,一般都有强烈的技术饥饿感,觉得自己懂的很少,不停的去提高充实自己。


3)操作系统级别的开发,系统定制

熟悉Linux驱动开发,Linux内核结构

针对特定硬件的移植

这类开发的技术含量其实和中间层开发差不太多,从某种意义上还不如。

其实,驱动开发更主要的要求需要一定的硬件知识。

这类开发人员一般是各大手机厂家的开发人员,由于接触的面比较窄,技术饥饿感不如中间层开发人员。


第二,第三层的开发人员通常在国内的厂家任职,比如魅族、小米、HTC。

只有这个样的厂家经过一定的技术沉淀,才会向最高层进军,中国软件行业才会做出真正意义上的自主的平台。



4)找出Android的不足,帮助Google持续改进Android

这种人是真正意义上的android程序员,他们会有选择的去阅读android框架源代码,会认真的去阅读dalvik的源代码。

自身知识结构也比较成熟,知识面比较广。

会很多上面三类人都不具有的调试和跟踪技巧。

对一些操作系统和平台设计的思想和策略,了如指掌。


在问题域和技术域之间左右逢源。


这些人,多半也精通其他移动平台,比如Symbian,Meego,IOS,WP

甚至Windows NT, Linux  edition for Server.等桌面或者服务器操作系统。











5.5周日:
 需解决问题:
 1、继续前面工作,设计Pvr(Personal Video Record);
 2、Pvr设置,选择存储设备,格式化存储设备
 
 发现问题:
 1、pvr设置UI界面,虽然简单,但交互操作复杂,不得不重新封装两个自定义控件;
 2、封装差不多了,结果组长需求做了变动,把一些无意义的View删除,这样完全就可以用已经封装好的控件实现了,一下就简单多了,以前做的工作白费了,早点说多好!
 
5.6周一:
 需解决问题:
 1、获取所有usb存储设备;
 2、获取每个设备的具体信息,包括:名称、路径、总空间、剩余空间、文件系统格式;
 
 发现问题:
 1、St****an.java和D*****an.java,用于获取存储设备信息,项目组其他人写的!但我用着就是有问题,获取不到!没办法,看它具体怎么实现的,结果发现两个错误!
 2、还有个问题就是两块开发板,一个是A*****,另一个是*****的,里面机制不一样,一样的程序跑出不一样的结果。
 3、各种方法获取文件系统格式,结果,我在应用层根本就没办法获取到文件系统格式,只能framework层告诉我,告吹~
 
5.7周二:
 需解决问题:
 1、格式化usb设备
 
 发现问题:
 1、查看Android系统源码,查找跟踪格式化方法;
 2、格式化USB设备,只需发一个Intent广播;
 3、Intent需传参数,参数是对象类型的,编译环境下没有,运行时环境才会获取到那个类,这编译过不去,怎么运行啊?!
 4、java反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;动态获取信息以及动态调用对象的方法的功能;
 5、反射机制,好东西啊!
 6、但是,Intent还需要一个参数,必须在编译环境下指定参数类型,编译环境下就没有这个类,怎么指定对象类型去啊?!
 7、最终无解决方案,搁置~
 
5.8周三:
 
 需解决问题:
 1、详细分析设计PVR,包括***c*、*******ift、play******;
 2、下午遇见个我感兴趣的话题,模拟Touch事件;
 
 发现问题:
 1、没有需求文档,需求UI上描述得又不准确,蛋疼!和组长讨论后,才清楚;
 2、模拟Touch事件,这个问题去年就研究过了,当时结论是在应用层实现不了,必须触发什么事件才行!但发现一个应用,用手机控制数字电视,明明实现了模拟Touch事件啊!这问题,我很感兴趣,因为如果能
 实现模拟Touch事件,那我天天让手机自动点应用中的广告,点一下广告至少一毛钱,一天点1W下,就是1000大洋啊!
 3、反编译那个应用的Server端和Client端APK文件,找到一个so库和一个Class文件,编写测试Demo,机顶盒是Android系统,一直用数字电视做测试,好久没用Android手机测试了,在数字电视上成功模拟Touch事件,并且可以让系统自己点广告了,爽!@
 4、把Demo在手机端测试,结果不行,总提示什么 no support open-device,以为是系统版本问题,最后研究发现,这涉及到最下面的Linux kernel层,需要集成usb驱动,这...无助啦...
 
5.9周四:
 
 需解决问题:
 1、还是实现PVR
 
 发现问题:
 1、PVR消息接口,有没说清楚的,用起来遇到问题了,考虑好久这是个神马情况,解决不了了,问消息接口开发人员,然后清楚了!接口文档里多写几句多好啊,东西是你写的,你不说怎么用,我怎么知道,接口,只关心怎么用,不关心具体实现;
 2、遥控器部分键值不对应,这个我弄错了!
 3、遥控器部分按键没实现,按下没反应!
 4、有一个事件,需要按遥控器的一个按键触发,没确定按哪个键,I think目前状态下,遥控器上所有按键都被占用,设置哪个键,都会有冲突;
 5、Jni调用出错或framework层的部分功能没实现,只能wait
 6、裁切pvr所有图片素材,幸亏Fireworks挺好用~
 
这几天,有点写不动的感觉呢,总遇到各种问题!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值