我跳槽是因为他们的显示器更大

好的技术人员向往具有很强的企业技术文化氛围的工作场所。但如何你能从外部看清一个企业的技术文化状态?这里要讲的是我使用的两个简单而好用的参考指标。

首先我要讲讲“企业技术文化”这个词指的是什么。它是指技术人员在一个企业内受重视的程度和重要性。它能从一些事情上体现出来:

  • 公司里的决策是如何制定出来的?在一个具有很好的技术文化的公司里,技术人员参与要做什么、何时做、由谁来做等决策制定。并不是说有最终拍板权,而是有真正的发言权。
  • 对开发软件这个工种是否尊重?开发软件是一种创造性的工作,这种工作需要有合适的时间和合适的地点。有些项目很难预测出究竟要多久才能开发出来,而公司能认可这种情况。
  • 基础设施。当需要把精力放到非软件特征功能方面的事情上时,明白事理的人(技术人员,经理)需要花多少的口舌才能让老板知道这些工作的重要性?这通常是指一些运行时系统里的工作(比如扩充消息队列容量)或后勤服务工作(例如编译系统或版本控制工作)。

不幸的是,想通过一次交谈咨询就把这种底细都摸清是不现实的,除非你在这个公司内部有受信任、知道内情的线人。 继续阅读我跳槽是因为他们的显示器更大

我依然爱你,我只是不喜欢你了

一.

金庸小说中,我最爱《笑傲江湖》,众多人物中,我最爱令狐冲。但由于初读年纪小,每逢读到令狐冲对小师妹的念念不忘就匆匆跳过。这点也始终让我觉得令狐冲的潇洒不羁之余,感情上有种张无忌般的优柔寡断之感,不甚舒畅。

话 说《笑傲江湖》第二十六章「围寺」情节中,得知任盈盈为救他被困少室山后,令狐冲率江湖群雄围攻少林寺。此时讲到众人被困陷阱,情况危急,生死只在顷刻之 间。突然天降大雪,顿时风声鹤唳,万籁俱寂,群雄只等令狐冲一声令下群起而攻。而此刻令狐冲看着山花野草,飞雪漫天。心中突然一柔,想起了岳灵珊:“小师 妹这时候不知在干甚么?”

小时候看到这一段非常膈应,紧张热血的情绪被莫名寒了大半。还觉得令狐冲真不是东西,人任大小姐为了你连性命都不要了,你还在这危急关头想着抛弃你的小师妹,脑子坏特了啊。

虽然这短暂的膈应很快就被后面的剧情冲淡忘却,但令狐冲在我心中的潇洒形象也带上了阴影。直到不久前,我看到一部爱情电影《one day》中的一句台词,顿受触动:

I love you.Dexter.So much.I just don’t like you anymore.(我爱你。德克斯特。我只是不喜欢你了..)

如果单独看到这个句子,我会觉得非常难以理解,爱不就是升级的喜欢吗,怎么会存在只有爱而没有喜欢呢?正在我琢磨这句话的时候,记忆这个神奇的抽屉,自动跳出了令狐冲想起小师妹的情景。
“小师妹现在在干甚么呢?”

那一刻,豁然开朗。

二.

两年前参加大学好友梁锋的婚礼,前一晚我们一帮男生喝酒唱歌,回忆往昔放浪形骸。喝多了我去上厕所,出门看到梁锋在外面抽烟,招呼我一起。氤氲中,我当时也是喝多了,没话找话,多嘴说了一句:以前我一直以为你肯定会跟王杨璐结婚呢。
梁锋看看我,又看看天花板,沉沉道:谁不是呢…

梁锋和王杨璐认识在刚进大学的十佳歌手比赛上。当时我也参加了,王杨璐在台上唱歌的时候,梁锋突然狠狠拉住我的手,大喊糟了糟了。我一囧,问他你是拉稀了还是要出柜?他神色紧张道:这完全是我梦中情人的款啊,不去认识我会撞墙而死的!
我白眼,那你他妈就去啊。
他说可是我不敢,要不你帮我去问号码吧?
我去,那你他妈就去撞墙吧!你的梦中情人干嘛要我去问?
你脸皮厚啊!兄弟,靠你了,事成我请你吃大餐!

