title: 从E.E到S.E
date: 2014-12-18 16:49:19
categories: [杂念]
tags: [想法,生涯]

我在本科学的是Electric Engineering,大四找工作却当了软件工程师。这可以说是各种机缘巧合吧。

我接触编程是在初中,那个时候有同学在看《黑客X档案》,当时看到一篇文章说的一个万能密码:

'or''='

有一天在学校的网站论坛上测试了一下,发现真的登录了,而且是管理员的身份。虽然不知道是什么原理,但是觉得有点意思。

后来开始不间断的买《黑客X档案》,接触到了编程,VB,C语言,Perl还有汇编。我发现VB特别好懂,于是安装了一个Visual Basic 6.0开始写小程序。我写的最大的小程序就是一个网页浏览器了,当然是跟着书上写的。这些经历现在想想也挺丰富的,入侵网站,抓取肉鸡。不过这不是今天的重点,以后单独写一篇文章吧。

开始上大学了,第一学期就是C语言。周围无数的传言说C语言难得跟一坨屎一样,挂科一大半。直到现在,这四年间,每一年都能听到无数这样的话语。然而当年的C语言考试,我提前40分钟做完,不小心拿了一个满分。

那个时候用的是谭浩强的C语言,被人吐槽无数的版本。里面有些东西确实脑残:

b = a+++++a;

这样的问题确实没有什么意义,考试的题里面,概念题就能让你及格。剩下的改错题和编程题稍稍考一点水平,然而题目大多也是课程设计做过的。这一门课程,我的课程设计所有程序都是我自己凭脑袋想出来的,即便书上有现成代码的算法,我也是自己根据对算法的理解写出来的。而其他人有些照着书写代码,有些直接copy。这应该就是原因吧。

大学前三年,断断续续的搞了一些php, Java,LaTex 但是都坚持不长时间。这也和我三分钟的热情有关。一次偶然的机会,听到了一个语言,Python,网上搜索了一下,看到很多人说用它写爬虫很方便。那个时候我学到了一个词,爬虫。

今年三月份,Coursera上面开了一门课程,是Python入门。课程持续到5月份,每周课程都会有miniProject,一般来说是做小游戏。在完成每一个小项目的过程中,我发现我越来越喜欢Python。

5月份Python课程结束没多久,我收到教务处的通知,周五要提交创新项目的结题报告。我才反应我过来,我去年申请的一个创新训练项目还没有做。

这个项目是做一个选课辅助软件。当时申请表中,我表示准备用MFC与MSSQL制作这个软件和对应的数据库。可是,MSSQL安装好以后,我的电脑开机要5分钟。而MFC,倒腾了半个月,一点进展都没有,遂从此荒废。

时间只有一个星期,现学MFC是来不及了。这个时候我想到我是会Python的人,于是果断决定使用Python + MySQL来开发这个选课辅助软件。

一天半以后,软件连同图形界面全部做好了。那个时候,我觉得Python必定是神派来拯救我的天使。

后来辅导员做微信公众号,我提议我可以做一个爬虫,把教务处的通知扒取下来。那天以后,我正式开始做爬虫。

一开始是用Python的一个库urllib2的一个方法获取一个网页的全部代码,然互写入本地保存。这就是一个最简单的爬虫了。

接下来接触了正则表达式。于是一个真正意义的爬虫诞生了。那个时候我室友过生日,我给他写了一个扒取儿(cheng)童(ren)网站里面卖肉漫画的爬虫。他高兴得不得了。关于这个爬虫,有机会我应该会放出来吧。不过担心被查水表。

然后我觉得我有点了不起了,于是去淘宝开了一个店铺,专业定做Python爬虫。一个月都没有生意,直到有一天来了一个买家。他让我做百度贴吧的爬虫,于是我写了一个原始爬虫的demo给他,然后正式接手这个工作。他让他的一个下属教我Scrapy,这个爬虫框架让我的生产效率提升了一个数量级。接下来扒取各大视频网站,又指导我使用Scrapy配合Redis制作分布式爬虫,然后把数据存入MongoDB中,这样我的生产效率再一次提升了几个数量级。

这样我赚取到了给自己买iPad的钱。这也奠定了我学习软件方面技术的基本方法,项目驱动,现学现用。在后面接到的项目中,无论是爬虫的模拟登陆,打码,多代理,甚至是自然语言处理,多次证实了我这个方法的正确性。

从大学入学开始,我就决定要出国。可是最后TOEFL只差2分让我与资本主义国家失之交臂。一气之下决定考研。

大三下期和整个暑假都在准备考研,但是考研课程老师那种卖狗皮膏药十全大补丸的样子确实让我厌烦,考研数学题做起来也甚是恶心。后来因为一些私事,我放弃了考研,中秋节过后开始准备找工作。

那个时候,BAT和华为的提前批招聘都结束了。而我想都不敢想华为,因为印象中,华为是招硬件的,而且基本上都是研究生。我是学E.E的,但是我的项目经历只有学校的各种实验课做的东西。于是我抱着试一试的心态去应聘华为的软件工程师。

我不得不感谢Python,他让我几乎是毫无阻力的通过了大多数公司的面试,我的所有拿得出手的项目经历,全部都有Python的身影。最后我去了MTK而拒了华为,毕竟华为太累了。在两个月之前,我都不敢想我竟然有机会拒绝华为。

这样我就成了一个程序员。本科学的东西我想我还是有点用的,作为一个终身爱好也不错。毕竟搞硬件的要表白,场面炫目到秒杀码农几条街。

如果没有Python,我想我现在不知道在干嘛。他让我的人生从此不同。

随机推荐

  1. jQuery之ajax实现篇

    jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧. 实现功能 由于jq中的ajax方法是用了内置的deferred模块,是P ...

  2. 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发

    阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...

  3. SSH实战 · 唯唯乐购项目(上)

    前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...

  4. 如何进行python性能分析?

    在分析python代码性能瓶颈,但又不想修改源代码的时候,ipython shell以及第三方库提供了很多扩展工具,可以不用在代码里面加上统计性能的装饰器,也能很方便直观的分析代码性能.下面以我自己实 ...

  5. 在Visual Studio Code中配置GO开发环境

    一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...

  6. Android 旋转屏幕--处理Activity与AsyncTask的最佳解决方案

    一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务, ...

  7. HotApp小程序服务范围资质查询器

    微信小程序提交审核需要选择资质服务范围,如果服务范围不对,审核会不通过, 开发小程序之前,最好先查询所开发小程序的资质范围,否则无法通过微信审核.   小程序的资质范围查询地址,数据同步微信官方 ht ...

  8. PADS Layout 颜色设置

    一.板框.装配线.标注线配置: 二.个人爱好,我一般把Top pads设置成为浅绿色,Top Trace/vias/2D Line/Text/Cooper设置成为深绿色,Error设置成为黄色,而Bo ...

  9. BZOJ 3894: 文理分科 [最小割]

    3894: 文理分科 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 674  Solved: 392[Submit][Status][Discuss] ...

  10. NoSql1 在Linux(CentOS)上安装memcached及使用

    前言:       今天是初五,生活基本要从过年的节奏中回归到正常的生活了,所以想想也该想想与工作有关的事情了.我之前在工作中会经常使用memcached和redis,但是自己一直没有时间系统的好好看 ...