LoginSignup
16
10

More than 1 year has passed since last update.

👴社歴30年オーバーの零細レガシーIT企業で技術的に若返りしようとして挫折した話🤷‍♂️

Posted at

注意書き

元々2021年秋~2022年夏前ぐらいに転職活動をしていた時に、この話をざっくりするとかなり反響があったのと、(極端すぎるにしても)業界において普遍的な部分があって世に出した方がいいと感じたので当時書いたものです。転職後、心身共に相当タフな日々が続き今の公開になりました。
このため、まだ文中だと「在職しながら転職活動してる人間」の視点になっていますが、当時のライブ感を残すためあえてほぼ書き換えてません。ご了承ください。

概要

「15年間務めた会社に退社を切り出したら史上稀にみるクソ展開になった(前編) - 放浪軍師のアプリ開発局」という有名な退職エントリがあり、 「社長が70代でワンマン」「2010年代後半にVB6メインで仕事してる」 ということでも話題になりましたが、ウチは色んな意味であれの一、二歩手前の状況です。「20210522 - 4年ぐらいいた会社を辞めるかどうかを考えている - 龍華荘」よりは酷いかな……。

改革しようとそれなりに頑張ったけど、上手くいかなかったという記録です。

🏢会社について

  • 社歴30年オーバーの零細IT企業(別業種からスタートで90年代中頃?にIT業界に参入)
  • 90年代後半から20年近く、B2B/B2C向けに、■■■■■(以降✨)で制作した買い切りのソフトや、同ソフトを簡単なWebシステム化して売るという形でビジネスをしていました。
  • 後述する社長の思想の下、初心者プログラマーをかき集めて人海戦術でアプリを作るスタイルで一山当てて、最盛期(00年代初頭?)に50人オーバーまでは盛り立てたようです。
  • そこから20年近く右肩下がりで社員も今や数人になってしまいました。🤦‍♂️
  • 現在は✨で作ったアプリをWebアプリとしてJSに超劣化移植しつつ、買い切りアプリとしての販売ではなく、Webシステム/サブスクリプションに重点を置く形でシフトしているところです。

👴社長について

零細企業なので当然ワンマンですし、9割がたこの人が悪いので触れざるをえません。

(表向きの)概略

  • 60代半ばで創業者社長
  • 90年代に✨を「初心者でも扱える、GUIを使ったGUIアプリ制作ツール」(昔で言うところのポトペタツール、今で言うところのノーコードツール)と解釈し、初心者プログラマーの人海戦術でアプリを作るスタイルを確立し、とある業務分野を相手に成功を収める。
  • 現在もなおアプリ開発に携わっている。

🙆‍♂️良いところ/尊敬できること

  • IT業界の荒波を独立系メーカーとして30年超えてきたという結果に関しては脱帽するしかないです。
  • 30ぐらいで創業して60半ばの現在まで30年以上週6~7勤務を継続。 そうせざるを得ない経営状況に追い込んだ自己責任、自業自得の面も大分ありますが、敬意を払うしかないです。
  • いわゆるアイデアマン/プランナー/クリエイタータイプ。とにかく思いついたアプリとかコンテンツを作りたいタイプ。自分もそういう部分あるので共感できる部分も無くはないです。
  • ビジネスの嗅覚というか発想力はある。後述しますがビジネスサイドの分析等一切せずに、勘だけでアプリ作って30年会社潰さなかったレベル。
  • 90年代から現在まで、ある業務分野向けのGUIアプリの制作に携わり続けてる、おそらく日本でごく一握りの人間。 このあとボロクソ書きますが、監修者としてはまだアリだと思ってます。

🙅‍♂️悪いところ

