本文出自 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 社区中。特别是,我参与了 IPythonJupyter 项目。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 官方技术博客

对话 Jessica Hamrick:和 Django 的情缘是我前行的动力的更多相关文章

  1. 「Python-Django」Django中使用数据库的 9 个小技巧

    Django 中使用数据库的 9 个小技巧. 1. 过滤器聚合 在 Django 2.0 之前,如果你想得到“用户总数”.“活跃用户总数”等信息时,你不得不使用条件表达式. Django 2.0 中, ...

  2. IT部门能力评估...

    IT运行成本和变化成本越来越高,IT部门是否上了一些对企业无价值的系统,是否充分利用了已有系统的价值? 随 着IT应用不断深入,庞大的企业IT系统日积月累,各种隐患渐渐显露.IT系统变得越来越复杂,运 ...

  3. 再访贺利坚(一):IT毕业生去培训机构,这件事很正常(转载)

    转载自: 再访贺利坚(一):IT毕业生去培训机构,这件事很正常 导语:与烟台大学计算机学院贺利坚副教授相识,还是在2012年年底,那个时候我在为社区之星专访栏目寻找合适的采访人.在社区运营的推荐下,我 ...

  4. 【求建议】毕业之声——信院IT类毕业学子经验分享交流会

    一:缘由 在和非常多学子交流,及上课的经历中,发现一个非常普遍的现象:部分大一学生即失去了对学习.对专业的兴趣.有人在迷茫之后奋起直追.从而珍惜利用不多的大学时光努力提高自己.有人在迷茫中沉沦,沉迷于 ...

  5. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  6. Cenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx到写nginx的环境部署(一)

    梳理下这几个的关系: centos是redhat的社区版操作系统. Python2.7.5是开发语言(centos6.5下自带的python是2.6.6版本,所以需要源码更新,而centos7.1下面 ...

  7. 5 个最受人喜爱的开源 Django 包

    导读 Django 围绕“可重用应用”的思想建立:自包含的包提供了可重复使用的特性.你可以将这些可重用应用组装起来,在加上适用于你的网站的特定代码,来搭建你自己的网站.Django 具有一个丰富多样的 ...

  8. 微信开发python+django两个月的成功经历,django是个好框架!

        时间:大三 上学期没有用微信内置浏览器而纯对话开发,坑了自己好一下. 下学期选错bottle框架,以为轻量好,谁知开发中什么都自己来很痛苦. 选对了框架django,终于在大三最后的个把月里写 ...

  9. django框架介绍

    主要内容 1.        Django框架发展 2.        Django架构,MTV模式 3.        开发流程 4.        开发实例——Poll python下各种框架 一 ...

随机推荐

  1. RMI原理

    一.分布式对象 在学习 RMI 之前,先来分布式对象(Distributed Object):分布式对象是指一个对象可以被远程系统所调用.对于 Java 而言,即对象不仅可以被同一虚拟机中的其他客户程 ...

  2. linux字符设备驱动学习笔记(一):简单的字符设备驱动

    最近在鼓捣lnux字符设备驱动,在网上搜集的各种关于linux设备驱动的代码和注释,要么是针对2.4的,要么是错误百出,根本就不能运行成功,真希望大家在发博客的时候能认真核对下代码的正确性,特别是要把 ...

  3. sorted函数

    我们需要对List.Dict进行排序,Python提供了两个方法对给定的List L进行排序,方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本方法2.用built-in函数so ...

  4. UVA - 297 Quadtrees (四分树)

    题意:求两棵四分树合并之后黑色像素的个数. 分析:边建树边统计. #include<cstdio> #include<cstring> #include<cstdlib& ...

  5. <<深入Java虚拟机>>-虚拟机类加载机制-学习笔记

    类加载的时机 遇到new.getstatic.putstatic或invokestatic这4个字节码指令时,如果类没有进行过初始化,则需要先触发其初始化.生成这4条指令最常见的Java场景是:使用n ...

  6. iOS 多态的简单思想

    /** * 多态:多种形态,是对于对象而言的,如果没有继承就没有多态 * * 在代码中体现:就是通过定义父类指针指向子类的对象 * * 好处:在函数或者方法的参数中如果传入的是父类指针,那么实现的时候 ...

  7. IE兼容性问题

    1.H5标签兼容.解决:js:document.createElement("footer");css:display: block;或者直接使用    html5shiv.js ...

  8. vs快捷键及常用设置(vs2012版)

    vs快捷键: 1.ctrl+f F是Find的简写,意为查找.在vs工具中按此快捷键,可以查看相关的关键词.比如查找哪些页面引用了某个类等.再配合查找范围(整个解决方案.当前项目.当前文档等),可以快 ...

  9. 关于WPF中Popup控件的小记

    在wpf开发中,常需要在鼠标位置处弹出一个“提示框”(在此就以“提示框”代替吧),通过“提示框”进行信息提示或者数据操作,如果仅仅是提示作用,使用ToolTip控件已经足够,但是有些是需要在弹出的框中 ...

  10. Unity3D--学习太空射击游戏制作(一)

    近期买了本书在学习一些Unity3D的东西,在了解了Unity3D工具的基本面板后开始学习一个太空射击游戏的开发过程. 首先下载一个关于本游戏的资源文件,(百度云下载地址:http://pan.bai ...