《MacTalk 跨越边界》一一2.2程序员如何选择技术方向

2.2程序员如何选择技术方向

MacTalk 跨越边界
最近写了《程序员真正的价值》和《当程序员老去》两篇文章,传播甚广,今天是第三篇——《程序员如何选择技术方向》,史称“程序员三部曲”。

那之前写的几篇程序员文章算什么呢?算前传吧。以后再写程序员文章算什么呢?算后记吧。
2008年秋天的一个午后,温暖的阳光透过落地窗落在我面前这个长长的写字桌上,桌子对面坐的是一个瘦小的程序员,他的名字叫小明,小明有些茫然,他看着我,不知道该说些什么。

程序员都是很严谨的,我不得不首先发出一个System Call:

“你在客户现场这半年做什么工作?”

“写单元测试。”

“还有呢?”

“没了,就一直写JUnit。”

“别人也写单元测试么?”

“没人愿意写单元测试,只有我写。”

……

“你为什么想来研究院呢?”

“我想写一些真正的程序。”

“什么是真正的程序?”

“比如Java,比如面向对象编程,你总要写一些类和各种各样的方法,而不是一直写Test Case。 ”

“好的,沿着这个楼梯上三楼,那里有一群和你一样的程序员,他们不仅写Java,还写JavaEE相关的各种程序,你会找到自己需要的东西。”

“真的么?”

“真的。”
那时候我风华正茂,没有现在这么老成持重,阳光照在我的翘着二郎腿的脚面上,一切都显得十分虚幻,在小明的眼里,那时的我估计很像“黑客帝国”里的墨菲斯,但是他不能确定自己是不是“The One”。小明疑惑地看了我一会,最终还是上楼了。至此,他完成了第一次技术方向的选择。在三楼,他碰到了一群同样严谨的程序员,他不仅学会了写真正的Java程序,而且掌握了部分Web编程和服务器端编程,包括JavaScript、JQuery、Spring、Hibernate、JMX、Web Service等。小明变得快乐起来,渐渐摆脱了注定孤独一生的阴影。

过了一段时间以后,小明已经不满足只写Java相关的程序了。有一天他看到我手里的iPhone和Mac,仿佛见到了初恋的情人,眼中重新燃起了绿油油的光芒,他知道了iOS开发者这回事。很快,他花掉了所有的银子购买了Mac和iPhone,开始日夜兼程,学习iOS开发。他在写Java的间隙编写Objective-C代码,在编译Web App的同时构建IPA,在清晨的微光中调试程序,在每个夜晚与模拟器窃窃私语……他完成了第二个阶段的技术方向选择。

终于到了离别的时候,他要去寻找更大的梦想,经年以后,在南方的某个城市,他成了一个知名公司的iOS主程,并开发出了多个著名的iOS应用,比如“丁香医生”、“用药助手”、“家庭用药”等等,难以想象,如果没有小明,张老师怎么去见小姨子,冯老师何以拯救互联网,二爷怎么鉴书,西湖何以养醋鱼!

第一个故事讲完了,主角小明利用两次主动的技术方向选择,完成了从小球到小牛的逆袭,以至于现在连女朋友都有了。

这时候就有读者要问了,那些大牛是如何做技术选择的呢?

大牛不需要做技术方向的选择,他们需要什么就学什么,学什么就成什么。他们就像掌握了“九阳神功”的张无忌,各种类型的技术和程序到了他们的手里都能发挥出巨大的威力。技术,是他们生命中最重要的组成部分。

如果你们以为我在吹牛我就给你举个例子。我在《MacTalk·人生元编程》中写过一个技术高手,他的名字叫做攀攀。很长一段时间我都不知道他掌握了哪些技术,因为他的技术是我们很多人的超集,我们遇到的所有问题都可以在他那里得到解决,他只是叼着烟翘着腿敲下几行代码而已。后来我才知道,他在高中的时候已经痴迷于计算机了,大学时代自学了大量的计算机相关的知识,在他大学毕业之后,操作系统、数据结构和算法就已了然于胸。

直到最近,我才从网络上拿到一份他几年前的简介,那个时候,他的履历是这样的:

ID:攀攀

性别:男

师门:电子科技大学 98年计算机系

职业:网络引擎设计者

人物背景:精通C、C++、Java、Pascal、Basic、Fortran、Cobol、PL/M、Perl、Python、Lisp、Prolog、Smalltalk、Ldap、PVM、MPI、编程自动化、Linux核心代码,JDK源码,GLibc源码,Apache源码、常见的网络协议内部实现、网络通讯……是真的精通。

武学造诣:决不要把计算机强加给人们的限制认为理所当然,人不是机器的奴隶,把了解机器的限制作为通晓计算机的标准只能是自欺欺人。

