このような疑問をお持ちの方に向けて書いています。
- エンジニアの仕事は納期前がつらい
- エンジニアの仕事はバグの修正がつらい
- エンジニアの仕事は仕様変更がきつい
- エンジニアの仕事はバージョンアップがつらい
- エンジニアの仕事は人間関係がきつい
こんな感じでいくつかエンジニアの仕事がつらい、きつい部分を上げてみました。詳しく説明していきます。
エンジニアの仕事で納期前がつらい理由
エンジニアの仕事でつらい部分で最初に選んだのは納期前でした。
予想はつくと思うけど、なぜ納期前がつらいのか説明していきます。
スケジュールは変更できない
まず、クライアントといつまでに納品するという契約上、そこまでに納品しないとお金がもらえないため納期前は終わらなそうだったら土日出勤はあるし、終電もある。
もちろんプロジェクトによるけど、受託の開発やSESなどでプロジェクトに参画するとそのような状況になることがあります。
僕は昔、最大で2日連続徹夜で作業したことがあります。今はかなり厳しくなってきているので徹夜も許されなくなってきているかもしれないけれど、昔のエンジニアは3Kって言われてましたよね。
- きつい
- 帰れない
- 給与やすい
他にも「結婚できない」とか、「休暇取れない」とか良くないイメージでした。最近ですね。自由でうらやましいとか言われるのは。まだまだ3K的な職場も多いので注意してください。
納期を大型連休後に設定してくる
なぜ納期を大型連休の後に持ってくるのか、予想はつきますよね。遅れが出ている場合は休日に出て取り戻せということです。
これはいやらしい話なのですが、けっこうこのようなプロジェクトが多い。実際に連休に予定を組んでもキャンセルしなければならなかったり、自分のタスクが遅れていなくてもお願いされることが多い。
なぜエンジニアは自由な仕事というイメージが先行してしまっているのか、僕はなぞです。
エンジニアの仕事はバグの修正がつらい
開発していくとどんなシステムでもバグは出てきます。それをどれだけテストで潰せるかで製品の精度ってかわると思うのですが、そんなバグの対応がとてもつらい。
バグといっても軽度のものから大きいものまであるのですが、初学者の人もカンマ忘れたり、セミコロン忘れて動かないといった経験ありますよね。
そういう小さなものから想像以上の大きいものまであるわけです。
仕様から考え直さなければいけないバグ
中にはバグを潰すために仕様を変更し、大規模な改修しなけれればならないものもあります。
そのようなバグに対応するために作り直したり、その分スケジュールが遅れるのでゆっくりバグ改修もしていられないわけです。
デグレがつらい
開発ってある程度、自分で単体テストしたものを他の人に触ってもらうので、バグの多くは結合テストで見つかります。
それで改修していくのですが、その部分を直すことで他の部分にバグが生まれてしまうことをデグレっていいますが、他の人が作った機能を壊してしまったり、バグを直したつもりが増やす結果になったり。
そのようなテストで見つかる時は納期も近いので、つらさ倍増ですね。
バグの数を見るとつらい
結合テストで見つかったバグがリスト化されていて見ると、大規模なプロジェクトの場合は100、200とか普通にあります。
ぱっと見軽微なものもあるのですが、うわっこれやばそうみたいなのもあるわけです。
なので、数を見た瞬間つらくなります。
エンジニアの仕事は仕様変更がきつい
この業界って作ってみてからじゃないとわからないみたいな部分ありますよね。検索使ってみたら、こんな条件もあった方がいいとか。
お客さん次第というか、契約次第という部分が大きい。アジャイル的な開発の場合はほぼ変更を受け入れます。追加でお金が発生する場合もありますが、変更もコミという契約の場合はかなりきつい。
エンジニアはどちらにせよ、直すのです笑
クライアントによる仕様変更の対応はまじできつい
長いプロジェクトの場合、開発に何年かかかる場合があります。僕がいたプロジェクトでは3年の間に3度の検索のデザイン変更ということがありました。
そのクライアントは大手の検索を使っていて、例えば、じゃらんとかAmazonとか。使い勝手がいいと同じようにしてくれと変更を求めてきます。機能で必要な部分の追加とかではなく、ただのレイアウトやデザイン的な変更です。
このような感じで仕様変更の対応など何度も行います。それでリスケ(スケジュール変更のこと)されないので、開発者はしんどくなりますよね。
仕様変更のレベルで爆死する
仕様変更をどこまで受け入れるかも契約によると思いますが、クライアントが考えるここちょっと変えたいという「ちょっと」が実はけっこう深い改修が必要だったりする場合があります。
関連している箇所を調査して大きかった場合、かなりしんどいです。
エンジニアの仕事はバージョンアップがつらい
バージョンアップというのはプログラム言語だったりフレームワークにはバージョンがあり、不定期にバージョンが上がっていくのですが、開発をはじめたころバージョン1.0.0を使っていたとして、半年後に2.0.0に上がったりします。
どこまでバージョンアップに対応していくのかはプロジェクトによると思いますが、バージョンが上がる理由としてバグの修正が含まれていたりするので、状況をみて新しいバージョンに上げていく方がよいとされています。
バージョンアップによる影響
バージョンを上げることで、今まで使えていた関数の使い方が変わったり変更箇所の調査をして動作の確認をしたり、かなりの工数を使う必要があります。
タイトなスケジュールの中で、バージョンアップの対応も含めていくことを考えるとつらいです。このような対応をする場合は、リスケさせてもらうという契約もしてくれるといいですね。
バージョンアップが多すぎる
開発する場合はサーバーサイドをRubyでフレームワークはRuby on RailsでフロントエンドはVue.jsでライブラリーをいろいろ使ってとなると何かのバージョンが上げるとライブラリとの相性や他への影響なども含めて考えないといけないわけです。
2、3年開発しているとフロントもサーバーサイドもどんどんバージョンが上がっていきます。この前上げたばかりなのに。。。みたいになりつらいですね。
エンジニアの仕事は人間関係がきつい
エンジニアの仕事はなんとなく一人で黙々とやるイメージが強いですが、実はコミュニケーションを取る機会も多く、人が苦手な人にとってはけっこうつらいかもです。
クライアントと会議もあるし、社内でもミーティングなんかもあります。数名で勉強会をしたり、わかならにことは誰かに聞かないといけません。
エンジニアは変わり者が多いのでつらい
エンジニアって変わっている人が多いというイメージないですか?これは感じ方によるとおもうのですが、僕の感覚で言うと、2割くらいのエンジニアは変わっている。
- 寝坊、遅刻が多い
- あいさつできないエンジニアが多い
- スーツに運動靴でくるエンジニア
- つっかかってくる
- 怒鳴る、ムキになる
上の例は一部ですが、僕が参画したプロジェクトにはこんな人たちがいました。他の職種でもいるかもですが、人として変ですよね。
こんな人たちと一緒に仕事をしてコミュニケーションを取らないといけないので、きついです。
しんどい時は転職しかない笑
意外と人と交流が多いエンジニア職
上流工程であればクライアントとの会議があります。それは仕方がないとしてクライアントとの飲み会なんかがあったりします。これはしんどい。時もある笑
プロジェクトによっても新しい人が参画すると歓迎会、プロジェクトを始める時にはキックオフと言われる会、プロジェクトが終わったら打ち上げなどなど飲み会も意外と多いものです。
そんな僕は基本嫌だと思いながら参加するタイプで、しんどいわと感じたりします。
まとめ: エンジニアのつらいきつい部分
いかがだったでしょうか?エンジニアのつらい部分、大変だと感じる部分をご理解いただけたでしょうか?
関連記事では未経験のエンジニアにとってつらい点などまとめています。こちらも一緒にご覧ください。
エンジニアになって10年以上たった今でもつらいことはつらい笑。それを変えるためには一人でWebサービスでも作るしかないのか。。。がんばります。