[推荐] 我的9年IT路

经常看到坛子里,关于金钱、人生、技术的出路,国内程序员做不到35岁等话题,这些话题都体现了作者的迷茫和抱怨。回想工作这么多年,很幸庆自己没有迷失,一直按自己制定的目标前进。虽至今无房无车,但仍无怨无悔。并不是自己买不起,多年前有个同事跟我说,买了房,当你老的时候你只剩下那套房子。所以把积蓄都拿去投资了,也时刻准备着和朋友一起去创业。感觉这几年的生活工作,最大的收获是心态平稳了,做事少了感性,多了理性。思想斗争了几天,把自己的经历和感悟写出来,发到坛子上,希望能给后来者参考。(ID是重新注册的,旧的ID也很少发贴,都是当潜水员。)在此感谢我的家人,对我一如既往的支持,特别是我的老婆。4年前嫁给了我这个我无房无车无积蓄的”三无“人员,此文也送给我刚满月的儿子。同时提醒在外漂泊打工的兄弟姐妹们:临近年底,注意安全。犯罪率会随着CPI升高而升高!
  本人2001年毕业于一所211大学,学校招聘时,签了深圳一家做电视的A公司(排在全国前5名,相信很多人都知道,名字就不说)。到了公司报道才知道,公司招了N多人(至少几百号人),短暂的培训后,把我们几个分到了一个刚成立的部门做技术开发。但是该部门其实不需要这么技术员,只好把我们几个打发去做销售。就在我们要分赴全国各地办事处的前一天,我们集体变卦,不想搞销售,于是纷纷辞职!那是2001年8月份。
