从入门到卓越——大学生的软件开发成长之路

前言:

  许多有志于从事软件开发工作的学生经常会感到困惑,不是因为企业的要求过于苛刻,也不是因为认识不到自身的欠缺;而是,明明知道目标所在,却始终无法靠近它;有着无限的热情和毅力,却找不到合适的道路。众多学生艰辛的学习和求职经历,促使我们进行深入的研究分析,并给出相应的指导和建议,以期能对更多的学生有所帮助。

  从入门到卓越,一共经历五个阶段:

  入门:体验软件编程开发

  提高:进军企业应用平台

  熟练:征服团队协作开发

  优秀:提升个人综合素质

  卓越:从容战胜就业挑战

  我们将从一个学生的角度,用五篇短文分别描述这五个阶段。

入门:体验软件编程开发

  很快就要毕业了,是时候盘一盘我的家底了:

  C语言:学过哦,考试还打了90分呢!现在呢?对了,printf!

  Java/C#:选修课学过,听说很流行。具体怎么用,基本没了解。

  数据库:好像是select * 什么的吧。

  项目经验:非常干净,无!

  那么,从现在开始,下定决心,开始我的卓越之旅吧!

  从哪里入手呢?先找回编程的感觉吧!从C/C++入手,疯狂的写代码!不过,事情可没那么简单。望着电脑屏幕,两眼发直;放在键盘附近,双手发抖;拼命回忆代码,脑袋却一片空白,总之就是,各种不适的症状都来了。从每天几十行代码,到上百行,到好几百行,慢慢的,感觉回来了!

  这时我才发现,原来我竟然什么应用程序都还不会写!读写文件?不会!网络编程?不会!访问数据库?还是不会!做漂亮的界面?只能羡慕别人的了。我终于明白,学会了语法,只是万里长征的第一步;一门语言最重要的部分,在于它背后强大的框架和类库支持。我喜欢Java,也舍不得C#,但是看来时间紧迫,鱼和熊掌不可兼得啊。头疼了几天,已经不记得是如何抉择的(抓阄?),不过最终我还是选择了Java路线;现在想来,与其徘徊不定,不如先选择一门试试,自己也许慢慢会爱上它的哦!不久,一个完整的即时通信系统跃然眼前,想来真是暗自得意啊。这是我的第一个作品,尽管不那么强大,尽管还有那么多缺点,但蓦然回首,Swing、Thread、Socket、XML等等,都已经在我身后,我终于上路了!

  你上路了吗?来看看这个小测验吧(Win32平台,Visual C++):

  已知:char  str[] = “Hello” ; char   *p = str ; int  n = 10;

  请计算:sizeof (str ) ,sizeof ( p ) ,sizeof ( n )

  不做实验,你能得到正确的答案吗?

提高:进军企业应用平台

  对于80后的我来说,Internet简直成了生命的一部分。看新闻,关心天下大事和小道消息;写博客,抒发豪情壮志和满腹牢骚;搜网络,寻找技术资源和旁门左道……如果我自己也能做这样的网站该有多好啊?

  且慢,还是谦虚一点,从基础做起吧。于是,学习HTML当仁不让的成为了第一要务;不过,为什么我做出来的网页咂就这么寒酸呢?都不好意思拿出来见人了。没关系,把CSS、JavaScript都用上,再借助Dreamweaver的强大支持,我的审美和艺术细胞都迸发出来了,慢慢的,我也可以在同学面前炫耀一下了。

  当然,只是“一下”而已;因为马上我就发现,我的页面除了让人家过过眼瘾,什么都做不了:不能网上购物,不能发帖子,不能查数据……

  于是,Java EE横空出世了!Servlet,JSP,JDBC,再配合传说中的“甲骨文”,感觉真不错!我的网站终于飞起来了,自我陶醉一下吧!阿基米德说:给我一个支点,我就可以撬动整个地球;现在我也可以说,给我一些钱和时间,我就能办一个网站!

  老师适时的提醒我:别光顾着做一些花里胡哨的东西,整点更实际的!什么是实际的?企业信息网站啊!办公自动化系统,知识管理系统,电子商务系统,订单管理系统…… 哦,我太有才了!

  嗯,我终于提高了一个档次!各位看官,你是否也提高了呢?看看下面的小测验吧:

  怎么样在网页上控制,不让用户上传超过10M的文件呢?

  怎么样做一个完整的购物网站呢?

