日本人の気質とITって合わないのかな、と思います。
ウォーターフォール
日本社会って、上流から下流に一方的に指示が下るウォーターフォール式組織がほとんどで、どんなにばかげたことも上流が決めたことはそれに従う必要があるため、上流が間違っていると大惨事になります。
日本のIT業界って、「デスマーチ」とか、「短納期地獄」とかいわれるんですけど、当たり前といえば、当たり前で、上流が請けてきた仕事をひたすら下請けに流して行って、仕様変更があると、すべてが変更されるので、どんどん呼び工数が失われ、納期が詰まっていきます。
自動車業界のように上流が大日程をしっかりしていて、きちんと個別納期管理できていれば良いですが、IT業界のように、元請がとって来た仕事が顧客要望にしたがって、柔軟に提案を変えていかなければならない業界だと、仕様変更があるたびに、下流に行けば、行くほど、地獄絵図になるわけです。
アジャイル
世界標準はアジャイル式で細分化された小さなチームでPDCAを繰り返していくので、上流で仕様変更があっても、変更が必要なチームだけがそれに対応して、そのほかのチームは関係ない、というやり方をしますし、バグはアップデートで改善していけばいいでしょう?、という感じなので、無茶はしません。
これを日本人は苦手としています。上からの命令に絶対的に従ってきたオヤジ達はそれを下にも求めるので、下の人間は実態に合わない上の命令を受け入れた上で、何とかすることが求められるため、滅私奉公して、何とかしてその場を取り繕う形になってしまうのです。
また、会社に与えられた人員、予算で上の命令に従って仕事をするのに慣れているため、仮に自由が与えられても、どのようにチームを管理して良いのかわからないでしょう。自分の人脈で必要な技術者を揃えたり、チームの予算、労務管理をしたことがある日本企業のマネージャーってほとんどいないでしょう。
スピード
もはや、IT時代であり、スピード勝負になっているので、ウォーターフォール式を維持していると、それだけでかなり大きなハンデを背負っているといえます。営業にしても、自分で決済できないので、持ち帰りをしているうちに決裁権を持った人間が直接来る外資に持っていかれますし、上流設計もミスを恐れて、オーバースペックになり、コストがどんどん上がっていきます。
「インフラ輸出だ!」っと、日本は安部首相のトップセールスで、新興国に新幹線などを売ろうと頑張っていますけど、日本企業がウォーターフォール式を維持しているうちは競争力がありません。円借款があるから、何とか受注できるだけで、何もなければ、まともに取れないくらい高い、遅いんですよね。円借款を踏み倒されたら、我々の税金から補填されるだけです。
まとめ
書いていて嫌になるんですけど、オヤジ社会は日本を蝕む癌みたいなもので、これがぶっ壊れない限り、日本の復活はないでしょう。名門野球部で暴力指導が平然と行われているように、日本企業ではオヤジ論理で若者を食い物にします。徐々に変わってきてはいるけど、遅いんですよ。それ以上に世界は急激に変化しています。
監督が三年生を殴って指導、三年生が二年生を殴り、二年生が一年生を殴る、というような負の連鎖が止められなかったPL学園は廃部になってしまいましたが、緩い上限関係の大阪桐蔭は成果を出しています。でも、日本企業は3学年しかいない、新陳代謝を常にする組織ではなく、何十年とその組織にいるおじいさんが権力を握っているのです。
製造業でもあるのですが、ウォーターフォール型で仕様と納期だけ元請が決めて後は派遣エンジニアの偽装請負で扱き使うのが日本でITが敬遠される理由ですね。
仕事の出来が良くないと文句言われるのと品質にも厳しいのでバグがあると責められますね。
そうなってくると、日本にITで国際競争に勝てる会社が現れない、ということになります。時価総額上位企業にITがないって、どうなんだろう、と思います。ソフトバンクを抜くと、次は40位程度のヤフージャパン、70位程度の楽天ですからね。アメリカのアップル、グーグル、フェイスブック、アマゾンなんかと比べられません。
英仏独もそれほど巨大IT企業があるわけでもないので、仕方ないといえば、仕方ないですが、日本ほどIT軽視もしてないと思いますね。
シン
オヤジ社会って本当に根深いです。
私の勤める会社はITバブル以降に拡大したので年齢層の構成は比較的若く、いわゆる老害的な世代の人は殆どいませんが、なぜかしっかりオヤジ社会を形成しています。
40前後でも率先して鬼軍曹を頑張る人もけっこういます。
氷河期世代で会社に依存する馬鹿らしさをわかっているはずなんですけどね…
とっくの昔に終身雇用は崩壊しているのに、ただ悪習だけが根強く残っているように思います。
あらためて個の力を高める重要性を感じます。
若い世代は年々ハードになり本当にかわいそうですが、せめて自分の子供には実益ある教育して、個の力を高めて欲しいと思ってます。
氷河期世代は会社に尽くして、ボロボロにされた人を見てきたわけで、馬鹿らしいことはわかっているのでしょうが、考えるとしんどいので、考えるのを放棄して、会社に依存しているのかな、と思います。DVにおける共依存みたいなもので、お互いに良くなくても、同じ関係を続けてしまうのでしょう。
今の若い人は個の力をつけて、メンタルを鍛え、武器を身につけて、他人に依存しない生き方を模索しないと、年をとって、後ろから切られてから、自分のおろかさに気づいても、取り返しがつきません。
シン
アジャイル開発ってハードウェアにも有効なんでしょうか?
産業用ロボットの製造業を例えにとると
営業→設計打ち合わせ→設計→加工→組立・制御→調整→納入となるわけですが
これを効率化するには営業と設計打ち合わせを同時に(同じ人で)行うくらいしか思いつかなく、それ以外の流れはこのままでいくしかないと思います。これもウォーターフォールに入りますかね?
dw さん
確かにアジャイル開発手法はソフトウェア開発に最適化されたもの、というよりもともとその為に考案されたものなのですが、ハードウェアにもある程度有効です。
以下のサイトがわかりやすいかと思います。
https://redshift.autodesk.jp/agile-manufacturing/
アジャイルを早期に導入しなかった為に日本の製造業が立ち遅れているのは事実です。
例えば、三菱重工が現在開発中のMRJ。
さんざん納期を延期した上に、今頃になって電気系統設計に問題がある事や、FFAライセンス取得に関するプロセスを1から見直し(アメリカでやり直し中)する為、それら専門技術者を海外からかき集めているという始末です。
全ての延期原因は、三菱重工が旧態依然とした典型的なウォーターフォール型開発手法を取っていたからです。
しかもこれって国家プロジェクトなのだそう。。。
dwさんの文章中
営業→設計打ち合わせ→設計→加工→組立・制御→調整→納入
とありますが、最初の営業という概念をまず取り払うことが大事です。
設計打ち合わせの段階に、営業、設計担当者、現場技術者が共同で意見を出し合い、優先順位を決めていき、優先順位の高いものから、チームを編成、いくつかのチームに分け、それぞれの役割を決める。
その際、リテレーションのタイミング 例えば2週間毎 もしくは 1ヶ月毎に進捗状況をチーム毎で発表、共有し、テストもしくはシュミレーション可能になった状態になったところで、テストを行い、不具合が見つかったり、調整が必要な場合は、次のリテレーションへ持ち越す。こういった一連の流れの全体像をプロジェクト責任者が可視化する ということがハードウェアにも有効ではないかと思います。
からりんさんのコメントを待ってました!
私も同じように思っていたのですが、私ばかりがコメントしても面白くないので、アジャイルはハードにだって適用できることをアメリカにいるかりりんさんにコメントしてもらいたかったんです。
ハードであっても、受注段階どころか、プレゼンの段階で要素を分けてPRして、受注が決まったら、各専門家同士で注意事項をしっかりと話あい、小さなチームでトライアンドエラーを繰り返し、その都度、顧客にフィードバックしていけばいいと思います。
三菱航空機なんかは今更そんなこと言っているの?、というようなことが何度も発生して納期遅れしているんですが、これは技術のわからない営業が窓口になって、フォーターフォールしているからでは?、と思います。事務局は必要ですが、全部まとめて報告するのでなく、専門家同士のチームで直接細かい報告をやりあわないと、あれが漏れている、これが漏れている、となるでしょう。こんなことしてれば、赤字の垂れ流しになります。
シン
かりりんさん
私の知り合いに技術営業の人がいてSIerだという人がいますが、確かに理工系の学校を出て、多少は技術の素養はあるにしても全くコードを書いたり、実務をしないそうですが管理職でないのにそんな人じゃ営業にならないのでは?とも思います。
生産技術にはその手の人はいますが、設備導入の立合い、他の工場の実績や問題点の把握、サンプルで実験をしたり営業でも技術の根幹に触れます。
ニコさん
確かに日本のSler には多かれ少なかれ実務開発経験のない人がプロジェクトマネージメントしている人が多いです。これについては https://nururi.com/system-engineer/ こちらの記事で既に記述されていると思います。元請がアジャイルを導入し始めると、Sler のような中間マージンを取るような会社は人員整理 もしくは存続自体が難しくなっていくと思います。ですので若い方にはIT系会社に就職したから安泰という考え方は危ういです。
そもそも開発経験がないのに’技術職’とタイトルをつけるのは日本くらいなものだと思います。
そういうことやってる事自体、プロジェクトに欠かせないプログラマー、DBA、システムエンジニア(実際にUnix/Linux/Windows系サーバーの導入、カスタマイズ、必要に応じてスクリプトを書く人たちを指します)、ネットワークエンジニアをないがしろにする風潮になるので私は悪徳だとすら思っています。
アジャイルを導入すると、目に見えて 誰が必要で 誰が必要ではない(いなくても問題ない)ということが顕著化してきます。思うに日本がアジャイル後進国となっているのは、中間マージンを取るSler や元請、下請け非開発経験者の小さな利権を守るためにそうなっているんだろうと推察します。
そのために日本の国力自体が落ちています。
またシンさんの https://nururi.com/system-engineer/ こちらの記事中の
>実際に簡単なプログラミング言語さえ覚えれば、誰でも出来るのは事実です。
この部分が気になりました。
多くの日本人、非開発経験者や営業も同じ事を言ってます。
この考えが根底にあるから、日本はIT軽視する文化になってしまったんだと思います。
私はその言葉を聞くたびに 簡単?じゃお前がやってみろ!と何度も言いたくなるのを抑えて、今までやってきました。ここでは本音を言わせていただきますよ 笑
こういってる人たちに、実際にやらせてみると、最初から壁にぶち当たり、結局できない 自分には向いていないとさじを投げる人がほとんどなんですよ。結局 理解できないんですね。
アメリカではプログラマーはナースと同様、日本とは真逆で非常に尊敬され、待遇も厚いです。
なぜか? 必要不可欠で変わりはなかなかいないからです。
ジュニアプログラマーでも使えるようになるには3年かかります。
しかもその3年の間に、プラットフォームや主流プログラム言語がどんどん変わっていきます。
これがシニアレベルになり、しかもそのプロジェクトに特化した製品に精通しているとなると、変わりはなかなかいません。シニアプログラムがいなくなると、プロジェクト自体が頓挫せざるを得ない自体すら発生します。
繰り返し言います。
プログラミングなんてちょっと勉強すれば誰でも出来る。
この考えが日本のIT軽視 ひいては ソフトハウスのブラック化、ウォーターフォールから抜け出せない要因ではないかと私は思っています。
反論をお待ちしています 笑
全くだと思います。
日本ではウォーターフォールなので、仕様がガチガチに決まったコーディングをするなら、基礎のない人でも出来てしまうということです。実際、関連学位を持ってないITエンジニアはザラにいます。程度のことを抜けば、文系出身のお姉ちゃんが簡単なコーディングくらいは独学で覚えて使っていることはそれほど珍しくありません。
これはCADデザイナーと似ていて、パートのおばちゃんがそこそこ上手かったりしますし、センスさえあれば、なんとなく興味があるうちにそこそこできるようになるんです。
でも、全体とのバランスを考えながら、構造計算までして、設計をするなら、基礎知識は絶対です。ここの部分を日本では元請けがやっているので、元請けは偉そうにして、単なる設計者が舐められるんです。
アジャイルだと、元請けという概念がないので、小さなチームでやり切る必要があり、単にコーディングだけ、設計だけするわけにいきません。だから、根本的な考え方を変えないと、日本はウォーターフォールから抜けられないのだと思います。
シン
>>こういってる人たちに、実際にやらせてみると、最初から壁にぶち当たり、結局できない 自分には向いていないとさじを投げる人がほとんどなんですよ。結局 理解できないんですね。
まさにおっしゃる通りでした。大学時代に何となくコンピューターサイエンス専攻なんて将来性がありそうだなぁなんて思い、試しに選択科目で数クラス受講してみたのですが、C++をちょっと齧っただけで「あ、向いてない」と思い早々に撤退・挫折、方向転換しました。
同じ動作をさせるプログラムを書くにも、自分の冗長なコードと比較して、適性のあるクラスメートのコードははっとするほど簡潔で整然としていたのを思い出します。
記事には関係ないですが、過去に尊敬する元上司が常々「考え抜かれたアイデアほどシンプルだ。複雑な事を難解にしか説明できないのは、まだ物事の核心に辿り着いていないという事。」とよく言っていました。
どの分野でも才能のある人や職人レベルまで技術を尖らせた人の仕事は、無駄な部分がなく均整が取れており、何だか美意識のようなものを感じ感心する事があります。
ここにしかぶら下がれなかったので、コメントが上下してしまいますが、ここに追コメントさせていただきますね。
しゅうまいさん、確かにプログラムは書いて、動けばいいというレベルであればある程度の勉強で、これは独学でもある程度は習得できると思います。ただ、やはりこれで食っていくとなると、洗練されたコーディング 並びに サーバーの負荷をいかに軽減できるか?ウェブ系ならRDBMSにするのか?Memcache の方が良いのか?APIをどう活用するのか?その際セキュリティ上問題ないのか?こういった事を常に意識してコーディングしていきます。おっしゃる通り、コードは簡潔で短い方がよく、またフレームワーク(オブジェクト指向には欠かせないもの)をいかに最大限に活用できるか?等、ただコーディングできればいいというレベルではありません。DBやセキュリティ、サーバーにも絡みますので、プログラミングの知識だけでもダメなんですね。
私が学生の頃(大昔の話です 笑) 最初に齧ったのはBasic でした。その後、COBOL, FORTRAN, C言語、Java, C++, C#, Perl, PHP, Ruby とこんな感じで時代と共に、必要に応じて仕事をしながら習得していった感じです。私も何度も壁にぶち当たり、さじを投げたくなったこともあります。
一番苦労したのは、オブジェクト指向プログラミングが出たあたりでした。
今でも3年先、5年先を見越した技術習得の励んでおりますし、ITの世界は変化が早く、しかも競争も激しいので時々’なんでこんな職種を選んでしまったのだろう’と思うことがあります。
ただ、最近は自宅からリモーティングで作業できるようになったので、通勤時間を差し引いた時間分、自由度が高くなりましたし、ランチ時間にはペットの犬のお散歩もできます。時々、ミーティングでオフィスに顔を出さねばならない時もありますが、頻度はそんなに多くないです。
適度な縛りがあって、ストレスフリーな今となっては、やはり自分が選んだ道は正しかったんだろうか?
そもそも正しいとか誤りとかっていう考えは捨てて、今が幸せかどうか?すべてはそこかな?等と考えます。
すみません。。自分語りになってしまいました。
そういえば、前いた日系会社で、非開発経験者であった管理職レベル、営業は、管理職タイトルを剥奪され、窓際に追いやられたそうです。その分、給与も下がったため、家のローンが払えなくなったと言っているそうです。その中にはかなりな上から目線で、ITを目の敵にして、パワハラ全開の営業管理職も含まれています。私もその人たちにはものすごく迷惑でした。彼等のせいで、転職していった優秀な技術者がたくさんいます。優秀な人ほど市場価値は高いので、すぐに転職先が見つかります。それも給与アップ+高待遇で引き取られていきます。そうするとその企業自体の力が弱まります。これが今の日本にも当てはまるのではないでしょうか?
日本もアジャイルになるとITエンジニアの地位が上がるだけでなく、かなりの勉強を要求されるでしょう。ウォーターフォールだと、元請けが仕様を決めて、下請けはそれに従ってコードを書くだけになるので、そこまで難しくなくて、単に度々変わる仕様について行くためにデスマーチをする辛さがあるだけです。
コーダーもデザイナーなんかと同じで、学力とは違う才能なので、シンプルで深いコードをかける人は貴重です。そういう才能のある人がアメリカに行ってしまうのは残念ですけど、日本のオファーが馬鹿げたものだから、仕方ないです。
決められた通りに単に動くだけのガチャガチャしたものなら、独学でも出来ると思います。恥ずかしくない程度のデザインなら絵心が多少あるなら、誰でもかけるのと同じでしょうね。
日本は取り返しがつかなくなる前に痛い目にあったほうがいいです。もう一度、アングロサクソンに蹂躙される前に立て直すべきです。
シン
かりりんさん
返信が遅れてすみません。ご回答ありがとうございます!自分の中で考えるのに時間がかかってしまいました。
例えばロボットを作る製造業ですと、第一段階のテストのときは、シミュレーションソフトなどを使うのでしょうか?
実物である程度かたちにならないと、不具合などが見えてこないと思っていて、そして製造業だと実物である程度かたちにするというのは、ウォーターフォールのかなり下の方に位置すると思うのです。
dw さん
どう返事しようかと考えておりましたので、お返事が遅れてしまいました。
当たり前といえば、当たり前かもしれませんが、どうしてもウォーターフォールの考えが根本にあるようで、なかなかイメージするのに苦戦されているように見受けられます。
確かに製造業ではある程度かたちにならないと不具合が見えてこない、だからアジャイルは製造業とは相性が良くないと思われていましたが、アメリカや欧州の製造業ではここ数年、どんどんアジャイル化が進んでいます。
これにより大幅なコスト削減、売上アップを発表している企業は結構ありますよ。
アジャイルといっても完全なソフトウェア業界と同じアジャイル式ではなく、製造業ではハイブリッド・リーン/アジャイルという方式が良く使われているようです。Lean は日本ではトヨタ自動車がこの形式を取っていることで有名だと思いますが、さらにアジャイルを組み合わせた開発方式のようです。
テストがある程度出来るようになるまで、テストが出来ないというのは製造業に限らず、ソフトの世界も同じです。
ただ、アジャイルではストーリーに沿って優先順位を決めていき、優先順位の高いものから開発に着手します。
ストーリーとは、例えば、私(顧客)はここはこういう風に動くようにしてほしい。見た目はこんな感じ。という要求があって、顧客目線でストーリーを作っていきます。仕様とはちょっと違うんですね。
そうすると 動くようにしてほしい -> この部分は技術・製造・IT部門等
見た目はこんな感じ -> デザイン部門
大まかに2つのストーリーと 2つのチームが出来ますよね。
更に 動くようにしてほしい -> ロボットのどの部分のことを指しているのか?
これにより ロボットの部位によりチーム分けが出来たり、部位毎の優先順位が決まっていきますよね?
このような優先順位付けを顧客目線からストーリー毎に決めていく。
これを顧客、技術者、デザイナー、営業 全ての部門の人が集まって決めていきます。
優先順位が低いものや、主要な部分ではないオプションの部分はプロダクトバックログにとりあえず置いておきます。部位毎に並行して、開発、テストを繰り返します。顧客に見せるのは大体70%くらいの完成度のあたりで一回見せます。そこで更なる顧客からの要求がある場合、それが不具合によるものなのか、要求漏れなのかが分かるはずです。これにより、ウォーターフォール式より、早い段階でアクションが起こせますし、納期短縮にも繋がります。 ちょっとこまごまと具体的に書きましたが、あくまで一例です。
あとはDWさんで試行錯誤して、DWさんの会社の製品開発部門に適正なカスタマイズ等、考えてみてください。
かりりんさん
ウォーターフォールだと元請けが完成品を要求するのでむやみやたらに書類やチェックシートなるものを記入させたがるんですよ。
それが数字を入力したら構造計算をするようなシートならいいのですが大半が仕事を増やすためのものです。
元請けが仕事の内容を把握してチェックしたり、改善点を指摘すれば解決できて書類は構造計算のエクセルシートでいいと思うんです。
ニコさん
おっしゃる通り、日本では仕事の為の書類作りなど無駄が多いですね。
これは文系天国時代の悪習慣の名残だと思います。
ちなみに私の会社では、クラウドで書類のシェアをしています。
アクセス権を持っている人であれば、誰でも閲覧できます。
例えば Google Cloud Platform
日本語で採用事例(企業別)があったので、ここにリンクしておきます。
https://cloud.google.com/customers/?hl=ja
うちの場合は、アジャイルはアジャイル用の別途ツールを使ってます。
全てデジタルです。
日本の旧態依然としたウォーターフォールをなくすには、
まずは元請だから、下請けだから
という壁を失くすことにありますね。
難しいとは思いますが、これからアジャイル導入事例が増えていけば、
それに追従することでもっと増えていくと思います。
それだと遅いんですけど、遅すぎない事を祈ります。
日本企業って過去の事例がないと動かないとかありますね。
でもアングロサクソンの猿真似は得意なはずです 苦笑
DWさん
直接は関係ないかもしれませんが、アメリカでは中学校や高校で Robotics がクラブ活動だけにとどまらず、
授業でも採用されるようになりました。
それに加え Robotics Competition
(世界中の高校や中学のロボティックスをチーム毎に戦わせる大会)
に向けて、ここでもアジャイル手法を用いての実験等が盛んです。
私もロボティックス・クラブの見学などには行く機会があり、
学生達が本当に楽しそうにロボットを開発したり、テストしたりしている様子を見て、羨ましくなりました。
残念ながら、ロボティックス大会には日本の学校からの参加はほぼ皆無。
2016年時点でたったのロボティクス2チームしかないですね。
アメリカは2682チーム
参考:https://en.wikipedia.org/wiki/FIRST_Robotics_Competition
学生時代からロボット開発にゲーム感覚で触れ、新しいアイデアをみんなで出し合ったり、
そういうことは実社会でも役に立つと思うので、日本でももっと盛んにやればいいのにと思います。
かりりんさん、シンさん
ありがとうございます。
日本ではアジャイル式はまだまだ難しいですね。
私の経験ですが、エンジニアをしているときに60点主義で納期前出しで内容を親会社の上司に提出して修正して納期に間に合わせる仕事のやり方をしてたのですが、それだと親会社から仕事に対する真剣さが足りないと思われてしまい職場を追い出された経験があります。
子会社の人が実務をやって、親会社は表面的な仕事しかしないので納得ができないことが多いし、少なくとも研究開発以外はどの部門もそんな感じです。
元請けから言わすと、自分たちは全体を通して仕事をしているわけで、実務は下請けにやらせている、実務は知っている必要がない、というのでしょう。実際、全体の計画に狂いが出たら元請けがやられます。だから、責任の所在が曖昧で、素人仕事になってしまっています。
シン
ニコさん
そうですか。ニコさんはアジャイル的な先進的な考えを実践していたのに、それがマイナス評価となってしまったのですね。
それではトラウマになるかもしれませんね。。。
難しいかもしれませんが、序々にアジャイル式を導入している企業が日本も増えてきています。
近い将来、ニコさんのような柔軟性を持った方が台頭する日がくるかもしれないので、めげずにがんばってください!
日本でアジャイル式と同じことをやるなら組織や部門を細かくして、管理職がプレイングマネージャー化するしかないですね。
ウォーターフォールで下請けや派遣に頼ると非常に優秀な派遣さんやフリーランスで食えるエンジニアに丸投げになりますね。フリーランスと元請けで銭闘になっている様子を何回も見ました。
設計でも知財でも親会社の天下りや再雇用制度で受け入れてますが、今までやらせるだけだったのに実務の工程は大変だし、勉強しなきゃいけないとか言ってました。
できない人は居心地悪くなって辞めますね。謙虚な人はしっかりやります。
日本はITと相性が悪いなと思ったことがありました。
会社であるソフトのあまり使わない機能のショボいバグに対して血の気の多いオッサンがこんな不良品は呼び出しだとかクレームを投げてたのでこれだとスピード感ある開発ができないよな~って思ってしまいましたね。
ソフトの会社の考えでは、みんなで使ってバグや使いにくさを改善しましょうというスタイルなんですがアジャイルを否定されたらどうしようもないですね。
自動車ではその品質が売りになりましたが、ITでは完全に悪い方に出てますね。
まずは適当でも納入して、アップデート対応にしないと、入り込む事すら出来ません。
日本のおっさん達はアジャイルを嫌がりますが、そうすると自らの仕事が無くなるというのもあるかも知れません。