我们都是IT民工---------流浪人IDE开发札记

你生命中的有些东西终究会失去,比如我住了6年的陈寨,这个聚集了郑州十几万IT民工的地方,说拆就拆了。再比如我玩了3年的坦克英雄,这个带给我太多快乐的游戏,说停就停了。
编程对我而言是种爱好,我上学6年,工作14年,期间学会了二十多种编程语言,新潮如go和swift,生冷如F#和lisp,我都学过,至于热门的,编程语言排行榜上前14位的语言,我都会用。也许你觉得我是在吹牛,那就让我从头说起吧。
     我上中学时开始学习编程,那时候没见过什么电脑,看书上说电脑是由主机显示器和硬盘驱动器组成的,我想当然地以为硬盘驱动器就是摆在电脑主机旁边的,跟打印机一样是个外设。那时候联想的电脑广告铺天盖地,然后对于偏远农村的我来说,却是永远也不敢奢望的。我只有一台小霸王学习机,接在一台黑白电视上,在上面运行basic程序。
     basic应该是很多人学编程的入门语言吧,毕竟那时候还没有python. 那时候的basic,是用大写字母编写的,每行前面要加一个行号,程序是按行号执行的。每两个行号之间要有间隔,不然在两行中间插入代码时就麻烦了。很原始吧?很多年后当我把这段经历讲给我的老师听时,他说你知足吧,我们那时候是打纸带的,打错了就用胶水粘纸把一些孔给堵上,再用针扎出另一些孔来。
     我那时候主要用basic解决一些数学问题,比如鸡兔同笼,百钱买百鸡等,还有就是求从1加到100的和。当时 PC上最流行软件应该是wps吧?我没见过,但我用学习机学会了五笔字型。学五笔时有次对我妈说话五笔比较难,我妈说那你先从简单的学起,先学一笔二笔。从我学习到工作,我妈对我的支持一直是我最大的动力。我上大学的时候买了一台二手电脑,那笔钱本来是家里准备购买彩电的,攒了好久,听我说想买电脑,我妈二话没说就把钱给我了。
     买电脑时是我爸陪我去的,那时候郑州的科技市场还很简陋,两层楼的大厅,一楼卖各种各样的散件,二楼卖盗版软件。因为我们只有2000元,店主很为难,最后搜罗了很多二手配件,才勉强给我装了一台电脑。所以我的第一台电脑,CPU用的不是奔腾和赛扬,而是Cyrix 。Cyrix 这个名字可能很多人都没有听过,但我可以保证我没有拼错。电脑买回去之后我激动了好几天,村里很多人前来参观,因为那是我们全乡第二台电脑,第一台在乡政府。
     我的第一台电脑运行的是windows 95系统,后来被我换成了98。我用这台电脑编写VB程序,用的Foxpro数据库,那时候听到VisualStudio 6.0发布的消息激动不已,花10块钱买了一张盘,视若珍宝。然后有一年暑假,我编写了一个简易的进销存程序,卖给我们乡里的一个商店,赚了200元。
     在学校里,当然要学c和c++了,这两门语言我都学得很精通。但我说句老实话,我从业十几年从来没有用到过。那时候的编程界不光有VB,其时PoweBuilder已经开始没落,而Dephi风头正劲,刚好学校机房有Dephi,于是也学了一下。
     互联网的风潮突然一下子吹遍了神州大地,那年暑假,我们县电信局建了第一个网络演示厅,试营业期间免费对公众开放。名字起得高大上,其实就是个网吧。那时郑州的网吧大概6块钱一小时,所以那个暑假我基本都泡在那个演示厅里。那时候QQ还不叫QQ,叫OICQ,商都网也不叫商都网,叫商都信息港。那个时候网络上没有太多的应用,基本上就聊天室和BBS在那里横行。我去得最多的就是澄心和碧海银沙。(说到这里插播一条寻人启事,有谁认识当年澄心聊天室的快乐小天使,就是商丘师院的丁今,请联系我,定酬谢500元QQ币。)然而当我满心欢喜地打算自己编写一个聊天室时,才发现我学的知识连一个最简单的留言板都做不出来。那时候asp,jsp,php之类网络编程已经大行其道,而我们在象牙塔内竟然浑然不觉。
      思忖再三,决定报名参加一个java工程师的培训班,那时候国内比较牛的java培训机构一个是ACCP,另一个是NIIT。因为ACCP时间长费用高,所以果断报了NIIT。三个月的培训,其辛苦无人能知,经常为了调试一个程序,到凌晨才能入睡。然而功夫不负有心人,学完之后,应聘到郑州一家软件公司,开始了我的java生涯。
     我们那个公司当时做的是移动的外包,公司里遇到的都是一些奇葩的人物。比如说我们技术总监刑工,一个五大三粗的汉子,偏偏留了一头大波浪的长卷发。再比如我们项目组长秦工,一个文弱的小女孩,偏偏领导了几个大男人,这个公司彻底颠覆了我对软件公司的认知。
     开始工作的时候并不顺利,我虽然学了jsp,但在公司已经开始使用structs和hibernate,我完全不懂,还有什么dwr,也是一无所知。数据库的知识也非常欠缺,当时不会用join,为了把一个用户Id转成用户名,竟然在循环里查询数据库。好在前辈们都能及时指出这种问题,我也很快就能改正。
     我那段时间在郑州呆了五年,从一个程序员成长为比较资深的java工程师。平时在公司工作,周末就去逛各种公园。碧沙岗,紫荆山,人民公园都留下了我的足迹。如果你静下心来看,郑州真是一个美丽的城市。不过有些时候我也会感觉很不爽,那时我住在燕庄,旁边就是省高级法院。法院周边的几条街上,经常会有一些含冤受屈的人们,带着简易的铺盖,露宿在街道两帝的地面上。他们的食物,基本上就是冷馒头。我有时候会给他们送些馒头和咸菜,也认识了几个上访了几十年的冤民。好吧,这咕噜掐了别播,冤不冤的其实也轮不到我来说。
     俗话说饱暖思淫欲,工作稳定之后,就开始为自己的对象操心。当时我注册了一个中国交友中心,这家网站刚开始是免费的,后来收费每月10元。如果我不告诉你们,恐怕很少人知道它就是现在珍爱网的前身。然而在网上毕竟没有太多收获,有些是见一面就没有下文,有些根本就见不到人。记得有一次我约了人见面,去的时候突然下雨了,我捧着鲜花在雨中等了两个小时,姑娘却没有去,打电话也关机。第二天发个短信说她看天下雨了,以为我不会去所以也没去。
     所谓踏破铁鞋无觅处,得来全不费功夫。有些你苦苦追寻的东西并不一定能得到,而有些你未曾想过的事情却很容易就实现了。那年春节我去我姑家探亲,恰逢她邻居家的一个姑娘来串门。随便问了一下,竟然是陕师大中文系的毕业生,在我们县的另一个乡的中学当教师。好吧省去中间细节,在我姑的撮合下,我们正式定亲。
     都说程序员是高薪职业,他们说的没错但是写错了。中间那个辛是辛苦的辛,不是薪水的薪。程序员的工作高度辛苦,但薪资并不高。至少我是这么认为的,工作几年,存款居然不够付丈母娘的财礼。虽然丈母娘通情达理地减少了彩礼的金额,我妈又多少借了点外债把婚事促成了,但这件事情对我打击却很大。于是决定离开郑州,去上海谋一份高薪的职业。中国的地域差别在太大,同样的工作在不同的地方薪资完全不同,去上海的话工资至少可以翻一倍,我拮据的生活可能会因此有所缓解。
     为了去上海的时候能够多一份保障,我开始学习.net。相对于java而言,.net是个后起之秀,虽然功能不如java强大,但是操作相当简单。我在没有任何老师,没有任何教材的情况下,就把.net学会了。总共也只花10块钱买两张盘,一张VS2005的安装盘,一张MSDN的文档盘。学习的过程也相当简单,就是照着msdn上的示例做一个购物网站。不这我到现在还不明白为什么那个例程要叫duwamish,字典上都查不到这个词,完全不知道什么意思。
     在上海找工作用的是前程无忧的网站,我java和.net的职位都投了,最先被录用的却是.net.于是我编程生涯就此转折,从java一下子转到.net.录用我的是一家做远程教育的公司,老板是从美国回来创业的信息工程博士,据说之前是戴尔的核心工程师,技术牛得不得了。我被任命为技术部的经理,虽说是经理,不过属下也只有两个人,一个做C++的录制工具,一个做flash的播放器,我做.net的网站。
     我刚去上海的时候,住在一个群租房里,一套三室两厅的房子,客厅被改成两间卧室,五间卧室总共住了男男女女18个人,生活极其不便。每个人的领地也就是自己那一张床板。上海的夏天潮湿闷热,想洗个澡都要等好久,早上起来上厕所也是要等好久的,18个人哪。后来媳妇听说我找到了工作,也把工作辞了来到上海。这样群租房是不能住了,于是就在张江和川沙的交界处租了一间房子。却不曾想上海的房租是付三押一的,付了房租之后,带的钱便所剩无几了。
     房子是毛坯房,里面什么都没有,而我们却没有钱买家具。于是从附近的垃圾场里找了一张床板,又找了6个油漆桶,把油漆桶装满水当床腿,支起了一张床。然后又找了一张旧椅子,在上面放电磁炉做饭。床板只有80厘米,两个人平躺根本不够,只能两个人抱着侧卧。为了省点午饭钱,媳妇都是做好了饭给我送到公司,然后我们就在公司楼下的小公园里,两个人吃同一份饭。
