Contents

如何成为一名黑客

毕业进入公司起,直属 Leader 常常提到:「编程不仅仅是知识和技能,更重要的是去领会编程领域的文化」。

刚进入公司的我似乎并没有马上接受这一点,认为这可能只是所谓的 “玄学” 罢了,所以也就是当作任务记下了,并没有很好的理会。

直到我工作了一年后,疫情期间读完 Leader 发来的一篇《如何成为一名黑客》,文章似乎解答了我初入编程行业的疑惑并且指明了未来的方向。

标题是如何成为一名黑客,这里的黑客并不是我们所认为的在网络中来无影去无踪的 “黑客”。在我看来,这篇文章讲述的是你如何成为一名优秀并且受人尊敬的计算机工程师。

基本的态度

  1. 这个世界充满了令人着迷的问题等着我们去解决

你要从解决问题,磨练技术,以及锻炼智力中得到基本的享受以及动力。的确,回想这一年的工作时光,另我开心的事情莫过于解决了棘手问题,学习了一门新的语言,自己完成的功能第二天就上线,得到了客户的认可等等。

  1. 一个问题不应该被解决两次

不应该把宝贵的时间浪费在发明轮子上。初入公司我想着把很多 python2 的代码重构成 python3,现在想想确实浪费时间,应该着重于解决新的问题而不是在旧问题上浪费时间。

  1. 无聊和乏味的工作是罪恶的

重复性劳动浪费我们解决新问题的时间,而解决新问题才是最大的价值所在。提取公共函数,将日常的工作变成自动化等等。

  1. 崇尚自由

其实这一点并不是很理解,产品经理提出无理的需求???

2020/09/10 更新:这个上升到政治层面就比较好理解了,比如美国打压 WeChat 和 Tik Tok

  1. 态度不能代替能力

只具备这些态度并不能使你成为一名黑客,也不能使你成为一个运动健将和摇滚明星。成为一名黑客需要智力、实践、奉献精神、以及辛苦的工作。

基本的技能

  1. 学习如何编程(这里包括以下内容有几句话写的很好,我想全搬运过来)

有一个大体的规律,就是如果你过于偏重使用一种语言,这种语言一方面会成为你得心应手的工具,另一方面也会阻碍你的学习。有这个问题的不只是编程语言,类似 RubyOnRails、CakePHP、以及 Django 的 web 应用框架也有这个问题,它们只会让你肤浅地懂得一些东西,当你碰到难以解决的问题或者需要调试时,你就可能不知所措了。

单单学习编程语言并不会让你达到黑客的程度,甚至连程序员的程度都难企及——你需要脱离某种编程语言的束缚,学习通过编程解决问题的思路。要成为一个真正的黑客,你需要达到几天就能学会一门编程语言的水平,你可以将文档里的信息和你已经掌握的知识结合起来,很快就学会一门编程语言。这意味着你需要先学会机种思路截然不同的语言才行。

编程是一个复杂的技能,我无法给你完整的指南来教会你如何编程,不过我可以告诉你,书本和课程也无法教会你如何编程——很多黑客,或者也许几乎所有的黑客,都是靠自学的。你从书本上学到语言的特点——只是一些皮毛,但要使书面知识成为自身技能,你只能通过实践和虚心向他人学习。因此你要做的就是 (a) 读代码,(b) 写代码。

学习编程就象学习自然语言写作一样。最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,再读些,再写点…… 如此往复,直到你的文章具备范文的力量和感觉为止。

  1. 学会使用开源的 Unix 系统

Unix 还是 Internet 的操作系统。你可以学会上网却不知道 Unix,但你不了解 Unix 就无法成为一名 Internet 黑客。因此,今天的黑客文化在很大程度上是以 Unix 为核心的。(这点并不总是真的,一些很早的黑客对此一直很不满,但 Unix 和 Internet 之间的联系已是如此之强,就连 Microsoft 这样强力的公司也对此也无可奈何。)

  1. 学会使用万维网以及编写 HTML

学会使用 Google,Stack Overflow,Github 等等

  1. 学习英语,如果你的水平不够的话

Linus Torvalds 是芬兰人,但他的代码注解是用英语写的(很明显他从没想过其他的可能性)。他流利的英语。是他能够管理全球范围的 Linux 开发人员社区的重要因素,这是一个值得学习的例子。

就算你的母语是英语,这也无法保证你的语言技能足够达到黑客的标准。如果你的写作文字不通、语法混乱、错字连篇,包括我在内的大部分的黑客都会忽略你的存在。虽然写作马虎不一定意味着思考也马虎,但我们发现两者的关联性还是挺强的——马虎的头脑对我们来说毫无价值,如果你写作能力不够,就好好学习写作吧。(划重点,终于知道王哥为什么每次都会特别强调然后纠正我的错别字了)

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

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

  1. 撰写开源软件

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

  1. 帮助测试并调试开源软件

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

  1. 发布有用的信息

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

  1. 帮助维护基础设施的运转

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

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

  1. 为黑客文化本身服务

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

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

如何成为一名黑客