辞职后,我回到了原来的省份。本省几个主要城市的人才市场,都跑遍了。但是都没找到工作。简历递过去,人家一问是刚毕业的,就说不要了。后来经同学介绍,去了一家做通讯设备的B公司,只有50号人的小公司。2001年11月份正式上班了。在这里的好处是同学多,有5~6个,感觉还在学校一样。由于是小公司,什么事都要自己做,除了PCB布板。所以做项目从,找方案、画原理图、硬件调试(PCB有专门的人。)、软件编写都自己完成。这里不得不提我的师父,当时他大概32~34岁,脾气不好,跟其他同事格格不入,但是对我很好。跟他请教问题,他基本都能引用公式,再加推导过程,甚至还能告诉你,这个问题在哪本书第几章。我也是在这期间跟他学习硬件电路,高频理论。但遗憾的是他不懂软件,当时公司的其他老前辈都用汇编,于是晚上就加班看他们写的程序,学习怎么看时序图,怎么通过时序图编写程序,怎么去控制MCU的寄存器和对IO的操作。当时主要用AT89C51,AT89C52。(也有其他同事用PIC,但是一直对PIC的翻页功能很反感,至今我还是不会用PIC的汇编)。也是在此期间,我学会了汇编,自学VB6.0,编写串口程序和下位机通信。此后有些少壮派的同事也开始转向C编程。大概在2002年的时候,从同事借了一本关于KEIL C的书(书名忘了),看到了介绍KEIL自带的RTX ,从此对嵌入式的RTOS产生了兴趣。于是开始把RTX用到自己的项目中。后面又买了邵贝贝翻译的那本关于UC/OS2的书。不过这本书看的不是很深。主要是看了一遍后,觉得UCOS对系统要求太高了,当时几乎所有的51用UC/OS的话都要加内存。这个开销太大了,不想用UC/OS!后面几乎所做的项目都KEIL C的RTX TINY版。
2004年,跳到了一家中型企业C公司工作至今。刚开始也用EMC的汇编。刚进公司时,刚还有个同事要辞职,于是力荐我给经理接他的工作(在此感谢这位大哥,听说他去了深圳MTK,现在不知在哪高就)。当时我承担了公司几乎所有项目的软件,11个项目有7个是我做的。那时候非常的累,记得有天中午刚才食堂吃完饭,经理就跟我说有个项目的软件要写,而且很急。于是赶紧跑去办公室接着写。产品的出货量很大,不容许软件出错。出了错,整条生产线就要停下来,几百号人在等,延迟交货是要被罚款的。有个硬件同事由于用错了电容的参数,导致电容爆炸,产品刚上美国,就被招回。听说公司赔了100W的USD。压力非常大!项目用到了韩国的方案,经常和客户用英语交流,知道了英语的重要性。至今还保持学习英语的习惯。2007年开始接触WINCE。从WINCE4.2~6.0,从EVC4.0~VS2008,做驱动层也做应用层,学习了很多WINCE的东西。在C公司我也从一个工程师做到组长、项目经理。
有人说做技术的累,赚不到钱,娶不起老婆,买不起房。其实不论在哪里,单纯做技术的都是赚不到大钱的,也不见得LINUX之父成为百万富翁。在ZG,不仅技术员苦,打工的都很苦。不信你问问生产一线,问问街头摆摊的,当老板的也很累的。(这主要是GJ的政策,咱不多讨论。)我们现在的老板70几岁了,每天还8点上班。有几次我7点40几上电梯,看到他老人家刚从电梯下来。也经常看到某个大公司高管猝死的报导,所以大家不要抱怨做技术累,360行,行行都很累,除了GWY!国外的单纯做技术的工程师也没人发大财。主要是人家不愁吃穿,搞技术纯粹是兴趣爱好。
关于待遇的问题,很多人要求待遇要高。可是你有没想过,公司给你发1W的工资,你至少要给公司创造3~4W的利润。不要说剥削,如果你是老板你会怎么想。要想做技术拿高工资给大家两个建议:
1、不断地学习,提高自己地竞争力。现在企业基本很少对技术员进行相关的培训,主要还是成本的问题。企业是讲究成本和效益的,他们的日子也不好过。看看企业要负担那么重的税就知道了。所以还得靠自己!本人学的是电子专业,大学学的计算机语言是FORTRAN77,现在基本忘光了。C和C++都是在工作中学习的。从B公司开始学习KEIL C、RTX51到C公司的IAR的POWERPAC(IAR自带的RTOS)、KEIL for arm 的ARTX、WINCE。这些都在实际项目中运用。不断地学习一方面是工作的需要,一方面是兴趣。还好每次都能跟上主流产品开发。我有个同学在C公司是同事,05年跳到深圳去了。刚到深圳时候他的工资差不多2W。但是现在只有8K多了。他一直做DVD产品。从最初的2W,跳了一次就变成了1W多,再跳一次就只有8K多了。现在单纯的DVD产品已经是夕阳产业了。记得有人说C++不适合做驱动,那我告诉你,错了!我做过一个方案,原厂提供的BSP包除了汇编就是C++。
2、要么把技术做深,要么把技术做广。把技术做深,成为某个领域的技术专家。把技术做广,成为该领域的系统专家、但前提是你对该领域要有深的理解。当你成为真正专家时,就有人高薪聘你了。不过就像武术一样。练的人很多,但不是人人都能成为高手,即要够勤奋,也要看个人的天赋。记得在哪看过这样一句话,大概意思是:要想成为某个领域的专家,需要不断练习10000小时。去掉睡觉,吃饭,泡妞、娱乐之外,需要多少年才能成为专家?但是在这个物欲横流、急功近利、浮躁的年代,有几个人能坚持。
  刚工作几年后,我也经常迷惑。难道一辈子要搞技术,又赚不到钱。经常上网搜索,关键词是“技术的出路”。经过这几年沉浮和对人生的理解,发觉最主要的是认识自己,了解自己,知道自己想要的是什么,自己是哪块料。本人不喜欢和数字交道,对算法研究没有天赋,尽管自己也努力过,但最后还是放弃了。编程时用到的比较难的算法就上网找。本人也比较愚钝,到现在还是不能理解C++的模版。注定成不了C++专家。只好把自己定位成系统专家。针对客户需要的功能,制定出完整的硬件方案、系统要怎么构造,需要什么样的MCU,它们之间要怎么通讯,怎么互相配合;通信方式要用哪种方式,USB、I2C、SPI、1wire,UART,IR;软件架构要怎么搭建。对整个系统非常了解,出了问题能知道问题是出在哪个模块,怎么解决。这些都要经过多年的项目经验。所以年轻人不要动不动就要求高薪。(这里插个话,现在读大学是要很多钱,毕业后又赚不到钱。不少农村出来的大学生,是举债读书。但这是国家政策的问题,我们P民无能为力。)除非你能力很强,但是“试玉要烧三日满,辨才须待七年期”。想想领导不了解你,怎么会把重要项目交给你。怎么说也要有个了解你的过程。
  我在A公司时,拿到手应该有2K2(时间长了,记不清,只拿了2个月),到了B公司,就因为比之前的同学晚去,比他们少100,他们1200,我1100。拿到第一个月工资(公司包住,扣水电费920),我第一感觉就是:完了,这辈子大学白读了!还好自己没有自甘堕落,仍然不断地学习,告诉自己是卧薪尝胆。离开B公司时工资还2K不到。老板一直在挽留,递上去的辞职信,迟迟不签。最后自己心一横收拾东西走人,该移交的移交,B公司仍欠我一个多月的工资。跳到C公司3K5。最近打算换个地方,主要在C公司呆了很久了,想换个环境。在C公司我已经做到顶了,再上去就是部门经理。由于公司比较大,制度也比较完善,基本一个萝卜一个坑。08年的时候,华为打电话给我,那时还没打算要换,最近也打了一次。我还是拒绝了。我不想放弃之前所积累的经验。不想转行,做一个跟自己不怎么搭边的工作。  
  做技术的,骨子里都很傲。用汇编的看不起C、C++,用C、C++的看不起用JAVA、C#······。当我们还在争论哪种语言更猛的时候,美国人都笑了。接着就是技术好的看不起技术差的,技术差的看不起资历浅的,学历高的看不起学历低的。建议大家多看些”课外书“,学习怎么去阅人,怎么去察言观色,怎么为人处世、待人接物,提高自己的EQ,控制情绪,不要搞得一副舍我其谁的样子。想当年自己年少气盛,还在论坛上和人摆擂台。回头想想,自己是多么的幼稚。正所谓,人外有人,天外有天,术业有专攻。年轻的时候,那股气是在胸口,随时都可能爆发;现在这气在丹田了。说到这提一个伤我很深的朋友,他和我一起从B公司跳到到C公司,我的工资是3K5,他的只有3K。当时自己也比较傻,他问了我的工资,我就说了。结果他竟然跑到我们的经理那说比我少,要求给他加工资。还好,经理大量,没有把这事告诉我(事后另一个同事告诉我),同时在以后的工作中一直提携我。在此表示感谢!经历这事以后,这个朋友在我心中已经没什么份量了。估计他还不知道,我知道这件事。所以职场上有些事不能说。有几句话与大家共勉:
