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. ASP.NET Core 中间件之压缩、缓存

    前言 今天给大家介绍一下在 ASP.NET Core 日常开发中用的比较多的两个中间件,它们都是出自于微软的 ASP.NET 团队,他们分别是 Microsoft.AspNetCore.Respons ...

  2. 3.Windows Server 2012 R2数据库部署

    很多人竟然不会安装数据库....好吧,来个图文教程,其实和windows里面一样安装,和安装2008一样的 先安装3.5:http://www.cnblogs.com/dunitian/p/53487 ...

  3. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

  4. 搭建属于自己的VIP积分系统(1)

    很久没写博客了,如果有写得不好的地方,还请多多见谅. 架构设计 需求分析 这篇文章主要是介绍此VIP系统的基础架构.说实在的,我其实对 架构方面也不是很懂,我这套框架 还是拿别人的东西改过来的,并不是 ...

  5. bzoj3095--数学题

    题目大意:给定一个长度为n的整数序列x[i],确定一个二元组(b, k)使得S=Σ(k*i+b- x[i])^2(i∈[0,n-1])最小 看Claris大神的题解就行了.实际上就是用2次二次函数的性 ...

  6. (翻译)FIFO In Hardware

    翻译一些自己觉得有价值的材料,工作中碰到英语大多数是读,基本没有写或者翻的,翻得不好不到位的敬请指摘. 同时也附原文以供参考. http://electronics.stackexchange.com ...

  7. Oracle常用SQL函数整理

    --返回ASCII码select  ASCII('A') "A的ASCII码" ,ASCII('a') "a的ASSCII码" from dual ; --反向 ...

  8. Win10连接远程桌面时提示“您的凭据不工作”

    我遇到这个问题的时候查找网上都给出一堆高大上的解决办法, 然而我的错误实际上是用户名的问题, 很多人以为远程用户名就一定是锁屏状态下的登录名, 其实不是,跟自己设置有关,所以首先应该检查远程用户名是否 ...

  9. linux yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...

  10. 在Mac OS X上安装ASP.NET 5(译文)

    ASP.NET 5 运行在包括OS X的可用于多个平台的.NET Execution Environment(DNX)上.本文介绍如何在OS X上通过HomeBrew安装DNX和ASP.NET 5. ...