从人类文明的发展历史来看,人类文明发展史,本质上就是一部IT发展史,此处的IT指广义的IT:Information & Technology,人类从结绳记事开始,已经意识到信息重要性,因此人类采用采用“结绳”这种记录信息的技术;后来古代中国出现了甲骨文,但由于龟甲难得,因此只有堪称“神谕”的文字才能得以记载、保存下来;然后开始出现了铭刻在青铜器上金文,同样只能记录极少、及其珍贵的文字。
为了寻找能更好、能记录更多信息的技术,中外先贤孜孜以求,他们陆续发现了竹简、兽皮等载体——所以直到今天,在西方世界中,羊皮卷都代表了伟大先贤的智慧和则学。
直到后来,中国人发明了纸,这种方便携带、而且造价便宜的信息技术,也是中华文明开始大放异彩:汉赋、唐诗、宋词、元曲、明清小说,这些文明需要记录的信息量越来越大,而且需要广大普通民众的参与——这都是因为纸的推动,而纸,就是当时最为先进的IT技术,也是中华文明得以发展、屹立于世界文明之巅的秘密。
培根说,知识就是力量。知识,这个词除了可用knowledge表示之外,也可用information表示,因此完全可以说:信息就是力量。信息是易逝的、需要传承的,而信息技术的根本目的就是让人类的知识薪火相传。中国古代留下的浩如烟海的文学典籍,但在医学、玄学、自然科学……等学科上则保守的多,“传男不传女、传内不传外”等门户囿限极大地限制中华文明的传承。对于当代中国人而言,实该以此为鉴,应积极传播心得,分享信息。
今天,狭义的IT则指的是以计算机、网络为信息的记录载体,今天的IT技术不仅能快速记录海量信息、支持快速检索,而且能以电的速度,实时同步到地球的每个角落,最新的IT技术成就了美国的今天,正如纸张成就了古代中国的卓尔不群。无论哪个民族、哪个国家,掌握了最新的信息技术,就可以屹立于世界之巅。
软件行业,既是广大软件从业者赖以谋生的行业,也是华夏民族复兴的关键行业。软件开发,应该是成为软件从业者的兴趣,也应该成为软件从业者的生活习惯。当然,没有人天生对什么事情感兴趣。即使是玩游戏,也要有人带、有人教,才能学会。对于年轻人来说,刚开始接触一个事物时,不管是否喜欢,先不要排斥它,扎扎实实做上一段时间,等真正明白自己在做什么,然后才能得到正确的结论。
软件开发,是对现实世界的信息化过程的模拟、重建。开发一个程序,实际是创造一个或大或小的“模拟世界”。在这个过程中,程序员享受着“创造”的乐趣,程序员沉醉在他所创造“模拟世界”里:疯狂地设计、疯狂地编码实现。实现过程不断地遇到问题,然后解决它;不断地发现程序的缺陷,然后重新设计、修复它——这个过程本身就是一种享受。一旦完全沉浸到编程世界里,程序员是“物我两忘”的,眼中看到的、心中想到的,只有他正在创造的“模拟世界”。
对于许多年轻人而言,如何培养编程的兴趣可能是一个问题,许多年轻人开始可能抱着极大的热情准备投入软件开发,但会在学习、工作过程中会有大量问题扑面而来,许多年轻人可能就会放弃,因此对于有经验的知识传播者而言,不应该满足于炫耀自己的知识、技能,而应该致力于如何帮助学习者,尽可能通俗、简单地把知识传播出去,这样才会对年轻人有切实的帮助,疯狂Java体系、疯狂iOS体系图书秉承这条原则,希望带给软件行业从业者切实有用的帮助。
除此之外,软件开发者也需要调整自己的心态,不要梦想一蹴而就,罗马不是一日建成的。在软件开发行业,表面上的毫不费力,背后一定十分努力。只要不断坚持学习、积累,就一定如春园之草,不见其长,日有所增。不论是学习过程、还是开发过程,都应该学会享受:享受点滴的改进,如同享受沿途的风景。定期重构从前的项目,就像总结过往的岁月。结果虽然值得关注,细节更需要把握,就像生命是一个过程。
对个人而言,软件行业是一个“进可攻、退可守”的行业:遇到志同道合的朋友、资金不太紧张时,能“大胆向前”,创业一次,这就是一次伟大的经历。无论成败,经历才是享受;一无所有时,至少还有编程。
软件行业,作为21世纪最朝阳的行业,从少数人参与的科学计算时代,到普通人接触的单机软件时代,再到互联网时代,直到今天的移动互联网,与普通人生活联系得越来越紧密。
软件开发的现状及未来
有人可能会问:软件研发能力会过剩吗?软件开发人才会饱和吗?我的回答是:绝对不会。除非出现一种更先进、更未来的行业。软件,现在已经成为、或即将成为基本的生活驱动力,且不论已经广泛普及的游戏、电商行业所需的软件人才会逐年递增,而且大量传统行业、工具正向“智能化”方向发展(“物联网”、“智能家居”也是目前热门词),不管哪种智能化,一定要有软件的支撑,由此可见,软件行业依然处于高速爆炸期:软件的存在形式、运行平台可能会变化,但软件行业的前景无限远大。
另外一个不容忽视的问题:软件行业确实承受着巨大的压力,这种压力既有来自外界的压力,也有来自程序员自身的压力。
程序员的抱怨、缺乏运动、加班和压力等
对于大部分草根出身的程序员而言,如果选择在公司从事开发,则有来自公司管理层、客户的压力,由于软件本身的复杂度,另外加上来自客户的压力,开发周期的压力,以及软件工程管理的各种不规范,这些都会带给普通开发者必须面对的困扰。具体来说,软件工程师经常抱怨的问题有:长时间坐在电脑面前编码,缺乏运动;长期高强度的脑力劳动,导致疲惫;不定期的加班,生活缺乏规律……
关于上面这些抱怨,既是心态问题,也是习惯问题,首先必须从心态上认识到:这世界上任何一种工作都是辛苦的、都有必须承受的工作压力——所有光鲜的成就,都有背后的辛酸和汗水。就像一部电影中的台词:“年轻的时候总想知道沙漠那边有什么,走过去发现其实什么也没有,除了沙漠还是沙漠。”如果年轻人能早一天明白这个道理,他会更加欣然地接受自己的职业。
至于提到软件工程师缺乏运动,这其实是一个生活习惯问题——不管工作多忙,我们总可以抽出一个小时去做运动,选择一个适合自己的运动,将它变成生活习惯就好了。年轻时候,总以工作忙作为借口,我同样很少运动。现在人到中年,开始学会改变自己,逐渐培养健康的生活习惯,现在我每天能坚持跑步4~5千米,其实现在我的工作比以前更多,只是个人的习惯变了。时下很多年轻人,下班之后,看电视有时间,玩游戏有时间、甚至打麻将也有时间,反而运动就没时间——这显然就是生活习惯导致的,而绝非软件开发职业占据了他所有的时间。
至于说到加班问题,则可从两方面来解决:
一方面软件工程师要提高自己的能力:提高编码效率和排错效率,这样可以最大限度地保证开发效率,尽量在工作时间解决工作问题,试想一个小小错误就调试、耽搁很长时间,那自然就导致了后面的加班啰;
另一方面则需要学会沟通,学会与上司、管理者确认模块的开发周期,而不是盲目地顺从。
程序员自身的压力则来自于软件行业的高速发展:迄今为止,软件行业是实际上发展最快的行业,短短几十年,软件行业已经经历了传统的科学计算时代、单机软件时代、互联网时代,目前正处于移动互联网时代,接下来物联网、智能家具时代即将来临,这种飞速发展带来的是各种开发语言、各种新技术层出不穷,令人眼花缭乱,而软件工程师则需要不断地更新自己的知识,这种压力确实是软件工程师无法回避的客观存在。既然无法回避,那就不如直面这种压力,只不过调整一下看法即可。首先要我们要意识到,正因为软件行业是一个朝阳行业,具有勃勃生机,自然就会衍生大量的新东西,这些新东西就需要软件工程师积极探索;相反,如果一个行业日语没落,自然也就没有新东西产生了。其次,探索新知识的过程中,无需给自己太大的压力,“吾生也有涯,而知也无涯”,我们只要看准自己的兴趣,每天坚持留给自己2个小时左右的学习时间,积十年寒暑之功,自然就能做到“望尽天涯路”。