1、男人的肚子是委屈撑大的。(马云语录)
2、心事是握在手心里,不是说给别人听的。(忘了在哪里看到的)
3、低着头,弯着腰,夹着尾巴做人。(自己悟出来的)
就写到这吧。

Java的学习方法

你的j2se只学了一点而已,不管怎样,都要先把j2se学好,这是基础。j2se的学习顺序一般是这样的:基础语法 -> 面向对象入门 -> 异常处理 -> 数组 -> 常用类 -> 容器(相当重要) -> IO -> 线程 -> 网络 -> GUI。

既然你io,thread都学了,其余那些还有没学的,建议去看看马士兵的j2se视频,其实我觉得如果想打好基础的话,这套视频应该全部过过,特别是开始的内存分析和面向对象分析。学完j2se要做做几个基础的桌面项目,像什么贪吃蛇啊、俄罗斯方块、简单的聊天器等等,这样才能把知识整合起来,加深对j2se的理解。

如果想走j2ee路线的话,接下来应该学数据库,再学html、css、JavaScript、jsp/servlet,也就是web的入门,之后做做web项目,比如小bbs、网上商城等等。学通了就学框架,这期间会穿插很多东西,例如xml、uml、log4j、jUnit等等,最后学设计模式和面向对象的分析。计算机的东西是很多的,不要学死,也不要想着学完,最重要的是学会解决问题的方法。开始肯定要模仿别人的代码,不断模仿,多看,看完一定要自己写几遍,只有能写出来了的,才是自己的东西,建议开始时多背点东西,包括一些常用类啊、一些概念性的东西,因为背多了自己就熟悉了。

