找实习工作、实习、项目开发体会
最近几个月都没写过博客了,忙着找实习工作和做项目。希望能和我处于一个阶段的人来分享一下我的体会,希望有所帮助。
先来说说我的现状吧,我先自我总结一翻。
我是本科生,08年读大学,计算机系软件工程专业。三本独立学院。今年大三,目前在一个国企实习。参与C#大型系统开发。
这几年,在学业上我是悲剧的。我故意旷课,挂科好几门,成绩是一塌糊涂。考英语四级屡战屡败。说成绩的话全专业倒数几十名吧,从幼儿园到现在也没拿过什么奖,更别提什么奖学金了。说出来也不怕人笑话,我一直写C# 就连C#语言和.NET程序设计这样的课同样挂科,还只考了三十多分。不过我感觉学校的课程确实没多大意义。要说我真的学得这么滥,我自己也不相信,可是就是要挂科。
选择这个专业也是我当初兴趣使然,初中的时候web2.0刚刚开始兴起,出现了各种网站 偶然有一次在网吧上网,点开了浏览器的查看源代码,看到里面一堆的代码不知道什么东西,就到处去找,引导我对程序产生了了解,那个时候买了一本HTML教程,学了一点东西 能手写静态网页。学校还要来抓我们上网的,说的是电子毒品 要坚决杜绝。读了初中高中,一直不用心。上大学了,终于选了自己感兴趣的专业。
大一开始接触C++和数据结构。在专业知识的学校上,我确实花了不少时间,虽然我没去上课 但是我也会看书,会动手写代码。搞笑的是我们计算机专业的,学校不准带电脑 说影响学习,会沉迷游戏,考不过四级。大二才能带电脑,但是我还是违规地在大一下学期带了电脑来。那个时候开始学习C++和数据结构。其实这两样我都没学好,可能是由于动手得多,再滥也有些进步吧,到大一能用C++写控制台程序,结合简单的数据结构写点什么学生信息管理系统,很小很小的那种,没有数据库。主要是对于语言和常用数据结构的应用。在这期间,我很迷茫 我什么都在学,不止学C++ 又在学div+css 在学javascript,直到现在javascript也不怎么懂,没有深入学。基本一个人能做网站前台。
到了大二开始接触.NET和C# ,从接触这个东西以来,差不多抛弃了以前的C++ 因为我还是很迷茫,我知道C++什么都能做,可是我做不出来什么像样的东西来,很有挫败感。之后我以多数的精力投入到.NET中 除了对语言本身的学习,开始学习数据库 学习ADO.NET等等 总体上讲,我投入了巨大的时间和精力在.NET这方面。到了大三的上学期,我零零碎碎地学了一些东西,但是不够系统和完整。总想自己做一个像个样子的系统出来,可是一拖再拖 不知道从何下手就没坚持下去,一堆软件设计与构建 开发框架 服务框架 软件设计构建 设计模式等等一大堆东西,让我无从下手。只能做些单方面的东西,比如半残废的控件库这些东西。网上东找找,西找找 东看看西看看,自我感觉还是没学到多少东西,不过在事实上讲,自己还是有不少的进步。在这一段时间 我在技术上的各方面都有所涉及,从应用GDI+ 网络通信 数据库 WinForm这些,学的东西依然不够系统,是零散的,与实际应用依然有差距 总是达不到我想要的效果,在网上能找到的代码,我逐渐的感觉到这些代码的质量差,没有实用价值 缺乏关键性的部分。我只好一个摸爬滚打,什么都自己来 什么都自己干,有时候为了解决一个问题,比如windows消息处理中产生的问题 都会花上十天半个月。这段时间主要精力投入在C/S系统上 和B/S渐行渐远。
一直到大三下学期,我想学校就只有软件工程这些课程了,不如实际去参与项目的开发,学得更好。在找工作之前我对自己的认识是这样的:
1.在专业上比大多数同学厉害得多。
2.我依然是个水货。
3.知识面广,但不够系统和深入。
4.动手能力比较强,有几万行代码经验。
就这样,我踏上了找工作的征途。我不知道在哪找,很多公司也不招实习生。我在网上用鸟枪法乱投简历,投了二十多个公司吧。基本上都是中型、大型的。投的职位包括了iphone andiord .NET C++ 游戏服务端开发等等。结果没一个命中。倒是有不少的培训机构打电话过来,我都谢绝了。就这样,我再也不投简历了,就在学校等着。过了大概两个星期,接到一个面试电话,说他们是招JAVA的 就离我们学校不远,在西区科技园。结果我跑去那面试,是一个小公司,一个软件工程师面试我 随便问了问,我就通过了。这公司是做手机软件开发和软件培训的,我进去了老板说他们公司和我们学校合作搞一个软件设计大赛,叫我做一个网站来宣传和发布公告这些。我不会ASP.NET ,硬着头皮就开始做 可能是以前学得东西有点基础了,我一个人从前台到后台到数据库 没做过ASP.NET也把这个东西搞出来了,没有项目文档,代码杂乱无章。我觉得可以部署了,结果让人失望的是 面试我的软件工程师连虚拟主机是什么东西都不知道,公司的人连虚拟主机的账号密码都不知道哪里去了,最让我无语的是老板 以前电子科大毕业的,又开始叫我给公司的网站全面改版,这网站是JAVA做的。他给我介绍的的时候偶然看到一个网页上写了个DOTNET,他说了一句“这是什么东西,我只知道.NET 没听说过DOTNET”,我彻底无语,把"."换成了“DOT”就不知道是什么东西了,在那干了那么久才开始给我说先把我午饭问题解决了,连实习工资都没有。我对这家公司非常失望,他们不了解我懂什么技术,不清楚我会什么 也不教你干什么,没工资 什么事都还往你头上一推,只知道分配工作任务。我感觉在那学不到东西,整天上班的人死气沉沉 根本感受不到一点团队的氛围。我就辞职了。我觉得这样的公司没前途,在这个公司的人更没前途,我不在乎的大小 但是我不愿意在这样一个没有活力的公司里面干。走了时候,老总没任何表情 什么也没问,只说了一句好。“我们如果决定要部署你做的网站,会给你发工资的,如果要部署我们会电话通知你”,我走了 再无音讯。
就这样,我回了学校 我想既然实习工作那么难找,还是在学校多学点东西吧。回学校不到一个星期 接连有3个公司打电话来叫我去笔试,我很意外也很惊喜。我查了一个 这3个公司一个是小公司,一个是150人左右的私企,专做软件的。还有一个就是我现在所在的公司,是一个大型国企,做物联网的。这3个公司我都去笔试面试了,三个都通过。
到这时我发现,我3个公司都能通过笔试面试也部是偶然了,尽管我自认为学得差,但是比起其它去面试的学生确实强得太多了。从那时开始我有了自信。因为我看到其它的应届生、学生包括一些研究生那专业水平我确实不敢恭维。
我说一下我的笔试面试经历吧,那个小公司就不说了。
后面这个私企,我笔试的C++ 主要靠一些基础、算法、还有系统底层的了解这些。
我现在的这个公司,笔试的时候只有5道题 前面3道题勉强能答,后面两个关于数据库的实在太高深,一个也写不出来。然后是两位面试官,也就是我现在所在项目组的两位副所长。一男一女。
笔试半个小时,面试接近3个小时。他们叫我4点去,我两点就去了,结果技术面试了接近3个小时。在这个过程中,他们问的问题有上百个,都最基础的语法 平台了解 到实际的技术应用,网络编程,多线程到数据结构、算法、数据库 异步编程、模型到操作系统、硬件等等,问得非常的细致和深入。每一个问题都越问越深,直到答不出来为止。我心里当时就很期待进这个公司,因为他们是真正的注重技术、挖掘人才的。应该是我大学几年的积淀,再加上实际编程经验也比较多,很多问题我都能回答上来。这次的结果也出乎我意料,后来我从人力资源那了解,他们给我的评价非常高。希望几年后我能成为公司的一位技术骨干,潜力巨大。这样的评语让我心里又多了一股向上的动力。之后,我拒绝了那家150多人的私企,那边问我为什么不去 我说“你们是做外包的,我不太想进外包公司”,可能是把那边的HR气到了,直接把电话挂了,我现在还觉得有点对不起他们的。
就这样我加入了现在的公司,然后是入职培训,这几个月以来我们项目组来了4个人。我,还有一个外地挖过来的高手,一个做图形的,一股做GIS的。除了我以为,3个都是有经验的那种。这段时间公司面试了几十个人,没招到一个合适的,我觉得自己也比较幸运 那么多研究生和毕业生还有有经验的人,结果我一个三本的倒进去了。因为现在没有毕业证,只能是实习性质了 不过人力那边也说了,目前公司的转正率是100%。我们领导也很关心我,我们所长叫我以后在公司做毕业设计。
自从加入这个项目组以来,我在里面已经呆了快3个月了。刚去的时候很惊喜,一看电脑是四核的惠普迷你工作站,带顶级显卡。他们很热情地带着我去公司到处转,软件部门 硬件部门 实验生产车间和两位副总都去见了 ,之后是公司的技术展览厅。好多的技术都是行业内领先的,做的项目基本上全是软硬件结合的行业应用解决方案。就这样,我加入了他们的大型项目研发团队。我们软件部门总共40多个人,我们项目组30个左右 另外一个组10来个人。
从进去开始,我一直参与到这个项目直到现在,7月份交付给客户测试使用第一个版本。
刚刚进去,开始熟悉他们的开发框架 我一看就晕了。我从来没见过那么庞大的系统。整个系统分成6个子系统 每个子系统有两三个解决方案 每个解决方案下面还有十几个工程,有点不知所措 不知道怎么办。在同事的帮助下,我完成了一个很小的模块的整个编码工作。然后就转向做6个子系统的报表了。直到现在还在做报表。从我加入项目组,这个项目已经由三十多个人做了一年半时间了,但是项目实在是太大 现在又延期两个月。之后部署 调试还要花几个月。总共要接近两年时间才能收工。
进去一段时间之后,我逐渐的熟悉项目 熟悉业务,也开始自己模仿 尝试编写他们的服务框架,虽然很多东西难以掌握,我一直在尝试。
现在基本上已经写出来一个一模一样的服务框架,能正常的运行起来了。在里面3个月 我熟悉了不少东西,也明显感觉到了自己的成长。
很多的技术让我惊叹,我以前从来都不知道C#还有这些东西,能用这些东西。服务端框架 客户端框架 开发框架,软件的架构,虽然涉及不深 但是了解越来越多了。
比如客户端的UI框架 统一的窗体生命周期管理,统一的异常处理,跨窗体跨线程安全的传递任意数据类型,代码里看不到一个new字符 这些都让我很惊叹,后来有了解到异常处理 静态代码注入等等手段,还有为提高性能的各种手段,这些都是在书本上 在网上根本学不到的。在小公司、小项目同样学不到也了解不到。
最深的感受就是,一个大型项目 个人真的显得太渺小了。软件开发最重要的还是设计和构架 而不是写代码。
在里面学会了团队开发的基本过程,还有配合。我相信这是一个很不错的机会,只要自己努力 一定能学有所成。
工作2个月后,和我们技术中心主任也有过几个小时的交流。也给我感受挺深的
最直接的感觉就是和他层次的差距太大。
要想在软件开发这种领域走上一定的高度,没有十几年的经验积累是不行的。
我自己定位处在普通开发人员的初级阶段,项目组的一些构架师站到了软件设计的高度,而我们的技术中心主任站在了金字塔的上层那样的位置。
从他那里我也了解到了他的一种经历。
他的能力给我的感觉就是,超出了平台、操作系统、语言、普通软件架构的限制,能设计和构架软硬件结合的大型综合应用系统。
他从事这个行业以来,学过、用过三十种以上语言 各种操作系统都有涉及。走进他的办公室,里面像垃圾堆一样的 到处都是电路板,又钻到硬件里面去了。
按照他的说法,现在学什么并不重要 现在做什么也不重要,关键是你以后要怎么办。软件技术 只要计算机没跳出冯洛伊曼那个框,软件技术也跳不出来一个框 不管学什么,深入下去都能把知识迁移到其它地方 学什么都快,举一反三一通百通。
尤其的他多C++的描述 幽默中带有调侃的味道,也有他自己的理解
“我用了6年C++ 我能驾驭C++,但是越用越烦越用越烦 后来就不用了”。
也许,只有达到一定高度才有资格说这种话吧,没有用过 没有深入了解过,应该是没有资格说这种话的。
我希望在我的将来,经过十几年的努力 就算不能成为一个专业,大半个专家总行吧
希望和我有类似经历的人 ,我们都这样做好长期奋战的准备 不拘泥于各种特定的语言和平台,一步一步踏踏实实走下去,最后肯定能达到新的层次。
技术是学不完的,只要不停止学习的脚步 总会得到更多的收获,走上跟高的层次
该补基础的补基础,该补理论的还要补理论!
真后悔没学好理论 以后还要恶补了