从我毕业进入公司起,前辈就一直在提及一点:编程不仅仅是知识和技能,更重要的是去领会编程领域的文化。刚进入公司的我似乎并没有马上接受这一点,认为这可能只是所谓的 “玄学” 罢了,所以也就是当作任务记下了个一点,并没有很好的理会。直到我工作了一年后,疫情期间读完王哥发来的一篇《如何成为一名黑客》,似乎逐渐理解了王哥在这一年中对我的指导,并且解答了我初入编程行业的疑惑。

文章的标题是如何成为一名黑客,这里的黑客并不是我们所认为的在网络中来无影去无踪的 “黑客”,能让更多人理解的应该是极客。在我看来,这篇文章讲述的是你如何成为一名优秀并且受人尊敬的编程人士。

基本的态度

  • 这个世界充满了令人着迷的问题等着我们去解决
    • 你要从解决问题,磨练技术,以及锻炼智力中得到基本的享受以及动力。的确,回想这一年的工作时光,另我开心的事情莫过于解决了棘手问题,学习了一门新的语言,自己完成的功能第二天就上线,得到了客户的认可等等。
  • 一个问题不应该被解决两次
    • 不应该把宝贵的时间浪费在发明轮子上。初入公司我想着把很多 python2 的代码重构成 python3,现在想想确实浪费时间,应该着重于解决新的问题而不是在旧问题上浪费时间。
  • 无聊和乏味的工作是罪恶的
    • 重复性劳动浪费我们解决新问题的时间,而解决新问题才是最大的价值所在。提取公共函数,将日常的工作变成自动化等等。
  • 崇尚自由
    • 其实这一点并不是很理解。。产品经理提出无理的需求???
    • 2020/09/10 更新:这个上升到政治层面就比较好理解了,从美国打压 WeChat 和 Tik Tok 可以看出
  • 态度不能代替能力
    • 只具备这些态度并不能使你成为一名黑客,也不能使你成为一个运动健将和摇滚明星。成为一名黑客需要智力、实践、奉献精神、以及辛苦的工作。

基本的技能

  • 学习如何编程(这里包括以下内容有几句话写的很好,我想全搬运过来)
    • 有一个大体的规律,就是如果你过于偏重使用一种语言,这种语言一方面会成为你得心应手的工具,另一方面也会阻碍你的学习。有这个问题的不只是编程语言,类似 RubyOnRails、CakePHP、以及 Django 的 web 应用框架也有这个问题,它们只会让你肤浅地懂得一些东西,当你碰到难以解决的问题或者需要调试时,你就可能不知所措了。
    • 单单学习编程语言并不会让你达到黑客的程度,甚至连程序员的程度都难企及——你需要脱离某种编程语言的素服,学习通过编程解决问题的思路。要成为一个真正的黑客,你需要达到几天就能学会一门编程语言的水平,你可以将文档里的信息和你已经掌握的知识结合起来,很快就学会一门编程语言。这意味着你需要先学会机种思路截然不同的语言才行。
    • 编程是一个复杂的技能,我无法给你完整的指南来教会你如何编程,不过我可以告诉你,书本和课程也无法教会你如何编程——很多黑客,或者也许几乎所有的黑客,都是靠自学的。你从书本上学到语言的特点——只是一些皮毛,但要使书面知识成为自身技能,你只能通过实践和虚心向他人学习。因此你要做的就是 (a) 读代码,(b) 写代码。
    • 学习编程就象学习自然语言写作一样。最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,再读些,再写点…… 如此往复,直到你的文章具备范文的力量和感觉为止。
  • 学会使用开源的 Unix 系统
    • Unix 还是 Internet 的操作系统。你可以学会上网却不知道 Unix,但你不了解 Unix 就无法成为一名 Internet 黑客。因此,今天的黑客文化在很大程度上是以 Unix 为核心的。(这点并不总是真的,一些很早的黑客对此一直很不满,但 Unix 和 Internet 之间的联系已是如此之强,就连 Microsoft 这样强力的公司也对此也无可奈何。)
  • 学会使用万维网以及编写 HTML
    • 学会使用 Google,Stack Overflow,Github 等等
  • 学习英语,如果你的水平不够的话
    • Linus Torvalds 是芬兰人,但他的代码注解是用英语写的(很明显他从没想过其他的可能性)。他流利的英语。是他能够管理全球范围的 Linux 开发人员社区的重要因素。 这是一个值得学习的例子。
    • 就算你的母语是英语,这也无法保证你的语言技能足够达到黑客的标准。如果你的写作文字不通、语法混乱、错字连篇,包括我在内的大部分的黑客都会忽略你的存在。虽然写作马虎不一定意味着思考也马虎,但我们发现两者的关联性还是挺强的——马虎的头脑对我们来说毫无价值,如果你写作能力不够,就好好学习写作吧。(划重点,终于知道王哥为什么每次都会特别强调然后纠正我的错别字了)

提高自己在编程圈中的地位

以下就是以后的人生所追求的吧,自己离这些还很遥远。。。

  • 撰写开源软件

    • 黑客领域里最受尊敬的偶像,是那些写了大型的、好用的、用途广泛的软件,并把它们发布出来,使得每人都在使用他软件的人。
  • 帮助测试并调试开源软件

    • 如果你是个新手,试着找一个你感兴趣的正在开发中的程序,做一个好的 beta 测试员。你会自然地从帮着测试,进步到帮着抓 bug,到最后帮着改程序。你会从中学到很多,而且善因种善果,以后别人也会很乐意帮助你。
  • 发布有用的信息

    • 另一件好事是收集整理有用有趣的信息,做成网页或类似 FAQ 的文档,并且让大家都能看到。技术性 FAQ 的维护者会受到和开源代码的作者一样多的尊敬。(比如 Github 上面很多 awesome language 和国内很多大佬的博客,录制的教程等等)
  • 帮助维护基础设施的运转

    • 黑客文化(还有互联网工程方面的发展)是靠志愿者推动的。要使 Internet 能正常工作,就要有大量枯燥的工作不得不去完成——管理邮件列表和新闻组,维护大型软件库,开发 RFC 和其它技术标准等等。

      做这类事情的人会得到很多尊敬,因为每人都知道这些事情费时颇多,而又不象编程那样有趣。做这些事情需要奉献精神。

  • 为黑客文化本身服务

    • 黑客文化没有领袖,这点是确认无疑的。但黑客圈里确实有些文化英雄、部落长者、史学家、还有发言人。如果你在这圈里呆足够长时间,你也许也能成为其中之一。 记住:黑客们不相信他们的部落长者的自夸,因此过分追求这种名誉是危险的。与其奋力追求,不如先摆正自己的位置,等它自己落到你的手中——那时则要做到谦虚和优雅。

常读常新,每隔一段时间读一遍都会有新的收获。最后附上这篇文档。

如何成为一名黑客