马士兵的视频:http://www.verycd.com/topics/93279/
数据库的要另找,网上能找到马士兵的Oracle,讲的很不错的!!
shopping这个项目也有从头带到尾的,也是马士兵的,要找找
做项目是很重要的,从简单的做起,慢慢体会其中的分析与设计

学java还是从视频入门的好,千万不要一开始就去看《Thinking in java》,吃力不讨好,学到web时可以看看张孝祥的《深入体验JAVA Web开发内幕——核心基础》,写的很详细,不过他的视频一般,JavaScript就看《JavaScript高级程序设计》,html比较简单,css也比较简单,不过css布局因人而异,有人觉得很好理解,有人觉得很难,搞个Dreamweaver多练练也就熟悉了。设计模式可以看《大话设计模式》,入门很好!

补充一点:张孝祥的那本《深入体验JAVA Web开发内幕——核心基础》真的很不错的!!而JavaScript的就不行,不够细,而且太多其他内容(html、css的,而且写的一般),他写的那本java的书就没看过,不知道怎样,另外,他的视频实在不好,在念书一样。个人认为,还是马士兵的视频好,讲的很好,而且还讲了很多学习的方法,很适合入门,还有,不要一下子下一大堆的视频,不要把什么孙鑫、张孝祥、马士兵的全下,你是看不完的!你可以先下他们的第一集,看看谁的讲课方式适合自己,再做定夺,不过个人十分推荐马士兵的,真的讲的很好!!!

记住:不断敲代码、敲代码、敲代码….. 程序是写出来的,不写学到死也学不会的!!!

主要还是看你想要走哪个方向!
java的应用主要分三个方向
j2se:传统桌面应用程序
这个现在用的已经越来越少,而且java的优势体现的不够彻底
j2me:手机上的应用程序
这个本人比较看好,但是现在的市场貌似还没有完全打开
j2ee:大型企业级开发,运行在web上的应用程序
这个是我现在的主要发展方向,也是java这个技术的主要发展方向。

前面两个,我不是很熟悉,所以就不帮你介绍了
主要为你介绍一下如何系统的学习j2ee的内容:
1、首先你必须学会java基础
包括java语言基础,以及一些常用的类,多线程,IO流,网络编程等
2、学习jsp
在学习jsp之前,必须了解html和javascript
然后再去学习jsp的基本语法,以及什么是servlet
什么是javabean
3、框架的学习
为了增加开发效率,现在的很多开发人员和很多的公司都会使用第三方框架
主流的是struts,spring,hibernate。
4、学一门富客户端的语言
这个是我现在的学习方向,随着网络的发展,浏览器能展示的东西越来越多,
客户对客户端的需求也越来越高,所以我相信富客户端会是以后web软件的
发展方向。

最后,告诫你一点:基础是最重要的,只有基础牢固才有可能最后面的学习有更加深刻的认识!好吧,就到这,希望能够对你有帮助…

时间控制的话,需要看你自己的学习状况来定。
掌握一个原则,在自己的承受范围之内就可以了。
有钱去搞个培训,没钱下套视频。
会看书的话,去搞本《Thinking in Java》,还有那两本黄皮的JAVA 初级基础 和 高级特性。
se学完之后可以先写几个小的项目练练手。
如果感觉好的话,就可以看看自己的方向了,关于方向方面1楼的回答已经很不错了。

程序员应知——学习、思考与分享

程序员应知——学习、思考与分享 收藏 此文于2010-11-09被推荐到CSDN首页
有人说,程序员是个苦差事,一辈子总是要不停地学习,学习新的技术,学习新的架构,学习新的工具,一旦一段时间不学习,就会发现其他人嘴里冒出来的新鲜词,自己已经搞不懂是什么了。

的确,作为程序员,学习很重要。

还有人说,做程序员是典型的脑力劳动者,每天都要思考,想怎样才能做出更易于扩展、安全性更高的架构,思考如何才能够满足客户的需求,思考如何才能够让自己做出来的程序可维护性更好,思考如何让自己的产品更容易被用户所接受,很多很多需要思考的问题。另外,每次做完一个项目,总是要思考一下在其中获得了什么经验和教训,学到了什么知识,然后在仔细做个总结。

