程序员如何选择技术方向

程序员如何选择技术方向

池建强12月09日 17:53

分享到:

程序员 技术方向

分类 : 互联网

摘要 : 程序员三部曲之第三篇「程序员如何选择技术方向」——两个励志小故事

http://chijianqiang.baijia.baidu.com/article/39179

最近写了「当程序员老去」「程序员真正的价值」两篇文章,传播甚广,今天是第三篇:「程序员如何选择技术方向」,史称「程序员三部曲」。

那之前写的几篇程序员文章算什么呢?算前传吧。以后再写程序员文章算什么呢?算后记吧。

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 、 bind 、 Ldap 、 PVM 、 MPI 、编程自动化、 Linux 核心代码, JDK 源码, GLibc 源码, Apache 源码、常见的网络协议内部实现、网络通讯……是真的精通

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

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

都是98年毕业的,人和人的差距怎么那么大呢?无语泪千行!

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

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

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

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

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

立足平台,你会站得很稳。立足一个点,你可能摔的很惨,就是这样。

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

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

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

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

时间: 2024-10-04 16:21:42

程序员如何选择技术方向的相关文章

不要再迷茫了,程序员如何选择技术方向

最近写了「当程序员老去」「程序员真正的价值」两篇文章,传播甚广,今天是第三篇:「程序员如何选择技术方向」,史称「程序员三部曲」. 那之前写的几篇程序员文章算什么呢?算前传吧.以后再写程序员文章算什么呢?算后记吧. 2008年秋天的一个午后,温暖的阳光透过落地窗落在我面前这个长长的写字桌上,桌子对面坐的是一个瘦小的程序员,他的名字叫小明,小明有些茫然,他看着我,不知道该说些什么. 程序员都是很严谨的,我不得不首先发出一个 System Call: 你在客户现场这半年做什么工作? 写单元测试. 还有

程序员怎么选择发展方向

程序工作二三年后,基本上都会考虑自己以后怎么发展.发展的路径不外乎以下: ①程序员-系统分析员-架构师-技术经理-CTO ②程序员-项目组长-项目经理-项目总监-CTO ③程序员-产品设计师-产品经理-CTO 到底哪一条发展的路线更加适合你呢? 程序员职业生涯发展到一定程度都会面临一个选择,是走业务+技术方向,还是选择纯钻研技术.程序员职业生涯 发展的问题,这是所有程序员都在关心的问题,未来究竟要怎么走,30岁之后还能不能再做程序员. 绝大多数程序员最终的职业目标可能都是CTO,做到CEO的人估

程序员未来的发展方向……(猿媛必看)

程序员未来的发展方向--(猿媛必看) 提交 我的评论 加载中 已评论 程序员未来的发展方向--(猿媛必看) 2015-08-14 CSDN博客 程序人生 程序人生 程序人生 微信号 coder_life 功能介绍 分享CSDN社区中最优质的博文.最精彩的讨论.最实用的开发资源,并不定期奉送CSDN社区的各种福利. ↑ 点击上方"程序人生"关注我们 程序员工作两三年后,基本上都会考虑自己的未来发展方向.发展的路径不外乎: 程序员-系统分析员-架构师-技术经理-CTO程序员-项目组长-项目

程序员有哪些发展方向

程序员职业生涯发展到一定程度都会面临一个选择,是走业务+技术方向,还是选择纯钻研技术.程序员职业生涯发展的问题,这是所有程序员都在关心的问题,未来究竟要怎么走,30岁之后还能不能再做程序员.涂雅(网名)的一篇博文<程序员有哪些发展方向>可以给您一些建议.现把此文转载于此,希望您能从中得到启发,定下自己的宏伟目标. 提示:本文适合有2年及以上工作经验的程序员,对于刚入职或者即将职的程序,建议阅读涂雅写的另一篇文章:<写给新入IT的新人们> 程序员职业生涯发展到一定程度都会面临一个选择

程序员的选择-真实的故事

选择做为程序员这条道路已经快7年了,其中面临过各种各样的方向选择,也不存在什么对与错,能开心的生活就好. 故事一: 去年认识一个另外公司的技术负责人A,06年毕业,毕业后一直在做linux内核驱动开发.因为一个安卓APP项目,他们公司和我们公司有过一些合作.当时我负责APP与硬件端的Socket通讯方面模块开发,他负责硬件部分的通讯模块.就这样两个人一起喝了几次酒后开始变得熟悉起来.他说他厌恶透了linux内核开发,无聊的代码,无聊的项目,而且很难看到自己的成果物.他特别想做安卓等上层应用的开发

女程序员如何选择?

最近一个问题很困扰我,今天则得到了答案,也意味着我该选择了. 不知道大家有没有遇到过这样的情况,我是上年刚毕业,大四时进行过java培训,12年9月-13年4月,在这之前已经自学过java.7月份时进入一家公司工作,今年3月份辞职,4月份找到工作,来上班了.一开始就不太喜欢公司氛围,前台,hr,态度什么的都不太好,工作环境也极像客服部,整天电话不断,讨论声不断,第一个星期真是煎熬,去了两三天之后有辞职的想法,但是后面想想还是算了,公司待遇还可以. 但是进入到公司后leader让学PHP,学PHP

黑马程序员 ---------- Java网络技术之 ---正则表达式 (Day06)

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 正则表达式 正则表达式:基本知识 1  字符,   2 字符类 , 3 预定义字符类 , 4 边界匹配器 ,5 Greedy 数量词,6 Logical 运算符 详解: 1 字符 x   字符 x \\ 反斜线字符 \0n 带有八进制值 0 的字符 n (0 <= n <= 7) \0nn 带有八进制值 0 的字符 nn (0 <= n

老菜鸟致青春,程序员应该选择java 还是 c#-

致青春 还记得自己那年考清华失败,被调剂到中科大软院,当初有几个方向可以选,软件设计.嵌入式.信息安全等等,毫不犹豫地选择了信息安全. 为什么选信息安全?这四个字听起来多牛多有感觉,我本科是学物理的,记得做一个光学实验的时候,一个老师看我做的结果,说,学物理不是什么人都可以的,这个是需要一点智商的. 好吧,当初其实并非对我一个人所说,但我确实感觉到受到了鄙视,同时,我没有任何在物理上的精湛技艺可以反击我的老师. 由于整个大学期间,我都在沉迷游戏和小说,以至于辅导员说,现在找你都得预约. 而我的同

程序员未来发展三大方向

程序员工作两三年后,基本上都会考虑自己的未来发展方向.发展的路径不外乎:程序员-系统分析员-架构师-技术经理-CTO,程序员-项目组长-项目经理-项目总监-CTO,程序员-产品设计师-产品经理-CTO.哪一条发展路线更适合你? 当然这只是一个大致的路径,不是所有程序员都必需要这么经历的,有些人可能跳过其中的一些步骤,也可能有些人会把中间的很多职位都做了.而最终做到CTO的程序员,也是非常少的一部分,原因很简单,这个世界上不许要那么多的CTO和CXO. 也就是说,许多的程序员最终可能是做技术经理.