时光荏苒,岁月匆匆,不知不觉间2012年又到了尾声,这一年的时间不知道有多少人最后是兴奋,是懊恼、是平淡,还是悔恨。不知道玛雅人的末日预言是不是靠谱,我选择在“末日”之前将这一年记录下来,算是对自己的一个总结,无论有没有末日,普通人不管怎样还是要生活的,生活还得继续,饭还是要吃,日子还得照过。12月22日如果自己一觉醒来还活着,我们还是得保持劫后余生的庆幸对不对?
相对于大多是的程序员,我不知道自己能不能算得上这个群体的一员,如果我算着群体的一员,那么我相比大多数人是一个年轻而又年长的程序员。先说说年长,我是2003年进入大学的,那一年我18岁,但是我的专业和计算机毫无关系,也不算全无关系,至少还是需要计算机画图的,我的专业是机械类的专业,以后打交道的是容器、压力容器、各种大中型的器械,我每天面对的是各种力学,压应力、拉应力、热力传导,非常幸运我的学校很不错,工作在2007年毕业的时候很好找,不但如此我在毕业前的10个月就已经签订了就业合同,很不错的单位,央企、国有超大型企业。如果不出意外我的人生就已经确定了,行政之路或者技术之路,职员-科级职员-副科-科-副处……,助理工程师-工程师-副高-高……,但是……,人生有很多但是,2010年末我辞职了,呵呵,算是比《北京青年》提前了了吧,用现在流行的话说就是“裸辞”了。我裸辞了。那一年我要到副科了。
2011年是混乱的一年,我不断的徘徊在自己的心门之外,干过不少工作,卖过保险,也干过老本行。不说也罢。2011年末我终于决定走上程序员这条路了。
时间到了2012年,经过艰难的寻找,我终于以一个机械工程师的身份当了一个程序员,这一步的艰辛不足为外人道,但是我想说的不是这个,这个坎已经过去了,至少我现在可以用写程序赚点工资了。虽然很少,当初我为什么选择这条路,可以与我的缤纷的想法有关,这是一个迷人的世界,一个由一行行的代码组成的世界,我的任何想法,不管多么离奇,都能实现。我没有参加社会上任何计算机的培训班,就靠着这股子锐气,走上了这条路,有些时候我就想:有些时候你不走到一个位置,永远不知道在这个位置上的难处。
等到真正走到这个位置才发现,事实远比自己想的残酷,表面下的光鲜掩饰不住内里的艰辛,我不知道什么是数据结构,更别提什么是树?什么是图?大学里学的那点C语言,经过时间的洗礼,基本都还给老师了,好在我的职位并不是急着立即写程序,毕竟当时就职时也答应做部分机械设计方面的东西,也就是那个时候,我急切需要一门能够养活我的语言,然后就是了解、比较和选择,由于我的基础很差,也可以说是根本没有基础,我就本着简单易用好上手的原则选择我的第一门语言,C/C++当然强大,但是它太强大了,舍弃;Java很火,但是IDE并不是特别顺手,作为完全的零基础确实勉强了,舍弃;VB很容易上手,但是它老了,虽然现在依旧发挥着余热,毕竟老了,舍弃;后来我看到了C#,看到了MicroSoft的.Net平台计划,我决定选择它作为我的工作语言,既然有了方向就开始学习。
笨拙的安装IDE,秉承Windows软件的一贯风格,只是一次次的下一步而已,比JDK的配置简单一点,简单的界面设计,拖拖控件,再来点简单的点击事件,就算一个软件了,当时感觉真傻瓜,至今还记得当时第一个Button的MessageBox.Show()的兴奋感觉,万幸我所在的公司是一个小公司,也并不是专门做软件的公司,软件只是其他产品的附属产品,同事也很平易近人,所以日子也不算难过,就这样我成了一个只会拖拖控件的“伪程序员”。
曾经我以为这就是程序员的一切,因为我在这行连菜鸟都算不上,还记得上大学时,老师说的那个“认知圆”的事情,说的是:为什么越无知的人越认为自己水平较高,知识领域或者知识范围,就像一个圆,只有自己懂得和了解的越多,这个圆接触到的未知领域才能越大,才能越能知道自己什么不知道。我把自己的认知分为,不知道自己不知道——》知道自己知道——》不知道自己知道——》知道自己不知道;当时的我充其量只能算是这个知识领域里的一个点,不知道自己不知道,无知者无畏而已。
我所在的公司还是偏向于传统行业多一点,不算是纯粹的软件公司,所以工作的气氛与纯正的软件公司相比还是有点差别的,现在也看到好多IT行业的程序员一直在抱怨工作忙、加班多,生活不规律,现在也出现了不少IT从业人员的猝死事件,所以各位还是要多多的注意身体。我上班一年以来,只在一次周末加过班,加班一天,这一次还是由于自己水平不行造成工作没有及时完成。虽然加班不会有两倍或者三倍的加班费,但是还是有正常的加班费。只能说我进了一个相对比较不错的公司。闲话不说了,还是说说自己的心路吧!
看到院子里好多人的鼓励,那么我就多写写自己的一些思想上的认识和感受吧!或者是自己的一些感想,分享给大家,希望大家多多指点,我算是这个领域里的新人,多指导批评哈,算是抛砖引玉,希望看到更加精彩的2012年终总结。
继续,做了一段时间的拖控件的工作,我就开始不满足了,程序员应该不是这样的,他应该是神一样的存在,我决定开始广泛了解这个行业,因为只有你了解了才能做出比较合理的选择,知己知彼才能百战不殆。提前声明我只是浅显的如蜻蜓点水的了解了一下,有什么不对的请给位大牛多多指点,修正我自己的知识体系。
我首先了解的是嵌入式行业,因为这个职位我们公司有人在从事,我简单把这个行业分为带系统的ARM系列和不带系统的单片机。先说说单片机吧,单片机的功能比较单一,运算能力稍差,适用于低成本的控制领域,可以做到很低功耗,适合一些控制比较简单,PC机无法深入的一些领域,比如简单的数据采集、传输等等,目前单片机家族主要分为两大体系结构,冯诺依曼,代表为51系列;哈佛指令结构,代表PIC系列;我曾经花了几个星期的时间来学习PIC系列的PIC16F877单片机,感觉入门比较简单,但是想深入学习必须有很扎实的电子电路知识和计算机基本原理知识,这正是我所欠缺的,想深入学习阻力很大,所以了解了基本之后就放下了。再就是ARM了,功能强大,可以方便的移植Linux系统,完成更为强大功能,相应的知识要求更高,所以果断没有浪费时间。
经过这短暂的一段时间学习,虽然不能开发做项目,但是确实开拓了我的眼界,也让我了解了更多的东西,目前IT行业的窘境和从业人员的迷茫,我认为应该是了解的不够多的原因(自己的浅见,大家莫喷,呵呵),在现在这个人人皆山寨的时代,软件方面自己的创意,很可能被山寨,不是有个笑话嘛,比尔盖茨如果在中国,现在还是个装机工。但是硬件方面的东西还是比较难破解的,有些从成本上来说还是不可能的任务,目前比较热的物联网,我理解的就是,一种软硬结合的新型行业,目前我比较看好这个行业,可以适当拓展这方面的知识,想象一个每一个东西都能主动报告自己状态的世界,你放到冰箱里的东西主动大喊自己要到期了,让你抓紧吃掉,呵呵,夸张了!这只是物联网一个简单的应用,更广阔的应用大家可以展开想象哈!
可能我是一个喜欢想象的人,我一直认为思想决定高度,眼界决定世界,所以我自己构造出一个叫做“车联网”的东东,为什么这么说呢?因为目前汽车山的电子设备越来越强大,功能也越来越多,以传统的方式和方法来制造和开发汽车电子越来越困难,我感觉应该引入IT产业的思想和方法,最好能有国内的大牛能够开发出汽车专用的操作系统,能方便的扩展使用,那么恭喜你,你将成为比尔盖茨第二了,或者比尔盖茨成为第二。由于我的薄弱的基础,这个只能存在于想法的阶段,想干却心有力而力不足。唉!一声叹息呀!!!顺便说一下汽车电子使用富士通的芯片比较多,有人想进入可以关注下。
继续我的计算机世界漫游,我原来很纠结于一个人到底是拥有广博的知识比较好,还是拥有深入的知识比较好,这是一个广度和深度的问题,因为知识是无限的,而我们的时间是有限的,后来我才明白,这不应该是一个相对立的问题而是可以相互结合的,自己总结了一下:深度决定了我们的生存,而广度决定了我们的发展。其实也很好理解,由于我们具有某一方面的才能,所以别人才能雇佣我们工作,才能养活自己;等你走到一定的高度,广度才是决定你未来的东西。所以我说思想决定高度,眼界决定世界。又扯远了!继续工作,等我的工作达到一定的规模,我感觉目前的工作到了一个瓶颈,重复的工作开始变多,需求的改变几乎能彻底摧毁我原来的努力。我是一个懒人,不喜欢复杂的东西,不喜欢重复,虽然我很小心的划分了工作的模块,但是,还是但是,效果不理想,虽然知道有OOP的方法,可能水平不行我感觉使用起来非常的生涩,不同的控件相互纠结在一起,让代码的修改非常困难,常常是牵一发而动全身,修改代码成了一项挑战。虽然我很有耐心,但是很不幸耐心用完了,所以我用了自己的小聪明,根据数据库软件的三层结构,在自己的软件里构造了一个三层结构,界面层、中间层(更新界面)、逻辑层。界面层就是界面,逻辑层表示程序的执行逻辑,而中间层是把逻辑层修改更新的数据显示出来或者将界面操作传递给逻辑层执行。虽然后来我发现这种方法只是取巧,但是由于我的OOP实在太差,只能勉强用这种方法混日子,那位大牛如果看小弟可怜,请多多批评指点,提携一下,书也不能一时半会啃完,要走的路还很长,要学的东西也很多。
编程语言不是万能的,但是不会编程语言却是万万不能的。由于是一招鲜(只会C#,还不是精通,勉强算马马虎虎),心里多少有些恐惧,所以打算再学点什么东西,传说Python很火看了几天;又说Ruby很优美,也浏览了一下;说Lisp是黑客必备,怀着对黑客的崇拜,也啃了几天;想想回顾一下C吧,又看了几天C。效果嘛,从学习方面来说,几乎没有,现在让我用这几种写一个最简单的Hello World,我现在都写不出来(C还能写),但是,还是但是,我怎么用了这么多但是,有些意想不到的收获。IT界是个百家争鸣、百花齐放的领域,当年的选择语言也着实费了不少脑力,但是从传统行业转型而来的我,总认为应该有种东西应该是超脱语言以外的存在,通过上面对几种语言的浅尝辄止,我发现这种东西就是一种思想,一种“软件思想”(我自己的命名),我现在还不能表达出来,因为我只是意识到了它的存在,但是我还没有看清它,我想这应该就是IT人所追求的终极目标,我一直认为程序员是一个艺术家,产品实际上是艺术品,我想我自己如果能朝着“艺术家”的目标努力,终究能够实现我的梦想。唉!又煽情了,大家见笑了。
结束了短暂的语言之旅,我又对图形技术产生了比较大的兴趣,说实话让我拿一条腿去换成为一个图形技术方面的大牛,我会大声说愿意(呵呵,估计不少人会说,我其实是赚了,我也是这样认为的)。由于前面说过的原因,我只能浮光掠影般的看看,连走马观花都算不上,个人浅见图形技术会是未来的一个发展方向,当然了我不知道真正图形技术的定义是什么,但是在我这里它的定义是一种针对所有感官的一种技术,不仅仅只有视觉,我认为的未来画面会直接在人脑形成,直接刺激感官,你就在这个环境里的感觉。所以虚拟现实技术,光线追踪等等,有能力还是上吧,我是不行了。谷歌眼镜、微软眼镜就是很好的证明。本来这段想多写写,了解有限,水平不行,词尽思穷了。
安全,嗯是安全。安全是永远的热点。随着互联的进一步深入,安全问题更加的突出,想想陈老师吧(虽然这个和我说的似乎没关)!嘿嘿!现在各种数据都在主机上挂着,主机又几乎全部连通,人心又是八卦的,所以你懂的,由于不是很懂,只是认为这个比较好,只能翻来覆去只能说这么几句弱智话了,请不要见怪!
异构计算、人工智能、分布式计算、并行计算。真心喜欢异构计算,C++一点不会,只能门外看看。人工智能,我认为像人一样几乎不可能,但是可以制作某一领域的人工智能,如真正的电脑医疗诊断,就在刚刚看到IBM的(沃森),正被应用在癌症诊断上面,IBM果然强大,对于我来说这个只能想想,更希望中国的IT界能够出现这样的成就。
写到这里的时候,我突然想起了属于我们IT人的悲哀,不知道没日没夜的加班是不是与这个产业同时出生,但是我认为这不是常态,这是错误的!曾几何时加班成了程序员的代名词,似乎不加班都不好意思说自己是程序员。失败的项目比比皆是,虽然这并不是我这样一个刚入行的菜鸟级程序员考虑的问题,我还是思考了这个问题,说说浅见,大家提提意见。单打独斗靠技术,双剑合璧靠合作,三人成行靠管理。大型项目的失败通常是由于管理和沟通的原因,需求和描述的南辕北辙,造成无用功和大量的返工,工期的迫近,又造成赶工。精确的需求定义显得很重要,搞定需求,开始设计,软件的设计至关重要,我认为准确的定义+合理的设计,项目就成功了八成了。而现在我还在苦苦学习各种设计方法,说出来丢人呀!!!没领导过项目的人,竟然也谈项目,呵呵。
任何时候都要给自己留出思考的时间,不要只急着赶路,放缓脚步,欣赏一下周遭的风景,也许会发现别样的美丽。不要因为加班而放弃自己的追求和进修的机会,也不要让别人一提到程序员就想到宅男和屌丝,我们虽然改变不了整个行业和社会,但是我们可以改变自己。努力做到“Follow my heart!Inner peace!”。
2013年我想认真学点东西,各位大牛有什么推荐的?我自己目光比较短浅,看的不够长远。给点意见吧!
谨以此文,献给逝去的2012年和那些默默无闻的IT程序员!!!
流年似水,落花飘零;年华不再,往事如烟;追忆往昔,共飨思绪;展望未来,你我同行;九天十地,共同遨游。
如果22日太阳正常升起,那么2013年我们共同向前,兄弟。
2012-12-17夜