👨‍💼人間、経営者として

  • 元々論理的思考が苦手(注:大卒理系です)だったんですが、60過ぎたあたりから輪をかけて低下 しています……。 例えるなら「世間では1+2=3だと思われてるけど、(関係ありそうで関係ない話や、都合のいい部分だけ切り取った話、完全に誤解した話を引き合いに出して)実は3.33なんだぞ」 みたいな感じで、論理的におかしかったり、重要度の軽重がめちゃくちゃな判断を下すことが増えてきてて、社員一同で止めるのに一苦労してる状態です。言葉尻にも表れてますが「俺は正しい/真実を知っている」のが前提のため翻させるのも大変で、月一ぐらいのペースで自分含む社員の誰かと押し問答してます……🤷‍♂️ そのうち木に登りだすのではないかと危惧しています。
  • 社員から非難や抗議、直訴されても話は聞くんですが、最終的には「こんな押し問答してても時間の無駄だから、次のことやろう」やら「その話は置いといて」「過去のこと反省しても仕方ない」等と、一切の議論や自らの言動の反省を拒否。 🤬
  • 気まぐれに部下の仕事に介入しすぎ。僕自身はマイクロマネジメントに否定的ではないんですけど。最盛期にマネジメントの欠如が原因で業務崩壊を起こし大リストラに追い込まれたことがあると聞いており、15年以上経っても未だに自覚がないのがきつい。
  • 調査コストを嫌う&面倒くさがり、社長なのにあらゆる管理や分析をしたがらない。 数字を可視化して解析して戦略云々やって……みたいなことをちゃんとしてる会社さんからするとドン引きするぐらい、勘だけで何とかし続けて早30年という感じのようです。流石にどうかと思い、可視化/定量化からちょっとずつ……と思ってはいるものの、社長に「そんなことする余裕はない」と提案が全部潰されています……🤷‍♂️
  • 極端な固定経費嫌い=サブスク嫌い。 PCもツールも買い切りこそ至高という価値観。ここは分からなくもないんですが、行きすぎてXaaSやグループウェア系の導入が不可能に近いのがキツイです。

👨‍💻エンジニアとして

  • 「分岐とループが書けたらプログラマ」 という無茶苦茶な技術軽視を90年代から貫いており、2022年現在も手続き式のコードを量産中。staticおじさんならぬ手続き式お爺ちゃん👴 プログラム言語やFWや設計論に対する冒涜レベルの暴言やズンドコエピソードには事欠かせませんが、キリがないのでまたどこかで……。ブログとかやってたら間違いなく常時炎上で、論外レベルの老害扱いされてそう。
  • 機能をいかに素早く実装するかがプログラミングの全てで、手続き式で正常系をだら書きするのが最速、技術周り(開発管理の整備/外部ライブラリの使用/設計論/自動テスト等)はそれを妨げるものと思い込んでいる。 スタンドアローンなアプリなので「エラー出てもクラッシュさせときゃええやん」で回ってしまってた部分はあるが(ログの書き出しすらやってない)、エラー処理すらロクにやってない。現代のエンジニアとしては狂ってるとしか思えないし、●年間説得や衝突を繰り返しましたが覆せませんでした。このままじゃいかんとこっちが勉強したりしてると、「そんなことに情熱注ぐより、機能開発してほしい。何のためにプログラマーになったんだ?」 とまで言い放つ次第🤷‍♂️
  • 技術力もないのに超自前主義(外注といった人的部分どころか、外部フレームワークやライブラリ、開発関連ツール、その他諸々の外部への依存嫌い)。 バックエンド初心者に対して、「認証込みのシステムを短期間で生PHPで全部作れ」とか平気で言っちゃうレベル。OSSとは縁遠い、プロプライエタリなアプリ屋の世界観で生きてきたとか、✨に依存してて終了にともないビジネスモデルごとぶっ壊されたトラウマとか擁護はできなくもないですが、それでこの先を生き残れるかというと……。散々意識を改めるよう言ったんですが、全く直りません🤷‍♂️
  • 詳しくは後述しますが、スタンドアローンなアプリ屋の感覚が強すぎて、未だバックエンド軽視というか「GUIアプリ制作」という本業の「補助」という意識が抜けきらないです。ここに関しては僕ですらちょっとかかったので難しいのは分かるんですけど……。

💻📱アプリについて

アプリや対象分野の性質が思いきり組織に出ちゃってるので、先に説明します。

  • ある業界向け
  • 元々✨で手続き式で作られており、アニメーション、音楽をバリバリに使った、インタラクティブかつスタンドアローンなアプリ (ゲームではない)
  • Webで会員制で配信したり、アプリとして販売していたりしました。
  • アプリの性質上、いわゆるWeb系の本流のノウハウがそのまま採用しづらい
    • ライブラリを活用するならSPAフレームワーク系より、Create.jsとかPixi.jsとかPhaser.js等のCanvas/WebGL系の方が向いていると思うんですが、両取りどころかどちらにも行けてません。
    • また社長が 「自動テストなんか役に立たない」と言い張る 原因となってきました。対象がVばっかりでコストが重い/音とかアニメーションとか自動化困難な領域の比重も高いので、完全に間違ってるとまでは言えないんですが……
  • 自分以外の、社長始めとしてベテランスタッフ陣が総出で、TypeScriptを使って手続き式/生DOM弄りで移植中
  • 移植しきれるわけもなく、色々劣化しすぎて評判ガタ落ち。自分は直接開発してないですけど本当すいません……🙇‍♂️
  • ただ長らくiOS,Android対応できてなかった(アプリ資産の8割ぐらいが何とかスクリプト2😲のため)のが、続々とできてるのはプラス。