才认识一个月,我就被他发现了我最大的优点,嗯…于是我就去了。
后来比赛我和梁锋都被刷下了,王杨璐进入了决赛。决赛之后,两个人就在一起了。原来两个人早就互相注意到了,真是看对眼了。那次大餐我吃得很开心,其实当月老也蛮好的。

两人相处得很好,兴趣爱好也很一致,始终很甜蜜。几乎身边所有人都认定,将来肯定是要吃他们的喜糖的。

那后来为什么分手了呢?我问梁锋。梁锋回包厢拿了两瓶啤酒递给我一瓶,一起坐到了大厅。
梁 锋说,你出国那年我们同居了,起初一切都很好,我们也想过早点结婚稳定下来。不过一起生活后,琐碎的矛盾就渐渐多了起来,我是个什么都漫不经心的人,而她 很有主见,更喜欢生活有条不紊井井有序,甚至有点强迫症。其他生活中零零碎碎的事,原来没发现,但天天在一起,问题就逐渐积累,甚至一根烟头都能引发争 吵。
虽然有时候会吵架,但是我也不怎么往心里去,哄哄就好了。慢慢的,她开始担心未来,想要考研,想要去大城市发展,而我就想回到家乡小城平淡过 日子。对未来的规划使我们的裂痕越来越大。 随着毕业临近,我们之间越来越冷漠,经常一言不合就闹得不愉快。 后来他们认真沟通了一次,达成了一致,。最终她决定去上海,而我留不住,也只能祝福。
毕业就分手,我们也没能逃过这个魔咒…

我想我那天真是醉了,又傻乎乎地问了一句:那你现在还爱她吗?
梁锋一口干完了瓶中酒,苦涩道:感性上,我的确爱她,但理性上,我知道我们在一起对谁都不好,只会越来越多的争吵…所以爱并非什么都可以呀,就算我们彼此妥协,心里也谁都不痛快。让彼此都不痛快的感情,又何必死死不放诶…

我问他,那你喜欢现在的嫂子吗?
他眼睛亮了亮:她很好,她喜欢我,我也喜欢她,但我很难说,那是爱。不过没关系,我们可以很好地生活在一起,像喝一杯温水,平淡自如。
两年过去了,如今的他又有了可爱的女儿,家庭和睦,生活得简单而知足。

都说相爱容易相处难。我自己又何尝不是如此,虽然很清楚自己确实是爱那个人,可那个人的言谈举止却又让自己难以接受,爱可以增强对恋人的包容,却无法改变双方的思维行径。彼此在互相折磨中证明是否有爱真的什么都可以,真的很累。
可惜,我想说,真的不是有爱什么都可以。因为生活还有太多细节与琐碎,比爱更坚不可摧。
爱的时候,谁都想不顾一切去爱别人,可是回到生活,又免不了更倾向保护自己。在这种纠结的感情中,有人选择了温水煮青蛙,任由生活顺水推舟,缝缝补补彼此煎熬;也有人选择好聚好散,在故事还不最糟糕的时候退场。
无论哪一种,都无可指责。

三.

《笑傲江湖》结尾,任盈盈扣着令狐冲的手腕叹道:“想不到我任盈盈,竟也终身和一只大马猴锁在一起,再也不分开了。”说着嫣然一笑,娇柔无限。
这个时候,小师妹已经香消玉殒。而此刻的令狐冲,是否还会心念一动,想起凄苦死去的小师妹?

对于恋人深爱前任这件事,任谁都会不是滋味。可是爱就是爱,怎么可能因为不在一起了,就完全不爱了。感情不是水龙头,想来就来,想去就去,若真是如此,那才叫没人性。
人无法选择是否会动心,但至少我们该懂得是否该放弃。这正是成长的代价。

令狐冲可以为了任盈盈将生死置之度外,若是小师妹呢?我想他也会。
令狐冲要娶任盈盈,任谁来阻挡,他都会勇往直前,可若是小师妹呢?我想他不会。因为他知道,自己并非小师妹想要嫁的人。
如果她身处危难,他可以为她放弃生命。但若她幸福快乐,他愿意衷心祝福不再出现。这不就是爱吗?

我想起了另一位金庸人物——郭襄。郭襄如此爱着杨过,却又衷心希望杨过能够和小龙女在一起快乐生活。
后来郭襄创立了峨眉,为她的嫡传弟子取名风陵师太。风陵渡,是她最初遇见到他的地方。
站在峨眉山上的郭襄,看着峨眉金光云雾飘洒,是否会想起,十六岁夏天绚烂的烟火…

