简单介绍一下自己和目前的工作
毕业三年,从事前端到后端、硬件到软件、市场到研发、跑腿到决策,基本一个互联网公司运作需要的各种事都在不同程度上参与,生活不易,一把心酸泪~
详细写写你是如何走上编程的道路
萌芽
高一的时候花了三百五十大洋买了台文曲星PC1010,上面自带一种叫做“GV-BASIC”类BASIC编程语言可以用来编程,尼玛,我竟然可以按照自己的想法在160*80的黑白液晶屏上面输出文字和图形,从此一发不可收拾的喜欢上编程,也奠定了写代码的命。于是从GV-BASIC开始写代码,一段时间后面感觉BASIC的效率不够,又翘课到网吧上网找资料学习了6502处理器的汇编,真的效率上来了,但也因为操作的太底层了导致文曲星也报废了几次,整个高中报废了三台PC1010,一台PC800以及一台NC1020。PC1010都是自己的(后两台是淘宝买的二手货),另外两个型号的是同学的,到现在我都不知道怎么面对那两位同学。
因为有GV-BASIC的基础,高中的时候还顺便学习了Visual Basic 6.0。整个高中是一个程序高产的时代,还记得的自己写的文曲星程序有文字版的NBA游戏、简单的搜索引擎(用从事先录入的词条中查询数据)、算命程序、解方程程序以及一个用于编译汇编语句的汇编程序(我确信我现在没法写出那么高效的程序了)。VB写的PC程序也不少,基本都是工具类的,比如倒计时软件、日期计算器、剪贴板工具等等。
成长
大学选了通信工程,源于自己对硬件和通信技术也感兴趣,虽然老师讲授的课程里面只有C语言和数据结构能算软件方面的知识,但整个大学时期我有了更多的时间和资源来学习软件方面的知识。大学四年基本把常见的编程语言都学习了,如C、C++、PHP、Java、C#、JS、SQL(如果SQL算编程语言的话)……
大一学习C语言的时候开始接触NES开发(对,就是小霸王游戏机),并通过这种方式来训练C能力。这段时间收集了很多C语言开发NES程序的资料,最后把自己的研究结果写了几篇CC65(写NES的一种C语言编译器)方面的文章,现在网路上的CC65中文教程很大一部分是我贡献出去。总的写过一个电子词典、推箱子游戏以及后面的愤怒的小鸟以及一些常用的类库封装。现在热情减退不少,但NES开发的圈子里面还能看到有人时不时在研究NES的软硬件内容,看到也相当让人兴奋。
大二的时候做过几个MTK的IAVA半成品游戏,也写过Nokia的J2ME程序,数据库等等也这段时间学习的。
大三开始接触Linux(Debian 6)之后就开始时不时使用Linux,因此有了些基本的Linux操作能力,现在的很多产品也跑着Linux系统上。
大四学习了Android和iOS开发,在实习的公司做过几个app产品。大四在朋友的介绍下开始接触Python,从此便一发不可收拾的喜欢上Python(如果Python是个妹子的话)。
由于专业的原因,大学里还顺便学习了电子电路、单片机、嵌入式已经计算机网络方面的东西,现在偶尔也玩玩硬件,但像模像样的产品说实话没有做过,当然,这不代表以后也没有。
大学阶段的学习很杂,基本上是感兴趣的都去碰一下,时间精力有限基本都是浅尝辄止,最后沉淀下来的语言就只剩下C、C#、Java和JS了(大量使用ORM的缘故,除非对数据库进行操作,否则很少有机会去手写SQL了),以及硬件上的ADC、IO、串口、I2C、SPI、CAN等等东西了。
大学四年翻了很多学校图书馆的计算机类书籍,但基本都还停留在如何使用的层面上,这四年里代码也没少写,比如可以刷暴学校选课系统的软件、比如可以给自己班级无限投票的软件,当然还有一堆课程实训的XX管理系统和参加比赛时候写得一堆单片机程序和PC程序。
有幸这四年里也遇到几个可以在计算机编程方面相互交流的伙伴,时不时聊天总能碰出一些火花。
发展
工作以后逐渐对设计模式、敏捷、TDD等软件工程方法留意和思考,也开始看相关书籍来弥补这块理论知识的空白。编程语言方面也开始逐渐倾向于Python,酷爱Python的短平快,公司的大部分产品也均部分或者全部使用Python、框架方面倾向于Django。在团队建设上面也基本全盘Python化(当然,只是在互联网这块使用Python,桌面和Windows Phone还是C#、Android还是Java、iOS还是Objactive C(没错,不是Swift))。
出于对Python的喜欢,也逐渐向周围的朋友推荐Python,时至今日已成功安利了好几位,这样一来朋友聚一起能够交流的东西也就更多了。
也并非只在工作的时候写代码,业余的时间出过几个Windows Phone的应用,现在还在维护着。硬件开发板也是买了很多,但大部分都是跑了例程就丢一边了,顶多也只是偶尔玩玩,对于现在开发板的性价比也着实叹服,各种派都能够毫无压力的跑Python了,这某种侧面上又加深了我对Python的喜爱。
从读书的时候到现在为止,一直想写一个开发NES用的类C编译器,虽然也在断断续续的进行中,但进度太慢,用了几年的时间才把初步的汇编器,而且估计后面会完全推倒重来(这种情况不止一次了)。
创新
一直都像块海绵一样在吸收学习,还没到这个阶段....
介绍一些你比较喜欢的软件和硬件
软件
Sublime Text、Chrome(插件:JSON View、REST Client、EditThisCookie)、Firefox、Eclipse、Android Studio、VS、Guika
其实在这里我很想写vim、emacs的,但是无奈我对这两个东西一直学习不来,而我也逐渐接受了这一现实:并非所有人都使得来这些神器的,比如我。
另外用Python的推荐pip和virtuaenv。
硬件
树莓派、香橙派、Smart Link 7688、Arduino,可玩性都比较高。哦,还有PL2303HXA串口线。
如果喜欢阅读的话比较推荐亚马逊的Kindle,出差携带也比较方便,添加几个订阅,比较方便。
作为工具控的你们也可以分享自己在工作、学习、生活中用到的神器(新增)
白开水、双显示屏
有没有写过一些黑科技(狂拽酷炫屌炸天)型程序
大三的时候写过一个给班级投票的程序,把自己班级投到第一,还有一个选课软件,把学习服务器选爆了,唉,怎么都是些为非作歹的工具。
前久写了个叫做EditOnline的Python工具,不算黑科技,但感觉做简单的在线编辑很方便,特别是和上面提到的树莓派之类的神奇结合起来。
推荐一些书籍或者编程大杀器给大家呗,加 1W 个推荐理由
最近偏爱村上,不知道这样说会不会被打脸。
哈哈,回归正题,比如《IT通史》、《浪潮之巅》、《数学之美》、《代码之美》、《人月神话》,学习Python的话建议收藏《Python Cookbook》。
还有,东野圭吾的《白夜行》估计写代码的人会喜欢。
那么,你还想敲几年代码
如果高中在文曲星上面敲代码也算进去的话我已经有10年的码龄(操,竟然这么老了),前久朋友问还打算敲多少年,我随口回答“一直敲啊”,朋友说“程序员吃青春饭,你不可能一直敲下去”。
但我们都没有敲到老过,所以谁有资格说不能一直敲下去了?