的确,作为程序员,思考也非常重要。

古语云:学而不思则罔,思而不学则殆。

其实学习和思考的重要性,很久很久以前的人们就意识到了,直至今日,仍然是一样的。

然而,在学习和思考之后,我们还需要做一件事儿,也是让学习和思考更有目的,反过来又能够让我们更好地学习和思考的事情,那就是——分享。

当前的社会,当前的程序员,已经都告别了单打独斗就能够搞定一切的时代了,团队变得越来越重要。而在团队之中,或者更广泛一些,在程序员这个圈子当中,没有分享和交流,是不可想象的。那样只能导致固步自封,作为一个井底之蛙,根本不了解外面的世界了。其实,一山更比一山高,外面的世界很精彩,想要了解这些,我们首先要有一个open的心态,把自己的东西共享给别人,那样也会获得来自于其他人的分享,了解更多的世界也就变得容易了。

肯定有人会问,我分享了知识,分享了经验,分享了……,我会获得什么呢?我想,想要做到真正的分享,首先应该就是没有目的的,不要考虑对自己会有什么好处,那样才能够平心静气地做下去,那样才能够不会因为没有获得什么东西而放弃。当做了一段时间之后,我们会发现,其实得到的东西很多,而且都是无法用money这个东西来衡量的,比方说他人的认可,比方说圈子的扩大,比方说成就感,还有让我们能够坚持做一件事的决心和毅力,有传统的重要的东西,也有富于现代感的东西,而且这样的话,自己的影响力会扩大,能力会有提高,当想要换个工作的时候,可能就会体现在经济利益上了。

既然分享能够让我们获得许多,那么如何分享呢?我现在主要做的就是两种方式,一是写blog,二是举办交流会。

不知不觉,从决定坚持写blog,到现在,陆陆续续也有一年左右了,在这期间,不断地把自己学习和思考的结果分享出来,也得到了非常多有意义的反馈,从中也获得了很多。特别是《程序员应知》这个系列,让我交到了很多好朋友。

交流会已经在公司内部举办有半年的时间了,在此期间,我为大家做了至少六次的演讲,此外还支持其他人一起举办了多次交流活动,现在这个活动每次举办一次,系列名称叫做“Happy Time”,似乎大家也很是享受每周固定的这段时间,真的是很快乐的时间。

为了更好地分享,我想还有许多需要提高的地方,对于写blog来说,上面所说的学习和思考是必须的,但这主要是在本专业的领域中。而对于做presentation,就不那么简单了,我觉得,设计页面的知识、制作PPT的知识、做演讲的知识等等都很重要,这些知识都是一些软能力,很可能在某种情况下是被我们这些整天埋头于计算机编程中的程序员所忽视的,为了让自己的PPT更漂亮,为了让自己的演讲更有感染力,而不是让人昏昏欲睡,我看了不少书,(推荐阅读:《写给大家看的设计书》《演说之禅》《演讲之禅》《说服力》)也做出了不少实践,感到自己在这些方面都有了一些提高,尽管还没有达到什么高度,但是我想只要坚持下去,就一定会越来越好。

本来是一篇《程序员应知》,结果发现变成一篇自我总结了,希望对大家能有借鉴意义,那就足够了,:)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lingyun2005/archive/2010/11/09/5996741.aspx

关于博客删除社会时评类文章的声明

各位来宾大家好,欢迎光临Quicl’sBlog,感谢大家一直以来对Quicl的支持。Quicl‘sBlog自建立以来受到广大网友的支持与关注,由于个人以及大环境因素Quicl将不再发表社会时评类文章,且之前所发文章由于数量众多将在最近一周内进行删除。自此,Quicl该博客将纯粹定义为技术博客,不对民生、法制、金融、军事、政治、互联网等非技术性事件等进行评论。我也不希望博客可以走到这一步,希望各位有实力的博友或者博主不要轻易泄露个人资料,域名Whoise隐私设置非常重要!网络很危险,上网需谨慎!