プログラマー卒業するのをやめた

## 簡単に自己紹介

* 40代後半
* 小学生の時にプログラムを始めて今に至る（途中ブランクはある）
* 会社員 -> フリーランス -> 法人化

元々はプログラマーを卒業しようとしていたしほぼ卒業してたけど、やっぱ卒業するのは止めようと思ったので、それについて書こうと思う。

## なぜプログラマーを卒業しようとしていたか
### 何かの事業をやるのに必要な3つの事

元々フリーランスの開発者だったのを法人化して、今は少数だけど開発者も雇っている。

受託開発だろうと自社サービス開発だろうと飲食店だろうと、何か事業をやろうとすると

1. アイディア・計画
1. 人
1. お金

が必要になる。正確には、事業を伸ばしていこうとするとこの3つが必要、なのかもしれない。

もちろん、事業の種類によってその3つの重み・比率は違う。

例えば、受託開発であれば「アイディア」と言うほどのものは必要無いかもしれない。ただ、計画などは当然必要となる。

同じく受託開発の例だと、1人でやる分にはお金はそれほど必要無いかもしれないが、チームを作ろうとすると少しずつお金が必要になってくる。お金を使わないでチームを作るとなると、人貸しのような仕事しか選択肢は無くなってくる。（詳細には触れない。）

### 3つを1人で賄うのは厳しい

そして、前述の3つを全て1人で担当するのは難しい。

* 自分で事業の計画・アイディアを考えて、
* 自分自身もプレイヤーとして動いて、
* そのための資金を自分自身で稼ぐ

ってのが難しいのは分かると思う。

ちなみに、開始するのが簡単な事業、参入障壁の低い事業というのは、その3つのうち1つか2つ、あるいは3つともあまり必要無いものである。同じ例を度々出して恐縮だが、受託開発は

* 「アイディア・計画」はそこまで必要無く、
* 「お金」も最初の段階ではほとんど必要無く、
* 小規模なプロジェクトだけ受注するのであれば「人」も自分一人で良い

ため、始めやすい事業と言える。

（若干余談だが、自分自身は受託開発も沢山やってきてその難しさや面白さなども沢山経験しており、それを軽んじる訳では無いが、それが自分で一番やりたい仕事かというとそうでは無いと言い切れる。）

### どこかで分業が必要

そのため、ある程度の規模の事業では

* アイディア・計画 -> 経営者
* 人 -> 労働者
* お金 -> 株主

と役割分担がされている。

事業の最初の段階では、3つを1人でやっている場合も多いが、大きくなるにはどこかで分業が必要となる。

ここまで書いて分かるかと思うが、自分はせっかく仕事をやるなら規模を大きくしたいと思っているので、そろそろ分業が必要だろうと考えた。具体的には「労働者」の役割のうち「プログラマー」として働く時間を減らして（※）、他の部分に割く時間を増やしてきた。

※: 「プロジェクトマネージャー」、「チームリーダー」の役割はあまり減らしてなかった。というか減らせなかった。

## なぜ卒業するのをやめたか
### ゲームチェンジャー

ここ5年くらいは、何とかプレイヤーとして働く比率を減らして仕事を大きくしようと試行錯誤していた（が、あまり上手くいってなかった）。

そんな中、ゲームチェンジャーが登場した。そう。生成 AI。

プログラマーの文脈で生成 AI がどのような影響を及ぼすかは後で少し書くが、エンジニアとしての経験・能力が高い人ほど恩恵を受けられると考えている。私は自分自身の事をトップクラスのエンジニアとは全く思っていないが、シニアエンジニアであるとは言い切れる。なので、生成 AI の恩恵を大きく受けている。

### 分業には労力・お金がかかる

前述の通り、事業を伸ばしていこうとするとどこかで分業が必要になる。

少し話は変わるが、プレイヤー経由でマネージャーになった人であれば「自分でやった方が早い」と思った経験が一度はあると思う。会社の仕事も同じで、自分でやった方が早い仕事はものすごく沢山ある。が、自分の体は一つなので、仕方なく（というと語弊があるが）他の人に任せている・任せようとしていた。

さて、過去に、こんなサービスを作ろう！と思ってやり始めた開発プロジェクトはいくつかあり、

* 最初は自分1人で作って、途中から他の人に入ってもらう
* 最初から他の人に作ってもらう

というどちらのパターンも経験したが、自分の場合は前者の方が開発という観点では比較的上手くいった。（事業という観点ではどれも失敗している。）

ただ、前者の欠点としては、とにかく時間を取られる。他の人をどのタイミングで参加させるかによって度合いは異なるけど、他の人を加えた時点でスピードが遅くなる（しお金も発生する）ので、やる事がある程度固まってきてから入ってもらわないと勿体ない。

そして、その「ある程度」に達するまで自分一人でやるには、かなり時間を割く必要があり、他の仕事もやりつつだとしんどい。

別の話として、自分はプログラマー出身なので開発関連は一通り出来るけど、それ以外は当然得意で無い。「事業」として考えると、ソフトウェア以外にも**最低限の**

* デザイン
* ウェブサイト
* 文章（使い方の説明やら宣伝やら）

が必要で、今までであればそれを外注する事も多かった。

### 「ある程度」を作るのが簡単になった

なぜ生成 AI がゲームチェンジャーだと思ったかというと、「ある程度」のものを作るのが**圧倒的に**簡単になったから。

今までも

* ソフトウェア: ノーコード、ローコード
* ウェブサイト: Strikingly、ペライチ等

