【雑記】ITエンジニアのあり方
転職してだいたい4ヶ月目になろうかというくらいですね。
過去の記事でも数回紹介してますが、客先常駐という形態でお仕事しています。
現在のクライアントについて思うところが多々あるので、ちょっと吐き出そうかと。
最初に
まずはタイトルにもありますが、自分が思うITエンジニアを述べようかと思いますが、一口にITエンジニアと言っても工程や担当する部分によって様々なエンジニア職がありますので、大雑把に区分けしてみます。
ざっくりエンジニア説明
システムエンジニア(SE)
ITエンジニアといえばこれを想像する方がほとんどだと思います。
業務内容としては、
要件定義~設計~開発~テスト~保守・運用
とシステム開発をするための工程をするためのエンジニア。読んで字の如くですね。メジャーでもあり業界で一番分布の多いエンジニアだと思います。
筆者もこれに当たります。
ネットワークエンジニア(NE)
細分化すると、ネットワーク関連・データベース関連・サーバ関連に分けられていたりしますが、筆者が過去に会った人は上記3つをひっくるめてやる人しか居なかったので、まとめてしまいました笑
特化してる方は申し訳ございませんmm
これはどんな職種かというと、これも読んで字の如くです笑
SEが顧客の要件に沿ったものを作り、NEはそれを動かす環境を作ったりします。
NEは前提としてSEも経験していて、どんな環境が最適なのか、顧客や開発者(SE)から文句を言われる立場なので相当しんどいとは思いますが、個人的には最も尊敬するエンジニアです。8年経験してますが、知識的にもメンタル的にもNEになれないと思うので。
Webエンジニア
筆者自身なんで分けてるかわかりませんが、リクルートサイトとか見ると分けられていたので、なんとなく分けてみました。
SEが企業のシステム構築等をしているのに対し、WebエンジニアはECサイトやWebポータルサイトを作る、いわゆる一般ユーザ向けのシステムを作るものを指しているんだと思っています。
メインはHTMLやJavaScriptやCSSなど、所謂フロントエンド側を担当するエンジニアですかね。
SEでもフロント側を作成するので敢えて分ける必要性は感じませんが。。。
プログラマ
エンジニアっていう単語は付きませんが、立派なエンジニアです。コーダーとも呼ばれたりしますね。
エンジニアが要件定義や設計などやるのに対し、プログラマはひたすらプログラミングしていくのがメインです。
一般的にIT企業に就職したら、ここからスタートしていく人がほとんどではないでしょうか。会社によってはプログラマのお給料のままSEとしての業務をやらされたりするのできちんと自分の業務を見極めましょう笑(実体験)
以上がざっくりとしたエンジニアの分類になります。
エンジニアとして必要なスキル
コミュニケーション力(笑)
「笑」ってつけましたが、これはマジで必須スキルです。今はもうあまり言われないかもしれませんが、ほんの数年前まではITエンジニアになるやつは、コミュ障や根暗さんなど、コミュニケーションを取らなくても良いと言うような風潮がありました。パソコンの前に座ってひたすらキーボードを叩いてるところからそういうふうに見えんたんでしょうかね。
実際はキーボードも叩きますが、顧客や内部での打ち合わせ、チーム内での仕様に関する認識合わせなど、人によるんでしょうけど筆者はキーボード叩いてる時間と話してる時間が半々くらいです。今の現場はちょっと打ち合わせが多いかなと個人的に思うところがありますが、雇われる側なので渋々顔を出しています。
打ち合わせで発言する機会や、自分の意見を押し通すためにコミュニケーション力はいまや必須だと思っていて、一番必要なスキルであると言えます。
継続した学習を行える力
無理やりですね笑。まぁこの力は業界問わず必要なスキルですが。
IT業界と一口に言ってもその歴史はまだまだ浅いです。浅いせいかまだまだ底が見えないため、毎日のように新しい技術が増えています。そのため常に(とまでは言いませんが)学習する姿勢が必要になります。IT業界の特徴かわかりませんが、一つの言語に縛られず、あらゆる言語でシステム構築をするため、2年前はA言語、去年はB言語、今年はまたA言語で同じ感覚で行けるかと思えば、仕様そのものが変わっていたりするので気を抜けません。常に同じ言語の案件が来るわけではないですし、その言語の上位互換が出たりするので、アンテナは常に伸ばしておかないと一気においていかれます。
毎日じゃないにせよ、何らかの案件に入る前~入って数ヶ月くらいまでは勉強ないとついていけないです。
ただ色んな会社の人と付き合いがありましたが、これができるのは2割程度でした。悪い意味でも良い意味でも勉強しなくてもどうにかなってしまうのがこの業界の良くないところなんだと。
忍耐力
言ってはみたものの、筆者は忍耐力全く無いです、すぐブチギレますし笑
対人的な忍耐力も必要ですし、プログラムを根気よくデバッグして原因を見つける必要があるので、これも必要ですね。
プログラムに対する忍耐力はありますが、対人的な忍耐力が0なので、もう少し自制できるようにするのが当面の課題です・・・
3つだけではありませんが、個人的にかなり重要なスキルを列挙してみました。
エンジニアのあり方
エンジニアのあり方なんて言ってますが、結局、自己学習ができてちゃんとコミュニケーションがとれるのが理想です。が、こんなのどの業種に関わらず必須です。
ここからは上記のあり方を踏まえた上での愚痴です。
できないことをできないままにしちゃうクライアントたち
身バレしないとは思いますが、ある程度ブラフを入れながら垂れ流します。
背景
最初にエンジニアの分類をしましたが、今のクライアントはネットワークエンジニアが多数在籍する部が開発案件をやっています。面談したときは開発経験の有無についてこちらから確認しなかったのがそもそもの問題だと今にして思いました・・・
体制はクライアントのプロパーさんをPLに自分を含めたメンバーが2人いる3人体制でやっています。
問題点
クライアントに開発経験者がいない
こちらについてですが冗談抜きでいないです笑
面談のときに保守はしたことあると言っていたので、開発スキルは低いけど一般的な仕事の進め方とかはできるだろうと思っていましたが、驚いたことに全くできていないんです笑
何ができないかと言うと、そもそもコーディングができないという点です。
どのくらいできないかと言うと、新人が見るような教本の最初の方に出てくる内容がわかっていません。
逆に今までどうやって保守をやってきたのかと問い詰めたくなりますが、とりあえず技術力は皆無です。というわけで、例えば工数見積もるにしても、前提の技術力がないので工数見積すらできないという問題があります。
コミュニケーションが取れない①
先でちょっと触れたコミュニケーション。打ち合わせとか言いましたが、もちろん進捗報告もそれに含まれます。一般的に定量的・定性的な進捗を報告をすると思いますが、開発に関しては定量的な報告を求められることのほうが多いです。
例えば、「〇〇/△△が機能終わっています。一日□□機能実装しているのでオンスケです」といった感じで実際の数字を出して報告するのが定量的な報告。
「全体の〇〇%終わっています」というのが定性的な報告。数値化しにくい時に使う手法です。
どちらがわかりやすいかと言うと定量的な方ですね。「どれだけ工数かけられて」「1営業日でどれくらい消化できて」「いつまでに終わらせなければならないのか」が明確に出せますからね。
クライアント様はこれができないんです。しかもできないというのが、定量的・定性的のどっちの方でも報告ができません笑
そもそも上で言っているように開発経験がないのか、どうやって実装したら良いのかイメージもできていないため、どれをやったら終わるのか、どの程度終わってるのかの把握ができていないのです。
そのためエンドユーザへの報告も杜撰なものなんですが、エンドユーザ様も開発経験がないのか、イマイチことの重大性が理解できていないようです。
そんなこんなでのらりくらりとかわしてきた結果、10月中頃時点で9月の2週目に終わるべき仕事が終わっていないことが発覚しました。この時点で1人月以上の遅延をしているわけです。1ヶ月ではなく1人月というのが恐ろしいことです。普通なら2~3人日遅延しただけでどのようにリカバリするのか対策案を求められるのに、その数倍遅延していました笑
コミュニケーションが取れない②
その②ということで先にも触れてますが、内部での話し合いもコミュニケーションの一環と言えます。何がだめかと言うと、質問が全くできないんです。開発ができないならできないなりに質問して問題解決をするのが仕事ですが、クライアント様はこれすらできません笑。ほんとに何ならできるんだって話です。。
そもそも何をして良いのかわかっていないので質問ができないというのが本音なんでしょうけど、雇われてる側のこちらからはクライアント様の進捗を確認する立場にないですし、そもそもこっちの進捗管理してくれよと言いたいくらいです。
わからないのは仕方がないことですが、わからないままにしておくのはいただけないです。
学ぶ姿勢がない
上でも言いましたが、わからないことをそのままにしておくのは絶対にNGです。「わからない」から「やれない」というのは子供じゃないので許されることではありません。当たり前ですが、社会人というのはお金の対価に労働力を提供しているので、「やれない」ということは社会人としてNGです。具体例を出すと8月末くらいから開発フェーズがスタートしていますが、問題発覚の10月中頃まで約2ヶ月あります。
2ヶ月あれば完璧ではないにせよ、ある程度言語仕様の把握はできます。であるのにも関わらず、学習する姿勢を見せないどころか、開き直って自分ではできませんと言い出す始末です。
これ上下関係が逆だったらリアルに怒声を上げているレベルの事案です。
危機感がない
上でm(ry。1人月の遅延と言いましたが、9中で終わるべきタスクが終わっていないということは毎日着手遅延のタスクが増えていくということです。おまけに本人がどれをやったらよいかわからない。わかる努力をしない。終わらせる努力をしない。
といった感じで終わらなかったときのリスクを全く考慮していないような振る舞いをしています。
で、ここでクライアント様の上長様が出張ってきたんですが、こちらの方もなんと開発経験がありません笑
なんで開発案件を受注したのか小1時間問い詰めたいです笑
出張ってきたのは11月初頭のこと。開発経験という理由を盾にこちらにリカバリ案の考案を求めてきますが、1人月遅延のリカバリなんて並大抵のことではないですし、そもそもそんなに遅延する前にリスケするなり増員を上長にお願いするなりして被害を最低限にするので、ぶっちゃけ無理です笑
唯一思いつくとしたら、エンドユーザに土下座してマスタスケジュールを伸ばしてもらうことくらいでしょうか。
11月初頭に来た上長様も開発経験ないなら自社の開発従事者に聞くなりやることはいくらでもあるはずなのに、リカバリの打ち合わせと称して我々とを呼びますが、毎回ノープランで打ち合わせに参加してくるので、何も決まらない無駄な打ち合わせをやらされています。
こんな感じで会社として本気で終わらせる気があるのかと問い質したくなります。
まとめると
開発したことがないということを盾に、何もしていないに等しい1ヶ月を浪費して、エンドユーザには虚偽の報告をして、1人月遅延のリカバリ案を考えさせられているというなんともひどい状況です。
なんとか終わらそうとする姿勢や、努力が見えるのであればこちらも協力する気が湧くんですが、そういった姿勢が見えないのでこちらとしてもやる気が起きません。
というわけで一応お金はもらっているので、最低限こちらのタスクは遅延しないように適当な毎日を過ごしています笑
最後に
ITエンジニアとは。という名目ではありましたが、結局はどの業界でもやることは一緒です。社会人になったからと言って勉強しなくてよいわけではありません。むしろ社会人だからこそ、学生時代に培ってきた継続力を発揮するべきなのです。筆者は学生時代全く勉強しなかったので大きな声では言えませんが笑
ただお金をもらっているということを考えれば、できる限りのことはするべきだと思います。
変な話、電気屋で店員に商品説明を求めてできなかったら苛つきますよね。家を建てるときに大工さんができませんと言ったら、何だこいつってなりますよね。
ITエンジニアも同じです。ということを念頭にサラリーマンの方は改めて考え直してもらって、これからサラリーマンになる人達はこういうことなんだよということを覚えておいてください。
最後の方は愚痴になってしまいましたが、最後までお読みいただきありがとうございました!