对程序员说点实在话

  1. 我个人是一个程序员,关注web、分布式和数据处理。

    我将web看做最流行的、天然跨平台的展现和可视化技术,将分布式看做程序协作、协作程序的最适架构,将数据处理看作需要基础、技巧、认知、视野以及领域知识兼而有之的事,所以做数据处理,会提升基础、技巧、认知、视野以及领域知识。

    这些都是废话,还挺绕,但理解废话,对我来或,可能不是那么简单的事。

  2. 我认为能力的提升来自厚积,所以对于基础的东西,应该保持持续的热情。

    认为基础应该包括但远不限于

    数据结构和算法

    算法

    网络(tcp/ip、p2p、http等等)

    计算机体系和操作系统(内存管理、高速缓冲与缓存、线程与并发、资源与争用、CPU周期、局部性原理等等)

    认为以上基础永远没有精通一说,至少在我这个智力层次看来。比如你看到严蔚敏数据结构了,挺好,你又看了算法导论了,更好,能看看普林斯顿的算法,你挺不错,你又看了些论文,而你确实又用vim、emacs、vs、eclipse或者sublime敲了,那你应该可以一眼就看出满世界的博客的算法文章中的纰漏和层次,那你还是有点功力了。

  3. 知识结构的重要性与项目经验会相互影响。同样的项目,类似的角色,因为知识结构的不同,带来的提升和总结也会不同,这种提升对于下一个项目或者更复杂的项目带来的裨益也会有所差别,更长的时间之下,这种差别巨大到值10W还是100W。

    有十年工作经验,还是一件事重复了十年,差别可能就在这里。

  4. 认为类似“精通java”之类的说辞是存在的,但不谈JVM是耍流氓。类库和框架的熟悉来自工程和项目,可以熟悉一个简单的API,也可以追着理解AOP,可以应用地很简单也可以很复杂。如果关注性能的场景,那么应该自觉地关注JVM。但是JVM是浩大的工程,所以理解它是一个长期的过程,所以精通是一件比较困难的事。但是很多常用的场景,比如BufferedReader和FileChannel、mmap都可以是I/O的一种选择,何者更加适合,往往要看虚拟机里面和操作系统做了些什么,才会理出最佳实践,附带的,对Xss、Xmx、directMemory之类的简单配置也会有更深的理解。同时有助于看到基于虚拟机的语言的局限,比如HBase的BlockBuffer本身是提高读取的效率的设计,但因为JVM的堆和GC机制,这个设计可能会拖垮HBase。

    这一点同样应该适用于C#&CLR。

  5. 工作了多年的人都会认为或者自恃自己在某些方面达到精通的水准,有的人的确达到了,但附带着会有些装、虚伪和极爱抖机灵,他不会和你好好地探讨问题。这种人可能会存在于朋友、同学、同事、上司当中,一个程序员不会活在独立的容器之中,除了在实力方面要保持自信和谦逊以及付出更多的努力之外,还要注重坚持自己的一些原则而不受一些不够正能量的企业文化、圈子文化影响,做自己,才能更好的对待技术,才能给雇主带来更佳的气场感受和实际价值。

    这个世界不缺乏喷子,有的喷子本身也很厉害,甚至比自己厉害的多,这是他们活着的方式,情绪控制不是什么技巧,你理解的越透彻,你就越能看清什么是喷子,什么是恨铁不成钢。

  6. 关于技术实用论,总有一种观点是没去过美国就不应该知道星条旗。比如,不是每个公司,每个程序员都会接触到大数据,但是人类在没有飞天的远古,就已经通过图腾和壁画来开启文明的探索和解读了,这种东西,其实是信仰的力量,说俗一点就是兴趣所在,再俗一点,就是机会总是留给有准备的人,愿意不愿意准备看态度和理解,准备了能不能够将来用得上,看机遇,实力和运气都挺重要,但运气你控制不了。
  7. 人类的大部分知识来自间接渠道,比如阅读书籍、观看媒体、道听途说,离开了学校,但并没有离开知识的媒介。好的知识来源,比好的学习方法更加重要,这通常也是牛逼的院校和不牛逼的院校的主要区别。有的学校的老师在微博还在成长的阶段就开始讲授社会计算了,如果你没有这个知识渠道,应该不会认识到ETL、数据挖掘和倒排索引的意思,可能你已经熟练的修改、添加、编译lucene了。

    但是,再好的知识,离开了实践,均不会得到升华,认为一个好的程序员,应该关注代码和实现,但应该摒弃简单copy原则,虽然copy大多数情况下对付工作够用了。私下里,一段关键代码写个十来遍真傻,挺蠢的,但如果每种写法有个思考和理解在里面,有选择地这么做了,再看设计模式和重构,哦,真是这么回事,用茴香豆的方式当傻子不是那么不堪忍受的事,至少理解了什么是错误,什么是差别,也给你创造了工作之外的提升场景。

  8. 很多人持这种观点,中国人,技术都是差的,也是写不出hadoop的,挣钱最重要,但自己又觉得自己很厉害。

    其实将写出hadoop和挣钱作为标准,这个观点本身就太局限了,人这辈子,钱当然重要,写出能用的hadoop还是写出mini操作系统还是mini虚拟机,都不必太当回事,阅读源码和自己实现所营造出的理解深度天上地下,这种愚公移山的做法,更多在于逼迫你去了解更多、更准、更深刻。大部分hadoop专家,其实都是仅仅看了源码而已,就已经能出书了,事实上很多公司在实际中也只是跑一些很简单、很成熟的挖掘算法,爱奇艺的工程师做线性回归也是实用即可,大部分公司还是在处理日志,有时候想了很牛逼的算法,还没有换成SSD重要,所以没那个环境,没那个条件,就不研究了?我想不是的。

    关于挣钱,我觉得,只要兴趣所在,能把事做好,钱自己就会来。收入上不去,往往是做的事情就不在高收入的那个区间,写程序很难出富翁。说实话,外围一天的消费可能就是你工资的好几倍,不用说外围的收入了。夜总会想玩的high一点不开两瓶路易十三,可能还会被小姐骂伪土豪,你不送你喜爱的红、蓝、绿牌花束,你都不好意思和她回小区或者宾馆探讨遗传算法。

    那么和外围一起探讨遗传算法的王总、李工的收入更不是写程序的可以比的了。

    所以不要太刻意地把写程序这件事和挣钱挂起来,局限了你挣钱的本事。

