残業しているエンジニアと関わってみて気づいた!残業する人は自分で自分の仕事作ってる可能性が高い
@nabeemichi です。
最近では、働き方改革だので残業をしないことを推奨している風潮がある日本でありますが、
残業たくさんしている人っていうのはまだまだいるわけです。
僕はフリーランスのエンジニアで、IT企業に行って社員の方と一緒に働く日が何日かあります。
僕は残業は基本しないようにしています。
でも、毎日毎日残業している雰囲気の人もいるわけです。
しかも、すごい忙しそうで大変そうに見えるのです。
締切間際に手伝わないとやべーだろうなってことで、残業たくさんする人たちと働いてみたわけです。
一緒に働いて感じたことは、
そりゃー残業するわ!何も工夫してないもんな
ってことです。
残業しなければいけない状況になるパターンはたくさんあります。
そもそも締切が自分でコントロールできないパターンとか、 見積もりが現実味がないパターンなどは仕方ないのかもしれませんが、 今回のパターンは自分で自分のタスクを増やしているパターンです。
どうゆう状況かといいますと、
自分で不具合つくってる
ということになります。
ITエンジニアですからアプリを作ってなんぼなのですが、
見た目はなんとなく動いているのですが、ちょっとテストされると不具合がでまくるのです。
不具合がでまくることは普通なので、特に問題ではなく健全な印だと思いますが、
不具合の修正に時間がかかる
というのが残業という視点から見ると最大の問題になってきます。
不具合が100件でても、一瞬で直せれば残業なんてする必要もなく問題になりませんが、1件直すのに4,5時間かかるとかなると絶望的になってきます。
で、自分で自分の仕事を作ってるって人は、この現象を起こしていることになります。
不具合直すのに時間がかかる状況とはどうゆうことかと
適切な単位で作られていない
のです。不具合が出てもすぐ直せて、影響範囲が限定できる状態で作られていないということです。
これは、プログラミングで責務を限定するとかドメインドリブン設計(DDD)などのプログラミング手法に近いと思いますが、 別に手法は重要でなくて、なぜこんなことを考えないといけないかというと、
一番は早く修正できて、自分を守る(残業したりしない)ためであります。
で、これを実現するためには、仕様を決めたら実装する戦略を立てるってことになります。
仕様を実現するためにはどの単位で機能をつくり、どのようなカテゴライズを行うのかを、 現状の機能、仕様、自分の実力を洗い出してどの順番で実装していくのかの戦略を練るのです。
いきなり実装し始めたり、教科書や手法ありきで実装するわけではないのです。
これをするには、プログラミングの知識をつけたり技術力をつけたりしても意味がない。
トップダウン思考をする訓練をするわけです。目的(ゴール)からブレイクダウンしてタスク書き出す。そして書き出したタスクを見て重複をなくし最小化して、同じものをカテゴライズして実装順序を決めていくのです。
これをしないから無駄なタスクや、同じようなタスクがたくさん増えていき仕事が増えていくのです。
自分がしなくていいことをやってしまっている
さらに仕事を増やす要因がこれです。
アプリ開発するためにはフレームワークを利用するのが現代では一般的ですが、
フレームワークを理解してないため、フレームワークがやってくることを自分で実装してしまっているのです。
自分の実装が増えれば増えるほど、自分のが生み出す不具合の量は増えます。
実装しなければしないだけ不具合の発生確率はさがります。
自分の仕事を減らすためには、自分が頑張らない実装をすることです。フレームワークやすでにテストされているものを最大に利用してやるのです。
ちなみに僕は一行たりともソースコードは書きたくない!と思ってプログラミングしてます。 ですので、実装している時間よりも、フレームワークのソースコード読んだりして調査している時間のほうが長いのです。 一行も書かなかったら不具合ないから無駄に不具合修正に時間を取られなくなるわけです。
誰かがすでにやっているなら、僕がやる必要はないのです。自分がしなくていい実装(仕事)は無理にしなくていいのですよ。