読者です 読者をやめる 読者になる 読者になる

エンジニアとして心得ておきたい事。

私は以前、ICTSC7に出場させていただきました。結果は9位でしたが、それがきっかけで、インフラ整備にすごく関わることが多くなってきたのです。その中で、自分が直面したさまざまなことを自分への戒めや、こうした方がいいよ!ということを備忘録として書いておきたいと思います。

きっと、新しくエンジニアになる人には役に立ってくれると思います。(まぁ実際人が何回言おうと自分でそうだと思わないと身につかないものですけどねw)

1. 「わからない!」を放置しない。

こんなこと100万回言われてますけどね。僕をコンソールへの海へと誘った「なれる!SE」の中でも序盤で言われていることです。ですが、実際にできていますか?と言われているとできていない部分が多いと思ってます。

人が書いたソースコードって読みづらい事が多いですよね。自分はプログラムが大好きなので、なるべく美しく短いコードにしようとしますが結構しんどいです。ですが、人が書いたものを読まないと、実現したいことに関する5W1Hがまったく分からないはずです。

そんな状況じゃ、するべきことに関する5W1Hもわからないですよね?

コンフィグを例にしていますが、いろいろなことについて言えると思います。

「分からない!」は絶対悪です。伝播していって、いずれはバグやインシデントとして表面化します。すべてを理解していれば、絶対にバグも何もおきないです。

分からないことは調べること。

1.1 「曖昧さ」を許容しない。

まぁ、「わからない!」を放置しないことと同値です。

一番いいのは「Allow->Deny All」です。自分にとって都合のいい(許可すべき)物のみを許可した後に、残りすべてをDenyすれば曖昧じゃないですよね?さらにシンプルな設計になることでしょう。

1.2 検証をする。

これも、「わからない!」を放置しないことと同値です。

検証をしていないものに関しては、正しいとも正しくないとも言えないですよね?

そのためにたくさんのリファレンスやドキュメントがあるんですから有効活用していきましょう。 また、世の中にない資料はどんどん発信していきましょう。そうすることで助かるエンジニアがたくさんいます。きっと。。。

2 「都合」は極力排除する。

「大人の都合」ってたくさんありますよね。ですが、「都合」を考えて設計をしていくと、汎用性を失います。排除しちゃいけない都合もたくさんありますが、そうでないことは排除していくべきです。汎用性は絶対的に良いことです。極力、都合は減らしていきましょう。

3 楽をする。

簡単にできる方法があるのなら、それに乗るべきです。ほんとにそうしてください、お願いですから。

4 共通言語を使う。

共通言語とは、仕様で定義されているものや、デファクトスタンダードで使われているもの、仕様書で用語定義されたもの。。。たくさんあります。

とあるプログラマに「こんなものを作って」とお願いしたら、Brainf*ckで実装してきました。

ブチ切れますよね?

一人が完璧に理解していてもダメなことが多いです。そういうのは他でやってと言われるだけです。「郷に入っては郷に従え」と言うようにしましょうね。