熟练:征服团队协作开发

     这年头,什么事都讲究个团队协作;一个人单干?除非有杨过的天生丽质及传奇遭遇,否则没门。作为一个普通人,我还得脚踏实地,好好成为团队中的一份子。

     一方面是人多力量大,另一方面,就是人多意见杂。我要往东,他要往西。没有规矩,不成方圆啊。所以,首先要制定规范,编码规范、数据库设计准则、应用程序结构分层等等。这时我才发现,以前写过的好多代码都“羞于见人”啊!朋友,你是否也经常写出int a1;int a2?是否也在一个函数中洋洋洒洒写上一两百行代码?是否也曾直接在页面上直接访问数据库呢?趁现在还早,打住吧,这种代码会让你的同事们看得晕头转向,郁闷至极以至于“破口大骂”。

     队伍大了,项目却更大了,摆在我们面前的问题是,基础的Java EE框架此时显得如此臃肿,乏味和低效。于是我们鸟枪换炮了,这便是Struts, Spring和Hibernate;传说中的MVC、IOC、OR映射已经成为我们的老朋友。

     当然,还有不少仁兄仍然沉浸在游击战中,想到什么写什么,打一枪换一个地方;然而效果并不乐观,往往是今天攻下了一座城,明天又丢了一座山。都什么年代了,该专业一点了。做好计划,分好任务,定好步骤,写好文档,开好周会,一个都不能差;单元测试,功能测试,源码管理,Bug管理,一个都不能少。以前大学书本上软件工程的理论知识,到今天终于变成了现实,真是相见恨晚啊!

     终于找到自己的组织了!有这么多战友的感觉真好!亲爱的朋友,你现在是否也能滔滔不绝的描述自己做过的一个团队项目呢?好好准备一下吧,没准哪天你的面试官就会成为你的听众哦!

优秀:提升个人综合素质

     有了枪(SSH),有了炮(团队),我应该是走遍天下都不怕了吧!正当我雄纠纠气昂昂准备在职场里弄潮时,却发现仿佛一夜之间,满城尽是Java人!不是我不明白,这世界变化快。难道我苦读十余载,苦练数月功,竟只落个“出师未捷身先死”?

     要想找到好工作,还得让自己更出色,让自己掌握大部分人没有掌握的知识,让公司看到我的“亮点”!

     那么,再向虎山行吧!第一式,直取AJAX;第二式,拿下Web Service;第三式,玩转Java ME;第四式,攻克EJB;第五式,染指MQ;等一下,还有如日中天的Flex,打完收工!

     各位要问啦,这么多新东东,要学会它们,还不等到花儿都谢了啊?没错,刚开始的时候,我就像无头苍蝇,到处乱撞,四处碰壁;慢慢的,在高人指点下,摸着了门道,学会了怎么看文档,找资料;再后来,有些问题竟然可以自己调试、推测出来了。在经历了数个焦头烂额、辗转反侧、殚精竭虑,而又屡败屡战、废寝忘食的日日夜夜之后;最终盼来了峰回路转,柳暗花明!是的,首先要毅力,但更要有恰当的方法和指引,这样一定可以事半功倍。

     俗话说,艺高人胆大。技术水平上来了,做项目就像如虎添翼。不仅能够按部就班的完成那些典型项目,也能研究和分析一些我未曾涉足的业务需求,并开始有了自己的Idea和Solution。

     至此,我已经释然了。因为我能应对的,不仅仅是那些被克隆过无数次的项目,更是对那些未知需求的探索和分析;我所学会的,不仅是技术本身,更是一种快速学习的方法,一种能可持续发展的“原力”;正像“星球大战”中所说:May the force be with you!

     快快发掘自己的“原力”吧!此时的你,也许已经是浩瀚星空中的一员,那么,一定要做亮的一颗星,才能让好的公司,好的工作发现你!那时的你,是否能如数家珍般的把各种花花绿绿的技术娓娓道来呢?

