跳至主要内容

【转贴】"35岁"IT人的一道坎

作者:  来源:   发布日期:2008-08-14  

    机遇与挑战并存,知难而退还是坚守着不抛弃不放弃?2008年,那些三十而立的IT人,在前途与钱途之间如何抉择? 0和1的世界,并不单调,虽不能像电影中的IT英雄那样依靠机器拯救世界,但是每个人手中都掌握着自己的职场罗盘。

    据一份调查报告指出,目前国内软件开发人员中,年龄在20 ~30岁的人群占53.76%,30~45岁占34.71%.有人认为,开发先进的技术理念需要应聘者具备相应的工作经验,创新能力和研发能力,因此,一般在30~35岁的候选人是较合适的选择;还有人认为,程序员接受新知识的能力随着年龄的增长会有所下降,通常集中在35岁以后,因此,一个以技术为核心价值的企业当然会顾虑聘用35岁以上的员工。

 

   "前途or钱途" 35岁真是软件工程师的一道坎吗?

    ――访联想网络(深圳)有限公司 研发总监 彭兆华

 

    难道35岁真是软件工程师的一道坎吗?对于这个IT人经常思考的问题,彭兆华也许并不这样认为,他从一名普通的程序员做到研发部管理层的职位,他也经历过35岁这道坎,他的经历也许并不辉煌,但绝不平庸。

    彭兆华,联想网络(深圳)有限公司研发总监,99年硕士毕业于武汉华中理工大学(现华中科技大学),毕业后进入中兴通讯。当时电信行业不景气,最终在公司的安排下被派到南京研究所做程控交换机的维护。在中兴一年多后回到深圳,来到另一家香港东强公司做电子行业。当时彭兆华对网络非常感兴趣,2001年就来到了刚成立的一家网络公司做路由器、交换机等产品,03年该公司被联想集团收购。

    记者来到彭兆华的办公室,他正在面试一位软件开发人员,借此机会,我们采访了彭总(以下是访谈实录):

    记者:你参与公司招聘吗?你在招聘的时候会看应聘者哪方面的条件?

    彭兆华:是的,一般来说在社会上招聘和校园招聘是不一样的。社会招聘一般来说还是看他的经历,比如说在相关行业工作过,做过什么项目,跟我们的项目是否能衔接上等,这样来说上手会比较快。另外一个就是看他的个人能力,一般通过面谈了解他在做项目时的经历。

    记者:面试时会面向哪些问题呢?

    彭兆华:我们会有一个笔试,比如说C语言的代码改错等一些题目,还有一些相关行业的知识性的,比如说网络通讯等方面的一些简单的题目。面谈时,我们会听一些他在以往做的项目里面担当什么样的角色,看他管理的一个范畴。人力资源部主要是看他的一个沟通的能力,以及在企业文化方面的配合程度。如果是学校招聘的话就不一样了,因为毕业生的实践能力不强,主要还是看他的兴趣方向,因为在学校里如果对软件开发有兴趣的话,他会去钻研一些问题,还要看他的一个反应能力,因为搞研发的头脑要灵活。最终还要看他在学校的学习成绩和参与社会活动等。

    记者:你现在的职位是研发总监,手底下大概有多少人?

    彭兆华:我们研发部门人数占整个公司的一半,大概50人左右

    记者:也就是说研发部门在公司占很大一部分

    彭兆华:目前研发部门和销售部门是整个公司最重要的2个部门。

    记者:你们研发部门内部人员是怎样规划的?

    彭兆华:从行政职位上来说,分成4个部门,1个硬件部门,2个软件部门,1个测试部门。在做项目的时候,提取一些人出来,成立一个项目组,有项目经理承担此项目组的管理工作,

    记者:能给我们介绍一下各部门的职能是什么?部门之间是怎样协调工作的?

彭兆华:我们在开发过程中,从大的流程上说,一般来说是从硬件开始,然后到软件,软件又分底层和上层,用C语言开发,然后再到测试。在这个项目组中,有个项目经理,还有一个项目管理人员,这个项目管理人员就是对这个项目进度的跟进和项目存档以及项目会议的组织,这个职位是一个辅助的职位。但是项目经理是对这个产品的架构、系统、技术上面的把握,然后对这个项目组进行资源分配。在硬件和软件之间,有很多交叉的工作。

    记者:有没有产品经理的职位?它的职能是什么?

    彭兆华:有产品经理,他是结合市场,属于研发之外的,但要懂一些技术。一是对产品负责,前期收集市场方面的需求,确定产品的规格,跟研发部门沟通后确定产品上线的时间,

    记者:除了以上这些职位,还有其他的吗?

    彭兆华:下面还有技术主管。如果项目比较大的话,我们会分成很多小的项目组,技术主管主要是对技术上的把握

    记者:那么产品经理和研发总监之间是什么样的关系?

    彭兆华:其实,产品和研发是并行的,产品经理主要是贴近市场方面,但跟研发部门有密切关系,比如说产品经理要跟研发部门沟通后确定产品的上市时间和数量,开发后的市场及客户信息也要及时地反馈给研发部门。产品经理是介于市场和研发之间的一个桥梁,是对整个产品进行把握的。此外,产品经理也要协助做一些公司产品整体规划。

    记者:从职业规划这个角度来看,一个刚刚毕业的大学生,搞软件开发,从底层开发人员上升到管理层,需要经历怎样的步骤?

    彭兆华:刚毕业的人员,首先从技术上要学习很多,作为一个项目经理,在技术上要能够把握全部,比如说做我们的交换机产品,首先要对交换机涉及到的技术非常了解,要根据标准来写代码,像软件测试人员的话,对CCNA、CCNP所学的应用要非常了解;其次是对开发语言的能力要精通和规范,比如说C语言;然后对软件的架构要非常熟悉,这个最重要,你要很清楚每一块是干什么用的。我们有一整套的软件系统,所以你要在此基础上添砖加瓦,肯定要对每个架构都非常熟悉才行。在技术方面达到一定程度后,还要有一定的管理能力,这就是所谓的技术+管理能力,但对于项目经理的职位,技术能力第一,管理第二。

    记者:大概要奋斗几年才能上升到管理层?

    彭兆华:每个人根据自身能力不同是不一样的,有的人奋斗好几年也到不了项目经理的程度,有的人经过一、两年的时间就可以胜任。如果说刚毕业的人来到公司做软件开发写代码,经过一、二年的时间也有可能做到比较高的职位。

    记者:作为项目经理,是如何跟下面的开发人员沟通的?

    彭兆华:一般是分块,通过架构,分硬件、软件、测试。作为硬件来说,有做硬件设计的,CAD设计的。对于软件来说,一般比较大的项目,根据功能和协议来分,也有的根据层次来分,有的跟硬件有关,有的跟硬件无关。测试的话,也是根据测试的内容来分。

    记者:说一下你对软件人员的职业发展有什么看法

    彭兆华:从职业发展角度看,我认为最重要的还是要选择自己喜欢的、有兴趣的行业,另外就是要踏实的融入到这个行业里,在把握好技术方面之上再去拓展其它方向,比如说管理方面和公司发展方向等。

    记者:现在IT人普遍认为35岁是一个坎,很多人欲转行,你是怎么看待这个问题的?

    彭兆华:我认为在以前或许有这种想法,但现在不是了,因为以前的软件编程人员是非常稀缺的,到35岁以后,他的职业发展机会有很多,比如说转到技术管理层、架构管理等方面,而编程人员都在30岁以下。但实际上,现在越来越多的行业相关人员涌入社会,大部分软件人员至少不会是在这个年龄层去转变,目前还是有很多这个年龄层的软件人员在做基础编程这些工作。但从职业规划方向来看,还是可以向管理层转变的。还有一种是完全转行的人,这些人我也见过很多。

    记者:在职位上有什么划分么?

    彭兆华:在一些大公司,职位都是由2条线的,一个是行政职位,比如说小部门经理、大部门经理、总工、总监等。另一个是技术职位,一般通过职称来定,比如说助理工程师,高级工程师、资深工程师等。薪金待遇也是根据这2条线来定的,不一定行政职位高,待遇就高,技术人员的工资总体来说还是比较高的,

    记者:你做这行也有6~7年了吧

    彭兆华:对,我也从底层的一个普通开发人员做起来的,也做过一段时间的项目经理,逐渐升到软件高级经理,然后到现在的研发总监,管理整个研发部门。每个人都要经历这样的过程,技术不像是普通的管理层,很容易就能"空降",绝大部门技术人员都是一步一步走过来的。

    记者:你对未来有什么样的职业规划吗?

    彭兆华:这种规划不仅仅包括我自己本身在内,也包括公司的规划。目前公司还是一个小企业,刚刚起步不久,我目前处在公司的管理层,一是想着和研发部门一起把产品做好,另一个是和公司的管理团队一起把公司搞好。目前,技术管理层这条路还需要继续走下去,会走比较长的一段时间。我一直认为,对于技术人员来说,技术还是占到第一位的,这是根本。"技术+管理"这条理念是非常重要的。

    记者:目前中国软件业比较热衷于外包模式,你认为还有些什么更好的途径么?

    彭兆华:我觉得是这样的,其实分2块,对于通用化的软件来说,外包模式越来越多,目前这是中国软件业的一个发展方向,另外一块是我们自主研发的软件品牌。我认为中国软件业走外包这条路还是不错的选择,是提升自己品牌的一个很好的方式。我觉得中国目前特别缺乏高级软件人才,刚毕业的人员如果在行业里踏踏实实的磨炼,我相信会有很多机会的

    记者:三年内,中国软件业朝哪方面发展,软件人员应该朝哪方面发展?

    彭兆华:中国软件业目前需要先做"专",做"精",之后再朝"宽"的方向发展。针对软件开发人员来说,目前java语言一般应用在互联网方面;而嵌入式软件开发一般用C语言,因为它的效率比较高,代码少。

    记者:你认为中国目前的程序员都有哪些缺点或是不足需要改进的

    彭兆华:我觉得中国的软件开发人员一是比较随意,这是个很严重的问题,在写代码的时候一定要严谨、规范,思维要活跃,要按流程来操作。二是严密性不强,因为如果一行代码出错很容易导致整个产品出问题,所以在开发的过程中一定要考虑周全,全面严谨的处理各种事情。三是在语言方面需要,比如说英语能力要有所提高,因为很多技术相关的资料都是英文编写的,不管是外包产品还是自主研发的产品,都跟国外紧密结合,我现在也是在学习这方面的内容,如果能够坚持下来,我相信会有很好的职业前途。四是中国的软件人员太浮躁,总是想着一步登天,不能踏实下来,像那种基础编程工作的重复劳动,我觉得还是有必要的。
 
 

