4.2.1 独立完成一个项目的经验是什么经验
 
        清华大学出版社《Java程序员,上班那点事儿》作者:钟声——第4章《第4章 换位思考,项目主管的招聘技巧》部分节选。
    但是,很多应聘者都没有明白这个独立完成一个项目经验有什么用?什么是独立的项目开发?以及为什么问这个问题?
    我们在面试中经常听到下面这样的对话:
 
考官:“你有独立完成一个项目的经历吗?”
A君:“有”
考官:“请描述一下这个项目”
A君:“我独立做了一个权限系统”
考官:(喜)“权限系统?是一个独立项目?”
A君:“对,就是一个图书管理系统中的权限系统”
考官:(晕)……

考官:“你有独立完成一个项目的经历吗?”
B君:“没有,因为一个软件系统不可能一个人完成”
考官:(无语)……

考官:“你有独立完成一个项目的经历吗?”
C君:“咱们公司那么大,难道是让一个人负责一个项目?”
考官:(?)……

        显然,当面试时问及这个问题时,这几个应聘者都有些不解。A君是不明白的是独立完成一个项目的意思是指什么,B君是不明白的为什么需要这个经验,而C君甚至对考官的这个问题提出了质疑。
 
        给A、B、C君解释一下,什么是独立完成一个项目的经验?
 
        一个任务,开发一个人事档案与工资管理系统,要求可以打印工资条,能有查询每月各个员工的工资发放记录,并且可以做各种统计,如,按部门统计,按性别统计,按职位统计等等。最好可以出人力成本报表,当然如果可能的话可以和财务软件之间建立接口。
        然后,做完以后给你奖金3000元,做得不符合用户要求将领不到奖金。
好,去做吧,1个月内做完。
 
        Ok,拿到了3000元奖金的时候,就有了一个独立完成项目的经验。但是,如果没有拿到奖金那么意味着你还没有这个经验。不过,一般情况下一定会想尽一切办法拿到这个奖金的。
 
        为了拿到奖金会怎么做?
  1. 为了做出的东西符合用户要求,需要和用户沟通,并写出大概的项目计划让用户确认
  2. 需要根据项目计划和功能结构设计数据库表结构
  3. 采用最熟悉的技术迅速的搭建程序框架
  4. 开发的每一个阶段都需要和用户沟通,听取改进意见,并针对意见做有效的修改,修改的工作量要控制在有限时间内的同时还需要符合用户要求
  5. 整个程序开发完成需要给用户演示整个程序的使用方法,并可以给用户其他相关人员培训
  6. 要写出使用手册和培训PPT等文档
  7. 和用户负责人商讨验收事宜并验收
  8. 想办法让用户遵守他之前的承诺把奖金要回来
        怎么样,独立的完成一个项目还真不是一个简单的开发那么简单吧?这是在开发过程中需要不断的和用户沟通并设计与调整自己的开发方案,并使出浑身解数来完成这个项目。
 
        在这个过程中学习到了什么呢?
 
  1. 开发一个软件所应该具备的全局观
  2. 对软件的开发效率和应用满足程度的权衡能力
  3. 软件技术掌握更全面,从数据库到界面几乎面面俱到
  4. 对用户想法的理解,并将用户需求转化成软件的能力
  5. 和用户沟通,从而挖掘用户真实想法的能力
  6. 方案的编写以及文档的编写能力
  7. 做培训的演讲能力
  8. 取得用户认可的谈判技巧
4.2.2 没有独立生存的能力不能有最佳团队合作

        我们99.9%的程序员都会参与一个团队进行开发工作,而并不是单打独斗,但是,没有独立生存的能力是不可能有好的团队合作工作的。说得夸张些,原因就是某人的其中某些短板会成为这个团队的累赘,那么,这时候就需要在不断的项目进展中给予培训和辅导,以使其跟上大家的步伐。从这一点上来说,一个团队的主管是不愿意看到的,他总是希望新加入的人员来了就可以融入整体团队,而不是花一个月甚至更长的时间给予培训。
         团队合作的理想状态是这样的,如所示。
 
 
        尽管真正做到上图的这种情况那确实是一种理想,在某些事情的合作方面仍然需要大家取长补短,但是,最好的情况还是你具备了A、B、C、D这些能力之后和团队其他人员进行合作才会更顺畅。
         因为,你对这些工作内容都很了解的情况下,会少一些内部沟通多一些工作的默契。
 
4.2.4 锻炼攻略:需要主动寻找独立工作的机会

         在成为正式程序员之前,找到一个独立开发项目的机会真的不容易,能找到可以获得收入的项目更难。如果这样的工作机会不能找到你,那么你就自己去寻找,甚至自己去创造这个工作机会。
         所谓,自己创造一个工作的机会,就是自己开发一个系统,想办法送给别人甚至卖给别人。在这个过程中你会知道自己设计的软件水平的不足之处的。
         寻找与创造机会的目的就是真真正正的做一个软件系统,在系统开发过程中不断的提升自己的业务水平,以满足更多用人单位的需求。