读完后感觉自己对IT是真的不在行,也不可能和专业学习计算机的同学比,我只能是把他当做工作中的工具么》?
要学习的太多,现在自己看的只是最基本的基础知识,根本就无从谈起运用,,,
今年7月底8月初,我离开七年寒窗的大学校园只身来到南方某城市开启我的职业生涯,从刚下飞机那一刻起,我就感受到这座城市不属于我,虽然这里的蓝天白云和舒适的海风让我神清气爽,然而街上步履匆匆的行人和到处弥漫的浓厚商业气息与我内心对生活的期望格格不入。
七天简短的企业文化培训之后,我们这些同期报到的“兄弟姐妹”便分别进入了各自部门投入工作,培训给我留下的印象只有一个,公司是一家“按劳分配,一切资历,学历,背景,血统在这里统统无效”的企业,除了这一点,我实在找不出还有什么其他让人感到振奋的内容,也正因为这一点,在这里我结识了两位“三清”博士生,并与他们进行了深入的交谈,拥有中国最高学府最高学历的他们,正是奔着“按劳分配”放弃了成为大学老师的机会来到了这里,只能说我们的相识是一种缘分,这缘分的内涵是“按劳分配”。
正式进入部门的第一天,我才得知自己被分配到了某个软件产品的测试部门,对于测试,我是非常陌生的,当天我发现的唯一规律是,那一批新员工凡是不是计算机本科科班毕业的应届毕业生,大部分被分到了测试部门。我还知道的是,在国外,测试人员的地位非常的高,拥有多年开发和设计经验的员工才有资格成为测试,而在我国,一切都是那样的不同。
在部门学习了几天基础知识之后,由于客户来考察产品特性的缘故,我的第一个任务是开发一个可视化的演示工具,演示数据通过网络通讯从产品进程中获得。领导要求越快开发完成越好,我想到了我最为熟悉的微软公司的MFC基础类库,无奈作为测试人员的我没有资格获得Visual Studio2005开发工具。领导果断拍板,现场学习java语言,用swing类库搞定问题。经过三天艰苦奋斗,在学校只懂一点java基础语法的我,自学socket网络编程与swing类库,按时完成的开发任务,回过头来想想,公司真是敢于大胆启用新人,如果让我再做一次选择,我再也不敢械U庋跋盏娜挝窳恕
做了一个半月的测试后,刚刚大概理解测试工作的主要内容和意义的我因为某些原因调到了另外的一个类似的部门。面试的时候领导对我学校做过的课题和技术的功底进行了考察,决定让我从事软件开发工作,还是使用java语言。在面试过程中,有一个细节引起了我的注意,领导不是特别关心我曾今做过什么样的课题,他比较关心我怎样快速搞定在测试部门那个演示软件的方法,这让我感觉到,其实一个人的学习能力是雇主很重要的一个考察点。
成为一名开发人员后,我迅速忘记了曾经在测试学会的软件工具和测试方法(不得不批评自己,不改忘记那些有价值的实践与方法),投入到我的第一个任务中——数据库设计。数据库设计一般分为概念设计,逻辑设计,物理设计,设计需求已经拿到,由于我水平比较低,直接把概念设计和逻辑设计一块做了,又因为没有经验,自己总是还没等领导提出批评意见,就在给领导汇报的过程中否定了设计方案,来来回回改了三次才基本定下来不再大幅度改动。在这一过程中,最深刻的体会是数据库设计不能过于学术,追求完美,应该结合需求,适当的进行反正规化杓啤U饫锿酚幸桓龆龋野盐盏牟皇呛芎茫丛诘谝淮挝娌飞杓剖菘獾拿孀由希闱吭伦约阂换兀率瞪希辉乱裁挥邪旆ǎ粽诺目⒐ぷ魅梦颐挥惺奔涔嗟乃伎嘉宜傅拇砦蟆
因为产品类似于网站,用到的是J2EE的技术,而基础的J2SE我都没有打下良好的基础。于是领导让我先把J2SE基础打好,越快越好,我埋头苦读了三天之后,深感不能满足快速打好基础的需求。改为不参考任何资料,仅仅借助函数库和Eclipse开发工具开发一个俄罗斯方块游戏,游戏是我爱上计算机的起点,也是我提高水平的重要方式方法。经过三天没日没夜的开发,我写的第一版俄罗斯方块终于出炉了,在开发的过程中,由于自己以前没怎么玩过俄罗斯方块,就把旁边坐的搞测试同事当做我的客户,由他给我提需求,我来开发,开发完成之后由他来测试,这时我才真正体会了什么叫测试引导开发,为什么国外对测试工程师的要求如此之高。写成之后,部门的一位职级比较高的同事询问了我的设计思想和体会,我如实讲了我的体会——java语言并不是障碍,能写出游戏的关键在于过去积累对面向对象编程思想的理解和来自测试那位同事源源不断的需求及迭代。开发完这个游戏之后,我的java编程水平明显提高了一个档次,很多函数不用再查docs文件了,直接就可以凭记忆写出来,其实我明白,这仅仅是个开始,提高的只是java编程水平,而不是编程水平,寄托于某种语言的提高不算提高,思维的提高才是真的提撸胰沃囟涝丁
打了一个我认为还算满意的J2SE基础之后,真正进入了J2EE开发。一上来J2EE就给了我一个下马威,tomcat服务器,页面编程技术,SSH三个框架,各种各样的新名词纷至沓来,开发任务又非常紧急,只好硬着头皮通过加班加点快速搞定问题了。由于面向对象的基础还算过关,我感觉到这些新名词只给我带来了时间上的压力,对于理解他们的思想没有太大的压力,任何技术只要基础过关就只剩下时间问题,再多名词都不必害怕。到现在为止,我仍然是处于现学现卖的状态。
谈了这么多琐碎的事情,我还是想说说工作后我对计算机科学与技术的理解。首先,还是那句话,计算机首先是科学,然后才是技术。我最终定稿的数据库设计里有些表中有冗余字段,部门的外包员工里有位经验丰富的大专生对此提出了反对意见,他依据他8年的开发经验,认为我的设计不合理,几番交锋无果,我从数学角度用关系代数演算这一数学手法向他展示了没有该冗余字段,会造成计算机多少次额外的计算,这才说服了他,也正是这一次,那些比我拥有更多开发经验的软件外包公司员工开始真正尊重我这个“数据库设计者”的设计,我的设计得到了更为有力的执行。这件事给我的体会是,在IT这个行业里,产品是比较抽象的,大家的智商也都不会太低,如果一个设计人员没有充分的理由说服开发人员,那么他的设计寸步难行,如果一个开发管理人员对技术没有深刻的把握,那么他的管理缺乏底气。对于一个刚入行的新人,如果在学校里没有打下坚实的计算机科学的功底,那么比起拥有多年开发经验的老员工而言,只能跟在别人屁股后面跑,很难超越。拥有良好的计算机科学的功底之后,在公司里多磨练技术,向有经验的开发人员请教,内外兼修,能更好的完成工作。
IT这个行业在大多数人心目中是一个吃青春饭的行业,说句心里话,当我进入这个行业之后,我才真正明白这句话的内涵在哪里。如果一个产品的设计极其不合理,有一大堆很垃圾的代码,同时这些代码又不能出错,于是不停的打补丁维护,不停的检查代码中的BUG,而这些BUG绝大多数是低级错误或者是对业务的理解不够深入造成的。如果这个产品绝大多数的代码都是if else switch控制的业务逻辑,那么确实,年轻是一种巨大的优势。我相信懂行的人都明白了,这款产品往往就是不限制程序员的“C语言”开发完成的。其实,是不是青春饭还取决于个人,有许多这样写if else switch的C程序员成了业务专家,项目经理,等等等等,只能遗憾的说,大部分人最终还是吃了青春饭,反过来讲,那java程序员又何尝不是吃青春饭呢?
I T行业究竟有没有不吃青春饭的呢?有,算法,操作系统,计算机组成,编译器,这些计算机最底层最核心的东西,搞明白了任何一个就很难被他人取代,只是很少有公司,也很少有人,既有时间又有金钱还有热情和能力的把这些计算机科学底层的东西搞透彻,所以很多时候可怜的程序员只能吃青春饭了。
CPU有CPU的底层算法,只不过是硬件实现的,操作系统有操作系统的思想,与硬件紧密相关,编译器又与操作系统和计算机组成精密相关,最后才是计算机应用程序,因此,计算机应用程序开发者想要不吃青春饭确实有点难,但也不是没可能,系统架构师,系统分析师,高端测试人才这些都可以成为努力的方向。
最后,我想说一点我认为IT行业最大的好处,对于那些因家庭出身的原因没有条件享受优质教育资源的中专生,大专生而言,计算机专业,IT行业是很好的专业和行业。在这个行业里,学历真的没那么重要,出身也显得微不足道,工作后再学习再深造也非常方便(自学),这真的是一条非常非常好的出路,至少可以拿到社会中等水平的薪水。而对于那些希望 “稳定轻松拿钱多”人来说,最好还是不要学计算机专业,进IT行业,这里技术发展日新月异,一不小心就成了吃青春饭,稍不留神就在技术上被淘汰了,也没有多少业余的时间。
最后,我只想说,IT行业曾经是一个到处都是理想主义者的行业,随着社会的不断发展,已经出现了大量的IT民工,他已经成为了一种普通的职业。尽管如此,IT仍然需要大量的理想主义者,因为它是一个重脑力劳动的行业,没有一定的理想,很难在这个行业里走下去,每个IT人都面临着激流勇退还是继续坚持的选择,也许这是当今这个时代抛给每个人的困境,对此,我没有答案。