当时的公司离张江公园很近,其实张江公园原来的名字叫樱花广场,每到四五月份,公园里就会开满绚丽的樱花。在樱花树下走过,有一种身在异国他乡的感觉。
     我在上海工作一年多,然后公司就被北京的一家公司收购了,然后我又辗转来到了北京。当时住在回龙观和霍营交界的地方,然后公司却是在昌平。每天早上6点钟就要起床,乘公交到龙泽,然后坐公司班车,走八达岭高速去上班。也就是在那个时候,我学会了在车上睡觉,不管站着坐着都能睡着。
      新公司主要做电子政务,用的.net+oracle,虽然我.net代码写的不怎么样,但毕竟项目经验还在,然后就在几个项目上担任项目经理。虽说是项目经理,但我们经常一个项目组就有十四五个人,跟我带3个人的团队是完全不同的。为了弥补短板,我报考了项目管理师,也就是高级项目经理的考试。虽然没有考过,但备考的过程中系统地学习了项目管理的知识。
     在北京的日子苦中有甜,我们一有空闲就去游览各种皇家园林,清华园,燕园,园明圆,颐和园等等。有一次我们去十三陵水库游玩,恰好碰上当地苹果节的万人长走活动。然后在陡峭的山路上,我看到人群中有一个老人,坐在轮椅上,由他的老伴推着走。然后我就被感动了,腿不好的人都能参加长走比赛,我们还有什么理由不努力呢?
    在北京工作一年多,公司在郑州成立办事处,我又被调回郑州。没过多久,有一家做电子商务的新公司成立,聘请我去当技术总监,公司的产品是基于php的开源软件修改出来的,于是我又转向php领域。这次转php没花多长时间,前后大概用了一个多星期,熟悉了php的语法后就开始进入工作了。 用php做电子商务类网站的话,比java和.net的快得多,而且网上有大量开源的 产品可以使用,用得不顺了,就随手改一下,从此见识到了开源的魅力。
    后来公司的的产品做出来了,我有了一些空余时间,于是开始学习ruby和python,ruby和python是动态语言,所谓动态就是可以在运行期间改变语言的属性,比如在运行期间给类增加属性或者方法等,这些在java和C#中是做不到的,类的属性和方法必须在开发期间定义出来,运行期间不能改变。用动态语言编程的话,效率要高很多,因为实现同样的功能,动态语言的代码会少很多。自从学会了ruby和python之后,我基本上就没再用过java和C#了、ruby配合rails可以快速创建网站,而python做为通用脚本语言可以做任何事情 ,比如我在升级了程序后用它来迁移数据。
     后来移动端渐热,又学习android和IOS以及WP,当时我集齐了三种操作系统的手机:小米、iphone和诺基亚的lumia,经常看到网上果粉和米粉互骂,我笑而不语。当时做IOS开发,用的还是晦涩难懂的obj-c,obj-c是一个非常反常规的开发语言,它的语法和其它语言都不一样,看着别扭,写着也别扭。当然,苹果肯定也知道这一点,于是推出了swift,当我接触到swift的时候,我觉得obj-c可以扔掉了,它的语法跟ruby和python一样简洁,而且功能比obj-c还要强大。
     说到这里,不得不提一下那个老旧的C语言了,C语言诞生于上个世纪中期,已经是老旧不堪了,但是因为在系统程序领域没有有效的替代者,所以在开发系统级软件比如驱动程序时,还非得用它不可。当然,谷歌也知道这一点,于是推出了go.当我见到go的时候,简直震惊了。它的语法比java和C#还要优美,但是却可以开发系统软件,是C语言当之无愧对的替代者。而且go语言诞生在多核时代,所以它一开始就支持高并行开发,它的最小运行单位不是线程,是协程!
  说到协程,不得不提一下erlang语言了,erlang是一门历史很悠久的语言,但直到多核时代才发挥出它的威力,在go出现之前,erlang是做高并发软件的首选。因为erlang是一门函数式语言,它没有变量,所以也就不存在多线和操作共享变量的问题。而且它的最小计算单位是协程,不是线程。这一点至关重要,因为一台普通的PC机可以开出最多5000个线程,却能开出多达10万个协程!然而erlang毕竟是一门函数式的语言,它的语法和命令式的语言完全不同。没有变量,没有循环,没有赋值语句,你在命令式语言中所获得的所有编程经验对它都不起作用。用erlang写程序,你不再是向计算机下达命令,而是在构造数学上的函数,进行模式匹配。
      我用erlang编写过一些程序,苦不堪言,好在此时go语言出现了!命令式的语言,最小计算单位是协程,那我还要erlang有什么用?
      到后来我开始对编程语言产生了爱好,只要是我不会的语言,我都会抽空去学,哪怕学了完全没有什么用。这就是爱好,源自内心,没有任何功利驱使,这才是学好语言的根本。
     在学习中,也遇到了很多困惑和迷茫。为了学习swift,我曾经花了一个星期的时间试图在我的华硕F5上面安装mac系统。折腾了N多遍,最后无果而终,不得已花钱买了一台苹果电脑。学习ruby的时候,还不知道用bundle, rails所需要的几十个gem我是一个一个下载安装的。学习Go语言的时候,想当然地以为那个gopath和其它语言的path一样,指向类库所在的位置,结果花了一个星期也没有运行起一个helloworld程序。
     当然,最令我痛心的,是市场上并没有针对初学者的编程工具,那些专业级的开发工具都太复杂,有的需要下载安装插件,经常是插件版本和IDE版本不配,失败多次让人欲哭无泪;有的需要配置环境变量,各种path各种root让人如坠云雾。还有的体积庞大,为了运行一个示例程序要下几个G的开发工具。更有甚者,不能在windows系统上运行,为了学习一门编程语言,需要另外买个电脑!
     痛心之余,我忽然发现了一个事实,那就是:我是一个程序员!IT民工也好,码农也罢(当然我更喜欢称自己为IT流浪人),这些都不能掩盖我是程序员的事实!程序员要使用开发工具,当然也可以制作开发工具!于是我萌生了一个想法,要开发出一套针对初学者的编程工具,这个工具可以使用各种开发语言,一次安装即可运行,无须下载插件和SDK,无须设置环境变量,内置很多初学者需要的示例程序,这样不是很好吗?
     既然心意已决,那就让我从现在开始吧,首先要给自己的作品起个名字,就叫流浪人IDE吧。英文名Outcast IDE,高端大气不用上档次 。第一版打算支持java、C# 、php、ruby、 python、 go 、siwft、 erlang 八种开发语言,后期再加入其它语言的支持。如果有人也有兴趣开发类似的编程工具,可以联系我,我们一起合作,为中国的软件产业贡献一份力量。

