• 我是一个垃圾程序员


    本文为翻译文章:原文地址 评论地址

    在过去的 4 个月里,我深刻地反思了我自己。就在 7 个月前,我还在从事一份虽不是十分讨厌,但却也感觉不到任何快乐的工作。我还不能确切地描述为什么我会有这样的感觉,直到我的一个朋友再次找到我,说有一份工作虽然干的活一样,但有机会参与开源软件项目开发,然后我就跳槽了。这一切让我知道了:

    我是一个垃圾程序员。

    3 个月后我选择离开了这家公司。当时我签的是临时合同,在还没有完全投入工作前,却先感受到了公司内部的派系斗争之风。这份工作,我没感觉到任何快乐,但也没有特别的不开心。只是我还没找到一些特别具有挑战性的,并能引起我兴趣的事情。所以我决定先休息一段时间,总结下人生。

    为了不至于影响家庭的收入,我仔细地安排了休假计划。在偿还完银行账单后,剩余的钱可足够保证我4到5个月不上班都没问题。做了张现金开销和预算表之后,我决定先休假 2 个月,然后用 1 个月的时间进行面试,最后第 4 个月作为缓冲期,以防万一面试的时间超出了我的预期。

    现在我真的在缓冲期里了。到目前为止,我已经面试了近 10 家公司,却没有一家公司考虑录用我。甚至在多数公司中,我都没有通过技术面试。我是一个程序员,并且一直以来我都自我感觉良好,觉得我是一个还不错的程序员。但是在这样一个通过海选进行招聘的行业里,我发现很难再认为自己是一个优秀的程序员了。

    我的一些好友和同事,我认为他们中的大多数都比我更有经验并且 IQ 比我高。当我向他们描述我的忧虑状况时,得到的反馈可总结为 "理想很丰满,现实很骨感"。在上一份工作中,同事们熟悉我的做事方式,与我一起工作都很愉快。并且觉得我的工作背景、敬业程度和技术能力都非常不错。所以不能说我是一个没能力的程序员,只是我还不善于在面试中表现自己。

    但如果说只有少数几个公司拒绝了我,我还能信他们。可是截止到目前我是颗粒无收,并且仅有两次我成功地通过了第一轮的技术面试。如果我已经手握一到两个 OFFER,我还能承认我的能力,但你能说所有公司都犯了同样的错,一致地忽略了我这个虽然面试表现不好但却很优秀的程序员?换句话说,难道有那种可能,像我这样的垃圾程序员总是能从胜任工作的人的手中抢到职位?

    从以往的历史来看,我应该不是那种光说不练的人。基本每天开始工作前,我都会练习写一些代码。同时仅是基于乐趣,我会使用一些奇特的编程语言来解决一些经典的场景。时常我也会向开源社区做些贡献。有时我甚至会去尝试与他人攀谈,学习如何在交谈中尽量的展现我自己。到后来我发现,像与人交往这种曾对我最具挑战的事也不是那么困难了。这段故事告诉了我,除非你去尝试,否则你不知道自己到底能不能做到。

    问题是还没等我做成什么,我就已经崩溃了。这个月我还能付得起房租和信用卡,但是我还没拿到任何 OFFER,下个月估计就得欠债度日了。我甚至不得不考虑从现在的公寓搬家到那种老旧的筒子楼里。但更重要的是,看起来我好像已经没有能力继续在这个行业工作了,并且恐怕我也不知道除了写程序我还能干什么。

    那么,到底一个垃圾程序员是什么样?

    我书架上塞满了各种经典图书:《SICP:计算机程序的构造和解析》、《Lisp 编程》、《TAOCP:计算机程序设计艺术》、《C 专家编程》、《Effective C++》和一些算法、分布式计算、安全、图形、数学等各种教科书,并且大部分我都已经读过了(TAOCP 这本我还在不断的研磨)。我也经常读一些 ACM、IEEE 上的文章和博士论文。如果仅从我的阅读列表来判断,你可能认为我是科班出身,但实际上,我只是喜欢编程,并且想尽我所能来掌握更多的知识。

    我为很多开源软件项目做过贡献,编程语言涵盖 C++、Perl、Python 等,甚至还用过一些类 Lisp 语言。这些项目中,有些我曾使用过但缺少一些功能,有些是新的项目需要解决 BUG 或增加功能,有些则是我发现是我需要的类库或程序。

    我一直在用心地不断提高我的能力。前面我提到了以前我会写一些练习代码。在我工作过的部门里我会推崇自动化测试。我读过大量的书籍、论文和技术文章,同时我也会写一些文章来尝试着帮助他人。

    我非常的喜欢数学。在读完信息论,弄清香农熵后,我又开始深入研究序理论。我真的很喜欢 Joint-Semi-Lattices、集合论、关系代数、Sentential-Database。一些内容现在我已经记不清了,比如我知道对于每种递归的形式都有一个迭代的方法,如果我需要详细了解我可以迅速的查阅杂志或教科书。

    尽管如此,我还是在编写一个要求判断是否序列 A 是序列 B 的子集并返布尔值的函数时出现了失误。当被问及我刚编写的函数的的复杂度时我还是记不起来了(擦,显然列表排列的复杂度为 N 方,但当时就像对我能否回想起这些细节的审问一样,头脑一片空白)。我的每一丝信心都已经被这些错误、失误和拒绝一点一点地打败了。

    到最后,我发现我越来越沮丧、绝望,并十分害怕自己会让家人失望。以后我的女儿会问我我是做什么的,我可能不直接地回答她,或者告诉她我是给电脑写程序的,然后赶紧回避开女儿进一步的追问。等她长大了我也尽量避免告诉她,为了混上饭吃我可能什么都做。我从来没有成功过,甚至也没有做过什么让自己值得骄傲的事儿。我只是尽我所能,即使整个世界都觉得我不够好。

    我是一个垃圾程序员,这就是我的人生。

    原文地址 评论地址

  • 相关阅读:
    static生命周期
    VS2008 JS调试和Silverlight 后台代码调试 相互影响的问题。自己做实例证明
    思考记跳出以往的自己
    javascript setAttribute使用方法 查缺补漏
    克服浮躁,踏实工作,控制自我
    DES加密GUID+文件名称,关于DES加密后文件长度是否超过WINDOWS文件命名规定长度255个字节。
    阅读WPF揭秘前两章探索Silverlight运行的基本原理和RIA工作流程的密码()
    Silverlight运行原理经典问答。
    HTML 实用标签 (你不知道的HTML)
    ASP.NET项目整合 (Silverlight 和 WEB Service ) 过程及原理
  • 原文地址:https://www.cnblogs.com/gaochundong/p/i_am_a_bad_software_developer.html
Copyright © 2020-2023  润新知