卓越:从容战胜就业挑战

     优秀是卓越的大敌!

     怎么可能呢?难道优秀还不够好吗?看看我的项目吧:

     前端,AJAX & Flex;中间框架:SSH;为了赶时髦,还通过Web Service玩了一把SOA,通过MQ与可靠消息传输攀上了亲戚…… 我就不信了,把最厉害的武功都合在一起练,就不能整出个天下无敌来!

     当然,结局是悲惨的:

     项目做完了,一个人用起来倒是挺爽的。拿出去让大伙一块用用,完了,大家都不会用,都望着我的花花界面只瞪眼。我可是费了九牛二虎之力,才给大伙解释清楚。

慢慢的,用的人多了,网站却像死在那了一样,无论如何疯狂的点击,就是没反应。

     我引以为豪的Web Service,竟然也被别人肆意调用,唉呀呀,这可是我的“专利”呢!

     安装和配置MQ可把我折磨死了,每换一台机器就得痛苦一次!更痛苦的是,无论我费劲口舌给别人解释,人家就是不明白这个东西是干什么的。

     还有一个哥们更不给面子,不用IE,不用Firefox,硬是要用Opera浏览器打开页面,结果界面惨不忍睹,更没人性的是,他还在一旁窃笑。

     老师轻描淡写得说了一句:加一个业务模块吧。我一想,这还不容易?当然,是说起来容易。当时图省事,自己写的代码没写什么注释,更不用说文档了,结果现在又得咬文嚼字看一遍;这还算好的,每当我修改几行代码,就发现现有的系统罢工了,原来,这些修改影响了它们;只好再多修改几行,结果像滚雪球一样,越改越乱,以致“走火入魔”,只得赶紧打住了。

     面试官要我描述这个项目,我却支支吾吾,语无伦次;要我解释几个技术的原理,我更像茶壶里煮饺子,倒不出来!

     很郁闷,明明技术都会了,为什么项目还是失败呢,为什么还是不足以打动面试官呢?

     项目的成败,远远不只取决于技术:

     不站在用户的角度考虑问题,无论技术架构多先进,用户还是不会用!

     没有丰富的表述能力,无论功能多强大,也不能很好的展现给客户!

     没有良好的代码风格和注释,时间一长,别人甚至自己都无法理解自己的作品!

     没有规范的文档,这堆代码就像一台没有任何说明书的复杂仪器,只能摆看!

     不考虑细节差异,许多异构平台就无法兼容!

     不注重性能,这个项目的用户就永远无法超过10个!

     不加强安全性,用户的关键数据就可能丢失!

     不采用良好的设计准则,无疑堵死了未来给项目进行扩展的道路!

     没有科学的知识管理方法,学过的知识就记不牢,表达不畅!

     没有面试技巧的训练准备,就会在紧张莫测的面试场上手忙脚乱!

     ……

     没有这些,就没有卓越!真是拨云见日,茅塞顿开!卓越,我来了!

后记

     一路走来,从入门到卓越,多少坎坷,多有艰辛。找到了一份理想的工作,终于结束了吗?这仅仅只是个起点,我正要以我掌握的这些知识为基础,再学再厉,在IT行业的大潮中,掀起一个又一个浪花!

   作者:中软卓越北京ETC

原文地址:https://www.cnblogs.com/zretc/p/3133627.html