仕事を再開して2週間が経った。
どうも、こんばんは。てるです。
仕事を再開して2週間が経ちました。
ちょっと一旦ふり返る意味も含めて今考えていること、そしてこらからやりたいことなどを記事にしておきます。
どんな仕事をしているか
そもそも、私は今エンジニアとして働いています。どこかの会社に所属しているわけではなく、いわゆる「フリーランスエンジニア」というやつです。
かっこいいですね。笑
2週間ほど前までコロナの影響でニートだったのですが、ご縁あって、とある企業に常駐させていただくことができました。名前を聞けばみなさん分かるくらい大手の企業です。
詳しいことは言えませんが、そこで社員の方々と一緒に基幹システムを構築しています。(途中参画です。)基幹システムという言葉に聴き馴染みのない方がいらっしゃると思いますが、ざっくりいうと会社内で社員が利用するシステムです。(ざっくりしすぎ。笑)
私の専門はAWSをはじめとするクラウドのインフラ構築なのですが、今はガッツリアプリケーションを作っています。
僕のスタンス
エンジニアと聞くと「プログラミングしている人」を思い浮かべる方が多いと思いますが、実はそうではありません。
エンジニアの本質は、「やりたいことを(IT技術を用いて)実現する」ことにあると思います。そのためにプログラミングは利用しますが、あくまでも手段です。
じゃー、エンジニアはどんなことをするのか。僕が実際に会社員時代とフリーランス時代でやってきたことでいうと、
・お客様とどんなアプリケーションを作りたいか打ち合わせをする。
・ざっくりと絵を書いたりして要件のすり合わせをする。
・要件からインフラを設計したり、アプリケーションの設計をする。
・実際にアプリケーションを作る。
・バグがでたら調査して修正する。
・進捗やタスクなどを管理する。
・利用しているサービスの提供者に技術的な問い合わせをする。
・新しく使う技術の調査をする。
・動作確認(テスト)をする。
・プロトタイプを作る。
・デザイナーさんが書いた画面のレビューをする。
・チームメンバーの育成。
・などなど。
結構色々なことをやります。僕は割と立ち上げメンバーとして参画するプロジェクトが多かったので、色々なことを経験させていただきました。
こうやってみると、プログラミングなんて本当に一部ですよね。(エンジニアにとってプログラミングやっている時間は至福のときです。)
僕はIT(Webアプリケーションなど)の専門家ですので、その範囲においては僕の責任においてきちんとやらないといけないと思っています。
これが僕のスタンスです。
異文化交流
ただ、今回のプロジェクトでは今まで経験したことないような、まさに異文化の香りを感じています。
具体的には、
・実際にシステムを触る人から直接ヒアリングできない。
・誰も要件定義をしていない。
・アプリケーションを作るためには、画面のイメージ(エクセル)が渡される。
・エンジニアはそのエクセルに書かれた画面から実装する。
・ボタンを押すとどういう風になるなどのことは一切書かれていない。
・仕様は開発チーム内の専門の人(偉い人)に確認する。
・本番用の環境と開発環境が違う。(DBが違う。。)
・インフラをコードで書いてない。
・テストしていない。
・タスク管理システムが機能していない。(棚卸ししていない。)
・などなど。。
分かる人には分かると思いますが、結構ヤバいんですよね。炎上する匂いがぷんぷんします。
これ、toCサービスとかでまず「リリースしてみよう」プロジェクトじゃないんですよ。基幹システムなんです。
一番不思議なのは、この仕組みを疑問に思うエンジニアが今までに出てこなかったってことなんです。
なんでこんなにヤバイんだ
で、2週間が経ちました。プロジェクト自体は4ヶ月ほど経っているようです。どうしてこういう「ヤバイ」状態でプロジェクトが続いているのか、自分なりに考えてみました。
1. エンジニアが若すぎる
このプロジェクト、いわゆる偉い人が2人いて、それ以外の人がエンジニアとして実際に手を動かしています。実際に手を動かしているエンジニアは10名ほど。ほとんど僕より若いです。そして経験も少ないです。
V字モデルのような全体像を理解して、実践している人がまずいません。
そしたら、当然のように画面だけ渡されて実装するという今のスタイルに疑問を持てるハズもありません。
2. 業務を理解している人が偉い人だけ
基幹システムですので、それなりに複雑になります。そして多くの業務の知識を必要とします。長年その会社で働いているような「偉い人」でなければ業務の全てを、つまり今作りたいシステムの全てを理解できないでしょう。
だから偉い人に仕様をいちいち聞きに行かなきゃいけない状態なんです。でも、それでも答えてくれるから成り立ってしまうんですよね。。
3. 偉い人が忙しすぎる
どこでもそうですが、一般的には偉い人は忙しいです。そして複数のプロジェクト、仕事を抱えていることが多いです。すると、一つのプロジェクトに多くの時間をさけないことが多く、例え改善したいと思っていてもできないでしょう。まぁ、現状で一応進んでいるからあえてよくする必要はないという感じで。
4. 対象のシステムが自社のシステムだ
正直これは大きいと思います。
例えば、このプロジェクトメンバーがSIerとかで社外の基幹システムを作っているとしたら?ちゃんと要件定義をして、ちゃんと設計書作って、納品するのではないでしょうか。自社のシステムだから最悪何かが起こっても、どうにかできるというスタンスなのではないでしょうか。
5. アジャイルを勘違いしている
「要件定義せずにとにかく早く作る。」
「ウォーターフォールを早く回す。」
これらは結構誤解しやすいところだと思います。
まずアジャイルだって要件定義はします。ただ、それを最終目的にはしないだけです。落書き程度でもいいので、残しておくことは重要です。
あと、「ウォーターフォールを早く回す」のは表面的な理解です。アジャイルの本質は、「チームで作る」ことにあると思います。一般的なウォーターフォールでは各フェーズごとに担当する人が違ってきます。でもアジャイルではチームで作っていくことが重要になるため、どのタスクを誰がとっても良い状態が好ましいです。チーム全体で強くなる感じですね。
今のプロジェクトでは中途半端にアジャイルのフレーバーを取り入れています。その結果、だれも要件定義して無かったりしています。笑
6. 結局のところ問題ない(と思える)
今は開発中ですので、どんどん進んでいる状態なんですよね。作らなきゃいけないページはたくさんあるし。でも、それぞれのページを別の人が担当しているので、DBのテーブル設計もあったもんじゃありません。(多分現状で重複しているテーブルが10個くらいはあるんじゃないか?)
今は良くても、100個とか200個テーブルが増えたら最終的にはどうするんでしょうかね。そこから考えるんでしょうか。。
じゃー、僕はどうするんだ
ここからが一番重要です。
色々文句を言っても始まらないわけですし、もしかしたら僕の考えが間違っているのかもしれない。
そのためにはまずは行動です。
僕がこれからやっていくこと・意識することを列挙します。
0. 絶対的に評価されることをやる
一番怖いのは、
「そういうやりかたもありますよねぇ〜」
で終わること。
これは何もチームに価値を提供していません。自己満足です。
「なんか美しくやりたい。」という気持ちが先行しています。
そうではなくて、実践的で誰の目から見ても明らかに評価されるような方法でやらなきゃいけません。
1. まずは自分の範囲から
いきなりチームメンバー全員を納得させることは難しいです。それに納得させるためにはそれなりの根拠が必要です。
だからまずは小さく。自分の範囲からやって行きます。
もうすでにいくつかやっていることもありますが、具体的にはこんなことをやります。
・Wikiを書く
みんなで共有できる知識ですね。今はまだないので、これらを書きます。
・ローカル環境開発の方法
・ステークホルダー一覧
・システムの全体像
・資料の置き場所リンク
・用語集
・などなど
・要件を書く
自分の範囲だけでいいので、要件を書きます。簡単に。
・テストを書く
要件を満たすようにE2Eのテストを書きます。まずは手動で、その後は自動でできるようにスクリプトを書いていくというのが良いでしょう。
単体テストに関してはその都度書いていきます。
2. 自分のやっていることをチラ見せする
ミーティングの場所で自分のやっていることをチラ見せします。他の人が食いつくこを祈って。
3. 一歩先を提案する
今僕が足りていないと思っていることはいずれ必要になると思います。その時に叩き台になるように簡単な資料を作っておくことが重要になると思います。例えば、
・インフラ構成図
・概念モデリング
・CI/CD
・保守・運用フロー
・権限周り
・などなど。
(こういうのって、最初にあった方がいいんですけど。。。)
4. 飲み会に誘う
飲ミニケーションは大事ですよね〜。
「僕の歓迎会」と題して飲み会をやります。
(もうすでに誘っています。笑)
外部だからこその強みをはっきしてやる
僕はその会社から見ると「外部の人間」ですよ。
でもだからこそ強いってことありませんか?
・社内の人間同士だと顔色をうかがっちゃうけど、僕には関係ない。
・経験上知っていて可視化されていないことを可視化できる。
・僕には最悪次の仕事が待っている。はず。
こんな感じで僕だからこそできることが結構あると思うんですよ。
まぁ、フリーランスにもいろんなスタンスの人がいて業務委託として淡々と言われたことを処理する人もいますが、僕のスタンスは「ITの専門家」ですので、良いシステムを作る上で必要なことはやっていきます。
ということで、やることが多くてまた記事を書けるのがいつになるか分かりませんが、自分にできることをやっていきます!
あ、ちなみに今結構幸せです!
以上。
この記事が気に入ったら、サポートをしてみませんか? 気軽にクリエイターの支援と、記事のオススメができます!