クリスマスイブ&天皇誕生日の振替休日はいかがお過ごしでしょうか。学習塾にとっては冬休み前の貴重な休日、鬼気迫る生徒たちが押し寄せていることと思います。
明日はクリスマスですがデータベースの設計手法に関するオンラインセミナーの受講と会社の事業部ミーティングとデザイナーミーティングが入っているtyottoリードエンジニア・イトウがお送りいたします。
プログラマーやシステム開発に携わるエンジニアは、開発しているソフトウェアに機能を追加することだけをずっとやり続けている訳ではありません。
既に問題なく動作している部分を、より見やすく、速く動くように作り直したり、システムの設定方法を手順書としてまとめたり。
最速でソフトウェアを作り続けるために、あえてソフトウェアそのものの開発作業以外のことに積極的に取り組んでいます。
大学のレポート・論文等での剽窃が話題になりました。他人が書いた文章を盗用する行為で、コピー&ペーストを活用することから「コピペ」と呼ばれたりしますね。
他人の著作物を引用でもなく自分の著作物にあたかも自分の文章のように入れるのは到底許されることではありません。
一方、エンジニアリングで言う「コピペ」は若干意味合いが違うものの、むしろ積極的な使用が求められるものです。
たとえば、よく使う機能をまとめて使いやすいようにした「ライブラリ」「フレームワーク」というものは、その本体と共にマニュアルもついてきます。
どのように使うのかをソースコードと共に説明した文章があるので、素直にそれを使うことが推奨されます。
ライブラリ等の設定を、その説明通りにコピペすれば良いものを手入力で写してしまうと、いくらタイピングが速くても時間はかかりますし、ミスのリスクがあります。
プログラミングに置いて、ミスしても誰もいい感じいカバーしてくれません。プログラムを解釈して実行するコンパイラがエラーを出して停止するだけです。
そして、エラーメッセージからエラーを特定することは非常に困難です。膨大なシステムの中で、ほんの一文字間違っていてもエラーが発生してしまうのに、手入力による誤字・脱字のリスクなんて負っていては先へ進むことができません。
そういったコピペをすることを基本としている情報が溢れているのに加えて、エンジニアにはもう一つ、コピペ元として良いものがあります。
それは、自分が過去に作ってきたプログラムのソースコードです。これらは既に自分で調査しながら作成して、しっかりと検証してきたものです。
調査・検証のプロセスさえしっかり行なっていれば、非常に信頼度の高い情報源となります。それらを上手に使いまわすことで、質の高いプログラムを素早く作っていくことができます。
プログラムの動作が意図通りになっているかを検証する作業を「テスト」と呼びます。
これらの項目は全て動いてソフトウェアとして機能するので、意図通りに動作することをきちんと確認する必要があります。
そして、その確認作業は何かしら変更をするたびにもう一度行うべきです。
プログラムというものは、同じようなソースコードをたくさん書かなくて済むように同じような機能はまとめる工夫をしますが、それが裏目に出て意図しない箇所が同時に変更されてしまうこともあります。
それに気づくためには、全機能を毎回チェックすることが望ましいですが、人の手で行なっていては時間がいくらあってもたりません。
機能が増えるにつれてテストの項目がどんどん増えていき、次第に身動きが取りづらくなっていきます。
今どきのソフトウェア開発現場では、プログラムと同時にそのプログラムの動作をテストするプログラムも同時に作ります。
そのテストプログラムで動作をチェックすることをこまめに繰り返すことで、不具合のないシステムのアップデートをスピーディに出していくことができます。
エンジニアリングという分野では、先述のような工夫を凝らすことで作業効率を大幅に高めることができます。イチから作っていては100時間かかるシステムでも、過去に似たようなシステムを開発したことがあり、そのプログラムをうまく流用できるのであれば10時間で終わらせることだって不可能ではありません。
腕のいいエンジニアとは、質の高いシステムを出来るだけ早く提供することができる人です。
過去の資産や工夫を凝らすことで時間を短縮しつつ、正しく動作するプログラムを作れるならそれはズルではなく立派な実力です。
システム開発を依頼する側としても、依頼するシステムの相場の金額で依頼して、ものが出来上がるのであれば全く問題ありません。
以前受けて100時間かかったような設計のシステムを、似たような案件のときに10時間でこなせば10倍のスピードを出せるわけです。
10倍、100倍になると表現しましたが、そもそもその単位となる1倍とはどのような状態でしょうか。
実はこれも相対的でしかなく、経験や能力によって1倍に相当する価値は変わってきます。
結局のところ、「相場に対してどれくらいの差をつけられるか」が価値の基準となってくるのです。
ライブラリやフレームワークは毎日のようにアップデートされていて、どんどん便利で安全になっていきます。それらを利用するエンジニアのプログラムも、どんどんアップデートされていきます。
その中で、他の技術者よりも質と速さで勝り続けられる人こそ、より大きな価値を提供できるのです。
エンジニアに限らず、社会人にとっての事業や、受験生にとっての勉強では、時間当たりの生産性をどんどん上げていかなければいけません。
事業も勉強も相対評価で決まってしまう世界ですので、今までに経験してきたやり方をしっかりと積み重ねて資産として時間当たりの生産性を増やしていく必要があります。
「現状うまくいっているから問題ない」という考え方では、後続に差を縮められたり、ライバルに差を広げられたりするのは時間の問題であると考えています。
私たちが2年前に学習塾を始めたとき、その制度は極めて一般的なものでした。
その体制は1年後には、
という、ITを活用した運営体制に自然に変わっていきました。そしてさらにその1年後である今では、
とさらに大幅に変わりました。生徒はもちろん入れ替わりますし、講師さんも就活等で入れ替わりました。そして社員すらも、自らのキャリアを考えて新しい場所を選んだ者がいたり、新たに私たちと共に教育に取り組むことを選択した者がいたりして入れ替わりました。
振り返ればかなり変わってきたこの塾運営のスタイルですが、「大幅な方針転換をした」という認識は全くありません。
常にどうしたらより良い教育を提供できるかを考えたり、業界誌や学術論文、文部科学省公開資料を元に知識を増やしたりする中で自然と生まれてきたものばかりです。
生徒・講師を含む私たちにとって、現状維持という選択肢はありません。なんらかの改善を目指した変化があることが日常で、どうしたらより指数関数的によくできるかを日々考えています。
社会の変化が日常となった今、私たちが教育を提供している中高生たちにはその変化すら楽しめるようになってもらいたいと考えています。
そのためにも、まずは身近な大人である私たちが変化を柔軟に受け入れ、それを楽しむ姿勢を見せていかなければなりません。
2018年も終わりが近づいてきましたが、教育に終わりはありません。
生徒たちの追い込みに負けないよう、我々教育者も熱量を上げていきたいですね!