评论

此博客中的热门博文

【转】AMBA、AHB、APB总线简介

AMBA 简介 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。   AMBA 片上总线        AMBA 2.0 规范包括四个部分:AHB、ASB、APB和Test Methodology。AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。下面将简要介绍比较重要的AHB和APB总线。 基于 AMBA 的片上系统        一个典型的基于AMBA总线的系统框图如图3所示。        大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如CPU,DSP等;从模块是接受命令并做出反应的模块,如片上的RAM,AHB/APB 桥等。另外,还有一些模块同时具有两种属性,例如直接存储器存取(DMA)在被编程时是从模块,但在系统读传输数据时必须是主模块。如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总...

【转】vector成员函数

函数 表述 c.assign(beg,end) c.assign(n,elem) 将 [beg; end) 区间中的数据赋值给 c 。 将 n 个 elem 的拷贝赋值给 c 。 c.at (idx) 传回索引 idx 所指的数据,如果 idx 越界,抛出 out_of_range 。 c.back() 传回最后一个数据,不检查这个数据是否存在。 c.begin() 传回迭代器重的可一个数据。 c.capacity() 返回容器中数据个数。 c.clear() 移除容器中所有数据。 c.empty() 判断容器是否为空。 c.end() 指向迭代器中的最后一个数据地址。 c.erase(pos) c.erase(beg,end) 删除 pos 位置的数据,传回下一个数据的位置。 删除 [beg,end) 区间的数据,传回下一个数据的位置 。 c.front() 传回地一个数据。 get_allocator 使用构造函数返回一个拷贝。 c.insert(pos,elem) c.insert(pos,n,elem) c.insert(pos,beg,end) 在 pos 位置插入一个 elem 拷贝,传回新数据位置。 在 pos 位置插入 n 个 elem 数据。无返回值。 在 pos 位置插入在 [beg,end) 区间的数据。无返回值。 c.max_size() 返回容器中最大数据的数量。 c.pop_back() 删除最后一个数据。 c.push_back(elem) 在尾部加入一个数据。 c.rbegin() 传回一个逆向队列的第一个数据。 c.rend() 传回一个逆向队列的最后一个数据的下一个位置。 c.resize(num) 重新指定队列的长度。 c.reserve() 保留适当的容量。 c.size() 返回容器中实际数据的个数。 c1.swap(c2) swap(c1,c2) 将 c1 和 c2 元素互换。 ...

【转】C++/CLI程序进程之间的通讯

 现在,把大型软件项目分解为一些相交互的小程序似乎变得越来越普遍,程序各部分之间的通讯可使用某种类型的通讯协议,这些程序可能运行在不同的机器上、不同的操作系统中、以不同的语言编写,但也有可能只在同一台机器上,实际上,这些程序可看成是同一程序中的不同线程。而本文主要讨论C++/CLI程序间的通讯,当然,在此是讨论进程间通讯,而不是网络通讯。    简介   试想一个包含数据库查询功能的应用,通常有一个被称为服务端的程序,等待另一个被称为客户端程序发送请求,当接收到请求时,服务端执行相应功能,并把结果(或者错误信息)返回给客户端。在许多情况中,有着多个客户端,所有的请求都会在同一时间发送到同一服务端,这就要求服务端程序要更加高级、完善。   在某些针对此任务的环境中,服务端程序可能只是众多程序中的一个程序,其他可能也是服务端或者客户端程序,实际上,如果我们的数据库服务端需要访问不存在于本机的文件,那么它就可能成为其他某个文件服务器的一个客户端。一个程序中可能会有一个服务线程及一个或多个客户线程,因此,我们需小心使用客户端及服务端这个术语,虽然它们表达了近似的抽象含义,但在具体实现上却大不相同。从一般的观点来看,客户端即为服务端所提供服务的"消费者",而服务端也能成为其他某些服务的客户端。    服务端套接字   让我们从一个具体有代表性的服务端程序开始(请看例1),此程序等待客户端发送一对整数,把它们相加之后返回结果给客户端。   例1: using namespace System; using namespace System::IO; using namespace System::Net; using namespace System::Net::Sockets; int main(array<String^>^ argv) { if (argv->Length != 1) { Console::WriteLine("Usage: Server port"); Environment::Exit(1); } int port = 0; try { port = Int32::Parse(argv[0]); } catch (FormatException^ e) { Console::Wri...