Webシステムのエンジニアとして常々思っている事

そこそこ長い年数をWebシステムのエンジニアとして感じてきたことを列挙していきたいと思う。

目次

Webシステムのエンジニアは最高にクリエイティブ!

皆さんに最初に伝えたいのは多分これ。「エンジニアは最高にクリエイティブだぜ!」ってことです。エンジニアというと黒画面に向かってなにやら黙々と作業をしていてあまり華やかな印象はないと思います。フロントエンドのデザイナー職は人に見せらせるデザインがあるので、人の目にも止まりやすくそして目で見て分かりやすい一方で、バックエンドの人は正直何をしているのか一般的にはあまり理解されてはいないと思います。

しかしながら、長い間にため込んだ知識を使って判断し問題を解決していくプロセスは、例えていうなら推理ゲームのようなものです。あの可能性もある、この可能性もあると考えながら、知識と経験に基づいた想像力を使って、ひとつづつ選択肢を消していき最終的な真実、問題の原因にたどり着きます。このプロセスをクリエイティブと呼ばずに何というのだろうかと常日頃思っています。

頭の中は割と単純

私の中でプログラミングというとロジックは、「順列」「分岐」「繰り返し」の3パターンだけだと思っています。後はその組み合わせだと。そして、ソースコードの書き方も「初期処理」「本処理」「後処理」の3構成を基本としてこれに従うようにしています。単純化しすぎかもしれませんが、これらを基本としてとらえておくとそれ以外が出てきてもこれらの変化形だと思えば受け入れられます。

パニックに注意

Webエンジニアであることはまた、精神的なバトルゲームだとも思ってます。トラブルに対していかに冷静でいられるかという仙人モードの様な状態でいたいと思っています。問題の原因が全然わからない。何日やっても解決の糸口さえ見つからない。終業間近。休祝日・時間外対応。稼働中のシステムがバグると本当に焦ります。早く解決せねば、と時間的なプレッシャーも感じます。精神的な余裕がなくなるほどに目は曇るもので、焦るときほど原因を見つけられず、リラックスしたときほど柔軟に考えられてすぐに問題点を見つけることができます。不思議なものですよね。

今話しかけないで!と本当は言いたい

極端な言い方ですが、本当は常に全集中の呼吸をしていたいわけです。目の前のプログラムや設定をしているときに色々な可能性を頭に思い描きながら作業します。途中で話しかけられる=強制シャットダウンの状態に陥ります。いや、本当に忘れるんです、今何をやろうとしていたのか、どこまでやったのかを。プログラミングって手術みたいなものでもあると思っているのです。手術中にどこまで切ったっけ?次何するんだっけ?って医者が言ってたら怖いでしょ?それと同じでプログラミングも一旦ここまではやりきらんといかん、という作業単位があるんです。昼休みの時間が来たから、就業時間が来たからといってすぐに手を止められる類の作業じゃないんです。

いかに正しく作れるか(まあいいやをいかに減らせるか)

プログラムを書く方法を色々あり、時間をかければかけるだけ良いものができます。とはいえ時間と予算は有限なので限られた時間で最善のものを作りたいと思っています。でも、もう一人の自分が途中で誘惑の言葉を囁いてくるんです、この位でいいじゃん、動いてればよくない?って。本来こうあるべきだと思う所までたどり着かずちょっと妥協する。そのちょっとが積み重なって技術的負債になっていくんです。そして将来の自分を苦しめる羽目になる。これも精神的な試合で、いかに心を強く保っていられるかが重要になってきます。

結局のところWebシステムって何?

Webシステムを作るとは何をすることか、という自問自答をよく繰り返します(お風呂の中で)。今のところ私の結論はこれ、「ファイル管理」です。ここには局所管理とか使いまわしとかも含まれます。この一言に今のところ集約しています。今どきはインフラもInfrastructure as Codeでファイル化されてるし、たくさんあるソースコードをどうやって分けるのがベストかという問題に頭を悩ませています。

ローカルの開発環境はやっぱり大事

日々作業をするにあたって、毎日触るローカル環境の設定はとても大事だと思います。パソコンのスペック然り、IDEの設定然りです。開発以外のことでちょっとしたストレスも感じたくないんです。仙人モードでこの精神安定バトルに勝ち続けるには余計なストレスは不要です。Windowsの起動ボタン押したらレッツゴーで作業開始したいですよね。そして毎日繰り返すコマンドなどは全部エイリアスにしています。VSCodeの設定も結構こだわっています。ダークモードにできるものは全部ダークモードにしてます。長時間画面を見るので目に負担をかけたくないんです。

楽しくクリエイティブでいられるには勉強が大事

継続的な勉強はやっぱり大事だと思います。知識産業だから積み重ねが重要になってきます。新しいものを作るときにはその選択肢として取れるように各技術は習得しておきたいものです。私もまだまだ学びたい事はいっぱいあります。知識が増えてくるとトラブル解決に非常に役に立ちます、それは解決のための選択肢を捻りだす能力が高まるからです。まずは、これを試して、次これやって、それもダメならこれ、うーん、そうするとこっちかな、と矢継ぎ早に次の手が思いつくので作業が止まることが減ります。つまり、玉切れになることが減ってきます。この問題解決のための選択肢をどれだけ広く持てるかがクリエイティブな腕の見せ所だと思っています。

脳内インデックスの設定と詳細の外部化

勉強は大事ですがとにかく情報量が多い。なので、記憶するということを考えたことはありません。だって、そもそも無理だから。目指しているのはとにかく知ること。そういうものがあったという事だけを覚えておきます。つまり、インデックス化しておきます。そして必要になった時に、あれ、これ読んだな、あの時のメモファイルはこれだったな、という流れになります。メモはめっちゃ取ります。読んだもののエッセンスを抜き出したノートファイルはものすごい量ため込んでいます。これもまた自分用にうまくフォルダ分けしてあるのですぐにたどり着くことができます。

インフラの学習を推したい

これからWebエンジニアを目指す人たちには是非インフラから学習してもらいたいと思っています。新しい技術やツールが出てきたときに試したくなると思います。ただし、インフラを知らないとそもそもセットアップができないという問題にぶつかります。私もプログラミングから入った身なのでよく分かりますが、最初はサーバのセットアップとかでつまづいて思うような技術の習得ができなかった時期があります。キャリアの途中で、あれこのままじゃ駄目だな、と気づいてからインフラ側の知見も広げるようになりました。私の立ち位置としては「インフラに強いプログラマー」みたいのを目指しています。

最後に送りたい言葉

最後に伝えたい言葉は「楽しくないのは下手だからや!」です。一語一句同じではありませんが、ハイキューというバレーボールのアニメで出てきた言葉です。全国レベルの高校生が言っていた言葉です。そうなんです、できることが増えると自分でコントロールできているとう感覚が持てるので楽しいんです。キャリアの最初は私もつらい思いをしました。そもそも文系の新卒でシステム会社に入ったのがキャリアの始まりでした。私も変数ってなに?というところから始まったんです。今日できないことは明日も出ないと思って、帰宅後は勉強、土日は先週出来なかったことを調べてできるようになって月曜に出社するみたいなことを繰り返していました。何年もして自走できるようになりました。学校に通ったりもして時間とお金も大分投資しました。そしてそのリターンはあったと言いたい!皆さんも最高にクリエイティブなエンジニアを一緒に目指しましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次