时间: 2024-10-24 05:43:59

我们都是IT民工---------流浪人IDE开发札记的相关文章

Qt的IDE开发环境(KDevelop,MonKey Studio,QDevlop,Dev-cpp,Cobras,Edyuk)

讲到Qt的IDE开发环境,本人一直在Windows下使用VC6.0 + Qt4.3.1开发程序.但转到Linux下,使用Fedora中自带的KDevelop + Qt4.3.1开发程序. 最近一直做Qt程序,今天在网上看见讲述Qt的IDE开发环境的文章,介绍了几款Qt的IDE开发环境.在此加以总结: VC6.0.VS2005 —— Windows下知名开发环境,不多说了~ KDevelop —— Fedora下自带的集成开发环境,支持Qt4.据说是用Qt3开发出来的,不知道真伪~ MonKey

centos6.5下Python IDE开发环境搭建

自由不是想做什么就做什么,而是想不做什么就不做什么.        ---摘抄于2016/11/30晚 之前学习了一段时间的Python,但所有部署都在windows上.正赶上最近在学习liux,以后Python的继续学习就基于linux了,随便写写记录自己的学习点滴.废话不多说,上大招: 毛主席说过,没有开发环境的Python开发都是耍流氓. [Python安装] 1.gcc自然少不了,图个方便,直接用"Development Tools": yum groupinstall &qu

