写在前面
嗨,大家好,我是江涛同志,今天跟大家分享的是程序员转业的故事和想法。由于国内内卷的就业环境,“996是福报”的恶魔😈理论,加之对大龄程序员的就业不友好,特别是遇到例如疫情、金融危机、公司财务状况不佳的时候,就可能爆发裁员之类的事情(这个笔者亲身经历过一次,2020年6月入职兔狗科技,7月因为公司业务不行被暴力裁员,是的社会就是这么残酷,当它抛弃你的时候,的确不会说再见的,这对笔者职业生涯造成了毁灭性的打击,心中的阴影挥之不去),居安思危,就引出了今天的话题,有一天,我不做程序员了,我还能干啥? 这个问题是个开放性的答案,说啥都对,但是在很多解里面寻找一个适合自己的最优解,这是我们后面要做的事。我今天的观点是,程序员转业做文员,有一定的优势。
背景故事
最近,有朋友在微信求助涛哥,大致的需求是有一个excel里面有若干个sheet,需要根据其中的一个sheet中的Device Sub ID去进行分类合并到新的按照Device Sub ID命名的sheet里面, 并将其扁平化输出。

这里通过找规律,我发现按照时间的顺序,10个为一组追加对应的id和时间并且扁平化的输出到对应的sheet是可以试试写写看的。
这里一共有43144行,假如以工具人的视角,在不考虑人机疲劳的情况下,这位选手处理一条完成的记录需要12秒,那么其大概需要12个小时左右完成这项任务,但是当你以编程的视角去审视这个问题,几秒钟就可以跑出一个我们想要的结果,而且答案是比自己一个个去复制粘贴不容易出错的,这就是我今天想举的一个例子。麻烦社会上的好心的叔叔阿姨大伯大婶,如果你们缺文员,可以考虑一下年龄大的老程序员,他们在处理数据方面,有着得天独厚的优势,谢谢!
解决方案
这里笔者提供一种基于Node.JS的解决方案-源码
// 倒入相关的包const xlsx = require('node-xlsx');const fs = require('fs');// 解析对应的xlsx文件const sheets = xlsx.parse('Performance Report .xlsx');// 定义缓存每个sheet里的内容变量const cach = {};// 定义缓存根据Device Sub ID拆分子sheet的变量const deviceSubIdCach = {};// 定义清洗后的数据const freshData = [];// 缓存读取所有的表for (const sheet of sheets) {// 检测原表格哪些数据有值// if (sheet.data.length > 0) {// console.log(sheet['name']) // 1 2 3 20 Performance Report// }cach[sheet['name']] = sheet['data'];}// console.log(cach['Performance Report'][1]); // [ 'Device Sub ID', 'Performance Parameter', 'Parameter Value', 'Time' ]// 读取sheet Performance Report里的内容for (const rowId in cach['Performance Report']) {// console.log(cach['Performance Report'][rowId]);if (Number(rowId) > 1) {const [index, ...rest] = cach['Performance Report'][rowId];if (index !== '0') {if (deviceSubIdCach[index]) {deviceSubIdCach[index].push(rest);} else {deviceSubIdCach[index] = [rest];}}}}// console.log(deviceSubIdCach['1']);// 清洗表里面的内容let round12 = [];for (const key in deviceSubIdCach) {deviceSubIdCach[key].sort((a, b) => {return new Date(a.slice(-1)) - new Date(b.slice(-1));});freshData.push(JSON.parse(JSON.stringify({name: key,data: [['ID','CPU (average','CPU (max)','Radio Module 7 DL Output Power','Radio Module 6 DL Output Power','Radio Module 5 DL Output Power','Radio Module 4 DL Output Power','Radio Module 3 DL Output Power','Radio Module 2 DL Output Power','Radio Module 1 DL Output Power','Radio Module 8 DL Output Power','TIME',],],})));for (const data of deviceSubIdCach[key]) {const [parameter, value, time] = data;if (round12.length === 10) {round12.push(value, time);if (round12[0] === key) {freshData[key - 1]['data'].push(JSON.parse(JSON.stringify(round12)));}round12.length = 0;} else if (round12.length === 0) {round12 = [key, value];} else {round12.push(value);}}}// console.log(deviceSubIdCach['1'])console.log(freshData[16]);// 生成清洗后的文件const buffer = xlsx.build(freshData);fs.writeFile('result.xlsx', buffer, (err) => {if (err) {console.log('Write faill: ', err);return;}console.log('Write completed');});
也可以访问项目地址: https://gitee.com/taoge2021/study-nodejs/tree/master/03-media/excel
人生感悟
身体是革命的本钱
健康永远是第一位的,连命都没了,赚钱还有甚么意思呢?所以我们的原则应该是,找一份不太会对身体健康有很大影响的工作,争取在岗打工50年。如果一份工作是每天加班到11点 12点甚至半夜,那我觉得这种是严重危害到身体健康的,不建议也不倡导在这样的资本家环境打工。
我们应该每天抽点时间去锻炼身体,例如程序员这个职业吧,吃完就坐那里敲键盘,缺乏运动就很容易胖,颈椎容易受损,眼睛容易近视度数加深,我也是今年去报的健身房,经过合理的训练和饮食,最终创下一个月8斤的佳绩,希望能保持一种工作和生活的平衡,健康生活哈哈。
尽可能多地去寻找快乐
你快乐了,你做事情的积极性以及你接收事物的能力会好一点,那么怎么去寻找快乐呢? 比如说吃、吃很多你没有吃过且有兴趣的事物,帮助别人你也会收获快乐,运动后洗个澡你也会很快乐,呆在房间唱首歌你也会很快乐,画一幅画你也会感到快乐,打一会儿游戏也会产生快乐。。。。。。
用编程的思维去解决生活问题
传统的思路去解决问题,容易受限于时间、人的精力等制约,但是如果你思考后发现,可以通过编程的思路去解决问题的话,本身是一个获得快乐的过程,同时也收获了成长!
