作業を効率化することの重要性
以下の投稿で「システムエンジニアは、なぜ忙しいのか?」ということを書きました。
システムエンジニア=残業が多い
と言われますが、以下の投稿でも残業が多かった経験について書きました。
僕は残業が多かった経験から、どういう風にやったら生産性が高くなるか?ということを考え始めました。
システムエンジニアという仕事は、経験が積み重なっていく仕事だと感じています。
ITの技術こそ、日々新しくなっていくものの、自分が持ち合わせているスキル、知識、技術、経験を、どう組み合わせて、どう活用するか、という工夫が大事だと思います。
生産性を高くするには、経験が必要
上述しましたが、まずは経験が必要です。
これはシステムエンジニアに限らずですが、どの仕事でも、また仕事以外でもそうですよね。
初めからできることなんてありません。
苦労して努力を重ねていくからこそ、できることの幅が広がると思います。
作業を効率化する
システムエンジニアの仕事を続けていると、「過去に作ったものと同じようなものを作る」というのが、結構多いことに気付きます。
システムやサービスは違うにしろ、例えば、ユーザーを登録する、ユーザーがログインするなど、同じ機能が必要なことも多いです。
例えば、
①システムAのユーザー登録機能を作る
②1年後にシステムBのユーザー登録機能を作る
という時系列があった時に、②を作成する時に一から作るのが効率的でしょうか?
①で同じような機能を作ったなら、流用したり、使い回せたりする方が効率良く作成できます。
プログラミングには、これが広く使われていて、他の人が作ったライブラリを使ったりとか多いです。
ライブラリを使うことで、効率良く作成できるからですね。
「これ、同じようなことを前にやらなかった?」と思ったら、前にやったことを流用できないかを考えるのが良いと思います。
作業を効率化することの連続が業務を効率化することにつながる
1つ1つの作業を効率化すること自体は、劇的に生産性を変えるものではないかもしれません。
ただ、作業を効率化することの連続で、生産性が高くなることは多いと思います。
1つのプログラムを作るにしても、ライブラリを利用して自分が効率良く作成するだけでなく、自分が作ったものがさらに他で活用できないか、なども考えた方が良いですね。
1つ1つの作業を連動して考えて、全体として効率良く進めるには、どうしたら良いか、というのを考えることが大事だと思います。
自分が普段やってる作業で、自動化できるのはないか?
効率良く進める、ということに関しては、自分がやっている作業を自動化できないか?と考えるのが良いと思います。
例えば僕は、仕事以外ですが、毎月クレジットカードの明細をダウンロードするということをしていました。
毎月ダウンロードするサイトは一緒、ダウンロードする手順も一緒ということで、スクレイピングを利用して、毎月決まった日時に自動でダウンロードするようにしていました。
このように、自動化できるのはないか?と考えると分かりやすいかもしれません。
例えば、手動でスプレッドシートの編集を行っている作業をGASを使えば自動でできるかもしれません。
GASは色々と便利なので、僕もいろんなものを実装しています。
自分が持ち合わせているスキル、知識、技術、経験を組み合わせる
例えば、僕はフォームサービスに「Zoho Forms」、データ管理に「Kintone」を使用している案件があります。
フォームの回答をKintoneに入れたいと思った時、「Zoho Forms」では直接Kintoneに連携する方法がありません。
この時、間にスプレッドシートを挟むことで、GASを利用してKintoneに登録することができます。
詳しくは以下をご覧ください。
このように、サービス間を連携したい時に直接連携する方法がない場合でも、データの流れを工夫することで連携することができたり、いろんなサービスも使い方1つで、価値は大きく広がると思います。
プログラムを作る時も同じだと思います。
こういう風に作ったら実現できるとか、業務のフローを考える時に、こういうフローにしたら実現できるとか、いろんな知識や経験は組み合わせ次第でどうにでもなるかなと感じています。
それが行き着く先が効率化かなと思います。
システムを開発することで、日々の課題が解決して、システムを使う人たちが効率良く仕事ができるようになれば、それが一番良いことだと思うので、今後も作業が効率良く進むように、取り組んでいきたいと思います。