【第〇课】用更好的IDE开发

推荐的IDE IntelliJ IDEA JetBrains是一家捷克的软件开发公司,这家公司做出了很多的优秀的IDE,有写python的.php的.web前端的……IDEA就是其中一款非常优秀的java IDE.IDEA在写java方面,功能和易用程度远超eclipse,几乎所有和java有关的东西(jsp.Android.GUI等等)都有非常完备的组件(自动提示.GUI设计器.数据库连接工具.AndroidUI预览等等). AndroidStudio 官方推荐的IDE,其实是基于IDEA的,

Linux平台下Python的安装及IDE开发环境搭建

Linux平台下Python的安装及IDE开发环境搭建 1.Python安装 Python有2.X和3.X两个版本,由于2.X的版本较稳定,使用者也较多,本文选择使用Python 2.X版本. 安装步骤: (1) 下载Python安装包:https://www.python.org/downloads/ (2)  解压安装包:tar zxvf Python-2.7.10.tgz (3)  编译:./compile (4)  安装:make && make install 说明: ① 这样p

Atitit. Ati IDE 开发平台的第一版规划

Atitit. Ati IDE 开发平台的第一版规划 1. 增加业务类型复杂类型内置1 1.1. 简单类型string int float自动类型转换以及2 1.2. $变量str连接2 2. Dsl2 3. 类库2 3.1. 输入法工具箱,词库clr工具 and 垃圾词库2 3.2. 翻译lib tools2 3.3. Menu mana2 3.4. 2 3.5. 商户管理2 3.6. 文章管理(by merchant and admin )2 3.7. 普通用户..reg login  lo

