帖子标记 ‘Programmer’

每个编程人员都需要至少掌握三种编程语言。当然,这只是我的一家之言。这是我经过多年养成的观点,也许是偏见,但我能够根据一个 人所喜欢的编程语言来快速的了解一个程序员。当我读简历时,我会尝试使用我的这套观念按照“这个程序员为什么要使用这种编程语言”进行分类,我通过我的这 些偏见从一堆简历中选出我想要的。

一.快乐的语言

这是一种你用来思考的语言。这是一种你希望无时无刻不在使用的语言。这是一种用来编写自己的项目的语言。对于我来说,它是OCaml (现在还有JavaScript,尽管我正在把CoffeeScript吸收进我的世界里)。对于很多人来说,它可能是LISP 或 Haskell。当一个人告诉我他的快乐的语言后,我能根据这个看出这个人的身上的很多特点。

如果这种语言是一种很深奥的或新的语言,这说明他对编程有热情。

如果这种语言是一种主流语言,这说明他很明智或实用主义。
(全文 …)

从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把 它们献给那些想从中学到更多的朋友。

我会持续更新这些经验,我可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了。下面就是我至今最难忘的经验。

1. 估算解决问题所需要的时间。不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时。为自己定一个时间 限制吧,1小时、30分钟或甚至15分钟。如果在这期间你不能解决问题,那就去寻求帮助,或到网上找答案,而不是尝试去做“超级堆码员”。

2. 编程语言是一种语言,只是一种语言。随着时光推移,只要你理解了一种语言的原理,你会发现各种语言之间的相似之处 。你所选择的语言,你应该觉得“舒服”,并且能够写出有效(而且简洁)的代码。最重要的,让语言去适应项目,反之亦然。

3. 不要过于注重程序的“设计模式”。 有时候,写一个简单的算法,要比引入某种模式更容易。在多数情况下,程序代码应是简单易懂,甚至清洁工也能看懂。
(全文 …)

这两天一直做code review,经常看着看着就有一种要死的冲动。
好的代码,一个老生常谈的问题。结合最近的实践,总结一下常见的问题。

1 了解你的代码
很多程序员并不了解自己的代码。
比如null!=Object,很多人已经不知道为什么会有这样一个编码规范,怕if(Object!=null)写成Object=null通 过判断。我并不喜欢这个规范,因为读起来不自然。

2 不要盲从
一段程序catch一个RuntimeException,把这个RuntimeException封装成一个新的 RuntimeException又抛出来,问他为什么这么做,他说上层的程序catch不到这个RuntimeException,要自己构建一个 RuntimeException才能catch住。而且他还咨询了别人的意见,参考了其他的代码。
我问他这样合理吗,这样可以解决问题吗,一段程序catch不到原生的RuntimeException,凭什么就能catch住你封装又抛出的 RuntimeException。他的最大理由是别人这么说,所以就这么做了。同学,坚持一下自己。你应该知道这是不可能的。
后来发现问题在于打日志的程序写错了,打的是原生的toString方法,所以导致他以为没有catch到异常。
别人的代码catch是为了加入一些自定义错误消息。
(全文 …)

前段时间看了一篇文章,叫做《IT人为什么难以拿高薪》,颇有感触,于是写下这篇文章,希望与各位XDJM共勉~
能够看到这个帖子的每个XDJM,我们大家都不是含着金钥匙出生的富二代,因此,我们的一切成就需要自己的努力,这里面有痛苦,有彷徨,有挫折,我们是否能够咬牙坚持下去?
首先,在中国这么一个人口众多的国家,尤其是在北京、上海这种一线城市,如何脱颖而出很重要,本科学历,四级证书已经成了最基本的标志(这里没有任何歧视意义,但是如果没有学历,很多垃圾公司会连面试的机会都不给),不用给我讲个例说有些人高中没毕业也能很成功,是,我身边就有一个实例,我曾经面试过一个90后的小男孩,高中都没毕业就不喜欢上学,只是酷爱系统运维(注意,我写的是酷爱)。第一次面试就让我感觉其非常有潜力,于是将他介绍给我前公司的老板,现在,差不多半年的时间,他的薪水已经由3.5K上升到了13K,远远高于我在公司时的薪资水平,呵呵,为什么,因为他玩命到疯狂的地步,每天没有任何的生活空间,坚持每晚2-3点才睡觉,疯狂的学习Linux系统运维的一切知识,诸君,如果你没有这份坚持与执着,那就认真去考个学历,并且把英语搞好,我不是说有了这两样东西就会成功,你同样需要努力,但是相比之下,机遇更多一些~
(全文 …)

很早就想写这么一篇文章了。我离开中国雅虎已经一年有余,在中国雅虎工作的那段时光是我最珍贵的回忆之一,和以前的同事吃饭聊天的时候也经常会怀念 一下中国雅虎,怀念得多了,就觉得不如写篇文章好好回顾一下。很多事情虽然已经过去,但有些话不说出来,到底意难平。

从2008年7月份毕业之后加入了中国雅虎,到2009年9月份跟着中国雅虎工程技术部全体人员“被跳槽”到淘 宝,我在中国雅虎只呆了一年多的时间。这个时间并不长,甚至可以说短得可怜,所以我或许不是写这篇文章的最佳人选。但是,中国雅虎给我的是人生第一份工 作,凭着初生牛犊对社会的好奇心,我对公司的文化、技术、架构、流程包括产品设计等各个方面都有浓厚的兴趣和广泛的了解,从这个方面来说,由我来写这篇文 章也是合适的。而且最重要是,我愿意把它们写出来。

