程序员,你能真正掌握多少编程技术?
我总能看到一些公司在招聘广告里这样描述他们的岗位要求:“有丰富的从零开始构建 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。为了掌握各种新知识,这中间的每次技术转变我都花了几年时间一边做一边进行大量的学习。
如果出于某些原因,有人真的能够同时精通 Android 和 iOS,甚至是 Web ,那么作为一个真正的全才,我想他的期望薪酬会远远高出多数公司愿意给出的价格:公司实际上只想以最低的工资水平招几个“什么都能做”的人以节约成本。我至今无法理解有人能够同时成为许多方面的专家,以及他们怎么能同时掌握不同的技术、开发不同平台的应用并与时俱进。我认识一些才华横溢的人,但我不记得有哪一个能够像耍杂耍一样将多种技术玩弄于股掌之上,并开发出能体现精湛技艺的应用。
好吧,可能会有一些例外吧,但是我始终认为多数人做不到这一点。一个人固然能先精通一种技能,然后再尝试精通另一个,但这个过程中必然会忘记很多前面的知识。去年我有几个月无所事事,等着被公司解雇(公司所有的技术都早已经落伍被替代了,他们开始把整个品牌打折出售,所以显然我的下岗也只是早晚的问题)。我花了一个月做了一些 C++ 开发,然后是 Node.js, 最后还搞了一段时间 Swift。今年再回顾这些学过的技术时(我的新工作用的是 Objective-C),我发现我已经忘了之前学到的大多数内容。如果不是经常使用的东西,肯定会很快被忘到脑后。当我用 PHP 重新搭建我现在这个博客系统时,我掌握过的各种语言在我脑袋里全都糊成了一片。
如果你用过 Objective-C、然后使用 Swift 做 iOS 开发的话,那至少两者还有一部分重叠。不过 Android 开发跟 iOS 相比可不仅仅只是另一种语言的差别了:你需要掌握完全不同的开发工具、布局方法,以及如何支持多个版本的操作系统,并兼容 24000 多种安卓设备。另一方面,单单要跟上今年六月 WWDC 里发布的新变化就要花很大的功夫,Apple 发布的示例代码并不兼容最新 beta 版的 Xcode 更是雪上加霜。 就算你能不写代码,每天能看完最新的视频、读完最新的文档和示例代码,不过这样你又哪来的勇气称自己是个专家呢?
除了安卓和 iOS 这两个截然不同的复杂移动开发环境,现在的 Web 开发也添了不少乱,尤其是此起彼伏层出不穷的各种 JavaScript 框架, 要跟随它们的变化真得有三头六臂才行。而且从跟我共事过的 JavaScript 程序员来看,他们甚至连一个框架的变化都跟不上(嗯,我说的就是 AngularJS)。
所以如果你找到这样一个人选,他/她:iOS 和 Android 开发不在话下、JS 桌面/移动端 Web 编程小菜一碟;熟练运用现代风格的 API 又能兼容各个老版本 OS,各种 UI 设计方式优劣如数家珍,诸多浏览器特性及安卓设备特例了然于胸,还总能以破纪录的时间交付无 Bug 的产品…那你就真的赚大了——对了,他应该还愿意以低于市场价为你工作。
回想我开始编程那会,一切都原始而简单。我只需要掌握一种语言,一种操作系统,而不需要任何框架。即使在我的两家初创公司,我也只需要掌握 C 语言,了解 Macintosh 和偶尔的一些 68K 汇编。时代变了,但我们还是只有一个并不遵循摩尔定律、也没法升级的大脑。
最后,假如你能(真正的)同时做 Android、iOS 和移动 Web 开发,并写出大师级的作品的话,我要向你致敬!当然同时,我也希望你也能拿到你应得的三倍酬劳。
程序员,你能真正掌握多少编程技术?相关推荐
- 成为优秀程序员需要具备的15种编程技巧
来源 | https://www.linuxmi.com/chengxuyuan-15-jiqiao.htm 编程是一个告诉计算机如何工作的术语.通过编程,我们可以轻松操作任何技术.就像所有人在特定地 ...
- 转载:每一个程序员要遵守的一些优秀编程风格
无论你是业余的还是专业的程序员,正确的编程风格,不但有助于提升软件产品的功能,还可以明显减少软件灾难的产生.今天,我们就来探讨一下有助于我们获取更佳编程风格的一些最好的规则. 每一个程序员要遵守的一些 ...
- 程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结
程序员面试.算法研究.编程艺术.红黑树4大经典原创系列集锦与总结 作者:July--结构之法算法之道blog之博主. 时间:2010年10月-2011年6月. 出处:http://blog.csdn. ...
- unix入门经典_程序员大神们的经典编程语录
作为程序员的你,下面这些程序员经典语录请您认真来读一读,也许此时此刻会有不一样的心得体会与收获. "大多数优秀的程序员从事编程工作,不是因为期望获得报酬或得到公众的称赞,而是因为编程是件有趣 ...
- 程序员为什么非得参加一场编程竞赛?
对于程序员来说,没有参加过编号竞赛的人生是不完整的? 作者 | Codersera 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 众所周知,编程竞赛是在比 ...
- 程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结
程序员面试.算法研究.编程艺术.红黑树.机器学习5大经典原创系列集锦与总结 (七月在线:https://www.julyedu.com/,面试 & 算法 & 机器学习在线课程) 作者: ...
- 神级:程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结
https://blog.csdn.net/v_JULY_v/article/details/6543438 https://blog.csdn.net/v_JULY_v/article/detail ...
- 【转自JULY大佬】程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦
感谢原作者分享,转载自 https://blog.csdn.net/v_JULY_v/article/details/6543438 程序员面试.算法研究.编程艺术.红黑树.机器学习5大经典原创系 ...
- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结
点击打开链接(具体详情 点击链接) 程序员面试.算法研究.编程艺术.红黑树.数据挖掘5大经典原创系列集锦与总结 (七月在线:点击打开链接,面试 & 算法 & 机器学习在线课程) 作者: ...
- 程序员必备的5大有趣编程网站,学编程就像玩游戏一样!
学编程最重要的是实践,就是写代码.看别人写的代码.再写代码. 要掌握编程这一门手艺,要经过大量的训练. 如果编程练习可以变得有趣,那你一定可以乐此不疲,长期坚持. 下面w3cschol分享5个有趣的编 ...
最新文章
- python turtle画画 30排以内_Python竟能画这么漂亮的花,帅呆了(代码分享)
- openssl 生成公私钥
- HDU-4568 Hunter 状态压缩
- MySQL使用concat实现连接
- 在 IntelliJ IDEA 中远程调试 Java 程序
- 他是绝世天才,却只开了半辈子的挂!死后惨遭封号200年,这就是和牛顿抬杠的下场.........
- LeetCode 1863. 找出所有子集的异或总和再求和(DFS)
- beautifulsoup 搜索第二个标签_自定义网站搜索教程
- Android-返回桌面?退出程序?
- 听说……明天上线?!
- C++ string和wstring互转实现
- Centos6.5之yum安装LAMP+wordpress
- 如何用Java写QQ机器人 v2.0
- PMP学习笔记 第5章 项目范围管理
- 白天工作效率低,晚上效率高怎么调整过来?
- 迈向大神之路day006
- Neural Approaches to Conversational AI Question Answering(问答,任务型对话,闲聊)
- (一)--使用RSA公钥证书解密
- 面试官筛选简历,注重以下几点
- 制作 docker 精简 jre8 基础镜像