如何变成一个数据科学家?

最近我收到一封email,如下所示几行:

我是一名聪明的喜欢统计学的前工程师。我想成为一名数据科学家。对于我来说,我要在创业公司找到一份做数据科学的工作的难度有多少?

我想很多人都面临这个问题。找到一名优秀的数据科学家是多么地困难,这是相当普遍的,有些意思。我回复了一封email,多多少少和下面的文章一样——这是关于如何被雇佣的想法,从实际上真正想找到更有才能的数据科学家的某人的眼光看的。

数量直觉

我首先关注的是通常的数量感。这真的是最低要求。某人是否知道柯西分布【注1】什么的,真的不重要。我想要的是看看在思考数量上的事情时,有多少信心。我谈到的例子有:

哪个更好:每周留存用户加倍,还是你的网站首次访问用户数加倍?

(答案:留存,很明显,组合兴趣是相当重要的)

Twitch任何时候有大约10,000个在线主持人,大约400,000个观众。你认为主持人的观众分布可能是什么?或许画个柱状图?哪一个更高:平均数或者中值?

(答案:它们应当在一小组频道里有一个非常陡峭的集中的观众,分布于大量数据组的相当一部分人都能注意到随处可见的幂次分布【注2】)

编程技能

其次,我关注编程技能。这没有数量感重要,因为它可以教,但是教会花费大量时间,因此它还是相当重要的。强调一下,不要太关注,大部分人愿意亲力亲为。例子:

文本文件有200万行日志,我想让你调出IP地址为61.22,33.4的行。不要想太多。

(答案:我真正检查的是它们不要过度思考——简单,直接的解决方法是我们想要的。这是一个真正简单的问题,他们应该认识到,不要支支吾吾或自作聪明。正则,用Python、Perl、grep的子字符串匹配——都可以。目的在于你是否意识到它是简单的。)

你了解SQL多少?用过MapReduce吗?用过AWS吗?用Python多吗?在R上面投入过时间吗? (答案:我没有期望任何人对所有这些问题或任何技术说yes,这只是表明了经验的广度,更重要的是它预测了他们能够多快做真正的工作,因为那很好地囊括了我们的工具集)

业务知识

...

新的PHP

PHP在改进和新标准上正经历着一次复兴

很多人又爱又恨的编程语言正经历着一次复兴。这不是你父母的PHP。新的PHP是一种更加成熟的语言,包括社区标准、正在增加的互操作组件(interoperable component)的吸引力,和提高性能的有激情的运转。如果你因其它语言而放弃了PHP,或者如果你是一名忽略了PHP最近变化的老手,你值得回头再看一眼PHP。

语言特性

PHP 5.5(写本文时的最新稳定版本)相较于早期版本已经有了大幅的改进。最近的PHP包含了强大的新特性和有帮助的开发者工具,比如内建的web服务器,简单迭代的生成器以及命名空间。在PHP 5.4,traits【注1】被引进来解决单继承语言的代码复用,还有闭包,让你以函数风格来编写代码。其它重要的特性包括内建的FastCGI进程管理器和phpdbg debugger,以及一个新的密码哈希API,便于在PHP里哈希和安全地管理密码。

互操作组件

一些年前,PHP有一些大型框架(比如CakePHP、CodeIgniter等)。每个框架都是一个孤岛,提供了通常可以在其他框架找到的功能的自我实现。不幸的是,这些孤立的实现可能彼此不兼容,强迫开发者为了一个既定项目而封闭在一个特定框架里。

今天情况不同了。新的PHP社区采用包管理和组件类库来mix以及匹配最好的可获得的工具。我喜欢把它比喻为杂货铺。如果我需要使用一个远端API,我将访问通道3选取Guzzle。我需要一个请求路由吗?Symfony\RoutingAura\RouterSlimPux

UI hacking最佳工具(非JSFiddle)

对于设计师而言,编程最难的地方在于建立你的环境。甚至更糟糕的——仅仅为了能够在某个元素上修改代码,你不得不克隆或安装一个完整的项目。

鉴于此,当我用HTML/CSS/jQuery加快工作时,我常常使用浏览器内的开发环境。但是你应当使用哪一款呢?这取决于你正在做什么:

从头开始hack

你只是需要快速编码。体验一种简单的布局、设计或动画:

http://codemagic.gr/

codemagic截图

好处: