一个苏州IT人的5年挨踢经历-------经历篇(之三)

时间:2022-07-07 22:22:26

3.关于换专业转投IT
       
因为前面正好看到有人回帖问到这个问题,我就简单说说自己的看法。首先,除非你考了很多证书能证明你的IT能力,要不这真的不是一个很好的选择。作为企业,凭什么选这样半路出家没有优势的?即使有公司要你了,那很可能也是一些招人才有困难的不正规小公司。到时,你本专业没心思搞,IT这又没有好出路,这是很可能走进困境的。其次,如果真铁了心要进来,那就试着找个相对正规的公司吧,就像我前面说过的,没有学校专业背景,那就争取慢慢一步一步把自己的职业背景,工作背景走出来。但这通常需要一个过程,还需要我们自己不断的努力和付出,当然还少不了机遇。我可能就是运气比较好,第一家公司就算是个相对不错的公司,给了我不错的机会,而且当年的面试也没有多苛刻,但相应的起始薪资也当然不高了。
       
所以,对转专业又没有什么背景的,那么初期的选择还是首重公司,然后再考虑薪资和技术方向吧。

 4.
不要抱怨学不到东西,擅于挖掘和擅于寻找是关键
       
有人经常会说,公司的项目中自己得不到什么提高,学不到东西,感觉是在蹉跎岁月。记得我也有过类似的牢骚。确实,不同的公司,不同的业务形式,不同的项目,不同的团队确实会导致不同的发展空间和成长效率,这是客观存在的事实。就象前面说过的,如果你没有过硬的学校背景,那你的先期土壤可能养分确实会比不上那些背景更好的。这其实没有什么不公平,因为那些背景好的人在之前确实付出了更多的努力,或者具备更出色的条件,所以才获得了目前不错的土壤。既然前期落后了,那我们该怎么办?其实先期土壤质量高低,只是代表环境的好坏,而决定我们成长的首要因素却是我们的吸收能力。如果你不擅于吸收,那土壤再肥沃,你的成长速度也未必快,而如果你擅于吸收,汲取养分,那即是在贫瘠的土地里,你也可以长成参天大树,到时你枝干茂盛了,再移植到富饶之地去,那应该是不难之事。所以,这里我关键想说的就是所谓的吸收能力。
       
确实有很多或者说国内绝大部分项目,都是修修改改,复制黏贴,没有太多技术含量,慢慢的都会变成熟练工似的操作。所以很多人想的都是换一份技术含量更高,更能学到东西的工作。但是殊不知,换来换去,似乎都是半斤八两,五十步笑百步的境地(个别牛人,或者个别机遇好的人不在讨论范围)。说句心里话,目前国内的IT圈子就是这样,真正所谓技术高端的工作,还真不多,至少作为草根的我的体会是这样。那么,怎么在这样的氛围环境里提高自己找出路呢?我的建议是,要善于挖掘,善于寻找。挖掘什么,挖掘现有工作中存在但自己未涉及的技术,寻找什么,寻找跟自己目前关联,或也许将来会跟自己关联的新技术,然后呢,学吧!什么意思呢,还是说说我的经历吧。(申明下,每次都以自己的经历来进行说明,并不是说自己做的就是对的,其实里面也走过很多弯路,甚至以后走向某个死胡同也未可知,大家可以参考下,而我也仅是分享下而已)
       
其实说真的,自己做过的项目还真不算多,待过的公司也不多,5年多的工作经历,前后所有经历过的项目加起来,也就5个左右,而且这5个里有几个并不是主力参加开发的,有几个还都是主做项目管理和评审等。我的第一个项目,也是时间最长的一个项目,我们做的都是没有太多难度的UI层工作,很多跟我一个项目组待过的人,都感叹过做这样的事情学不到东西,所以有的人很快跳槽了,有的人还在继续熟练地干着。但是我却想说,这个项目是我成长的关键,它让我学到了太多东西,这份财富是不可想象的。这是为什么呢?首先,这是一个规模非常大的项目,代码规模估计在300~400万行左右,涉及操作系统API封装,驱动封装,网络通信应用,嵌入式控制,复杂的数据层框架,UI库,UI页面等太多技术,我们国内部门负责的只是UI层的开发,虽然开发量也很大,但是做到中后期,也确实没有太多技术含量了。但是这么大一个项目,这么多技术,而且源码都是开放的,随便抽一样都够学段时间的,所以当别人在讨论这里该嵌套几个if-else,那个该来几个for循环的时候,我早就不局限在这些东西了。记得我首先学通UI库的框架,接着是操作系统API的封装框架,再然后是数据层框架,网络通信,后面还有嵌入式控制的处理,当然没有人会跟你说这里涉及到这么哪些技术,你可以这样那样或怎样的方式学习,所以就需要我前面所谓的擅于挖掘,你必须自己去挖掘出技术财富。而在挖掘出这些内容学习这些技术的同时,我又延伸出去,看框架我就结合设计模式来学,看操作系统API封装我就结合多种常用的OSAPI来学,看网络通信应用我就结合网络通信原理并开发实例来探索,看到用到STL,我就又找了boost来学,这又是前面提到的所谓擅于寻找,因为你需要寻找相关或可能相关的内容来丰富自己。而能否挖掘出来,能否寻找到,这不取决于能力,而取决于是否用心。当然,到最后如果真的挖无可挖,寻不可寻的时候,你就可以考虑换个土壤试试了。
       
总之,我相信,擅于挖掘与寻找,一定可以闯出属于自己的一片天空。

 

5.推荐一些自己看过,觉得不错的书
       
这么多年来,技术相关,正版盗版的书也看过不少,在这里就把一些个人觉得不错的书推荐给大家,当然每个人的看书习惯,品味都不同,仅供参考。

C++
方向:《C++Primer》,《C++编程思想》, 《EffectiveC++》,《MoreEffective C++》,《深度探索C++对象模型》
       
这几本书就不需要我多说了,前面两本如果作为入门书学习有困难的话,也可以先找本其他薄点的入门书先看下,然后再看这两本(其实两本里选一本就OK了)。并不建议在读完前两本后就马上开始第三本,第三本可以再有了一定基础以后再学。至于第四本,虽然也是经典中的经典,但是难度挺高的,具有一定挑战性。最后那本如果对C++的构建思想有兴趣,或者想往Com方向发展的话可以看下。

嵌入式C和实时操作系统方向:
       
记得在大学时看过几本书,现在记得的不多了,只有一本想推荐一下,《嵌入式实时操作系统μCOS-II》,邵贝贝翻译的。可以结合μCOS源码来学,我上学时奉为经典。看完后至少对操作系统的基本概念,基本框架,功能能有个大概了解,而且对嵌入式C方向很有帮助。
 
Linux
系统管理服务器配置方向:《鸟哥的linux私房菜》两卷
       
这方面书我只看过这个系列,分上下两卷。上卷是Linux基本功能和命令,下卷是网络基础,服务器架设相关,觉得写得非常通俗易懂,是这个方向入门不可多得的好书。

Linux
编程方向:《UNIX环境高级编程》
       
绝对经典中的经典,如果做Linux程序方面应该都知道,我就不多说了。最好看第二版,因为线程部分在老版里是没有的。

Windows
编程基础方向:《windows程序设计》,《Windows核心编程》
       
这个不多说了。Windows方向必看。

Com
ATL方向:《COM原理与应用》,《COM技术内幕》,《ATL开发指南》
       
想学Com而又自认为基础不太好的话,可以先大概浏览一下《深度探索C++对象模型》,应该能帮助你理解。然后我很推荐潘爱民的《COM原理与应用》,国内难的一见的好书。名字和原书封面都很不起眼,但是内容真的不错。《COM技术内幕》这个可以在看上一本的情况下结合来看。最后那本作为ATL入门书还是不错的,至少比较通俗易懂。

网络编程方向:《TCP-IP详解》前两卷,《Unix网络编程》两卷,《effectiveTCP/IP》(中文名《高级TCP/IP编程》),《C++网络编程》(专门介绍ACE的两卷)
       
在开始我不太建议去看上面任何一本书,可以先找些简单了资料和代码,弄清楚网络编程基本概念,Sokcet的一些基本API后再看。首先《TCP-IP详解》第一卷,太经典了,翻过n次,还是觉得每次看都有收获,从概念上完全剖析了TCP/IP的各个环节。关于第二卷,看的门槛比较高,我只是随便翻过,掌握了点皮毛,如果只是做网络应用开发的话就略过好了,可以看《Unix网络编程》的第一卷,而这个系列第二卷主要是针对Unix进程间通信的,如果你不是做LinuxUnix方向的可以不看。《effectiveTCP/IP》这个绝对是必看的,可以让你对网络编程的理解再上一个层次。最后关于ACE的,也是比较推荐看的,ACE整个框架里对设计模式的应用是淋漓尽致,有很高的参考价值。这里再补一句,作为网路基础入门,前面鸟哥那套书第二卷里的第二章看看也不错,不长,但是写得风格很不错。下面是网上的链接。
http://linux-vbird.bluedata.org/linux_server/0110network_basic.htm
(以上的说明对windows方向同样适用)

设计模式方向:《设计模式》(*的那本),《敏捷软件开发(原则模式与实践)》,《面向模式的软件架构》(共四卷)
       
第一本就不说了,这个方向的经典,第二本名字是敏捷开发的,其实绝大部分都是讲的面向对象设计思想和设计模式,内容也是绝对经典。面向模式系列基本涵盖了所有设计模式,第一卷是系统架构的整体介绍,第二卷是分布式网络架构方向的设计模式介绍,第三卷没看过,第四卷是23两卷涉及到的设计模式的总汇。好像现在又出第五卷了。

SQL
方向:《SQL入门经典》
       
如果想学SQL文设计的话,这本不错。

 

javaJ2SE方向,《thinkingin java,java核心技术》两卷
       
虽然对java语言本身的理解好可以,但不是我的主攻方向,所以下面说的仅供参考。我也只推荐J2SE方面的书。一本是《thinkingin java》,我应该有读过2,3遍吧,只能说Thinkingin系列的书都是经典。如果你看不进去,其实还是对面向思想方面的理解还有欠缺吧,可以先找本更简单入门点的书导读一下再回过来读,如果是第一次开始精读的时候,一定要结合源码例子,边写边读。另外也推荐后面的那个系列的两卷也是很经典的。这些读完java的基础应该就可以了,不管走WEB方向还是移动方向发展都应该可以得心应手。

数据库方向,《SQL-Server2000编程员指南》,《SQL入门经典》
       
我只捣鼓过SQL-ServerMySQL,数据库方面的书看的不多,上面两本是看过觉得算不错的。