我开发了一个基于 Beancount 的账本托管服务 HostedBeans,欢迎大家来了解纯文本复式记账并试用我的服务。
归档 2013 年 8 月

闲聊 CS

一直我都觉得(国内)大学的计算机专业太扯淡了。

细算下来,也就“计算机科学与技术”和“软件工程”算得上是计算机专业,其他的要么算物理(通讯方面的), 要么算数学(算法方面的), 至于“网络工程”和“信息安全”之类的,似乎不太常见,我就不讨论了。

软件工程,按学科的定义来讲,是以提高可维护性为目的,研究团队协作,控制和验收进度的,偏管理方面,但是按我的了解,在国内很多大学,软件工程和计算机科学与技术没多大分别。

计算机科学与技术,科学,那是一般人能学的么,你学了又有什么用,这是世界是那些顶尖的科学家才研究得起的东西。

再说技术,技术还需要学么,难道不是随便找本书来翻一翻就会了的么。

好吧,前面我开个玩笑。

偶尔睡不着觉我会用爪机在网易公开课看看视频,应该说国内和和国外的视频给我感觉差距是非常大的。

首先一点就是国内的一些名校似乎并不关心网络公开课,没有什么比较“硬”的科目,课程也仅仅是录像,感觉就是没有精心准备过。

课堂基本就是在按着书来念概念,没有多少吸引力。

而来自国外一些名校的视频则正经地多,课程似乎是专为网络公开课调整过,有配套的课程网站来下载资料,对于 CS 课程还有一堆内部编写的小工具等等。

国外的课程很少去讲概念性的东西,整堂课基本就是列一列要点,开几个玩笑,更多的内容大概会放在课堂之下来做,至少 CS 的课程是这样的,当然,这对网络公开课确实是不大友好,毕竟没法参与到课后作业中。

再看国内一些个人性质的视频课程,当然我指计算机方面。

通病在于讲者希望通过一套课程将所有的知识讲出来,听者也希望通过一套课程来学到所有的东西。

虽然我(作为讲者)也曾犯过这样的错误,但我还是觉得,这样出身的程序员,不会有什么前途。

有人说软件开发是青春饭,年级大了就干不动了,原因就在于现在这个行业发展得太快,新东西太多,停止了学习新事物,马上就会淘汰。

不能自己来学习,自己零碎地收集知识,而是希望靠别人一套系统的课程,很快就会被淘汰的。

当然这对入门者来说也是好事,因为从某种程度上来说,这使得一个入门者和大牛们是站在了同一个起跑线上。

目前来讲我最擅长的两门技术,C++ 和 PHP, 都不是系统学习的,两者都是一开始被国产书坑了很久,然后零碎地逛论坛,Google, 查文档,一点点积累起来的。

我买 CPPPP6E 那是很久之后的事情了,我只是把它当作工具书来查阅 …

我觉得大学的课程应该教授纯粹的计算机科学,而不是技术。

所谓计算机科学就是为计算机技术提供理论基础的那一部分知识,比如我略有涉猎的包括密码学,网络,操作系统,数据结构等等。

应用层的技术日新月异,但底层的这些知识是不会变的,我觉得这才是大学真正应该教授的知识,也只有大学才有时间去读这些纯理论上的东西。

就好比万有引力定律,你知道或不知道都不影响苹果往地上掉,但你眼里的苹果,和幼儿园小朋友眼里的苹果,绝对是不一样的。

计算机科学的一些知识也是如此,你不知道也不影响你掌握技术,但是如果你知道一些的话,对技术的看法就要高一个层次,更容易找到它们的内在联系。

又到毕业季

高考完事了,中考完事了,又到假期了,QQ 空间不少朋友在晒他们假期找来练手的工作。

一直以来,我虽然在计算机方面投入了相当之多的努力,但我发现我没有办法向一个外行人证明我的能力,我的父母和朋友们给我的一直都是盲目的信任。

前一阵妈咪和我说,要不要她带我去“人才市场”看看招聘的条件什么的,我说我死也不会去那种地方找工作,妈咪说,你懂什么,我的工作不都是在那找的。

不到一个月之前,假期刚刚开始的时候,我在 V2EX 看到一个招聘实习生的帖子,V2EX 是个神奇的地方,在很多互联网从业者眼里,即使只是在那有个帐号,也能为你加分不少。

应聘

这个招聘很对我的胃口,技能要求我基本满足,远程工作,他们正在和曾经做的项目也是我用过和听说过的,很亲切,顿时觉得世界好小。

但我还是犹豫了一阵,因为这可能是我第一次找正式的工作(虽然所谓远程工作在一些人眼里是多么的不靠谱), 我先把这个帖子发给了我一个朋友,让他帮我参考下。

过了半天,那朋友告诉我他试着应聘,结果被录取了,我挺惊讶的,没想到他也对此有兴趣。

于是我给帖子中留的邮箱发了邮件,邮件中主要贴了 Github 和我的博客,前者代表着我曾做过的项目,后者代表着我的价值观,接着大致罗列了我对于这个项目的优势和不足。

Github 和我的博客都是我引以为傲的东西。

我的 Github 中虽然没有太受人欢迎的项目,但活跃度一直还是很高的。

而博客虽然读者不多(怎么听起来这么忧伤), 但是我自以为我的博客的质量还是相当高的。

这次面试后,我愈发认识到了这两个东西的重要性,并且试着让它们看起来更好看。

我以为老大他看到邮件的时候已经决定录取我了,他和我电话聊了一个半小时,这也许是传说中的“面试”。

我一向不擅长说话,整个过程中我也没说几句话,都是他在说,和我讲他的价值观,讲他们正在做的项目的前景。

工作

我的工作是后端的 PHP 编码,我和我的朋友两个人负责后端,按老大的意思,我偏向于架构设计方面。

事实上我这几周主要在做的工作就是重构旧的代码,一共重构了两个项目。

我之前一直以为我看不下去别人的代码,但现在我发现只是我静不下心而已。

认真地读,也不难读懂,虽然原来的代码写得确实糟糕,而且我发现,即使不懂业务逻辑,也照样可以重构。

我之前自以为我会点 Web 前端,但这几周见到了我们团队里前端组的工作,顿时觉得自己真的是一点前端都不懂。

以后我绝对不再说自己会 Web 前端,太丢人。

老大说每小时 25 元的报酬算低的,不知道这是客气话还是真的。

我觉得我一个小时并不能创造 25 元的价值,我不能想象那么些代码就能值那么多钱,但偏偏老大可以将这些代码卖出甚至上万元的高价。

都是写代码嘛,和平时自己写着玩没多大区别,也就是一方面要多听别人的意见,一方面要注意控制进度。

其他的真感觉不到是在工作。

通过几周的工作,我觉得自己的 PHP 方面确实有一定能力,至少老大交给我的任务我没遇到过任何技术方面的问题。

我的拖延症还是没有改掉,再加上这一个月间发生了一些忧伤的事情,导致我一直都是工作时间不足的状态,一直都是在周末来补时间。

所幸我的工作大多较为独立,我自以为没有影响到其他人的进度。

收获

技术方面真的没啥收获了。

老大偏实用主义,对代码不关心,只关心需求的实现,这点和我恰相反,所以说老大让我搞重构真的是再合适不够。

更多的收获在于技术之外。

这是我第一次参与多人协作,老大说,他也是第一次指挥这么多人,大家都在学习。

这也是我真正地第一次利用 Git 来进行多人协作,第一次通过 Skype 来正经儿地开会。

这里我觉得我们团队做的可能还有欠缺,主要就是分工和任务分派不够明确,进度控制得不好。

至于代码方面,因为我一直以来很不错的编码习惯,在协作上没有太大的障碍。

就是有时候重构起来有种什么都不顾的感觉,容易影响到其他人。

老大说,要用最快的速度让代码可以工作起来,至少应该是“看上去可以工作”,这对多人协作很重要。

执行力这是我从老大身上学到的最重要的东西。

我以为老大并没有太出众的才华,但是他有执行力,有新的点子就能立刻着手去实现,立刻做出一个“至少看上去可以工作”的 Demo.

就是这样他才能在一些全新的领域,当一个先行者。

很多想法我也曾有过,但总是因为犹豫,或是拖延症,没能实现。

未来

老大说,有了互联网,就不应该再有固定办公场所。

我挺喜欢远程工作的这种方式,不必挤公交,不必吸尾气,不必早起,还可以跟着妹纸到处走。

但是以后还会有这样的机会么,即使在互联网行业,这也是比较激进的做法吧。

说就业是双向选择,但还是要提高自己的能力在先。

我还有一年,还有很多的书要看,还有很多轮子要造。

希望一年以后,我有资格来选择我的工作。

资金

叫“钱”太俗气,我们要说“资金”。

想小学的时候,每周大概十元钱不到的零花钱,那时候八王寺汽水是五毛钱。

现在吃顿饭也要十几二十块,每个月我爸给我中午吃饭的钱以及零花钱是 400, 说好开学涨到 500 的。

我不像一些人花父母的钱还理直气壮,在自己有收入之前我甚至连勾搭妹纸的底气都没有。

从今年年初 RP 主机有收入开始,我觉得我的心态在很多方面都有了很大的变化,这半年也是我在与人交往方面成长很快的一段时间。

说起来我似乎也没啥需要花钱的地方,没太多要花钱的爱好,也很少出去玩,顿时有点有钱没地花的感觉。

最后我来显摆一下,这个假期,我的收入大概是 3500-4000 元左右。

重回 Linux

流水账

