对话 Jessica Hamrick:和 Django 的情缘是我前行的动力
本文出自 Your Django Story 系列,该系列主要突出那些贡献 Django 的女性。点击查看更多,本文系 OneAPM 工程师编译整理。
Jess Hamrick 是加州大学伯克利分校心理学系研究生,其研究包括通过编写程序模仿人类行为,以期了解人类如何认识世界的。从2008年起,Jess Hamrick 开始痴迷 Pythonista,并在其研究中重度使用。
你是如何走向编程之路的?
在我出生之前,我的父母都是程序员。尽管在我小时候他们就换了工作,但是家里还是有电脑的。不知出于什么原因,电脑一直吸引着我。儿时记忆中,曾坐在母亲腿上使用一款名为 Corel Draw 的矢量图形程序。那时对于可以用它画出不同的形状和填充不同的模型非常着迷。
几年后开始接触游戏,尤其喜欢 Game Boy,因为可以在上面玩新 Pokemon 游戏。尽管父母不赞同我玩游戏,不允许有自己 Game Boy 游戏机,但是他们告诉我,如果我自己开发一个游戏,就可以随心所欲的玩了。当时这对我而言,真是动力十足。
现在我仍未开发出自己想玩的游戏,但挑战仍在继续。在初中时代,我学会了 HTML 和 CSS,并与朋友一起创建了各种网站。在高中时,开始上编程课。最终在大学里如愿以偿地专修计算机科学。
在成为一名程序员之前做过什么?
我生活中的大部分时间都是以程序员的身份度过的,但绝非全部。孩提时代很长一段时间,也曾梦想过成为一名蚂蚁科学家。
对于编程,你最喜欢的是?
我喜欢弄清楚如何将问题分割成其组成部分,对这些部分进行研究找到正确的方式再将它们重组回去。对我而言,编程是一种艺术:编程有很多方式,而且有的方式极尽优雅唯美。很多时候,当我解决一个问题时,总会想「难道没有更好的解决办法了吗?」,有时候,也曾以自己的方式来解决一些问题,这种感觉非常好。比如「既然就是问题的解决方法,为什么我会认为有其他方式呢?」弄明白如何从解决问题的第一种方案找到第二种解决方案是一个令人难以置信的挑战,但是一旦成功,得到的回报也是异常丰富。
注:我从不认为代码可以永远「正确」。通常在几个月或者几年后重读以前认为「正确」的代码,看法都会发生变化。但对于我来说,这只是一瞬间的感觉,而非「正确」的客观真理。
为什么选择 Django?
在我本科期间,曾住过 coop,每个学期都会有「工作周」或者「工作周末」,大家一起努力整理房间。在一次周末的工作中,我的任务是整理房间散落内数百本书。我们开始进行对它们进行分类整理,同是我意识到,如果整理后不能轻易搜索目录,整理就变的毫无意义。所以,我开发了一个 Django 应用,很容易地实现了添加新书和查询现有书籍功能。Django 似乎是一个明智的选择:(1)Python 曾是(现在仍然是)我使用的语言;(2)我知道程序需要在关系数据库上进行编写。我其实并不是很了解数据库,所以对我来说这是一个很好的学习机会。
你目前或将来打算从事的比较「酷」的项目是?
自从本科毕业后,我越来越多的参与到 Scientific Python 社区中。特别是,我参与了 IPython 和 Jupyter 项目。Jupyter notebook 是一个运行在浏览器上的编程环境,能将代码、文本、图像整合一起,使其满足交互代码或数据探索的需求。它尤为适合完成课堂作业,因为同一个文件下可在文本指令和代码练习间自由切换。在过去的一年里,我一直忙于 nbgrader 项目,该项目是 Jupyter notebook 中的分级工具。至今它仅被用在少数几个课堂(包括我的),但是很高兴看到大家逐渐接受它。
最让你自豪的是?
在去年春季,当我还是计算机认知科学这门课助教的时候。我们在 Jupyter notebook 中开发了分配选项,并且将超过200个学生连入 notebook 内,并为班级建立了一个服务器集群。
这就使得学生们无需自行安装 notebook,便可登录使用。这是一个浩大的工程,我需要去学习之前从未听说过的 Docker 和 Ansible 等工具。不过最后还是成功了,并且其工作运行十分流畅。这是一个令人难以置信的项目,我认为它确实给我们的学生带来了不一样的体验。
你对什么感到好奇?
作为一个自认为既是科学家又是工程师的人,我好奇的东西太多太多了。科学方面:我想知道人类是如何思考和认识世界的。工程方面:我对创建科学家用于研究的工具具有很大兴趣。
平时空闲喜欢做些什么?爱好是?
作为一个研究生,我并没有很多空闲时间。大部分空闲时间,都用于在 IPython 这类开源项目上了。我也喜欢游戏(现实游戏和电子游戏两者都喜欢),喜欢在海湾地区骑自行车。
对于编程初学者,有什么建议或者小技巧吗?
选择一个真正感兴趣的项目,并尝试着去解决该问题。编程教程固然不错,但是可能会僵化你的思维:想要真正成为一个程序员,需要一个问题驱动你前进,寻求解决的方法。如果不知道如何从所选的问题下手,建议把重点放在某一方面。一旦解决一方面的问题,就可以用更复杂的方法继续工作下去。这就是大多数程序员实际解决问题的方法:找到问题最简单的部分加以解决,并继续深入。最为重要的是,不要放弃!
谢谢Jess! 😃
原文链接:http://blog.djangogirls.org/post/129569804938/your-django-story-meet-jessica-hamrick
OneAPM 能够帮你查看 Python 应用程序的方方面面,不仅能够监控终端的用户体验,还能监控服务器监性能,同时还支持追踪数据库、第三方 API 和 Web 服务器的各种问题。想阅读更多技术文章,请访问 OneAPM 官方技术博客。