时间: 2024-08-09 10:44:20

对程序员说点实在话的相关文章

给年轻程序员的几句话

      找其他开发人员合作开发.我们正处在科技历史上第一个绝好的时代,你几乎不用在意在哪工作.为谁工作.只要你有一个还过得去的网络,你就可以和另外一个在世界任何角落里的人一起来完成某段程序.我知道,越来越多的有经验的开发人员开始把他们的一部分时间投入到这种知识共享里.        阅读经典著作:<代码大全(第二版)>, <程序员修炼之道>, <程序设计实践>, <设计模式>等.       阅读WikiWiki (有时也被称作WardsWiki).这一

为什么程序员话少钱多死得早?-一位人生悲惨的程序员与你讲述其中原因

引子: 有一个段子:女人爱找程序员当男朋友,因为程序员话少钱多死得早. 哇咔咔,哈哈哈. 其实最开始听到这个词的时候我是拒绝的.因为我觉得我话挺多的,无论和谁,只要唠开了,就能滔滔不绝的唠下去: "哎呀老铁,你说的太对了,还有个事跟你说说--&%--¥--%--()&--%&%¥%--&". 所以我在想,程序员都是话少吗?不一定吧,像我和我的同学,都是话很多啊.但是经历过很多事的现在,再想想,发现事实的确如此,程序员确实话少. 为什么有人说我们话少: 首

为什么国外程序员爱用 Mac?

from http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒.那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因: 1.Mac OS X 是基于 Unix 的.这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到.

程序员 需要 十个改变的

