Skip to main content

CS不是神,别把你这辈子都献给编程。(长)



我是一名普通的亚马逊码农,那地方有50%的人整天干的事情就是谈最新的时髦的技术
和自己解决的多难多难的bug。我是个程序员,每天敲敲打打,哪天电脑崩溃了你会发
现我这辈子啥都没留下。

我那可爱的岳父岳母在向自己的亲戚朋友们介绍我的时候,总是轻描淡写的说,他在亚
马逊当程序员。而那帮亲戚就会说:哎呀怎么会这样呀,你家孩子从小到大成绩都好,
一直是同龄人中的佼佼者,没想到怎么最后就当了个程序员??你们不是希望他以后从
政或是做个教授什么的吗,现在那谁谁谁可厉害了挣得老多了。。也有倒霉催的亲戚朋
友们会用一种既内行又套近乎的口气说,你能内部fake价格吗?...我想买那啥啥你能
搞到coupon吗?这时我父母通常都会脸色暗沉,应该是和父母的预期有很大落差吧。让
他们老人家失望了,自己心里也不太好受,想想自己从小到大确实一直是同龄人中的佼
佼者,高考,申请出国,一路都付出了很多的艰辛,
全家人也都对自己寄予了很高的期望。现在就为了在美国待下去转了CS,coding,
debugging..枯燥乏味,在公司没有存在感,公司外又都TM是码工有没有,钱挣的也没
多少却失去了太多太多。

今天下午我和我同事meeting,我们花了一个多小时也没法很好的解释为什么我们的
服务端总是再次发生相同的一个小bug,“有关部门”可以“不解释”,但程序员一点
儿都不能含糊。

然后另外一个同事给我发了一个链接,关于大洋彼岸一个悲催的程序员阿什顿的故事
“他写过的任何一行代码都没有运行过。过去两年内他做的任何一件事情都没有对世界
产生过什么影响。”

尽管我从内心里明白这个世界上还有很多人活得比我悲惨,但我还是忍不住的悲从中来
,几乎逆流。

我每天努力编写代码的间隙,会上买买提灌水放松一下,或是像挑西瓜的wsn一样搜遍
最新所有deal。我也看一些业界的新闻,那些砖家的天天把“创新/用户体验/敏捷开发
”等等挂在嘴边,却从来没为这个世界贡献过哪怕一行代码。我还经常和印度阿三探讨
技术和老白聊生活,至少让印度同事们看上去觉得我还不错。

我有个师兄,因为工作的关系他居然不得不在晚上编程。在他失恋的那天晚上我们一起
喝酒,他泪流满面的对我说,其实他觉得最悲痛的事情是自己连坐台的小姐都不如,她
们还可以赚外快,而这却是我的生活。

上个月我和几个西雅图平时玩球打牌的朋友聚餐,其中一个27岁的目前在MICROSOFT小
帅哥一直没怎么吃,末了他十分沉重的说,怕自己这辈子就只能当个程序员了...编程
年龄最长为18年的我们充满羞愧地以遍历的形式相互对视了一圈;包间的空气里充满了
悲怆和绝望。

我努力回忆看过的每一部有程序员出现的片子,发现这些人不是前景就是背景,总是处
于焦外。有时候他们在黑掉一些系统之后会有有幸运的正脸出现,但很快就会以一种飞
来横祸(例如被鼠标线勒住或滑落的电脑砸到)的方式死掉,连像主角那样中枪或被爆
炸都不配。他们没有名表名车,没有女人和性,最多养一只看上去和本人一样非主流的
宠物蜥蜴。

那晚上我做了个梦,梦见这个世界有一个总的电源开关,邪恶的章鱼博士用手(他有八
只手)恶狠狠的掐掉了开关,然后我干了一辈子什么都没留下。

我一个好朋友每天下班都会跟我讲他们办公室好玩的事情,例如A和B闹矛盾打了起来然
后B就
把A全年的工资单群发给所有同事...我也跟他说我们好玩的事情:A写的代码把互斥和
信号量弄混淆了,导致执行的结果总是时对时错,B给他做code review之后把互斥和信
号量都去掉了,发现根本不需要这些东西也能得到正确的结果,因为所有的一切都运行
在同一个线程里...

如你所知,这个世界上有两种人永远没法理解程序员的幽默和笑点,一种是不会编程的
人,一种是没有幽默感的人。就如同KJ说过的,这个世界有两种人,一种是程序
员,一种不是程序员。

非程序员可以要求程序员提高点文化素质和举止修养,但程序员却不能要求非程序员们
在讨论大事小事的时候多一点理性的态度和客观科学的精神。这也是我和我老婆的家庭
生活原则。

我认识的朋友中有做编剧,也有画画的,这两个倒霉的家伙的作品从来没有在这个世界
上以一种公开的方式被人看过。但是所有的人都充满耐心和爱心的安慰他们,没关系,
总有那么一天你会进军好莱坞,或是在佳士得拍卖场的。可是这帮势利眼们每次见到我
都会用一种不出所料的心态,以一种关切惋惜的口吻说,你怎么还在编程啊?他们从来
不会安慰我说,总有一天你会成为比尔盖茨的;哪怕是王江民也行,尽管他已经英年早
逝。

哲人们说过,是你去迎合这个世界,而不是这个世界来迎合你。我为了迎合这个垃圾的
世界,不得不去转行CS,不得不在编程之余去做一些事情,目的只是让自己成为一个不
是那么普通的程序员而已。世界可能是你的,也可能是他的,但不是程序员的,尽管这
个世界凡是插电的
东西里基本都跑着匿名程序员们一行一行写出来的代码。

我得看一些大部头,不是《鬼吹灯》,至少得是《明朝那些事儿》,这样他们在谈论《
万历十五年的时候》我至少能插得上话,偶尔也能谈笑风生。我最近看的一本书是《高
级迷信》,我敢打赌不管你是不是程序员你都不一定看得懂。

我买了单反还有镜头,虽然都是二手的,但我和所有烧不起器材的人们一样,坚信重要
的不是镜头而是镜头后边的这颗脑袋。

我还听摇滚,虽然他们的iPod里大多数时候放的都是些小资小清新。至少我也有自己的
品味。

我的那些程序员同事和朋友们,有的去登山远足,有的学调酒(因为没法学会调姑娘)
,还有的自己和自己玩SM。因为程序员们对于这个复杂的世界来说都属于足够简单的那
一类人,性格简单,爱好简单,甚至行为也简单。他们有时只是想引起身边的人对自己
的程序员朋友或程序员家人一点足够的重视,就像你养的小狗那样。

有时我也把一些编程的心得写出来,插入一些故弄玄虚的废话,然后发到博客里。我从
来不知道自己写的代码什么时候在哪些地方运行着,但我却可以清楚的看到多少人访问
过我的博客(尽管有些人只是误点),还有多少人留言(尽管大部分都是“顶”或“狗
屁”一类的狗屁)。但得感谢他们,深夜里我抚摸屏幕上这些莫名的访客记录,感觉自
己那灰色的二进制程序员生活因此而照进了一丝圣光,看上去变成了8进制:赤橙红黄
绿蓝紫,还有白。

最后,对于程序员来说,一个最好的世界,就是我们可以心无旁骛编程的世界,是我们
可以骄
傲的高呼“我要编一辈子程”的世界,是非程序员的那些人像追捧iPad一样奉程序员为
明星和教主的世界,但现实终归是现实。

别把你这辈子都献给编程

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...