程序员转业指南 - 当文员
写在前面
嗨,大家好,我是江涛同志,今天跟大家分享的是程序员转业的故事和想法。由于国内内卷的就业环境,“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斤的佳绩,希望能保持一种工作和生活的平衡,健康生活哈哈。
尽可能多地去寻找快乐
你快乐了,你做事情的积极性以及你接收事物的能力会好一点,那么怎么去寻找快乐呢?比如说吃、吃很多你没有吃过且有兴趣的事物,帮助别人你也会收获快乐,运动后洗个澡你也会很快乐,呆在房间唱首歌你也会很快乐,画一幅画你也会感到快乐,打一会儿游戏也会产生快乐。。。。。。
用编程的思维去解决生活问题
传统的思路去解决问题,容易受限于时间、人的精力等制约,但是如果你思考后发现,可以通过编程的思路去解决问题的话,本身是一个获得快乐的过程,同时也收获了成长!