从E.E到S.E
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,我想我现在不知道在干嘛。他让我的人生从此不同。
随机推荐
- 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
- ASP.NET Core 折腾笔记一
前言: 在ASP.NET Core 1.0时,曾折腾过一次,后因发现不了System.Data而停止. 更因VS2015提示过期Delete掉VS了,其实主要还是笔记本的硬盘空间吃紧. 快双十一了,本 ...
- DynamicObject - 代理对象的种类
开箱即用,DynamicProxy提供了多种代理对象,主要分成两个大类: 基于继承(Inheritance-based) 基于继承的代理是通过继承一个代理类来实现,代理拦截对类的虚(virtual)成 ...
- app开发外包注意事项,2017最新资讯
我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印
系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...
- 理解 .NET Platform Standard
相关博文:ASP.NET 5 Target framework dnx451 and dnxcore50 .NET Platform Standard:https://github.com/dotne ...
- spring boot 实战:我们的第一款开源软件
在信息爆炸时代,如何避免持续性信息过剩,使自己变得专注而不是被纷繁的信息所累?每天会看到各种各样的新闻,各种新潮的技术层出不穷,如何筛选出自己所关心的? 各位看官会想,我们是来看开源软件的,你给我扯什 ...
- C# BackgroundWorker 详解
在C#程序中,经常会有一些耗时较长的CPU密集型运算,如果直接在 UI 线程执行这样的运算就会出现UI不响应的问题.解决这类问题的主要途径是使用多线程,启动一个后台线程,把运算操作放在这个后台线程中完 ...
- Linux监控工具介绍系列——vmstat
说来惭愧,玩Linux这么久了,居然没有玩转vmstat这个命令,对很多指标的具体意义都有点模糊不清,花了点时间好好学习.整理一下这个命令的相关资料.因为这个命令确实比较重要,而且频繁用到. 命令 ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...