因为在 Windows 下折腾 NodeJS 和 Golang 过于纠结的关系,再想到过一阵要重拾零毫秒,昨天我又装回了 Ubuntu, 这是我装 Ubuntu 被坑得最惨的一次。

一开始做了两个 Live USB, 但是都用不了,然后又刻了两张光盘,依然用不了,最后重新做了一个 Live USB, 才成功装上。

安装后第一次进桌面就卡死,重启依旧。于是进救援模式,更新了一遍软件包,这个问题算是解决了。

然后尝试加 Windows7 的引导,但死活也加不上,这个问题到现在还没有解决…

这几个问题我以前装无数次 Ubuntu, 从来没遇到过…

然后在 Linux 搭开发环境,Qt/C++, PHP, Golang, 用了没一个小时就搞定了,真心要比 Windows 舒坦得多。

作为一个 Qt 党,果断选择了 KDE, 其实 KDE 和 GNOME 在我看来也都差不多,以前有段时间就是开机的时候凭心情决定进哪个桌面。

半年没用 Linux 桌面了,这半年主要在写 PHP, IDE 已经能够报告大部分错误了,不需要太多本地调试,所以 Windows 也能凑合用。

另外一点就是最近半年打游戏比较多,LOL, SC2. 你可以说 Linux 也有游戏,也可以说这些游戏都可以跑在 Linux 上,但这就好像说 Windows 可以搞 Unix 开发一样可笑。

半年来,一直都在 SSH 敲命令,今天回到本地的 Shell 敲,顿时感觉爽歪歪啊。

换到 KDE, 真的是有点不习惯,大概一方面是关于鼠标的延迟和拖拽策略和 Windows 略有差异,还有就是字体不大一样,说不清哪个更好,习惯习惯就好了。

跨平台

我说我可以随时在 Linux 和 Windows 间切换,当然,事实也是这样,我用的绝大部分软件都是跨平台的。

  • Chrome
  • SmartGit
  • Qt & Qt Creator & GCC
  • PHPStorm
  • Sublime Text2
  • GoAgent
  • Virtual Box

也有一些至今没有完美解决方案的

  • QQ
  • 笔记(Evennote, 有道云笔记)

圣战

Linux vs Windows, 绝对是开发人员间最大规模的圣战之一,下面我随便说说。

显然,我和大家一样都是从 Windows 入门的,但当我知道 Linux 的时候,我就被它(所代表)的理念吸引了。

Unix 精神和 GNU 精神。

GNU 精神即出于任何目的使用程序的自由,Unix 精神的释义则有很多,但用一句话来说,我觉得是 KISS.

在之后的很长一段时间,我都带着优越感在用着 Linux 和 GNU 的一部分软件。

渐渐地我发现虽然理想是美好的,但是现实却不那么完美,虽然 Linux 能让你一部分的工作变得简单,但也会让另一部分工作变得更复杂。

很多人自诩为开源主义者,但我觉得像我这样的才算真正的。

只关心代码,不考虑需求,只凭自己的意愿来写,写好了之后迫不及待地分享给别人。

大多数的自由软件都是这样的情况,作者只为自己而写,最后的作品确实是相当优秀的,但并非适合所有人。

因为作者只为他自己而写,只写给需要的人,不想因为得到更多用户来改变自己的原则。

在自由软件的世界里,大家各取所需,没有人提供一站式的解决方案,也无法提供。

最近几年随着像 Canonical 这样的公司的加入,以及 Android 这样高度定制的 Linux 发行版的出现,这种情况略有改观,但和 Windows, Mac 的差距仍相当大。

又过了一段时间,随着我阅读了更多的,关于 Linux 和 Windows 一些底层设计的书和资料。

我发现,从技术架构上来说,Windows 绝不比 Linux 差,甚至更优秀。

这也是很显然的事情,毕竟 Windows 是商业公司,每一个决定都是谨慎的。

而 Linux 一开始仅仅是个人的业余项目而已。

于是现在在我看来,Linux 不再代表最尖端的技术,而是一种精神,Linux 设计并不优秀,也许有一天会被后来者所取代。

前面谈的都是精神上的东西,实际使用上,我确实觉得 Linux 更方便。

这里有个圈子的问题,我所在的圈子,包括我用的软件,很大一部分来自开源社区。

这些软件,在 Linux 上会得到最优待的支持,而在 Windows 就惨不忍睹了。

所以我选择 Linux.

精子生于 1995 年,英文 ID jysperm.

订阅推送

通过 Telegram Channel 订阅我的博客日志、产品和项目的动态:

王子亭的博客 @ Telegram


通过邮件订阅订阅我的博客日志、产品和项目的动态(历史邮件):

该博客使用基于  Hexo  的  simpleblock  主题。博客内容使用  CC BY-NC-ND  授权发布。最后生成于 2023-12-20.