两年多感觉对编程刚刚入门
这篇文章算是我一个小小的总结,大家看了不要见笑。
大学的时候上的是“网络工程”专业,关于编程的课程只有C语言,winform基础,java语言基础。教我们C语言的老师特别严厉,所以C语言那本基础教程学的还不错,老师也比较喜欢我,我也就比较喜欢他,他后来又教我们winform的课程,课本上的那些例子我做的还不错,老师留得一些扩展的小功能,我也能比较好的完成,所以老师对我比较照顾,让我的虚荣心得到一些小小的满足。现在想想大概就是由于这个原因喜欢上编程的吧!(不喜欢JAVA老师,所以误打误撞的用上了C#。)但是当时光顾着玩,乱七八糟的什么都玩,也就没有去深入的学习。
大学的前三年就这样玩过去了。在大四的时候大家都有了找工作的压力,我们班兴起了报培训班的热潮,因为我们的专业,很多人都报了CCNA,CCNP的培训课程,女朋友天天看我玩,看别人好像都挺努力的,然后也就天天说我怎么怎么的,我当时也是为了堵住她的嘴,然后就和家里要了些钱准备报个培训班,但是不喜欢CCNA这类型的课,同宿舍上课的那个地方除了CCNA,只有一个"微软认证应用程序开发专家 (MCAD)"的课程了,为了和他们在一个地方,就了解了一下MCAD,大概知道这课程讲的是怎样编程,然后一想我在学校编程课程成绩还不错,所以就报了这个培训班。因为去培训班的目的不是很纯洁,听课也就不怎么认真,但觉得钱花出去了,为了心理的安慰,还是准时去上课,按老师布置的作业去做一些东西,当时学会了怎么写一个新闻发布类型的网站,别的就没什么印象了。
大学转眼就毕业了,到了找工作的时候,家里想让回去,在我们那小县城里给我找工作,当时年轻气盛,想着自己能养活自己,回去还得吃家里的,父母还得送礼等等,就特别坚定的拒绝了家里的意见,留到了上学的城市开始找工作,因为只会一点点编程(别的什么也不会)所以选择了找程序员的工作。
找工作的结果可想而知,四处碰壁,印象比较深刻的一次就是我拿出来我做的那个新闻发布网站让人家看,结果他问我你知道三层架构吗? 我说听说过。他问我你知道面向对象怎么用吗?我说听说过面向对象,但不知道怎么用。。。(汗死!)。回想起来也真是,上的那个培训学校的老师都没教过面向对象,只是说这个控件怎么用,那个控件怎么用。。。我又特别懒,没有在课下学习过。o(︶︿︶)o 唉,当时还觉得做出过东西,就不知天高地厚了,真是井底之蛙啊!
大概过了半年时间,我大学时的好朋友推荐我到他们公司,做IT培训。我说我还不会怎么教别人啊!朋友说高级的又不用你教,你就教咱们大学里的那本C语言就行了。就这样阴差阳错的到了一个培训机构教初级的C语言。备课的时候遇到一些问题,上网查才知道有cnblogs这样好的网站。从那时起,天天都上cnblogs看看,自己也买了一些编程的书,从这时起才算正式开始学习编程吧!
时间过的很快的,大学毕业也一年半多了,自己也深入了了解了一些编程,越是深入的时候,罪恶感越重,因为觉得对不起学生们,只能给他们讲书本上的那些基础知识,没有什么项目经验等等。大概这个时候看到吉日写的文章什么创业失败啊!自己的权限系统多好多好,这时就动了花钱买下他系统看看的心,心想也不缺500元钱,就算不好也也没太大关系,起码肯定比自己写的好不少,自己也长长见识。于是就联系吉日买下了他的系统。买下后看了两天,也让吉日QQ语音讲了两次,觉得系统挺不错的。但是懒着个东西一直跟着我,买的时候想的挺好,买下来没多久就放到一边,看了两次就没动过了。
就这样浑浑噩噩的又过了一段时间,毕业快两年了。往前想好像看不到好的未来,觉得如果这样待下去,最终还是要回家,还是要靠父母给找工作。但是出去找工作吧,心里特别没底,这时看到吉日写的招聘广告,当时就咨询了一下,然自己和女朋友又讨论半天到底辞不辞职,就有耽误了几个月,最后她也觉得这样下去不行,最后决定要辞职,走人。这时就联系吉日这边,他这边人招满了,就给我推荐到杭州的另一个公司。
初来杭州还是有些不适应,一些乱七八糟的事,把以前的一些积蓄都花完了(自己比较奢侈,觉得来杭州了,挺美的地方,必须有个好相机,就买了个单反,等等等等),工作还是比较顺利的,这样过了两个月。吉日推荐的这个公司还是不错的,公司领导为人都挺好的,但是工资不是很好,我也就留意着网上的一些工作,看到一个比较合适的公司,就有跳槽了,也就到了我现在这个公司。
因为给我妹妹报了个培训班,花了些钱,生活开始紧张了,就开始留意网上的一些私活,看自己有什么能做的,结果是自己能做的都挺多人的,而且给的钱也比较低,自己也懒就没接过私活。那天在吉日的软件群里看到他要把软件的英文软件包做好,有人愿意做的话给1000元的辛苦费,我一看觉得挺容易,钱也还行,就接了下来。开始做的时候比较容易就是把一些中文翻译成英文,但是做着做着就遇到问题了,不过好在都做下来了。算是挣了第一笔私活的钱。吉日也还比较满意,就又谈了下个活。
到现在感觉自己的程序员生活才正式开始,走了很多弯路,耽误了很多时间,总结一下我走过的弯路,希望可以让大家引以为戒。
最后谈一下我自己这两年多的一些认识:
1. 多上网(少玩游戏);网上真是有很多很好很好的学习资源,有好多牛人的blog,可以帮我们开拓眼界,开始看不懂的时候也可以帮我们开阔眼界,起码我们能知道有这种东西(虽然不会),但有一个学习的方向。
2. 认真钻研一门;网上东西看多了,有时候会觉得眼花缭乱,javascript不错,css不错,HTML5不错,C#不错,F#不错。。。等等这时我觉得还是找一本经典的好书把一门的基础知识好好的看一遍。(比如CLR via C#(第3版))因为这个时候如果还是一直看blog我觉得就是看热闹了。
3. 再反过头来看blog,因为掌握了书上的基础内容,提高的时候就要多看看大牛的经验了。
4. 真正的去写一些功能,搞好工作的时候,力所能及的接一些私活,即赚到了钱,也锻炼了自己的能力。比如这次我接吉日的多语言包实现就遇到一个问题:
因为要去遍历每个窗体里的控件,然后对比资源文件,确定该控件应该显示的内容,这时普通的控件如lable这些可以很简单的找到
比如:foreach (Control c1 in this.Controls) 所有控件都在集合 Controls 中。但是ContextMenuStrip、Timer 等控件不在这个集合中,如果要获取就不能使用上边方法,可以使用反射的方法来找到他们:
System.Reflection.FieldInfo[] fieldInfo =
this.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
for (int i = 0; i < fieldInfo.Length; i++)
{
switch (fieldInfo[i].FieldType.Name)
{
case "ContextMenuStrip":
ContextMenuStrip contextMenuStrip = (ContextMenuStrip)fieldInfo[i].GetValue(this);
MessageBox.Show(contextMenuStrip.Name);
break;
case "Timer":
Timer timer = (Timer)fieldInfo[i].GetValue(this);
MessageBox.Show(timer.Interval.ToString());
break;
}
}
本来以为这样就可以全部搞定了,后边做的过程中又遇到问题,就是如果一个from里包含UserControl控件,UserControl控件里又包含其他控件,上边这种方法只能找到这个form里的控件,UserControl只算是一个控件,那么又的用同样的方法去遍历UserControl控件,找到他所包含的其他控件。
我想我如果不是做这个外包是不会注意到这个知识点的。所以还是要多做。
5. 认真,执着,勤奋。这个是我和吉日接触这段时间来,观察他为什么比我牛所总结的。在博客园提到吉日就好像有一种商业的味道,但是和他接触一段时间觉得他就是个很实在的人,有什么说什么。就说这次私活他检查的非常认真,就连那个控件的内容多了一个空格都看出来了(我都挺无语的),感觉他对待他的权限管理组件就像对待他的孩子一样,一直在改进,白天晚上随时随地的想这这个东西。再看看博客园的其他牛人都是有这几个优秀的特点,他们的博文写的那么多(勤奋),博文质量(认真),写了这么多年(执着)。
啰嗦了这么多,好像没有什么主题思想,但都是我心里想说的,希望能对有的人有所帮助,也希望能得到大家的意见。