開発組織について

  • 基本的に社長の思い付きや大方針を受けて、エンジニアやデザイナー等が下々の者が適当に連携とって制作する。
  • 前述の通り、ビジネス分析や設計フェーズすっ飛ばして、いきなりコード書き始めて、(全員出社しているため)見せ合いあーだこーだ言いながら仕上げていく形。一応スケジュールは決まっているが、当然のごとく延期常連。
  • 【転職後視点】逆に制作体制が分業化されておらず、ビジネス面の分析基盤もないので(ついでに言うと業界が特殊で、調査もかなりハードル高い)、エンジニア全員がアプリのプロデュース、仕様決めのセンスを求められることになる。エンジニアリングは僕含め全員弱いので、ちょっとプログラムできるプランナーの集団といった方が近いかも。
  • エンジニアが各ソフト間共通のオレオレフレームワーク(当然の如く手続き式) を書いて、複数いる制作補助のバイトさんがデータ入力したり、オレオレフレームワークを利用して末端の簡単なスクリプトを書いたり、手動テストをするような体制です。
  • エンジニアは自分以外に50~60代(社長含む)が2~3人しかいません。 単なる怠慢、業務分野には情熱があるが技術に興味ない等色々だが、結論から言うと、ほぼ全員手続き式おじさんお婆ちゃん👨🧓
  • ただし業務分野の知識はあり、アプリとしてどう表現するかというノウハウを持つため、安易に解雇してしまうとプロダクトの品質が落ちる可能性があります。(バイト含む) このジレンマが重かったですね……。
  • また業務分野が特殊なのと、歴史的経緯により、2018年ぐらいまでオフライン環境で動作する(スタンドアローン)ことが前提だったというのが会社全体に影響しています。ネット繋いで云々はオプションにならざるを得ない=会社の伝統的にバックエンドという分野自体がおまけ扱い。
  • このため自分含む全員が(スタンドアローンな)アプリエンジニア→フロントエンジニア。
  • DBやバックエンドの絡むWebのシステム(社内向け、社外向け両方)はありますが、伝統的にアプリエンジニアが初心者本を片手に、アプリ開発の片手間で書いてた(?) みたいです。担当外ながらチラッと見たことがありますが、あまりにも酷すぎて、色々ぶっちゃけすぎてるこの記事でも何も言えません🙊
  • インフラはどうしてたのかというと某社のレンタルサーバー(DB付き)を沢山借りて何とかしてます。いや90年代からビジネスやってるので別に使ってるのは分かるんですが、明らかに借りすぎだし、固定費嫌いはどこいったんですか。
  • 経営難により、人を切らないと別の人を雇えない末期的状況のため、5年以上「アプリ屋からWebサービス屋になるんだったら、バイトさんクビにしてでも専任のバックエンドエンジニアを雇った方がいい」と言い続けているんですが、未だ誰も雇えていません。ついでに言うなら経営悪化でバイトさんもクビにせざるを得ませんでした。
  • 最盛期に大量のソフトを作っており、ほどほどに売れた実績があるため、現在でも切り捨てられず保守や改良に追われている。 1エンジニア複数ソフト(=複数プロジェクト)当たり前。
  • 社長の開発ツール系依存&固定経費嫌い&管理嫌いにより、Githubやプロジェクト管理ツールやグループウェア系一切未導入。 Gitは上述のレンタルサーバーにリモートリポジトリ立ててます。
  • 零細かつ正社員は全員出社必須なので、電話、メール、回覧板😨というアナログ手段でも何とか回せなくもないような気もするし、僕の手が全く回ってないので手をつけてれてないです。(諦め)
  • 逆に言うとコロナとか定年退職→嘱託化とか色々あってバイトさんのみリモートワーク可に移行したんですが、結果として社長がバイトさんとのやり取りで毎日トータル1~2時間ぐらい電話してます。
  • 入社時(2010年代中頃)はもっと酷くて、「秀丸/さくら/Emエディタ使ってる」「バージョン管理ツールの存在を知らない(フォルダ名に日付入れてた)」とかありましたね……。

🤓自分について

  • 学生時代(00年代初頭)にホームページを作りまくったり、PerlのCGIゲームを改造したりしていたが、プログラマーにはならず、別業界に就職
  • しかしいろいろあって退職後、無職期間に講座を受けて、手続き式でちょっとjQuery弄れるようになっただけというゴミカスレベルで、2010年代中頃、コネでバイトとして入社(→正社員化)
  • 最初の●年は✨を使ったアプリ開発に従事。✨の独自IDEに慣れるのも大変だったし、こういう環境だったので最初は自分も手続き式で書いてました。
  • 1年半ぐらいたったある日、担当してるソフトの拡張に限界(コード5万行/グローバル変数1000個/グローバル関数200個とかいう💩)を感じ色々調べた結果、会社が技術的に90年代で止まっていることを悟る。 🤮🤮🤮🤮🤮
  • 3年ぐらいで出ていくつもりが、✨に携わり続けたので出ていくタイミングを失い、ずるずると●年以上在籍。
  • とはいえ、本来IT業界に入るべきではないスキルで拾ってもらった恩やその他諸々の縁があり、どうにかしようと●年以上頑張ってきました……。一般的にはジュニアエンジニア卒業ぐらいのレベル感かと思いますが、比較対象がアレなのと、近年の技術周りの動向を追ってるので技術トップです😱
  • 元々会社と縁がある/恩もある/コネ入社なので修行したら出ていく前提/技術トップ(?)という立場で、会社が経営難ということもあり、社長に対してかなり踏み込んで改善提案してきました。
  • 20代後半に入社して3●歳になる現在まで、ず~っと最年少。(多分30代自分だけ、バイトすら結婚退職した元社員や元対象分野に勤めていて退職した専業主婦層のため、全員自分より年上)
  • アプリ●年(✨)→アプリビルド(Electron)&フロント(TypeScriptで生DOM弄り)&バック(PHP/LaravelでAPI作り)兼業●年
  • ここ●年ぐらいは社長らが作ったWebアプリをElectronで包んでごにょごにょしたり、そこと連携させるAPIを作ったり、そのAPIの管理画面を作ったり、社長がクラウドを試したいということでLinuxサーバー立ててみたりと、GUIアプリ屋というよりシステム屋っぽい動きに寄ってきています。
  • あとは時々jQuery弄ったり、AccessVBA製の社内システムを弄ったり、Pythonでアプリのビルド周りを自動化したり等、色々やりました。
  • ずっと最年少&実質1人1プロジェクト体制のため、●年経ってもチームリーダー経験どころか、チーム開発らしい、複数プログラマーによるチーム開発経験なし。

結果

5年以上かけても、ちょっとライブラリとかツールを導入しただけで、組織メンバーのスキルアップできる体制づくりとか、継続的に技術的に改善していける文化の醸成は全く果たせませんでした。

  • 全社的
    • バージョン管理ツールの概念がない所へGit導入
    • さくらエディタ/秀丸エディタ/EmEditor→VSCodeに移行
    • JavaScript→TypeScriptへ移行(2010年代終盤/✨が型付き言語で親和性があったとはいえ奇跡)
      • ただし社長らは組み込みのプリミティブ型のみで一切自作class/interface/typeやTSらしい機能を使用せず、設計も手続き式のまま。純粋な関数、副作用、何それ状態。
  • 自分の関わったプロダクト回り
    • jQuery導入(2010年代中頃😱/✨使わない程度のWebサイトとか社内用Webアプリ等)
    • Electron導入(アプリ屋として商売が継続できなくなるので導入しないという選択肢なし)
    • Laravel導入(間接的に内蔵のPHPUnitを使ってこっそり自動テスト導入)
    • 開発環境のみDocker導入

ぐらいです……。ちなみにDockerに関して「最悪分らんかったら捨てて某レンタルサーバー上に作ってある検証環境で直接開発しても大丈夫です」、Laravelに関しては「自分もバック初心者なんで生PHPのフルスクラッチ開発ではセキュリティ面で責任が取れない。導入できないなら開発期間を倍にしてほしい」といって無理やり通した感じなので、組織としての継続性のある、まともな導入とは言えません。実質VSCode/Git/TypeScriptだけですね……。

環境分析

まずこの会社における改革を行うにあたって、プラス要因とマイナス要因、両方あったと思うので整理して明確にしたいと思います。

プラス要因

  • 最悪、社長さえ説得できれば他の社員の意向を無視してトップダウンで導入可(コラ)
  • 教える人数そのものは3~4人のみ(ただし場合によってはバイトさんや営業等に教える必要あり)
  • アプリは言語ごと乗り換え、バックは腐りすぎと、実質全部新規開発ばかりで、導入タイミングはいつでも良い

