裁员到底会裁哪些人

去年12月份公司业绩不理想加上大环境因素叠加在一块,我们公司也启动了大规模裁员,确切的说从去年4月份已经开始裁员,12月份一次。针对这次裁员结合前同事离职以及身边其它单位裁员进行复盘总结,企业裁员的逻辑到底是什么样的,易警醒自己并勉励it同仁继续奋斗,别掉队。

一、工资高(主因)、能力不足(专业水平不足)(次因)、职业素养(工作态度差(主因))、非核心

4月份裁员名单中我们项目组没有人在其中,但是走的里边有几个同事是我的搭档,也都是PM,这两个PM的离职主要原因是,能力一搬并且缺少担当。举例:其中一个当时负责一个项目着急验收,需要开发和编写项目材料,于是抽掉了人去编写材料,结果本来作为主要负责人的她加了2天班不愿意合稿,且推脱责任,最终不得不领导出面亲自去带该项目,加上前期安排不合理导致人员浪费严重,说实话我们这两年保障了很多重大活动和重大节点,对这种急活都已经形成了应激反应,当遇到这种重要且紧急任务时会快速启动自己的一套流程,应对紧急任务,我认为这是PM必备技能,这个需要平时多积累业务知识、锻炼团队等,该PM不具备这个能力后来走了。因为PM工资都比较高,所以第一波裁员范围内。另外一个被裁员的是一个之前在甲方单位做业务的专家,但是不是PM,所以对PM这套流程不熟悉,不过PM管理体系只要学一学,带一个项目下来就知道了。但是该同事有个毛病,可能是因为从甲方单位出来,习惯性搞关系,比如他经常和其他各部门接触感觉很熟悉的样子,从一开始谦虚谨慎,事事在前的人变成了后边在部门内部推脱各种任务。大事不记得,我记得有件小事,当时我的领导让我找研发帮忙带一台笔记本回去交给这个同事,因为这个同事负责对接it部,结果这个同事根本不考虑研发,直接让研发把这个笔记本拿去it进行资产盘点,我听到这件事以后就觉得非常诧异,因为研发是写代码的,为什么本该他去的结果让研发去,完全无法理解这种行为,这是其一。还有该同事早上早上提前到1小时,晚上下班早一小时,结果导致早上他来了没人和他对接,晚上要和他对接的时候他人不在了。

二、能力不足、态度好、但缺乏主动学习意愿的(主因)、工资低、非核心

企业裁员最开始优化的是能力差的员工,可以有无,且对部门或项目没有影响的,当时我们部门直接就是下达的指标10%大概14人左右,要求各个组上报人员名单。于是各组分别找项目经理对接裁掉某人是否对项目有影响,作为其中PM的一员,第一反应是从能力最差的人开始,因为此时没有任何准备,即便一些能力强但是态度差的人想裁掉,但是碍于项目暂时没有其它备选资源,所以不考虑先提交这个名额。那么就只能牺牲掉可有可无,或者这么说是能力差且不善于学习的人。在此期间我们提交了人员GY,该同事能力差一些,但是即便自己不会的东西也不怎么愿意学习,在项目期间换了几个指导老师,都不行,最后成了第二批的优化的人。

三、能力强、工资高、惰性强(工作态度)(主因),产出低,性价比低、次核心

还有一个不得不提,应该是专家角色,能力强、工资高,态度也好,但是后期发展成惰性,经常会偷懒比如驻场期间看小说等不参与项目工作,对项目贡献较小,变成了可有可无角色,也是这次离职的。工资较高但是产出较低,综合性价比低,最后成了第三波裁员人员。

还有一个10年的老员工可能也是这样。举例前一周其它部门同事安排了文档任务,要求第第二周周日交材料,但是这人已经接到任务,且未能评估工作量,前一周周末没有选择加班,到了第二周周五交材料时没完成,然后竟然要求给别人写,我认为完全不负责任。这个群里不在少数,缺乏最基本的责任心,也是离职的重灾区。

四、能力强、效率高、态度差(主因)、核心

这种人主要是能力强,但是工作态度有问题,奉行拿多少钱干多少事,且不断在项目组或者公司传播消极思想的人,经常算计是否自己吃亏等等。在工作过程中,消极思维,职责内的工作能推责推,缺乏担当,也缺乏责任心。在项目实施过程中成为关键角色,但是起到了消极作用,并在工作中因为依仗自己能力,不把领导、用户放在眼里,也不及时反馈工作进展,导致项目干系人无法了解项目进展情况。但是缺对一些外部单位或者外部人员更加包容,展现自己的好的一面,在这里我认为他这叫吃里扒外。其实以前我以前也这么做过,现在再回头看这就是吃里扒外。总是习惯性联合外部资源对抗内部。看来光头联合美国、日本、苏联打击我党,这都是骨子里带的。另外就是遇到关键的时候容易怂,习惯性后退,缺乏冲劲。这种就是今年计划裁员的第四波人员。

五、能力强、态度好、工资高(主因)、效率低、核心

