程式設計師轉業指南 – 當文員

寫在前面

嗨,大家好,我是江濤同志,今天跟大家分享的是程式設計師轉業的故事和想法。由於中國內卷的就業環境,「996是福報」的惡魔😈理論,加之對大齡程式設計師的就業不友好,特別是遇到例如疫情、金融危機、公司財務狀況不佳的時候,就可能爆發裁員之類的事情(這個筆者親身經歷過一次,2020年6月入職兔狗科技,7月因為公司業務不行被暴力裁員,是的社會就是這麼殘酷,當它拋棄你的時候,的確不會說再見的,這對筆者職業生涯造成了毀滅性的打擊,心中的陰影揮之不去),居安思危,就引出了今天的話題,有一天,我不做程式設計師了,我還能幹啥? 這個問題是個開放性的答案,說啥都對,但是在很多解裡面尋找一個適合自己的最優解,這是我們後面要做的事。我今天的觀點是,程式設計師轉業做文員,有一定的優勢。

背景故事

最近,有朋友在微信求助濤哥,大致的需求是有一個excel裡面有若干個sheet,需要根據其中的一個sheet中的Device Sub ID去進行分類合併到新的按照Device Sub ID命名的sheet裡面, 並將其扁平化輸出。
1.jpg2.jpg
這裡通過找規律,我發現按照時間的順序,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斤的佳績,希望能保持一種工作和生活的平衡,健康生活哈哈。

儘可能多地去尋找快樂

你快樂了,你做事情的積極性以及你接收事物的能力會好一點,那麼怎麼去尋找快樂呢? 比如說吃、吃很多你沒有吃過且有興趣的事物,幫助別人你也會收穫快樂,運動後洗個澡你也會很快樂,呆在房間唱首歌你也會很快樂,畫一幅畫你也會感到快樂,打一會兒遊戲也會產生快樂。。。。。。

用編程的思維去解決生活問題

傳統的思路去解決問題,容易受限於時間、人的精力等制約,但是如果你思考後發現,可以通過編程的思路去解決問題的話,本身是一個獲得快樂的過程,同時也收穫了成長!