共有回帖数 0 个
-
首先声明下,本人发表此主题的唯一目的是希望给目前还很迷茫的新人一个参考和借鉴。并给出自己的一些建议和看法,如果大家有不同观点的,也欢迎大家一起讨论,但希望大家请以事论事,勿对人。^_^
我09年毕业于二流院校,目前工作。。。互联网行业。目前状态:还是一个菜鸟,需要继续努力,^_^因为周围的同事已经几乎都是重点院校毕业本科或者是硕士。
ok,废话不多说了,切入个人步入软件行业的过程:
@@@大学之前:
大学之前,家里穷,没见过世面,平时偶尔玩的是”街机”(那时街机游戏币1元8个),电脑几乎没摸过。所以上大学前几乎就是电脑小白:不会开关机,找不到abcd等按键,对某某同学会”热启动”甚是羡慕(其实就是启动任务管理器那三个键)。高考后,进入二流院校,并阴差阳错的选择了计算机-_-!
@@@大学四年
大学四年概况:有近三年在搞acm比赛+大半年实验室+小半年dota中。。。
最初不懂什么是计算机,也不知道怎么学,也很迷茫。于是沿袭了高中学习方式,(天天上自习?)。刚开始学的一门语言是c语言,学了之后没感觉。但是出于考试时能考个高分的目的,所以每天泡机房编程,做课后的习题。(那会儿买不起电脑。。。)
刚开始初学者遇到的问题,我也都遇到过。比如:10行左右的代码,对着书盯了20分钟,结果啥也没看出来,后来请教”高手”,很快找到问题!5分钟左右,找到原因,少了取地址符号-_-!,或者一个编译错误半天都没搞定。。。(后来当我大三时,看到大一小弟也像当初我一样盯着几行代码挠头,突然想起以前的我,就有点想笑^_^)
最后功夫不负有心人哇,花了我近两百的上机费,课后题几乎都能自己搞定。考试分数年级第一,(其实还有个并列的,呵呵~)课程设计自己搞定,还帮同学搞定一部分。。 在班上也常被人请教解决各种问题?
那会自己还是井底之蛙啊。。。只知道从书上获取知识,自以为c语言很牛逼?!(−_−#)并果断的给c语言的功能下了定义:c语言也就这只能是计算数字而已,顶多算一个能实现各种自定义的”计算器”。
我个人的这种自以为c语言很牛逼的美梦在,大一下学期的一次偶然比赛后完全破灭。(−_−#)(记得那会儿大一除了c语言其他都是基础课(比如:工程制图,高数,英语等),和计算机基本没一点关系。)还记得,正在我沉醉自己的小天地时,那个大一下学期开学,一个同学喊我去参加一个校内编程比赛。当时满怀着胜利信心去参加了比赛。 结果。。。。大家都猜到了,初赛做了一到巨简单题目,然后。。。。复赛。。。一道题没做出来。更惨的说应该是:一道题都不会做,最后自己无聊的看着对面的一个mm敲码。。。再后来才知道是我们学校acm基地,准备纳新举行的一个比赛。并且由于急需纳新,那次题目出的是巨简单。
悲催的我比完赛后,失败了!!却还不知道为什么??!。。。
后来我郁闷一个星期后,在同学中介绍中,进入了当时认为”高手如云”的acm基地。
附:当时自己的水平:计算机只懂c语言,c语言只会些一些打印,简单几乎无循环的,无指针的,100行左右代码。编译基本自己搞定。逻辑错误?基本没什么逻辑的程序。
随后acm学习,就简单说说。记得当大家还都在迷茫中,或忙于考软件资格证,计算机二级证,或忙于网络游戏,或忙于学习其他专业的知识的时候。自己不顾外面的一切,每天和其他认真上自习室的同学一样,早起晚归得沉醉在acm中。
在acm基地,开始学习并巩固了,计算机数据结构,计算机算法,组合数学等知识,并不停的写码!在基地我一直这样坚持了两年多吧(知道二流学校的acm的艰苦的同学可能体会到,这其中的不易),到最后整个基地的同学仍坚持学习在前线的就只有我一人。于是也很自然的,我在学校acm系统中,排在了第一。虽然如此,但是越学我也越清楚这个算法的水有多深,也逐渐意识到外面高手真的如云,而且他们的高度,并不是自己所能赶上的。也意识到了,在算法前进的路上我的最大的阻碍是:数学!!!而更悲剧的是,就我自己的自学能力,再加上学校数学老师不怎么给力。。很难在段时间内弥补自己的这方面的缺陷。
所以大三下学期,我退出了acm,进入了实验室,做java的小项目。
在这两三年里,除了acm还有一些是计算机基础知识让我对计算机认识更深。
汇编语言让我明白了,计算机的计算机制,学完汇编,于是当我不确定c中某种结果时:我知道将c语言编成汇编语言,然后对比差别。通过反汇编理解指针,数组等类似问题差异和区别。
计算机组成原理,操作系统,不仅认识到为什么乘法会比加法费时的原因,内存存取方式,调度,分页等等。同时也就明白如何在c语言上进行这些细微底层的调优。
软件工程,则告诉我如何去大规模的程序开发的基本设计思想。自己并运用到一些课程设计中去。
于此同时平时也更多的关注了,网上出现的各种c语言本身讨论的一些问题。这其中有,c混乱代码,类似这种他编译器中的float的一个问题,c绘图,了解关注类似于结构体最后定义一个char[1]的这种奇技淫巧。于是针对c语言本身的书籍和资料,比如:≪c专家编程≫、≪c缺陷与陷阱≫。
附:个人此时水平:语言基本只会c语言和汇编语言;c语言100、200行的代码写完后基本没有编译错误,最长c代码4000多行。c语言指针操纵多级的内存动态申请维护;内存泄漏,程序崩溃自己可以独立较快解决。
汇编语言,分文件设计,3000行,自己完成所有编写,和调试。(目前基本没用,很多忘了,呵呵~)
小界面,windows编程基本不懂。所以被当时同学鄙视了:你有什么牛的?也就时一些,黑屏的数字。。
到了这个时候,可以说目前(也就是工作两年后)我找到的这份工作很大一部分还要归功与acm!因为在第一份工作,我基本没有用到任何可以算上算法的算法,和算上数据结构的数据结构。(小道消息:这个工作的社招比例:1:20),好了。后面可能还会提到acm。
话说后来我离开了acm,进入实验室,于是我花了整整一个暑假,加上一个月左右的时间,学习了:java,jsp,javascript,包括ssh架构一些。
这其中比较艰难的是思想转变:1、由面向过程转变为面向对象(刚开始用java写的代码也是面向过程的。。。。),2、由传统的这种小计算应用转变为这种bs模型。这两个思想的提升使我对今后编写应用软件打下了很好的基础。
不管怎么样,自己很快就能熟练写java应用,后来由于就像其他习惯c的人都非常不喜欢java的这种”拿来主义”的做法一样,我后来一直在尽量不做java方面的开发,当然也就不会再进一步深入学习java方面的知识。(当然,目前来看,java还是一门开发应用软件的很给力的一门语言,细的我就不再多说,只是自己当初不喜欢)^o^()
随后大学里面还有一门重要的课程:计算机网络。(不过大学网络很基础,后来又简单自学了一些tcpip的那三本书。)
计算机网络告诉了我计算机互相通信的原理,了解计算机底层通信的方式。后来在工作中碰到的一些简单问题也就能解决。比如:
如何窃听网络数据的原理,arp欺骗,java这种bs模型能否获取客户端的mac地址(哈哈,自己后来工作中写脚本自动签到中考虑这个问题),类似这种接口调试中技巧,webservice的原理以及协议,大小端问题也算)^o^(。
还有一个是编译原理,让我明白作为c语言这种语言的编译过程,理解了编译的几个阶段。同时明白,sizeof的值再也不用记了,因为自己就可以分析出来,而且很简单,而且理解了各种错误处于哪个时期等都有利于自己对问题的分析。
哈哈,c语言中的scanf,printf高级应用,longjmp等在这后来时间也自己再进一步学习。
于此同时,自己自学了vb,学会了用vc++写动态库,所以后来一些桌面小应用,都用vb+dll来做的。所以课程设计什么的,都是小意思了。
再后来毕业设设计:用matlab+vb+dll写的,实际写码调试时间不超过两个星期(约12天),代码量近6000行。毕业设计拿了年级第一。
另外爆料一下:宿舍一哥们,一个算法毕设题目,我帮他搞定,总共花了一天;另外一哥们,用我的以前的课程设计搞过。。。
附:自己此时的水平:语言就不说了,此时算的上说的出口的还是c语言,其他则是我的工具而已,而且很多我现在依然忘了,(检起来也简单,呵呵~)
代码编译,调试几乎不是问题。但是此时对系统设计,软件工程认识还是基本没有,对设计模式更不了解,对社会上使用的技术也是,什么不懂。
第一份工作,我没怎么去找,(~_~;)后来去了当时实习的公司。公司主要用的架构是:oracle+tuxedo+jsp。
当然用的也是unix主机。也就是说,我毕业后没有做类似嵌入式,windows编成的工作。后期的应用也都是,unix下的环境编成。
ok,这会儿开始了工作期间了。
在刚开始实习的时候,自己被安排做一些琐碎整理的事情,比如:将一个代码改为另外一个格式?
后来,实习了两个月,我打算离职。后来主管找我谈话,我告诉了自己的想法。后来答应我调到北京总部的一个研发部(一般至少工作一年,并表现很出色才允许调)。另外这儿不得不简单提一下为什么。。。
当时公司业务逻辑层主要用的是c语言,于我同批进去的实习生,后来很多人都问我c方面的问题。这个被技术主管看到,所以。。。他那次同意了我的要求。
话说调去了北京总部,就是常年的出差开始了,大约三个月后,参加了一个很大的项目,(200多号人一年多。)刚开始我只是负责一个简单的数据接口后台进程的需求调研和开发,当时自己刚入社会,做起事来相对有些不好意思。在加上,我这个正好是一个接口需求,需要和不同的人沟通。所以问题出现了,其它同事看我是个新人,也不怎么理我,常常找理由推托。最后这个小需求做的让我很恼火,自己也没太好办法。
再后来,这个需求完后,自己负责另外较为重要的数据接口。在后来近半年后,自己学习很快,很快掌握了,一些unix下的编成,以及调试技术。期间,有一个数据接口同事,和领导吵架跑回去了,领导后来让我接手,并开出了一些优惠条件^_^。自己当然接下也费了一些工作,而以前的工作则交给了另外一有工作经验的同事负责。后来我每个月都回家一趟休假,都被允许了。。有时很多人老员工也没被同意哦。
这之后,自己的能力慢慢得到认识,以前不理我的同事小组长,也都开始主动打招呼^_^。在之后,慢慢的有些同事问我一些技术上的问题。后来被部分同事称为”知识库”。
再后来,就不多说了,也就是毕业两年后,各种原因,离开原来公司。换了一份现在的工作。
附:技术能力,这期间c语言从自己小程序变成一个实实在在的应用的代码的转变,期间包括,多进程,网络编程,oracle一些知识包括:索引优化,sql等分析;设计模式,等但是期间更多的是提升自我团队协作,沟通,时间管理,设计分析等软素质吧。
目前还在学习中。。。互联网的知识。。。自己还有很多要学的。呵呵。 不过,学习是一件快乐的事情不是吗?
最后对还纠结在c语言的同学一点小建议吧:
1、c语言知识一门语言,就像java,peil等语言一样,仅仅是工具,因此不要把c语言看成很难,勤动手,多思考。语言终究是为了方便人,而设计的,所以他不难。
2、不要仅仅只看c语言,要从c语言看到计算机学科所有的知识点,并用c语言去巩固它们。为什么是c语言?他的确很合适,进入计算机有全面理解的一个入口。并以计算机的的角度去思考一些问题。
3、算法,数据结构,在现实中即使没用上,也会有助于你理解一些系统设计。
4、软件工程,系统设计也是很重要的哦。^_^,
5、知识永远是学不完的,计算机亦如此,而且越学越菜。^_^
6、以上建议仅供参考。
楼主 2015-11-19 14:01 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知