この点に関しては世のスタートアップ同様、めちゃくちゃ更新しやすい環境なんですよ。
例えばTypeScriptは僕が最初に試験導入したけど「これ凄い良いけど、上の人らのことを考えると導入は無理だな……」と思って、社長に伝えて諦めてたら、何故か後から社長が試して導入決定のパターンでしたし。

マイナス要因

極端な思想を持つ社長を説得する必要がある

これが重すぎました。他の社員、バイトさんに布教して外堀埋めようが、社長が納得しなかったらひっくり返されるんで。
何度言っても変数名をシステムハンガリアンから変えようとしないし、「リーダブルコード」以下のコードしか書けず、延々と「そんな暇はない」と言い張って勉強もせず、手続き式で機能開発しかしないお爺ちゃんに、オブジェクト指向なり設計周りを教えるのは無理ですし、ましてや技術回りの改善を進めていける組織や体制作りの意義が分かるはずもありません。
正直組織全体の改革と言いつつ、社長対策がほぼ全部みたいなことになってるのが不毛だし、それも全然進まないわで、改革を志し5年以上が経ち、諦めがつきました……。
プレゼン面を改善するとかも考えましたが、「~を導入すれば今まで開発に1年かかってたのが8か月で済みます」とか中々具体的かつ根拠ある数字を出せるようなものでもなし、 「他所なら常識(習得している/習得してなくてもそれを課題と認識できている)として通るレベルのことを何故ここまで懇切丁寧に説明しないといけないのか」 と、ストレス溜まりすぎて手が止まっちゃいましたね……😞

50~60代の、これまで技術周りに無関心だった、おじさん/おばさん/爺ちゃん/婆ちゃん(なお全員年上)に使い方を教え、トラブった時にフォローする必要あり

よく 「組織に新しい技術を導入したかったらオフで勉強して、全部責任取るつもりでやれ」 という言説を聞きますが、僕自身の怠慢と迷い(今後の個人のキャリアを考えるとSPAフレームワークをやるべきだが、業務的には多分そうじゃない)で結局マスターもできず、自信持って推しきれませんでした。ここは完全に僕の怠慢であり落ち度です。
あとグループウェア系の場合は対象がバイトさんや営業さんまで広がる(なおこちらも40~60代でお察し)のと、そもそも僕一人では運用の練習ができないというのがネックでした。

基本的に1人1プロジェクトという環境

全員がバラバラのコード触ってるというのが意外と重くて。いきなり全社的にやってしまうと即複数プロジェクト=アプリに波及してしまい、僕も全アプリのコードを把握してる訳ではないので、おそらく想定外のトラブルが発生して収集がつかなくなってしまうし、かといって例えば誰かだけ先行で入れちゃうと「自分には関係ない」と勉強する意味がなくなってしまうので……。

一部エンジニアがリモートワークしてて交流が途絶えている

このどん詰まり状況のダメ押しにコロナがやってきました。前述のとおり、新規採用が途絶えて久しく勝手知ったる面々とはいえ、電話とメールだけしか連絡手段がなく、向こうのタスク状況も分からない(可視化/共有化されてない)ので、遠慮して全く巻き込めず、と厳しかったですね。うん。

感想

僕の力不足も多いにあるんですが、今から思うにむしろ単純な技術力じゃなくて、(社長だけじゃなくて他のベテラン社員含む)老人転がしというか、プレゼンの問題が大きいんじゃないかと。技術の裏付けがあるからプレゼンに説得力を持たせられるという側面はありますが、ウチはそれ以前というか。正直Zennとかで宣伝がてら投稿してる、バリバリのスタートアップのCTOがウチに来ても改革に成功するビジョンが見えませんもん。

おまけ

僕から直接話を聞いた方(おそらく100人前後)は知ってるかと思いますが、ある大前提を省いています。

  • 在籍してない時期に関しても会社の歴史についてそこそこ詳しい
  • 社長にデカい態度を取りすぎ
  • ここまでの惨状なのに何故か出ていなかった
  • NDA無視して暴露しすぎ

このあたりのツッコミ所に関してはその大前提でほぼクリアされる(?)んですが、ここに触れると話のスコープが会社経営や業界史にまで広がってしまい、Qiitaでやるには明らかに不適切になるので、また別の場所で……。
ご存じの方もそれまでご内密にお願いいたします。

16
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
10