(1)程序员需要成长,就得需要放下一些东西,收敛一些东西. (2)一提到程序员,大家马上想到的就是其貌不扬,衣着不潮,目光呆滞,加班干点,朝五晚九的等等,正如外界的所尊称的"嫁就嫁程序员,钱多话少死的早!!!" (3)程序员的交际面很窄,在技术上鄙视一些使用computer的人员,记住程序员管电脑叫计算机,鄙视那些只会用鼠标点这点那的人,更可气的是它还鄙视它的同类(同行). (4)程序员脑子不笨,但是处理人情实物去总是碰壁,由于长时间和计算机打交道,对外界事物反应慢:脑子切换的比较慢,

高效程序员的 7 个共同特征

http://www.oschina.net/translate/seven-traits-of-effective-programmers 导读:要想成为一个伟大的程序员,需要的可不仅仅是能够编写出可以正常运行的代码.Justin James给出了能够成为业内顶尖高手的程序员应该具有的几个典型特质. 要想成为高效的程序员,你需要具备一定的综合素质才能够让你用你所掌握的技能.经验和知识编写出有效的代码.有一些开发人员在技术方面具备一定的技巧,但他们永远无法成为高效的程序员,就是因为他们缺乏所需的

漫谈程序员系列:让程序员蛋疼的那些事儿

听说嫁人要嫁程序员,钱多话少死得早.这话多半是程序员自己黑自己的.程序员是有非常特别的幽默感的一群,善于自嘲,勇于自黑,耐受力超强,很多事无可无不可,不到是不可孰不可忍不会冲冠一怒.不过,就是这么 nice 的人,也很有一些受不了的事儿. 需求变化 为什么把"需求变化"排第一呢? 因为有人说:杀一个程序员不需要用枪,改三次需求就可以了. 由此可见,需求变化的杀伤力有多强. 我见过不少程序员,和产品经理(需求人员)关系紧张,话不投机半句多,或者关公秦琼比脸红.在程序员看来,往往需求一句话

高效程序员的7个特征

有些程序员虽然具有一定的经验技巧,但是他们无法成为高效的程序员,因为他们缺乏所需要的几项特质.业内顶尖高效的程序人员都具有哪些特征呢? 1.主动学习新的技术和非技术两方面的知识 不好的程序员只有在实在不行的时候才开始进行知识学习.良好的程序员会主动学习新的技术知识.伟大的程序员不仅会自行学习新的技术知识, 而且还会学习非技术方面的知识,对各种知识来源都有一种开放的心态,而不会象有的人那样固步自封. 具体点说,不好的程序员只有在参加了采用WPF的项目时才开始学习XAML;良好的程序员一年前就学习了

程序员不可不知的英文词汇(3)

小小吐槽:要嫁就嫁程序员,钱多话少死的早.为什么我现在还是单身呢?为什么我现在还没涨薪呢?我话确实少,死的早的可能性不排除,可是,我不做程序员我又能去做什么呢?苦力,一双敲了好几年键盘的小手能干的起吗?文员,平时习惯了使用word等一些工具,拿起笔杆还有些抖抖的,会计,早就把算法放在第一位,还哪有心情去搞各种的计算公式.好吧,今生已与程序员结下了不解之缘! 好吧,既然当程序员,就当一个牛逼哄哄的程序员,英语当然不能示弱!!! data 数据 data connection 数据连接(for da

新程序员学习提高路径

昨天几名新同事做入职测评,在讨论如何学习提高工作技能时,大家要求推荐几本开发方面的书籍. 回家整理了一下,特推荐如下: 1.开发基础 重点推荐(前端):<编写高质量代码-web前端开发修炼之道> 推荐原因:前端开发入门提高的好书,看完它,不会使你立刻成为前端高手,但是至少能让你明白前端(CSS.JS)是如何组织的,前端到底会有什么共性的问题,以及这些问题是如何解决的.为进一步看懂一些主流框架(jquery,ExtJs等)的实现原理奠定基础. 重点推荐(java):<head first