我知道我已离开你的世界,也知道,彼此不再有交集,然而心中某块地方,始终无法抹去存在的痕迹。
很多时候,不正是这些莫名涌上心头的柔软,才让我们觉得没白活过吗?

我依然爱你,我只是知道,自己不能再像以前那样喜欢你了。  依然祝你,平安幸福。

主播:纱朵&南宫曦野 作者:小岩井 

背景音乐:离开的那天;天朝OL游戏音乐

片尾歌:尘劫—伦桑(翻唱) 

码农故事:一位中级程序员的自白

我是一名中级程序员。

我有相当不错的基本技能。我犯了足够多的错误才明白为什么那些被称为错误。我很清楚我还需要了解更多东西。最重要的是,我知道那些东西大概是什么,并且我正在努力而积极地提升自己。

勇敢地承认自己不过是水平一般的程序员,这花了我一些时间。我不再感觉有必要去抓住那些我并不了解的观点。当人们发现我对某样东西不了解时,我也不再感到害怕。

事情并非从来如此。你可能对此不以为然,但是我曾经自诩为编程大师。

这种对自己能力的不正确的评估,很大程度归因于我在一个相对封闭的环境中学习技能。在过去那些日子里,有电脑就已经很特别了;更不用说知道如何使用了。

在我自己看来,我当时是一个知识渊博并且经验丰富的程序员。在我不到20岁的时候我已经用C++、Pascal、C#、JavaScript写过程序。当然我最引以为傲的是,曾经徒手用PHP编了一个电子商务平台。

事实上,我可能只是人们平时谈话中提到的“我有个朋友的儿子很会写网站”。我和别的程序员没有任何交流,所以我仅有的比较对象是我周围的人;要么是一些根本不在意电脑的人,要么是那些会用电脑,但是在IE窗口中塞了5个没用的工具栏的人。那些可能会说“我的网坏了”这种话的人。

接下来这个故事就是讲我如何产生自己很厉害的幻觉的。

天才的起源

 

当我九岁的时候,我的一个朋友家里有卫星电视。而在我们家里,我们只能收到四个英国的频道(你能想象第五频道出现之前的日子吗?),我热切地盼望有一台普通的电视机。我们所需要的只是那些“卫星盘子”,或者我称为“卫星”的东西——那样我就随时可以看QVC台或者Eurosport台。由于隐约意识到自己的某种天分,我开始搭建自己的卫星!我的设计包括了一把打开的伞和一条铜质音频线,一段接在伞的金属柄上,另一端接在电视机天线上。必须承认我的设计有一些缺陷,并直接导致我没有得到想要的结果。但是这个小故事仅仅想表达我童年和青少年时期对技术的渴望。我认识的人中从没人想过制造“卫星”。

几年后,当我父亲的办公室得到一个14.4k的猫时,我成为了最早一批网民一员。我能回忆起花了整个星期六下午的时间等待这个火焰漫画图标被加载,每个帧的动画大概要过一分钟才显示。我甚至用Netscape搭建了我自己的网站。由于不知道互联网的架构,我把所有的HTML文件存放在本地,并且期待有一天他们会出现在互联网上。然而这些细节并没有削弱一个事实:我认识的人中没有一个制作了他们自己的网站。

在我十多岁的时候,我发现了自己天才中的黑暗面。在装备了Jolly Rogers的食谱后,我和一群小伙伴们准备动摇整个九十年代英格兰的技术和道德根基。破解电话系统是我们的专长。我们用手提式声音耦合器和公用电话,给我们在ICQ上认识的美国姑娘们打免费国际电话,以及在私人交换机上设立语音信箱。最终学业和滑板阻止了我们在这条路上越走越远,如果没有这些干扰,我们无疑已经在制造凝固汽油,黑进政府网站并且徒手杀人了。尽管我们没有把自己的能力发挥到极致,但事实是除了我们没有其他人哪怕拥有声音耦合器。

尽管到那个时候我已经经历了一些冒险和失败,我还是缺少一些东西。我的想法总是要超前我自身能力好几步-正如在“卫星”一节里体现出来的。我需要一种把我脑海中想法表达出来的方式。我需要一个直接的介于我想象和现实之间的接口。

Fuck 生成器

 

真正的转机出现在我十四岁的时候。我购买了一份PC Plus杂志,其中附赠了带有完整版Borland C++编译器的CD。我安装了,并且认真学习了杂志上的“hello world”教程。