在进入正文之前,先开诚布公地声明一下:众所周知,中国雅虎是阿里巴巴的一个子公司,所以文中我也不必遮遮掩掩地用“某电子商务公司”来代替。而且 我对阿里巴巴这个公司有意见,不代表我对阿里巴巴的员工有意见,如果伤了某些人的 感情,先说声抱歉,请您发扬一下风格,在这里也“拥抱变化”一下。

正文:

我在 2007 年底通过校园招聘拿到了中国雅虎的 offer ,但实际上在我2008年7月份入职的时候,中国雅虎的品牌虽然还在,公司却已经在7月9日和口碑网合并了,改名叫做“雅虎口碑”。尽 管这样,到现在为止我还是厚着脸皮说自己原来是雅虎的,因为那里让我着迷和真心喜欢的东西全部都是紫色的,而不是橙色的。

雄厚的技术实力

中国雅虎最好的一个地方就是它和 Yahoo! 全球共享同一个技术平台,那是一个有十几年历史的技术平台。Yahoo! 的技术文化不如 Google 的工程师文化那么有名,但 Yahoo! 在相当长的一段时间内都是互联网的旗帜,吸引了全球大量的技术牛人加入,Yahoo! 的技术平台就是他们的知识、经验和心血日积月累的成果。尽管阿里巴巴收购了中国雅虎,但是在技术方面并没有对中国雅虎做出太大的改造(幸好没有改造),所 以就工程师来说,每天更多接触到的还是 Yahoo! 的东西,而不是阿里巴巴的东西,对我影响最大的也正是这些东西。
(全文 …)

似乎任何职业都会给从业人员带来这样那样的习惯。国外某网站上有位朋友(应该也是程序员)想了解其他程序员在投身堆码事业后有什么样的坏习惯。结果一呼百应,很多程序员纷纷自爆自己的坏习惯和糗人糗事。编程无国界,相信国内堆码界的朋友,也会有同感。

1. 编程已给我带来很多坏习惯,编程也每天在继续给我新增更多的坏习惯。当然有些习惯和编程无关了。下面这些习惯尽管我也很想改掉,但已根深蒂固。

  • a. 在天地万物中,去发现多态、继承和模式;
  • b. 用十六进制代码中的像素和颜色来解释某东西的大小;
  • c. 在日常交谈中用代码相关的抽象术语。

2. 我现在认为256这个数字非常完美。但非程序员不明白这个,有时候让我措手不及。

3. 我在看纸质书时,我就非常沮丧。为什么我不能用Ctrl + F来找想看的东西呢?
(全文 …)

软件编程21法则

作者: seasun

任何一个有经验的程序员都知道,软件开发遵循着一些不成文的法则。然而,如果你不遵循这些法则也并不意味着会受到惩罚;相反,有时你还会获得意外的 好处。下面的就是软件编程中的21条法则:

  1. 任何程序一旦部署即显陈旧。
  2. 修改需求规范来适应程序比反过来做更容易。
  3. 一个程序如果很有用,那它注定要被改掉。
  4. 一个程序如果没用,那它一定会有很好的文档。
  5. 任何程序里都仅仅只有10%的代码会被执行到。
  6. 软件会一直膨胀到耗尽所有资源为止。
  7. 任何一个有点价值的程序里都会有至少一个bug。
  8. 原型完美的程度跟审视的人数成反比,反比值会随着涉及的资金数增大。
  9. 软件直到被变成产品运行至少6个月后,它最严重的问题才会被发现。
  10. 无法检测到的错误的形式无限多样,而能被检测到的正好相反,被定义了的十分有限。
  11. 修复一个错误所需要投入的努力会随着时间成指数级增加。
  12. 软件的复杂度会一直增加,直到超出维护这个程序的人的承受能力。
  13. 任何自己的程序,几个月不看,形同其他人写的。
  14. 任何一个小程序里面都有一个巨大的程序蠢蠢欲出。
  15. 编码开始的越早,花费的时间越长。
  16. 一个粗心的项目计划会让你多花3倍的时间去完成;一个细心的项目计划只会让你多花2倍的时间。
  17. 往大型项目里添加人手会使项目更延迟。
  18. 一个程序至少会完成90%,但永远完成不了超过95%。
  19. 如果你想麻烦被自动处理掉,你得到的是自动产生的麻烦。
  20. 开发一个傻瓜都会使用的软件,只有傻瓜愿意使用它。
  21. 用户不会真正的知道要在软件里做些什么,除非使用过。

如果你打算从事IT行业或刚进入这个行业,也许本文下面的小内幕会吓到你,因为这些事平常都不会公开讨论的。如果你是IT资深人士,或许你已经 遇到其中的大部分了。如果你愿意,请一起来参与讨论吧。

这些内幕大多数是针对网络管理员、IT经理和桌面支持专业人士。虽然这些小内幕 并不针对开发人员和程序员(这两类人员也有对应的小内幕。),但有些或许也适用于他们。

IT人士应当知道的10个行业内幕

10. 虽然IT业的薪酬比其他很多行业要好,但有公司因此视你为其“佣人”
(全文 …)

看到此文,引人深思,特此共享。感觉其中还隐含着更大的“讽刺“,忍不住评论两句,见文后的随想。

一大早,一个年轻的程序员问大师:

“我准备写一些单元测试用例。代码覆盖率应该达到多少为好?”

大师回答道:

“不要考虑代码覆盖率,只要写出一些好的测试用例即可。”

年轻的程序员很高兴,鞠躬,离去。
之后没多久,第二个程序员问了大师同样的问题。
大师指着一锅烧沸的水说:
(全文 …)

开发语言知识积累的深度与广度之说:

数据库技术知识积累的深度与广度之说:
(全文 …)