といったツール・サービスを使えば知識が少なくてもある程度のものは作れたし、それで間に合わないものはクラウドソーシングなどで比較的安価に外注できた。

ただ、経験者は分かると思うけど、そうしたツール・サービスはちょっと手の込んだ事をやろうとすると、面倒なカスタマイズが発生するかそもそも実現不可能だったりする。あるいは外注を使った事がある人は分かると思うけど、外注を上手く使いこなすのはそれなりに時間と気力を使う。

それが、生成 AI により圧倒的に短時間でストレスなく同程度のものが作れるようになった。

例えば、以下の記事に書いた仕組みは

* WordPress プラグイン（★）
* Python (Flask) での API（★）
* LangChain を使った RAG の処理（★）
* AWS 上でのインフラ

などで実現されているが、使った事のあまり無い技術（★）が多いにも関わらず約1ヶ月でそれなりに動くものが出来た。今までなら多分2〜3ヶ月か、下手したら半年はかかっていたと思う。

https://qiita.com/k4200@github/items/543680bc805fcd62e043

で、このシステム自体は日本語限定じゃ無いので、海外の人も使ってくれたら良いなと思って、英語で紹介文章を作った。

[WP RAG – Enhance Your WordPress Site with AI-Powered RAG Capabilities](https://blog.mobalab.net/services/wp-rag/)

自分はある程度は英語が出来るものの、今までならこの文章を書くのに最低でも1時間はかかってたと思う。さらに、それを Upwork とかで海外の人に校正してもらってから公開すると思うので、そうすると時間は1週間はかかると思うし、お金も数十〜100ドルくらいはかかると思う。それが、生成 AI で5分くらいで作れた。もちろん、文章には生成 AI 臭さが多少はあるが、最初の段階は「ある程度」で良いので、問題無い。

ウェブサイトとかはまだ作ってないが、最近は以下のように自然言語で指示を出してサイトを作れるサービスもあるので、そのうち自分で作ろうと思う。

[v0 by Vercel](https://v0.dev/)

### 分業をもっと後にしようと思った

長々と書いてきたけど、「ある程度」のものを作るのが圧倒的に簡単になったので、何かサービスを作る場合には一人で「ある程度」のものを作って反応を見て、もう少し「いけそう」と思ったら他の人を巻き込んだり外注したりという分業をしていくという方針に考えを変えた。

つまり、今までより分業をもっと後にするという事。それがプログラマーを卒業するのをやめた理由。

新規事業は失敗する事も多いし、自分としても試しに作ってみたいものは沢山ある。なので、まずは自分一人でパパッと「ある程度」のものを作っていく、というのをしばらくは繰り返していこうと思う。

（しつこいが、今までは「ある程度」の段階に持っていくために外注などが必要だった。）

## 生成 AI がプログラマーに及ぼす影響

長くなったので、ここは簡単に書こうと思う。（他の所でも似た内容を書いているし。）

### 上級者ほど恩恵を受ける

「生成 AI がプログラムを書いてくれるから、今後は指示を出せば誰でもプログラムが作れるようになる。」

って言っている人もよく見かける。個人的には、半分は正しくて半分は正しくないと思う。

生成 AI が作るプログラムの善し悪しの判断にはプログラムの能力が必要だし、（少なくとも現時点では）動かないプログラムを書いてくる事も結構ある。従って、プログラムの能力が低い人はあまり生成 AI の恩恵を受けられず、高い人ほど恩恵を受けられると思う。

### 全くの初心者にも恩恵がある

他方、プログラムが全く出来ない人にとっては生成 AI は福音となる。簡単なスクリプト・マクロ等で実現できるような事でも、今までなら非プログラマーが会社の（忙しい）プログラマーに頭を下げて作ってもらってたが、今ではそうしたものの大半は生成 AI に依頼すれば出来上がる。

生成 AI は確かに間違えたプログラムも書いてくるが、初心者が必要とするような、世の中でよく行われているような処理（それについての情報がネット上に沢山ある処理）については、間違えたプログラムを書いてくる事は少ない。

### 二極化する

つまり

* 上級エンジニアは生成 AI の恩恵を受けて、生産性を大きく向上させる
* 初級〜中級エンジニアが生成 AI から受ける恩恵は相対的に低い
* 非エンジニア、初心者エンジニアは、生成 AI によって、今まで出来なかった事が出来るようになる（恩恵を大きく受ける）

という感じ。

開発者に限らずデザイナーとかもそうだけど、今まで外注されていたような簡単な業務が減るので、初級〜中級エンジニアの需要が減って、結果としてエンジニアは二極化すると思う。

## まとめ

事業にはアイディア・計画、人、お金の3つの要素が必要。事業が大きくなるにつれてやる事が増えていくので、どこかでその3つを分業していく必要がある。

一方、今までは初級〜中級エンジニアにお願いしていたような開発業務の多くが、生成 AI によってかなり短時間で出来るようになった。（ただし、エンジニアとしての経験がある程度ないと恩恵は十分に受けられない。）

自分自身はシニアエンジニア兼零細企業運営という立場。最近までは、何とかプログラマーを卒業し分業をうまく行って企業を大きくしようと思っていたけど、生成 AI によって自分自身で出来る事が大幅に増えたので、プログラマー卒業は一旦やめることにした。

今後もうしばらくはプレイヤー兼運営という立場で色んなものを作ってみて、上手くいきそうなものがあれば、その時に他の人を巻き込んで運営に専念していこうと思う。