我总能看到一些公司在招聘广告中这样描述他们的职位要求:“从头开始构建iOS和Android应用程序的丰富经验;精通移动和网络技术,包括Java、HTML5、CSS3、JavaScript和AJAX。”(但世界上没有这样的人):一个人只能在一个(技术方向)真正精通,而在其他方向表现平平。你也可以在掌握了一种技术之后转而使用另一种技术,(但这会让你很快)忘记前者的很多细节。这可能足以轻易愚弄很多人,让他们认为您是无所不能和无所不知的——但是当涉及到棘手的问题时,您只是幸运而已。今天与过去不同。任何一个主流领域的技术都是相当复杂且不断变化的,需要大量的时间。如果只是利用业余时间学习,很难跟上某个技术领域的最新发展,更谈不上从零开始“精通”这门技术了。因此,只有参与真正的项目,才能真正学到一个新的(技术)环境。又有多少人可以同时参与到大型原生Android、iOS应用和响应式web客户端程序的开发中?在过去34年的编程生涯中,我很少同时从事多个技术领域的工作。我的第一份工作是在Supermini上开发,然后我为Apple编写了6502程序集,为PC编写了Pascal,我的两个初创公司都是在Mac和C上开发的。在为其他公司(包括Apple)工作时,我使用过C,有点C++、Objective-C/WebObjects,然后转向基于Java的前端和后端Web开发(但很少同时进行)。后来,我写了一些JavaScript,我做了基于C++的游戏编程,最后,我现在做的:Objective-C和iOS。为了掌握各种新知识,我花了好几年的时间做中间的每一次技术变革,边做边学。如果因为某种原因,某人真的同时擅长Android和iOS,甚至是Web,那么作为一个真正的多面手,我认为他的期望薪水会比大多数公司愿意支付的要高得多:公司实际上是政府只想在最低的薪资水平上招几个“什么都能做”的人,节省成本。我至今无法理解一个人如何同时成为多个领域的专家,如何掌握不同的技术,开发不同平台的应用,与时俱进。我认识一些才华横溢的人,但我不记得有一个人能够兼顾多种技术并构建出体现精湛技艺的应用程序。嗯,可能会有一些例外,但我始终认为大多数人做不到这一点。虽然一个人可以先精通一门技能,然后再尝试精通另一门,但在这个过程中,难免会忘记很多以前的知识。去年我坐了几个月,等着被解雇(公司所有的技术都过时和更换了,他们开始打折销售整个品牌,所以很明显我被解雇只是时间问题).我做了一个月的C++开发,然后是Node.js,最后是Swift。回顾这一年学过的这些技巧(我的新工作用的是Objective-C),发现学过的东西大部分都忘记了。如果它不是您经常使用的东西,它肯定会很快被遗忘。当我用PHP重建我现在的博客系统时,我已经掌握的所有语言在我脑子里都是一头雾水。如果你使用过Objective-C,然后使用Swift进行iOS开发,那么两者之间至少有一些重叠。但Android开发与iOS相比不仅仅是另一种语言:你需要掌握完全不同的开发工具、布局方式,以及如何支持多个版本的操作系统并兼容24000多款Android设备。另一方面,仅仅跟上今年6月在WWDC上宣布的新变化将需要大量工作,而且苹果发布的示例代码与最新的Xcode测试版不兼容。就算你每天都能看最新的视频,看最新的文档和示例代码,不写代码,你哪有勇气称自己为专家?除了Android和iOS这两个截然不同且复杂的移动开发环境,现在的Web开发也增添了不少乱象,尤其是各种JavaScript框架层出不穷,跟得上它们的变化真是需要超能力。从我共事过的JavaScript程序员来看,他们甚至跟不上单一框架的变化(好吧,我说的是AngularJS)。所以如果你找到这样的候选人,他/她:iOS和Android开发很容易,JS桌面/移动web编程是小菜一碟;熟练使用现代风格的API并兼容各种旧版本的OS,各种UI设计方法的优缺点,许多浏览器功能和Android设备异常是众所周知的,您始终可以在创纪录的时间内交付无错误的产品。..那么你真的赚了很多钱——顺便说一句,他应该愿意以市场价支付更少的钱为你工作。当我开始编程时,一切都是原始而简单的。我只需要掌握一种语言,一种操作系统,而不是任何框架。即使在我的两个初创公司,我也只需要知道C、知道Macintosh和偶尔的68K汇编。时代变了,但我们仍然有一个不遵循摩尔定律的大脑,无法升级。最后,如果你能(真的)同时做Android、iOS、移动Web开发,写出大师级别的作品,我向你致敬!当然,同时也希望你们也能拿到应得的三分。双薪。
