23个月之前,24岁的我第一次用python写下了hello world。而如今我竟然是一个安卓fullstack工程师,而且iOS也在接手中。这个安卓项目在百万行代码左右,1.5g源代码,c语言和java用ndk交叉编译,是个通讯软件,只有我一个人负责开发。iOS平台也一样。突然想写一篇攻略,教大家怎么在25岁后推倒重来。
在大学之前,我对计算机没有任何基础。上大学之后,还是没有。大学学的是会计与法律,唯一和计算机有关的课是教我们怎么使用office 2003写简历。我本科学了5年会计,3年国内,2年国外。本科毕业在我24岁的时候我成功成为了英国top 20的计算机postgraduate,开始实现小时候的梦想。我之所以不翻译为研究生,是因为它只有一年,扣去毕业设计和放假的时间,只有7个月。作为一个对计算机零基础的我,7个月能到什么程度,大家可想而知。这7个月一共6门课,我觉得真正有用的是三门,第一门基础,教一些类似intel 8086的构架,汇编语言,加法器电路,半导体原理,二进制转换等,让我明白计算机的底层是怎么运行起来的。我当时写了800行的汇编对一个数组进行排序,还不支持3位数,最后发现其他人只写了300行,因为老师还提供了一个库我不知道= =。第二门python入门,教会我什么是编程,以及一些算法,比如冒泡法,从一本百万字的书中找出使用频率最高的前10个单词等,十分有意思。但是我当时还没有编译这个概念,还不知道高级的语言是怎么在底层执行的。第三门是java,虽然只有se这个部分,但是让我明白了面向对象的概念,明白了和脚本语言的区别,明白了编译这个概念,从此一发不可收拾。但是我当时特别痴迷与写出一个界面来(以为那样才算是一个程序),除了学校教的awt,swing,我还去官网自学了javaFX。其他三科,一个软件工程,只讲一些项目管理和开发模型的,UML之类,我没什么兴趣(我连代码还不会写呢)。还有一个电子商务,教你怎么在kickstarter上集资,怎么写规划,怎么申请创业资金,怎么开公司,基本没啥用。最后一科特别神奇,感觉是讲人机交互体验的,也没有教代码,只是空讲理论,界面应该怎么设计,系统应该怎么设计,按钮应该放那个位置,统计图应该选哪种。
这6科学完我的计算机学习生涯就结束了。今年2月我研究生毕业的时候,不知道什么是html,没听过mysql,没接触过c语言。最欠缺的是网络web这块,我甚至不知道什么是端口。我以first class最高学分等级毕业,回国过了年就开始找工作了。英国top 20计算机研究生一等荣誉学位,事实证明金光闪闪的学历确实有用。
今年4月的时候我开始了国内第一份实习工作,java安卓开发,百万级代码,我一个人。c语言的部分就几十万行,别说我没学过c语言,就算是安卓我也没接触过。没人带我怎么办?我先花了一周过了一遍c语言,到指针那块。然后翻墙从谷歌安卓官网的how to get started开始看起。当时我根本不知道我第一天学的东西在国内叫“安卓四大组件”。又过了2周的时候我基本可以开始开发了。但是当时公司有一个网管系统急需后端,又临时叫我去了,又是我一个人。这个项目其实算是外包的,但是由于配合这个系统的云平台在不断地改协议,所以需要一个人能够维护网管系统同步更新。这个网管系统是基于SNMP协议的,基于eclipse rap开发,osgi框架支持组件热插拔,代码1g左右。这是我第一次用eclipse(学校都是netbeans)。最搞笑的是,这个项目代码不对我们开放,在eclipse里面以一种target platform的形式存在。如果需要修改则直接继承父类过来重写。外包公司写了一个demo给我,没有文档,没有注释,没有源代码,完全一抓瞎,很多方法都不知道是干嘛的,只能照着写。参数都叫param,变量都叫value。后来开发完需要打包部署到服务器,我在eclipse的help里面找到的打包war包的流程,然后通过谷歌我第一次知道tomcat可以用来部署(顺带了解阿帕奇),第一次知道端口的含义,第一次见到了公司服务器,学会了许多Linux命令,第一次知道ssh可以远程,第一次用mysql数据库来存放网管的数据,第一次学了jdbc,第一次知道java的单例模式,没有任何人教我。这两个月有了我太多的第一次,每天都能发现新大陆。
现在我又回到了移动端项目,开始按照产品经理的设计文档开发。之前刚看完安卓的content provider,现在打算看animation这块。iOS也等着我开发,可是我还不会用swift写hello world。比起之前会计的枯燥无味,每天都能过的很有激情,也是在追随小时候的梦想。发出来希望和每一个想推倒重来的人共勉,只要你想学计算机,多晚都不迟。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/210329
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.