最近频繁参与招聘过程,发现虽然每次都是代表项目组去与应聘者交流,自己也从中学到了不少东西,
项目组历史大约3年,人员流动比较大,平均人数5人,需要支持约3个长期客户(系统级别),以及一些零星客户(组件级别),由于人员配置偏少,且需要经常出差,每个人除了自己主要负责的部分,还必须对整个系统的方方面面都有或多或少的了解,才能顺利完成该项目的需求开发支持维护等一系列任务。
本来项目组对于技能及其如何评价技能没有进行任何正式的讨论,但是一边招聘,一边悟出来一些东西。
一、明确了项目的技能要求
后台:C++/socket/数据库/MFC/面向对象的设计/客户端服务器端程序/前台:Java, Javascript, SQL, SSH, extjs,SQL Server 2005
操作系统:windows,安装,了解计算资源的基本原理(CPU和内存,硬盘),了解如何监测程序性能
二、明确了项目的综合素质要求:不仅仅是coder
项目组要招的不仅仅是coder,而是一个能解决实际用户问题的software enginner,所以只会编码还远远不够,还需要了解并参与到软件开发的全过程(从需求,设计,编码,测试,安装,到客户支持)
因此需要有全面的综合素质:
沟通能力:听说读写要强,才能与客户,项目成员,领导有效沟通
开发思想:应以客户需求为中心
开发方法:要有好的开发思想,了解生命周期模型,掌握原型开发,面向对象设计,设计模型等好的方法
测试方法:以测试驱动开发,明确回归测试的重要性,掌握单元测试模块测试方法
重构:掌握一定的重构方法
英语:能看懂英文MSDN和其他英文资料,看到英文不抱怨
心态:要热爱学习,能够独立工作
计算机基础知识:计算机基础课程最好学全了,高级课程也应该学过一两门
学习能力:很重要,要会自己查资料,看书,提升自身技能
自我管理:最重要,头脑目标清晰,能不断进步
四、技能可信度
最佳:实际项目(外部用户用过,有反馈)
其次:研究项目或者开源项目(局域网,有实际用户或者内部用户)
再次:课程作业
几乎没有可信度:自学
五、最佳经验
解决了用户长期抱怨的xxx问题
提升了运行速度xxx倍
降低了内存使用xxx倍
独立完成了xxx模块的需求and/or设计and/or编码and/or测试