就这样,一个崭新的世界在我面前打开了。物质世界对于我想象力的限制消失了。我的创造力被解放了,我脑海中的大教堂要成为现实了!我该把这个新工具用于怎样崇高的事业呢?很显然,Fuck生成器。

简单而优雅的Fuck生成器是一个命令行程序,也是我即”hello world”之后第一个里程碑。程序开始运行后会提示用户输入一个数字n,然后它会输出字符串”fuck”,n次。最后用户被提示可以重复以上过程或是退出。尽管功能有限,我还是沉醉于我所品尝到的成就。这是任何程序员都能享受到的一种快感,即看着机器执行你的命令,不管这个任务有多简单。它在运行了,并且你知道为什么它能够运行。它除了在那里运行不会做任何别的事。

过了些时日,另一期的PC Plus附赠了一个完整版的Borland Delphi。有了这个,我把程序升级为带有窗口界面并且可以随机生成彩色的4种不同的脏话。当别的孩子在玩PlayStation的时候,我正在投身于一项更有意义和创造性的事业,我在生成很多fuck。

到那时,一切都预示着我是注定要成大事的。我要向世人展示我真正可以做的事情。

我的巨著

 

在90年代晚期,我为一家小型并且扩张迅速的邮件订购零售商创建了一个网站。一开始,这个站点只包含一些静态的页面——关于商品的小册子,一个导航菜单和一个访问数量计数器。

当我们的访问量越来越大时,我们决定加入电子商务功能。我们遍历了一些现成的工具包,它们的质量从差到极差不等。我印象中第一个版本大部分建立在摆弄cgi脚本以及怪异地把<select>元素用于几乎所有的用户交互部分之上。之后的一个版本是充斥着framesets和Javascript的怪物——远在Javascript成为举世皆准的构建应用功能的方式之前。另一个版本是由微软的Access数据库驱动的。

不久后我们意识到,如果我们想要一个真正可用的甚至体面的在线商店,我们需要一个自定义解决方案。我想到了我过去的成功经验:fuck生成器系列,以及截至那时我所编写的优秀网站,这其中:我的 Manic Street Preachers吉他谱收藏网站非常具有权威性。我认为是时候看看我能真正做些什么的时候了。我要自己从头开始干。

从头开始?即使那个时候开源框架已经存在,我也不会知道他们。我有自己的计划。我买了一本关于PHP和MySQL的书,一边学习一边着手搭建新的网站。

幸运的是,这本书把一个非常简单的购物网站作为它的核心例子。所有的部分都在那儿:“category.php”会列出一个目录中的所有物品;“product.php”会显示商品信息以及把该商品加入购物车的按钮;以及最重要的“cart.php”,它是所有奇迹发生的所在。这就是我想要的东西!

我孜孜不倦地学习这个例子,充满自信地实现所有巧妙的而且毫无疑问也是最新潮的技术-那些方便的“mysql_”函数;用于建立查询的字符串连接函数;把不同的函数放进“functions.php”文件;通过加入“header.php”和“footer.php”来维护整个网站的一致性;为了代码的快速运行而回避了笨重的面向对象的设计方式(管它是什么玩意)。我的技能在飞速成长。

像一个人的王国一样,我建造了高塔和迷宫般的地道。我每添加一个特性,就好像整个结构在向天空伸展同时也向地下蔓延。顾客帐户、商品评价、购买历史、优惠点数、帐单号、特殊优惠、日志、 A/B测试、支付信息加密,等等。一个蔓延的迷宫,一整个星系的函数,大的小的,缓缓围绕一个不变的核心:“cart.php”。

经过八个月的激情工作,我终于完成了。

现在,你们这些读者一定在期待我会详述当网站正式运行时发生了怎样恐怖的事情。恐怕我要让你们失望了。

它成功运行了。

 

最糟的方法

 

尽管我现在把这当作我最糟的设计,但是这个东西确确实是能够运行。它在每一个糟糕的教程,每一个反php的帖子里都能找到。搅成一团的代码?是的。不一致的数据和方法名称?是的。介绍和业务逻辑混在一起?是的。魔幻数和全局变量?是的。

对我而言,面向对象的设计只是一堆不必要的开销和公式化的代码,并且有很多片面的理论支持我的观点。我知道有关测试的所有,点击一些你设计的特性,看上去不错,上传运行。我不太知道别的架构,但是据我所知,我所采用的是最明智的方法。