游戏感言:IP路由和认证的双重功能将是未来网络游戏发展的障碍,今后的网络应该是以分布式目录服务为基础的,以网络设备为中心,与具体主机无关,集成了广泛的认证与授权能力的网络(全公司上下没有人能听得懂他在说什么,好在大伙儿都已经习惯了)。
都是98年毕业的,人和人的差距怎么那么大呢?无语泪千行!

两个故事讲完了,究竟如何做技术方向的选择呢?答案就飘在风里……

操作系统、数据结构、算法、网络等基础技术应该在大学时代深入学习,如果毕业了你还没有掌握这些内容,那就随用随学好了。学习这些基础理论极为枯燥,只有实际工作中的需求才能给你最大的学习动力去掌握这些艰深的内容。

至少要掌握一门静态语言,比如C、C++、Java、C#、Objective-C等。至少掌握一门动态语言,比如Python、Ruby、PHP等。

推荐学习一些同时具备动态语言特性和静态语言特性的语言,比如Go、Swift、Scala等。这样你会对面向对象编程、面向过程编程、编译型、解释型语言有更深入的了解。

系统地构建自己的知识体系,而不是局限在某个点上。经常有读者问我,我前几年一直在写VBA/ActionScript/Delphi/SQL……现在项目组突然不再采用这些语言了,怎么办?很多人难以预料未来技术的走向,但是你至少要构建自己的技术壁垒和平台。学习Java,就应该构建你自己的JavaEE平台;Objective-C对应iOS/OS X开发平台;C#对应.Net平台;SQL对应数据库平台。如果你在用ActionScript,那你不应该局限在Flex上,你对应的应该是整个前端平台。立足平台,你会站得很稳。立足一个点,你可能摔得很惨,就是这样。

主动选择技术方向比被动等待好。根据自己的兴趣和技术的发展主动选择,就像小明一样,有时候放弃也意味着得到。

不要过于追新,不要每出一门“颠覆性”的语言或技术都投入精力物力。追新的后果很可能是该学的没学会,不该学的学完也忘了。我有一哥们儿,我们都在写JavaScript的时候,他认为Java新推出的JavaFX才是前端的未来……然后就没有然后了。我们都用Java的时候,他认为Erlang才是编程语言的未来……然后就没有然后了,可谓一步早,步步早,让人扼腕叹息。

也不要过于保守,比如Go、Swift、Docker等技术,我个人以为是值得投入时间和精力的技术。

没有8了,写到这里,冬夜已经黑得不像样子。站在阳台望出去,仿佛看着某个巨大IDE的黑色编码主题,我想起了某位大牛的一句话:我不是懂得多,我只是学得快而已。

时间: 2024-10-29 07:12:26

《MacTalk 跨越边界》一一2.2程序员如何选择技术方向的相关文章

《MacTalk 跨越边界》导读

内容提要 MacTalk 跨越边界这是一个程序员的随笔文集,但不是一本技术图书.本书的主要内容来自作者的微信公众平台"MacTalk",书中包含了 5 个主题,分别是:写给走在编程路上的人.文艺中年.自省.跨越和人物,共 60 多篇文章.书中有作者对生活的思考,对边界的探寻,有作者身边的人和他们的故事,其中的一些文字还记录了这个时代的某个剪影,或某段情感. 本书中作者沿用了一贯的科技与人文相结合的风格,文风有趣,又增加了一点力量.作者充分享受着写作的乐趣,书中的文字对作者意义非凡,它们

《MacTalk 跨越边界》一一3.3 千万别惹程序员

3.3 千万别惹程序员 MacTalk 跨越边界 作为一个程序员,看电影的一大乐趣就是观摩电影中出现的那些技术场面.当年看不死小强的24小时,非常痴迷CTU的操作系统,电脑之间的交互操作像Solaris,整体UI看起来又像是定制的Linux,上网Google了半天而不得其解,后来国外一个朋友告诉我,很多国外电影里的操作系统画面为了达到炫酷的效果,都是用Flash做出来的动画,所以你看不到他们敲错程序,也没有人按退格键. 得知了这个消息之后,我怅然若失了很久,一直以来,我以为军方和FBI的操作系统

《MacTalk 跨越边界》一一3.1 程序员真正的价值

3.1 程序员真正的价值 MacTalk 跨越边界 问:池老师,我是个不爱互动的人,但是您所有的文章我都看了,非常感谢您的引导,我入手了人生第一台MBP.现在问题来了,但是找不到更合适的人解答,只能求助于您了,如果您有时间的话.问题是这样的:我有个32bit UNIX file(开启一个服务进程),在Mac上执行时的错误提示是:exec format error,但是在Linux服务器上却可以执行,为何?Mac上有可以运行的方案吗?期待您的回复,不胜感激. 答:Linux和OS X是不同的操作系

