北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
我总能看到一些公司在招聘广告里这样描述他们的岗位要求:“有丰富的从零开始构建 iOS 及 Android 应用的经验;精通移动及 Web 技术,包括 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。为了掌握各种新知识,这中间的每次技术转变我都花了几年时间一边做一边进行大量的学习。