有个好朋友最近要换工作,闲来无事,帮出出主意。他技术很杂,做什么都一样,写java和移植linux在难度上对于他没有区别。我就按照我浅薄的经验从网上看看现在的IT(挨踢)行情,不看不知道,一看,不禁想起《三国演义》的主题曲………
第一、企业级应用开发。没必要分dot net 与java的区别了,做这行的我统统佩服,都是全才!
岗位要求:
1、精通java/c#语言及其相关开发工具与框架
2、精通HTML、DHTML、Javascript、Xml
3、熟悉MsSql/MySql
4、了解相关行业业务逻辑
我都不知道从哪里夸奖这个岗位要求了,不考虑“精通”、“熟悉”之类的修饰。HTML是没有流程逻辑的直译,需要“遵守规则、执行力强”的人;JavaScript是浏览器环境下的解释性脚本,代码在客户端环境执行,需要“灵活应对各种未知环境”的人;XML是树形数据包,或者深度优先访问,或者大内存全加载灵活寻址,需要“既有大局观又专注”的人;java/C#是运行在虚拟机上的、抽象成对象的、不需要关心垃圾回收的逻辑语言,需要“信任下层的执行、按规则理顺自己的数据和行为、不插手不是自己的事”的人;MsSql/MySql对于绝大多数人来说,你用到的部分的难度相当于你启动一个装了windows的系统的机器,大家都是白痴的水平,但是你要“敢于说没必要是真话的话”。如果说满足了上述四点是一个合格程序员的话,那一个合格程序员的本质已经是一个合格的企业领导者了。此行,能力不强者莫入。
第二、移动平台开发。Intel和Nokia合作“MeeGo“,Goolge强推“Android”,Nokia的“Symbian”还没死,苹果“iPhone”依旧独行,微软“WP7”不肯掉队,Blackverry、Bada也凑热闹。以上这些是巨头们在移动设备操作系统上的作品,居然确实没有IBM。在这上做开发,类似于以前的桌面应用开发,依赖于系统提供的开发工具和库。唯一不算坏消息的是MeeGo和Android明确同出自于linux,MeeGo和Symbian都明确支持QT。在这时候选择学习的方向,好比赌博,没有权威依据。
由巨头们的动作可见,一些原本在计算机上完成的工作,确实要转移到移动设备上了,手机、平板电脑、上网本,按屏幕尺寸排队。我们的计算机还能做什么,或者说有什么优势?我想到一个,最方便的操作工具“键盘”!键盘的确比鼠标快,键盘也比触摸快。这个“原始的笨家伙”,居然单骑救主了。键盘是与人直接接触最多的东西,我们改变不了人类手指的大小和数量,只能用键盘吧。单机cpu的性能已经很高,不适合有更高的性能来配合低速的外设——“人脑”,那么对于个人用户的应用来说,计算能力终究会饱和。芯片厂商的下一个着眼点必定是非个人应用计算,OK,IBM or MicroSoft?云计算?微软仅仅是在改变B/S模式的链接方式,Google也相差无几。IBM在用自己的家底改变社会的基础设施管理方式,做最有价值的计算,而不是最有价值的计算方式。
第三、曾经的windows程序员在干啥?招聘网站搜索结果中职位最少的一个小行当。他们在写病毒或者分析病毒。现在的杀毒公司完全是自己玩自己。由此可想,逻辑计算向集中的地方转移(数据中心和计算中心),下一个安全焦点将是双方的链接点——浏览器,或者垄断桌面的应用。做一个javascript程序员将有机会成为“骨灰级系统C程序员”一般的人物,可悲的是,北方市场,少有公司专门招聘专职javascript程序员的,悲哀!
第四、Linux/Windows驱动开发如何?这可以套用我面试时一直说的几句话:“计算机的出现是为了解决人的问题,作为工具,人们会把它向着更强更简单的方向改进,所以凡是以计算机科学本身作为下游的工作都会变得更简单;相反,人的需求随着想法和欲望的增长在不停的改变和增长,所以做以人的想法为需求目标的工作会越来越多、越来越重要。”以我了解的Linux驱动,不会比Struts之类的框架难,差别是,驱动工程师在做机制,相当于增加框架的能力,应用工程师在机制下用策略满足需求,在用框架。
怎么结尾呢?我们拭目迎接移动计算时代的到来吧!