《MacTalk 跨越边界》一一1.2 人生如摆摊

1.2 人生如摆摊 MacTalk 跨越边界 最近冯老师在"小道消息"里纵论四海,指点江山,<我看百度>.<我看阿里>.<我看腾讯>--冯三篇横空出世,大家一定要看.我就不凑热闹了,年关将近,给读者写点家长里短吧. 年关前后,大家总是喜欢计划和总结,以期继往开来,在上一次的送书活动中,我看到了很多很好的总结和计划,但是,日子和生活并不因为计划和总结而改变,更多时候,改变我们的往往是偶然和不期而遇. 我常常想起电影"城中大盗"里男主

《MacTalk 跨越边界》一一1.1 40岁了,还有没有路走?

1.1 40岁了,还有没有路走? MacTalk 跨越边界 我还不到30,看这有用吗?当然,再不看就晚了,因为你也年轻不了几年了-- 年轻的时候常常会产生一种错觉,无论看长河落日,望滚滚长江,还是在史书中阅尽人世沧桑,人事渺小,你还是感到,日子会这样一天天长长久久地过下去.至于年老色衰,跟我有什么关系呢?我还是个孩子啊. 等你到了30岁的时候,你会在某个时刻发现,时间怎么变得快了一点呢?但是你并没有在意,你继续奔波,为了房子.车子和老婆孩子奋斗,偶尔晚上看看美剧,偶尔去郊区度个小假,也能自得其乐

《MacTalk 跨越边界》一一2.3 最可怕的产品经理

2.3 最可怕的产品经理 MacTalk 跨越边界很久以前,PM两个字母的缩写代表了Project Manager(项目经理),那是一个软件工程横扫世界的年代,人们为了精准地完成一个软件项目,设计出了各种开发规范和工程过程,项目经理可以制定出细致到每个月.每周和每天的工作计划,最后,项目延期了-- 时至今日,PM早已改弦更张,成为产品经理的代名词,在这样一个以用户和产品为中心.设计和用户体验改变世界的时代里,产品经理被赋予了太多的职责和意义,他们主宰着产品的特征.设计.实现和用户心理,如果负责了

《MacTalk 跨越边界》一一2.1 黑天鹅与大数据

2.1 黑天鹅与大数据 MacTalk 跨越边界如果你像很多爱读书的人一样,比如我,就会知道"黑天鹅"并不是什么新词,这个词源于澳大利亚的黑天鹅.17世纪的欧洲人认为所有的天鹅都是白色的,因为它们从来没有见过其他颜色的天鹅,当然,我到现在也没见过其他颜色的天鹅.到了18世纪初,欧洲人远渡重洋来到澳洲,一上岸就惊奇地发现,居然有的天鹅是黑色(shǎi)儿的!欧洲人吓坏了,因为他们之前那么相信自己的判断,认为世上只有白天鹅,其坚信的程度,和我们小时候赌咒发誓21世纪共产主义一定要实现,是一

《MacTalk 跨越边界》一一3.2 加班到底在加什么

3.2 加班到底在加什么 MacTalk 跨越边界 上一篇访谈是"极客邦"推出的一个新节目,叫做"大牛V课堂",我的访谈算第一期.我并不是什么大牛,只是帮霍老板做下试验罢了,所以应该叫小白鼠.我帮霍老板的极客邦做过不少试验,这次算不错的,还有些试验内容你们可能都没见过,因为我也没见过.做试验有什么回报吗?应该有吧,反正我是每次拿着空头支票就走了,比如吃大餐啊,去国外参加技术大会啊,什么的.然后就看到霍泰稳不停地在朋友圈里晒美国的大餐,法国的美女,西班牙的建筑,等等.

《MacTalk 跨越边界》一一3.4 大数据时代的贝叶斯定理

3.4 大数据时代的贝叶斯定理 MacTalk 跨越边界 今天给大家说说大数据下的贝叶斯定理,算是科普.如果有朝一日你能以之推算出搭讪妹子的成功率,算我一份功劳. 每当有技术热点或新概念出来的时候,人群就会分成三种:炒作的.观望的和踏踏实实干活的.炒作的是不懂的,观望的是保守的,沉下来去研究那些浮萍下面的算法.引擎.框架和语言的人,才是最后吃到果子的人.云计算.大数据莫不如是. 随着搜索.社交网络.电子商务和移动互联网的发展,数据总量和增长速度已经到了常人(注:我这样的人)无法想象的地步.其中数