趁热打铁第二季《当下大部分互联网创业公司为什么都愿意采用增量模型来做开发?》

<当下大部分互联网创业公司为什么都愿意采用增量模型来做开发?> 这是为什么呢? 究其原因: (1)现在互联网技术日新月异,用户的需求也不是一成不变的.而增量模型的灵活性可以使其适应这种变化大大优于瀑布模型和快速原型模型.并且大部分公司还不能一下子就做出功能完善的的软件.所以采用增量模型来做开发是很符合软件开发潮流的. (2)现在软件开发越来越快,首先开发出具有核心功能的软件来快速占领市场,这样客户就很快有自己的用户量,占领一部分市场. (3)同时也能够加强用户与开发者,客户与用户的交流,以锲合

搭建Cocos Code IDE开发环境

搭建Cocos Code IDE开发环境 Cocos Code IDE是Cocos2d-x团队开发的,用于开发Cocos2d-JS和Cocos2d-x Lua绑定的游戏工具,它是基于Eclipse[ Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK).——引自于百度百科 http://bai

大数据处理系统都有哪些?(流式计算系统)

我们在上一篇文章中给大家介绍了批处理系统以及迭代计算系统.这两种方法都是比较抽象的,我们在这篇文章中给大家介绍一种Facebook经常使用的流式计算系统,希望这篇文章能够给大家带来帮助. 流式计算系统就是因为流式计算具有很强的实时性,需要对应用源源不断产生的数据实时进行处理,使数据不积压.不丢失,常用于处理电信.电力等行业应用以及互联网行业的访问日志等.在Facebook 的 Scribe. Apache的 Flume. Twitter的 Storm. Yahoo的S4.UCBerkeley的S

(转)使用eclipse Arduino IDE开发 AVR程序

小白写程序都是用eclipse的,所以学习Arduino时自然就想用eclipse,因为俺懒,这样省事.网上找了些帖子看看,感觉开发环境都比较麻烦,这样不符合俺这种懒人的风格,所以我弄了个简单点的. 第一步:下载各种东西1.JDK,这个去oracle官网下就好了(其实百度下载更快)http://download.oracle.com/otn-pub/java/jdk/8u20-b26/jdk-8u20-windows-x64.exe.2.eclipseArduinoIDE,http://ecli