一些事实能“证明”我所做的都是正确的:我从零开始,白手起家,用智慧创造了一个功能齐全的电子商务站点。更重要的,它运行完好并且还在扩张。

在我的眼里,我和那些写了亚马逊的程序员们没什么太大区别。当然亚马逊要大一些,但是我没有看到任何我的网站不能扩张成那样的理由--尤其考虑到我采用的高速运行的架构。

我认为我的技术水平已经到了巅峰了。并不是说我对学习新技术不感兴趣了,我只是不再对此感到紧迫。毕竟我创造了一些不错的产品。任何在此之上的东西只是附加奖励,是蛋糕顶端的樱桃而已。

 

回到地表

 

我很遗憾,我在这种心态下生活了好几年。我只是将一小部分时间用在这个网站上,而把主要时间用在完全不同的领域。在之后多年的维护和偶尔添加特性的过程中,我确实意识到了之前做的一些选择是有问题的。我意识到有时候要花很长时间才能找到我要找的文件。有时候当我做一个改动时,一些看上去毫无关联的地方会出现bug。

我的学习没有停止,但它确实进展缓慢。我意识到我曾经写的mysql函数是有风险的,因为后面版本的PHP减少了对它们的支持。在一段时间里,我克服对此的恐惧的方法是坚信我的无懈可击的设计可以弥补这些风险。毕竟我尝试了所有形式的我能找到的SQL注入,一切看起来都没有问题。

去年的一天我接到了一个紧急电话,网站挂了。所有的请求都得到500错误。在工程师们重新启动并且分析了事故原因后,这被证实是一起来自国外的sql注入攻击,是我从来没见过的一种。

好吧,我想,这也许是我该转向PDO的时候了。

 

觉悟

 

当我坐下来准备重写所有的数据存取方法时,我意识到了一些深层次的问题。我意识到这将会很困难。而且我知道为什么它会这么困难。

因为这些方法散落在所有地方;因为我无法知道是否会不经意地破坏一些东西;因为代码是如此不一致以至于我要小心地研究不同对象的细微差别;因为很多代码和别的部分紧密相连,这也会导致我会不小心造成破坏。简单地说,这将会很困难。不仅因为所有这些坏的实现方法,还因为我对它们所将造成的后果缺乏预见。

所有的辩护,借口,逃避都无法继续下去了。我错了。我不是那个幻想中的天赋卓越的程序员。这么多年来,我一直都没有认清这一点。

我的愚蠢已经显而易见,尽管这对我的自尊心是极大的打击,但这也是很宝贵的一个教训。我通过亲身经历(而且是非常痛苦的),学到了为什么做一件事的方法有对错之分。这不仅仅关系到品味或者时尚。这不是比谁的方法更聪明。正确的方法可以在现实生活中找到,并且能让你和那些使用你代码的人的生活更好。错误的方法让人沮丧,浪费时间。我在这里不想说明哪些东西是组成“正确方法”的要素。只要说不是我做的那些就够了。

 

真正的错误

 

我实现了PDO。同时开始第一次使用PHPUnit。我决不想尝试通过单元测试去改造那样的代码。

现在我有意识地迫使自己无论何时都尽量去学习。我正在读一些每个程序员都应该读的书。我在关注别人的博客。我在收听播客。我会看会议视频。我正在参加一些当地的社团并且在其中做演讲。我在做副业并且挑战自己学习新的技术。我在学习用正确的方法做事。

对你们所有献身于这项事业中的人来说,有一个对我们很重要的有利条件。即编程是这样一个完全抽象的活动,任何其他领域都会受到的现实世界中的限制在这里不存在。在这里,你的极限是你自己。

我要以一些真正的箴言结束这个故事。我在开始写这片博客的时候正好刚看完第二版的《代码大全》。在书的最后,第825页的底部,作者准确地描绘了我在写这篇文章时的想法。可以说他只用了两句话就表达我在这数千字里想表达的东西:

“作为一个初学者或者进阶者,这并没有什么错。当一个有能力的程序员而不是领导者,这也没有什么错。真正的错误是,当你知道应该如何去提高时仍然选择做一名初学者。”

原文链接: Michael Bromley   翻译: 伯乐在线 – 王伯
译文链接: http://blog.jobbole.com/72179/