程式設計師轉業指南 – 當文員
寫在前面
嗨,大家好,我是江濤同志,今天跟大家分享的是程式設計師轉業的故事和想法。由於中國內卷的就業環境,「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');
});
也可以訪問項目地址: //gitee.com/taoge2021/study-nodejs/tree/master/03-media/excel
人生感悟
身體是革命的本錢
健康永遠是第一位的,連命都沒了,賺錢還有甚麼意思呢?所以我們的原則應該是,找一份不太會對身體健康有很大影響的工作,爭取在崗打工50年。如果一份工作是每天加班到11點 12點甚至半夜,那我覺得這種是嚴重危害到身體健康的,不建議也不倡導在這樣的資本家環境打工。
我們應該每天抽點時間去鍛煉身體,例如程式設計師這個職業吧,吃完就坐那裡敲鍵盤,缺乏運動就很容易胖,頸椎容易受損,眼睛容易近視度數加深,我也是今年去報的健身房,經過合理的訓練和飲食,最終創下一個月8斤的佳績,希望能保持一種工作和生活的平衡,健康生活哈哈。
儘可能多地去尋找快樂
你快樂了,你做事情的積極性以及你接收事物的能力會好一點,那麼怎麼去尋找快樂呢? 比如說吃、吃很多你沒有吃過且有興趣的事物,幫助別人你也會收穫快樂,運動後洗個澡你也會很快樂,呆在房間唱首歌你也會很快樂,畫一幅畫你也會感到快樂,打一會兒遊戲也會產生快樂。。。。。。
用編程的思維去解決生活問題
傳統的思路去解決問題,容易受限於時間、人的精力等制約,但是如果你思考後發現,可以通過編程的思路去解決問題的話,本身是一個獲得快樂的過程,同時也收穫了成長!