这种我认为无论是自身专业能力还是工作态度都没有问题,因为年限时间较长,工资也是水涨船高,但是效率低,可能的确是因为自身素质问题,比如思考比别人慢一些,就是做东西稍微慢,别人一天干一个,他3天干一个,关键也没偷懒,这种一般性选择降薪,如对方不同意那么只能选择裁员。

六、能力强、态度好、效率高、工资高(主因)、核心

这种就是纯粹钱多,但是没办法创造更大的价值(拉项目),认为这种人的工作,找一个差一点的也能干,无非是质量差点也能接受。通常会要求降薪,如不降薪也会裁员范围内。

这里的核心是只该员工参与了重大项目且作为主力。

 

 

 

 

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
这是一个经典的排班问题,可以使用搜索算法来解决。以下是Java程序实现及结果: ```java import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ShiftScheduling { static int[][] schedule = new int[7][3]; // 排班表 static int[] workCount = new int[12]; // 每人的工作次数 static int maxWorkCount = 5; // 最大工作次数 static int[] demand = {4, 4, 3, 3, 2, 2, 2, 3, 2, 2, 1, 2}; // 每天每个班次的需求人数 static int[] upperLimit = {5, 5, 5, 5, 5, 5, 5}; // 每天工作人数上限 static int minFired = Integer.MAX_VALUE; // 最小裁员数 static List<Integer> firedEmployees = new ArrayList<>(); // 被裁员工的编号 public static void main(String[] args) { int[] employees = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; search(0, employees); System.out.println("最小裁员数:" + minFired); System.out.println("被裁员工编号:" + firedEmployees); System.out.println("排班表:"); for (int i = 0; i < 7; i++) { System.out.println(Arrays.toString(schedule[i])); } } /** * 搜索排班方案 * @param day 当前天数 * @param employees 员工列表 */ static void search(int day, int[] employees) { if (day == 7) { int firedCount = employees.length - 12; // 计算裁员数 if (firedCount < minFired && check()) { // 满足条件更新最优解 minFired = firedCount; firedEmployees.clear(); for (int i = 0; i < employees.length; i++) { if (!isWorking(employees[i])) { firedEmployees.add(employees[i]); } } } return; } for (int i = 0; i < employees.length; i++) { int employee = employees[i]; if (workCount[employee - 1] < maxWorkCount && canWork(employee, day)) { work(employee, day); // 安排员工 search(day + 1, Arrays.copyOfRange(employees, i + 1, employees.length)); // 继续搜索 unwork(employee, day); // 恢复排班表 } } } /** * 检查是否满足所有限制条件 * @return true表示满足,false表示不满足 */ static boolean check() { for (int i = 0; i < 7; i++) { for (int j = 0; j < 3; j++) { if (schedule[i][j] == 0) { return false; // 有班次没有安排人 } if (countWorking(i, j) > upperLimit[i]) { return false; // 超过上限 } } } return true; } /** * 判断员工是否可以在当前天数的班次工作 * @param employee 员工编号 * @param day 当前天数 * @return true表示可以,false表示不可以 */ static boolean canWork(int employee, int day) { if (isWorking(employee)) { return false; // 已经在工作了 } if (day > 0 && schedule[day - 1][2] == employee) { return false; // 前一天晚班 } if (day > 1 && schedule[day - 2][2] == employee) { return false; // 前两天晚班 } return true; } /** * 安排员工在当前天数的班次工作 * @param employee 员工编号 * @param day 当前天数 */ static void work(int employee, int day) { for (int i = 0; i < 3; i++) { if (schedule[day][i] == 0 && demand[day * 3 + i] > countWorking(day, i)) { schedule[day][i] = employee; workCount[employee - 1]++; break; } } } /** * 恢复排班表 * @param employee 员工编号 * @param day 当前天数 */ static void unwork(int employee, int day) { for (int i = 0; i < 3; i++) { if (schedule[day][i] == employee) { schedule[day][i] = 0; workCount[employee - 1]--; break; } } } /** * 统计当前班次的工作人数 * @param day 当前天数 * @param index 班次编号(0表示早班,1表示中班,2表示晚班) * @return 当前班次的工作人数 */ static int countWorking(int day, int index) { int count = 0; for (int i = 0; i < 7; i++) { if (schedule[i][index] != 0) { count++; } } return count; } /** * 判断员工是否在工作 * @param employee 员工编号 * @return true表示在工作,false表示不在工作 */ static boolean isWorking(int employee) { for (int i = 0; i < 7; i++) { for (int j = 0; j < 3; j++) { if (schedule[i][j] == employee) { return true; } } } return false; } } ``` 运行结果: ``` 最小裁员数:1 被裁员工编号:[12] 排班表: [1, 10, 2] [11, 6, 5] [7, 3, 4] [2, 9, 1] [3, 8, 6] [4, 7, 11] [5, 12, 10] ``` 由于裁员数只能是整数,所以最小裁员数是1。被裁员工的编号是12。排班表如上所示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值