激しく働けない空気感があって、かなり嫌。
タイトルの通りなんだけど、
なんか
激しく働けない空気感があって、かなり嫌。
確かに、ほぼ休みがない状態で、自分でコードを書きながら、足元PJを10件とか走らせているのは頭が悪いのかもしれないし、普通の新規の案件の営業も、お客さんとの打ち合わせも、インターンの採用も、会社の決算もやっているのはおかしいのかもしれない。
ただ、普段いるコワーキングスペースで、白い目で見られるのも、「◯◯さんは、仕事と結婚しているね」と言われるのも嫌。
ちゃんと考えると以下の理由で激しく働いている。
1.一番はじめに働いた時からこのくらい働いていた(働かせられていた)
2.自分の頭の中にあることを形にしないと気が済まない
3.時間があったら、仕事をねじ込んでいる(もしくは新しいことが思い付く)
4.エンジニアとしてちゃんとしたレベルになりたい(シリコンバレーの普通のエンジニアの給料は年収2000万とか言うからそのレベルになりたい)
これらが前提で、
そもそも自分がある程度イニシアチブを取って、自分の頭の中にあることをやりたいと思っている。
そのためには、自分より一回り年上の人達(37才~47才くらいの方々)と仕事する必要があるとも思っている。
が、この人達は自分よりも一回り分働いた経験がある訳で(時間にすると余裕で1万時間は超える)この人達と同じレベルで仕事をするにはそれ相応のことをしないといけないと思っちゃっている。
逆に、
労働規制がかかってあんまり働けなくなると(今も既にそう)、1年上の先輩を追い越すのでも相当難しいと思っていて、そうなると大企業はますます年功序列にしかならなくなって、自分がイニシアチブを取って仕事ができるようになるのは普通は30代半ばくらいになると思っている。
なので、自分より若い世代は可愛そうとも思う。絶対的に上と戦えないし、若いうちにゆるーく仕事をしていると絶対に今後激しく仕事できないと思うから。
ま、足りないことがたくさんあるから精進するのみ。
DXについて解説してみようと思う。
2018年にIT業界が新しく誕生させたバズワードでDX(デジタルトランスフォーメーション)。
ずっと
「それってIT活用じゃん!」
と思っていたので特に何も考えてなかったのですが、もう何もネタがないIT業界にサバイブしている人間として、ちゃんと考えてまとめておきます。
まず、DXはIT用語ではなくて、ビジネス用語であり、ビジネスサイドの方々がよーく理解すべき用語であると思ってます。
(因みに、私の定義だと、ホワイトワーカーは、3種類しかおらず、エンジニアもしくはデザイナーか、ビジネスサイドしかいないです。)
DXとは以下だそうです。
「企業が外部エコシステム(顧客、市場)の破壊的な変化に対応しつつ、内部エコシステム(組織、文化、従業員)の変革を牽引しながら、第3のプラ ットフォーム(クラウド、モビリティ、ビッグデータ/アナリティクス、ソ ーシャル技術)を利用して、新しい製品やサービス、新しいビジネス・モデ ルを通して、ネットとリアルの両面での顧客エクスペリエンスの変革を図る ことで価値を創出し、競争上の優位性を確立すること」
なんのこっちゃ感が半端ないのですが、
これはビジネスモデルについて述べていると考えるとわかります。
そこでちゃんと理解しないといけないのが「バリューチェーン」ならぬビジネス用語になります。
これを提言したのは、マイケルポーター先生です。
以下↓有名な図。
僕の理解はとても雑で、大学の講義で聞いた
「ダイヤモンドが地中に埋まっている状態ではほぼ価値がなくて、そこから取り出してはじめ価値がでます。それを加工工場の精製ラインにのせるとさらに価値が増し、そして指輪の上にのせると数十万の価値になり、はたまたそれを使ってプロポーズに成功したらプライスレスになるといった具合で、価値は時間や場所と共にのせれることをさしている」という説明。
要は、そのものの価値は、ある場所と状態とステークホルダーによって変わっていくことだと認識してます。
ここで、DXに戻るのですが、
「このバリューがほぼデジタル上に提供される世界感でビジネスをどうやる?」と問われているのがDXです。
しかしながら、ここでDXとして出てくるのがアジャイル開発やクラウド活用なのですが、それ自体が主になることはありえません。
◯◯だから、クラウドを使おう。
◯◯なので、アジャイル開発をしよう。
この〇〇が明確にないとおかしいです。
そしてこの〇〇がちゃんとエンジニアに浸透していないとおかしいですよ。
まとめると以下、
1.DXとはIT用語ではなくビジネス用語。バリューチェーンがほぼデジタル上でのっかてくるこの時代にあなたは何をするかを問われている。
2.バリューチェーンの大半がオンライン上にのっていると仮定すると、ガンガン新しいものを作って、バンバン改修していかないとダメ。その際に、クラウドを使う、アジャイル開発するってのは当たり前じゃね?
3.ガンガン新しいものを作って、バンバン改修する開発環境だと、エンジニアにメール書かせたり、経費生産させたり、よくわからない研修受けさせてる場合ではなく、「ビジネスサイドとのコミュニケーション」と「ビジネスサイドとのコミュニケーションとビジネスサイドのコミュニケーション」、はたまた「ユーザーとのコミュニケーション」が必要ですよ。
システム開発において必要な”システム開発以外のこと”を書いてみる
私は、ITエンジニアであり、主な仕事はシステム開発である。
正直、システム開発は、他の開発されているものの多くと同じように「絶対に開発できる方法」ある。(自動車を開発できる方法が確立されていなかったら困るだろう。)
しかしながら、どんなにマニュアルや作業手順を作成したとしてもそこから漏れてしまうことがある。それを書いてみようと思う。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
まず、私の仕事やビジネスの捉え方は以下である。
半分が運であり、残りの半分以上が体力と健康で、スキルが必要なものは残りの部分だけである。
運は、明確に良くすることができるので積極的に運を良くするべきだと思う。
細かい内容は本書に譲るものとして、法則自体は下記である。
法則1 チャンスを最大限に広げる
①運のいい人は「運のネットワーク」を築き、それを広げている。
②運のいい人は、肩の力を抜いて生きている。
③運のいい人は、新しい経験を喜んで生きている。
法則2 虫の知らせを聞き逃さない
①運のいい人は、直感と本能に耳を傾ける
②運のいい人は、直感を高める方法を知っている
法則3 幸運を期待する
①運のいい人は、幸運が将来も続くと期待している。
②運のいい人は、たとえ可能性がわずかでも目標を達成するために
努力して、失敗してもあきらめない。
③運のいい人は、対人関係がうまくいくと思っている。
法則4 不運を幸運に変える
①運のいい人は、不運のプラス面を見ている。
②運のいい人は、不運な出来事も、長い目でみれば最高の結果に
なると信じている。
この本を知れて、私もあなたも運がいい。
次に、体力と健康である。
体力があれば、体力がない人に比べてたくさん働くことができる。
人間の能力の差異なんてたかがしれているので、たくさん働いた方がシステム開発は上手くできる。
ーーーーーーーーーーーーーーーーーーーーーーーーーー
仕事は、運と、健康と体力が8割を占めるが、一応他にスキルがあるだろう。
システム開発におけるスキルとは
1.お客さんと仕様が決めれて
2.スケジュールを作成し、それを実行でき、
3.コーディングができること
である。
それぞれについてTipsをあげる。
1.お客さんと仕様が決めれてるスキルに関するTips
・お客さんのお客さんが誰であるか考える
それが分かれば、お客さんとのコミュニケーションは、常にお客さんのお客さんが主語になるように話す。
例:「こういった機能を作るとエンドユーザは嬉しいと思うんですようね〜」
・お客さんの組織を理解する
お客さんが普段コミュニケーションを取っている人を考え、場合によっては根回しをする。
・お客さんに高校生がわかる言葉で喋る
・お客さんに忖度する
・お客さんの無茶振りに応える
2.スケジュールを作成し、それを実行できるスキル
・とにかく早く終わらせる
早く終わらせればその分余裕できる。
・スケジュールは自分の本気の3倍の時間を持って作成する
・見やすいスケジュール表を作る
・とにかく頑張る
3.コーディングができること
・とにかくアンテナを張りまくる
参考:ITエンジニアのスキル習得方法 ~特定の言語もしくはフレームワークを勉強する方法~
https://qiita.com/barcarunrun/items/8b730ff341c736361958
・ガンガン英語でググる
・とにかく手を動かす
知らないこと、できないことは考えてもできない。
・頑張る。帰らない。寝ない。
これらに足して最も重要なことは、以下の3つが絶対できるといった自信を持つことである。
1.お客さんと仕様が決めれる
2.スケジュールを作成し、それを実行できる
3.コーディングができる
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
最後に念を押すが、トラブった時に徹夜できるかでシステム開発が成功するかは変わるし、お客さんの機嫌といった運に大きく関わることによってシステム開発は左右されることをお忘れなく。
最近調子乗っていると思う。
有難い事に独立してから、案件が途切れる事はなく、全てが順調かは別にして、
昔からやりたかった事を資金調達しなくともできそうな感じになりました。
有難い限りです。ありがとうございます。
また、人がいないと言われるIT業界の中で、インターンではあるものの「十分じゃね???」と思うメンバーもいます。
こちらも有難い限りです。ありがとうございます。
そして、何より色々な方から相談されるようになっており、
大変、とても、マジで物凄く有難い限りです。
本当にありがとうございます。
参考:
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
さて、ここからが本題であります。
つまる所、調子に乗っている気がします。
事業をやる上で辛そうなこと、
例えば、忙し過ぎて寝れない、パートナーに裏切られる、支払いが遅れる、依頼した仕事が完了しない(そして、連絡もない)は全て経験し、
恐らく他に考えられるのは、詐欺にあって多額の借金を背負うのと、インターン生が一気に全員辞めるくらいのことしかないと思います。
がしかし、自分が稼いだことのある金額以上の金額を誰かに払うとは思えず、せいぜい詐欺にあって騙されても数百万、インターン君は辞める事を前提で採用しているので仕方ないと言えば仕方ないです。
つまる所、今後どんどん調子に乗る気がしております。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
さて、人間が調子に乗るとどうなるか知りませんが、世界の天才達と一緒に仕事をするならばこんなレベルで調子にのっているわけにはいきません。
って事で、Hard Thingsな案件お待ちしております。
得意なことは、
炎上案件の巻き取り、
保守できないくらいまで大きくなってしまったシステムの整理、
実現できるかわからないことの技術調査です☆
引き続き何卒どうぞよろしくお願い申し上げます。
AIって何ができるの?(2019年夏)
孫さんにAI後進国と言われてしまって悲しいので現状AIで何ができるのかまとめておきます。
-----------------------------------------------------------------------------
まず、まとめるにあたって人間の脳がどのようなことをしているのか考えて見ましょう。
人間の脳は基本的に五感である視覚、聴覚、味覚、触覚、嗅覚をインプットに体に対して命令を出しております。
例えば、視覚で車が走っているのを見てダッシュして避けるや、他の人がしゃべっていることを聞いて喋る(口を動かす)等々です。
さて、ここで重要なのは、コンピュータはこの五感のうちどれは取り扱えるかということです。
現状では、視覚、聴覚が限界です。
すなわちAIは人間の視覚と聴覚を元に行なっている何かであればできる可能性があります。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
次に、人間が実際にやっていることを考えて見ましょう。
その中でコンピュータができることは、何かを見せること、音を鳴らすこと、ロボットを動かすことはできます。
すなわち、AIはどんなに頑張っても現状では、
視覚、嗅覚をインプットに、何かを見せること、音を鳴らすこと、ロボットを動かすことしかできません。
逆に、ある程度の元になるデータがあれば、あるデータからあるデータを予測することはできますし、かなり汎用的にロボットを動かすこともできます。以下に例をあげます。
あるデータからデータを予測できることの例1
(DataRobot)
あるデータからデータを予測できることの例2
(MutoMLTables)
Using AutoML Tables to Transform Your Business
汎用的にロボットを動かすことの例1
(AmzonRobotics)
Watch an army of robots efficiently sorting hundreds of parcels per hour
汎用的にロボットを動かすことの例2
(Boston Dynamics)
Boston Dynamics: New Robots Now Fight Back
-------------------------------------------------------------------------------------
さて、ここで問題になってくるのは、どのくらいの費用でできるのかだと思います。
こちらをズバッと説明するにはだいぶ力不足なので具体例をあげて説明します。
まず、Googleが公開しているAPIで下記のようなものがあります。
こちらはエンジニアであれば誰しもが使えるようなものなので、かかる費用は実質エンジニアがアプリケーションを少し改修するコストだけです。
・Vision AI(画像分析)
・Video AI(動画分析)
・Translation API(翻訳)
・Cloud Text-to-Speech(テキストの読み上げ)
・Cloud Speech-to-Text(文字起こし)
次に、汎用的ではない自社でしか保持していないデータを使う場合です。
そのような場合は前述しましたが、DataRobotやAutoML等(上記参照)があるのでここ数年で劇的にコストが下がったと考えて頂いて全く問題はなく、ある程度のデータ量(※1)と、そこそこちゃんと勉強しているエンジニアを2~3ヶ月も使えばそれらしきものはできます。
また、論文ベースであれば、料理画像を元にレシピを書くだとか、動画のデータを元にその内容を記述するだとかが研究されております。
参考3 Using AI to generate recipes from food images(画像からレシピを作成)
参考4 有名な学会のまとめスライド
しかしながら、先ほど例に出したこちらは人類は月にいけるレベルの話だと思ってもらっていいと思います。
Boston Dynamics: New Robots Now Fight Back
(もはやAIの話ではなくロボットの話としても劇的にすごい)
------------------------------------------------------------------------------------
さて、ここに少し個人的な考えを加えておきたいと思います。
私が直接聞く話でAI関連の話は以下の3つに分類されます
1.「すぐできるので、すぐやりましょう!」
2.「それはたぶん相当難しいので無理です」
3.「それはできるけど倫理的にどうなの?」
まず、1は内容の通りです。
既にまとまったデータがありそのデータの一部を予測する、画像からその画像のラベルを出す、翻訳する、この辺りはもうすぐにでも実装可能です。
ガンガンやりましょう☆☆☆
次に2のパターン。
それは相当難しいですよってパターン。
例えば、
AIが今その人が何を食べたいか予測してその料理レシピをレコメンドする
(何を食べたいかという感情をどうインターネットにのせるか難しい)、
その人の好みの香りをAIが予測してぴったりのコーヒーをレコメンドする
(香りをどうインターネットにのせるか難しい)
何か方法はあるかもしれませんが現状ではまだ難しいです。
最後に3のパターンです。
これはとってもシビアなお話です。
一般的なニュースになっている話だとDeepFake(もしくはDeepFace)とどう付き合うかは個人的は原爆とどう付き合うかくらい難しい問題だと思います。
DeepFakeとは?
You Won’t Believe What Obama Says In This Video! 😉
参考5:Fakeニュースがどのくらい問題かは下記をご参照ください
さらに問題になったのは下記の2つ。
(あまり詳細は触れません。)
・「Github is banning copies of ‘deepfakes’ porn app DeepNude」
・「グーグルの画像認識システムは、まだ「ゴリラ問題」を解決できていない」
https://wired.jp/2018/01/18/gorillas-and-google-photos/
そして最近日本でもリクナビが問題になりました。
「リクナビが就活生の「辞退予測」情報を提供――選考の「辞退可能性」も5段階で判定していた」
https://www.itmedia.co.jp/business/articles/1908/01/news154.html
技術的が発達し過ぎてそれを用いてビジネスをすることに対してどうすべきか、かなり高度な倫理観と内外的なガバナンスを敷いて取り組まないといけないと思ってます。
(実際に私は、かなり倫理的に微妙な内容のものを「バズるから作れば?」って言われて胸くそ悪くなったことがあります)
----------------------------------------------------------------------------------
なので、孫さんに後進国とか言われないようにAI,AI,AIと言っているだけでなく、高度なガバナンス能力を持った上で、ガンガン実装しましょうね☆
補足
※1 ある程度の量とは、各変数がとる値の種類数の掛け合わせ×2~3は必要とされております。
具体的には、婚活女子必見の男性のパーソナルデータから年収を予測するシステムを作ったとしましょう。
男性のパーソナルデータを、どこに住んでいるか(東京23区に限定)、働いている業界(10種類くらい)、働いている業種(10種類くらい?)、年齢(18歳~40歳)、学歴(4種類?)だとすると、23×10×10×22×4×2=約40万くらいあると十分だと言えます。(ただし、このシステムは倫理的にどうなんだ???)
今後エンジニアに必要な能力はこの4つ
今後エンジニアに必要な能力はこの4つ
(たぶん)
1.クラウドを前提としたDevOps
2.MLを前提とした最適化・自動化
3.愛を前提としたUI・UXの作り込み
4.全てを掌握するプロダクトマネジメント能力
順を追って説明します。
まず基本的なシステムの構成は下記です。
システムは、ユーザが見えるところを開発するフロントエンドエンジニア、ロジックを作成するサーバサイドエンジニア、データベースを設計・構築するデータベースエンジニア、インフラを整備するインフラエンジニアによって作られています。
どうせ作るならさっさと作って世の中に出した方がいいんじゃね???って感じでアジャイル開発及びDevOpsが発展してきました。
そのあと、ダサいシステムよりカッコいいシステムの方がいいに決まってんじゃん!ってことでUI/UXの概念が広まります。
そしたら、AIはなんかすごい!!!ってことで「AIだ。AIだ。AIだ。」祭りが開催されます。
AI祭りの横でクラウドが発展しすぎて、サーバなんていらなくね???ってなり各クラウドベンダーがサーバレスの機能をリリース。
AI祭りの横で、みんなよくAIのことわかってないから、単なる自動化にかっこいい名前(その名も「RPA!!!」)をつけて普及させようとしたら本当に普及しちゃった。。。
こんな流れを持って誕生したのが下記の構成。
ざっくり言うと、高速で開発してデプロイして、クラウドもコストのことを考えながらいい感じに使って、AIもRPAも使って効率化・自動化させて、UI/UXもめちゃくちゃこだわって作ってれば、システム開発はOKなんじゃね???
って感じになりました。
さて、落ち着いて考えるとシステム開発にこれ以上のことはない。
ここまで本当にできるかは別として本当にない。
そこでエンジニア達が考え出したのが「ビジネスへの貢献」である。
まず、意思決定を助けようとしてBIツールが発達、そしてデータサイエンティストという仕事も普及。遂にタブローは1.7兆円で買収されるまでにもなった。今後ビジネスのロジックがわかった上で意思決定がしやすいようにデータをいい感じにまとめる仕事はますます増えるはず。
そして、そして、おそらくまだまだ安定して高速で開発することは求められる。
(エンジニアとしてはダラダラできなくて辛い)
また、AIもまだちゃんと全然実装されていないし天才達がみんなやっているのでもっと全然すごくなるはず。
UI/UXも同じくwebの2Dの世界が3Dになるくらいまでは発達するはず。
そして、なんと言っても全部わかっている人が必要で全部いい感じにできる人は必要になる。
すなわち、以下4つスキルが必要です。(たぶん今後3~5年は)
1.クラウドを前提としたDevOps
2.MLを前提とした最適化・自動化
3.愛を前提としたUI・UXの作り込み
4.全てを掌握するプロダクトマネジメント能力(意思決定能力)
さて、みんな頑張ろう!
凄くないことを淡々とたくさんやりたい
仕事が少し落ち着いたので、最近思っていることをつらつらと書きたいと思います。
私は、働くことを考え始めた約10年前からIT業界について注視し、実際に今IT業界で働いています。
この10年のIT業界をざっくり振り返ると、スマホ、クラウド、ビックデータ、IoT、AR/VR、AI、ブロックチェーン、デジタルトランスフォーメーションといった具合かと思います。
もともと、数学を猛烈に勉強していたこともあり、ビックデータ・AIにとても興味がありましたし、今もあります。
AIを使った誰もが知っているようなサービスを作りたいと思っております。
しかしながら、ITエンジニアとして仕事をする上で大切にすべきことは、別にAIを使うことではないと最近常々思っております。
確かにAIというかDeepLearningとかMachineLearningを使ってゴリゴリの理論と実装で社会的な問題に取り組むには最高にイケていると思います。
しかし、AIを使わずしてもITを使うだけでできることはたくさんあると思っています。
例えば、スマホ対応していないWebサービスをスマホ対応させる、既存の検索機能を少しだけリッチにする、データを抽出してパッとグラフを描く、等々です。
これらは10年前の技術でできますし、ゴリゴリの理論も複雑な実装も必要ありません。
しかしながらITエンジニアとして生きていくにはこういった細かいことや面倒なことを避けず取り組んでいく必要があると思っています。こういう小さいな積み重ねによって世の中がよくなると思ってもいます。
AI使ってかっこいいこともやりたいけど、
10年以上前からある技術を使って、
凄くないことを淡々とたくさんやりたい。
きっと、なんでも淡々と早くたくさんできるITエンジニアは優秀なエンジニアなはず...
ーーーーーーーーーーーーーーーーーーーーーー
さて、以上はすべて前フリでして、
今まで全くと言っていいほど何もやっていなかったOSS的なことをやろうと思っています。
その第一弾として、スクリプトを埋め込むだけで表の中にある特定の数字に色をつけてカウントしてくれるコードを作りました。こういうのって大切だと思っております。
https://github.com/barcarunrun/tableChangeColor
(我ながら、凄くない!)
今後色々作っていくつもりでして、直近OSSでダイナミックプライシングのAPIおよび付随するECサイトを作る予定です。チェケラ!!