エンジニアが Git を触ったことがないのはヤバイか？→ヤバイです

# はじめに
当記事では、先日 X(Twitter) でバズった<font color="1e90ff">**『エンジニアが Git を触ったことないのは普通にヤバイ』**</font>件について、客観的事実と個人的見解を述べていきます。

実際のポスト内容や反響等は各自 X で確認してください。 

# 結論
エンジニアが Git を触ったことがないのは本当にヤバイのか？
<font color="red">**実務未・微経験者は100歩譲って仕方ないにしても、ミドル〜シニアポジションのソフトウェアエンジニアが一度も Git に触れたことがないのは、確かにヤバイ！**</font>

# 前置き
ポスト内容が『<INS>エンジニア</INS>が Git を触ったことないのは普通にヤバイ』なので、所謂主語デカ構文となっています。


素人やよっぽどの捻くれ者でもなければ「エンジニア」と「Git」というワードを見れば「ソフトウェアエンジニアの話」ということで察しがつくと思うので、当記事でも「エンジニア」は<font color="1e90ff">**「ソフトウェアエンジニア」**</font>のことと定義させていただきます。
<br>
まずは、バージョン管理ツールの現状（客観的事実）について見ていくことにしましょう。

# バージョン管理ツールの現状
10年程前からバージョン管理ツールのシェアは Git がトップで、現在もシェアを伸ばし続けています。2022年時点でのシェア率をご覧ください。

![スクリーンショット 2024-09-03 23.30.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1184745/63a26980-b565-50e8-134c-be95fa35443a.png)
出典：[Stack Overflow Developer Survey 2022](https://survey.stackoverflow.co/2022/#version-control-version-control-system-prof)

Stack Overflow によるユーザーアンケートによると、<font color="1e90ff">**職業エンジニアの96.65%は Git を使用している**</font>といった結果になっています。尚、2022年を以て Stack Overflow ではバージョン管理ツールのシェア率についてアンケートを取らなくなりました。結果が目に見えているからでしょう。

※アンケート集計結果が100%を超えているのは、ユーザーが複数の選択肢を回答できるアンケートだったためと思われます。
</br>
</br>
![スクリーンショット 2024-09-03 23.54.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1184745/cbea7e43-3e6f-5f0d-6e13-df78193d49b2.png)
[GitHubでSVNサポートが終了しGit移行を加速、Subversionの利用率は0.02％未満に – trends](https://trends.codecamp.jp/blogs/media/news47)
他には、リポジトリホスティングサービスの大手 GitHub が SVN のサポートを終了させたことも今年話題になりました。GitHub は SVN を介して利用することもできたようですが、とんでもない利用率の低さでした。
<br>

世界的に見れば Git の利用（独占状態）は更に進み、SVN の利用は縮小傾向にあります。しかし、日本の IT・テック企業ではどうなのでしょうか？

# 日本の IT・テック企業ではどうなのか？
国内で取られたアンケート調査が見当たらなかったので、[Google トレンド](https://trends.google.co.jp/trends/)で2004年〜2024年9月までの Git と SVN の国内トレンド実績を割り出せたので見てみましょう。
![スクリーンショット 2024-09-05 2.06.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1184745/5d64fb76-2f36-2cca-ff18-e90bc0804b46.png)

国内トレンドでも Git が圧倒的ですね。日本でもデファクトスタンダードなのは間違いなさそうです。

自社開発企業（特に Web 系企業）においては、SVN を使っているところはほぼ皆無かと思います。[昨年、著者が転職活動した際](https://qiita.com/oikwswe/items/e153a537273a96482b8c)は SVN を使用する自社開発企業は1社も見た覚えはありませんでしたし、<font color="1e90ff">**自社開発企業は Git での開発経験有無を採用基準の１つとして考えているところが多いと思います**</font>。デファクトスタンダードである Git / GitHub / GitHub Flow といった技術・運用フローを活用して開発業務を行うのが当たり前だからです。

しかし、私は過去の開発現場では SVN や CVS を使っていましたし、X やブログ記事、知り合いのエンジニアの話を聞くに、SVN を使っている開発現場やエンジニアはまだチラホラいます。

個人的見解となりますが、主に SI 主導（SIer・SES）による多重下請け的な開発現場、大手金融系や公共系の開発現場では、未だに SVN の使用率が高いのではないかと思います（勿論 Git を使用している現場もあると思います）。

# 何故 SVN が使われ続けるのか？

先述した開発現場で SVN が使われ続ける理由、それは

:::note info
・Git の学習・導入・運用のコストやリスクを重く見ているため
・Git をはじめとした技術の導入に多くの承認が必要になるため
・Git ではなく SVN のような中央集中的な管理手法を好んでいるため
・Git 程の高機能なバージョン管理を必要としていないため
・Git をそもそも知らない、知ろうとしないため
:::

ザックリこんなところでしょうか？

数多のステークホルダーを巻き込む SI 主導の開発現場、より安定性や正確性を求められる金融系・公共系の開発現場では、基本的にプロジェクト型で案件が進行するため、予算とスケジュールが予めガッチリ決められています。よって、諸々のコストやリスクの削減・回避が最優先され、何よりも「システムとプロジェクトの安定」を目指す節があるように思います（そのため Git 導入は優先事項ではなく見送られてしまう）。

また、コード資産についてもセキュリティやガバナンスの観点から、中央集中的に管理・運用しておきたいような意図も感じます。

他、ごく少数ではあると思いますが、最早デファクトスタンダードである Git を知ろうとしない、学ぼうとしない方々がいるように思います。これは私自身も過去の開発現場で肌身に感じていました。

# 企業やエンジニアはこのまま SVN を使い続けて良いのか？

個人的にはあまり良くないと思っています。理由は以下の通り。

:::note warn
・分散型管理のメリットを享受できず、より効率的なチーム開発ができない
・非効率なチーム開発であるため、開発者体験も悪化する恐れがある
・ソフトウェアエンジニアとしての市場価値を落とす恐れがある
:::

超小規模開発で Git 程の高機能なバージョン管理ツールは要らない、というのなら SVN でも仕方ないかなと思いますが、通常のチーム開発であれば Git / GitHub / GitHub Flow といった技術・運用フローは積極的に取り入れるべきです。Git や分散型管理のメリットについては以下の記事が参考になるのでご覧ください。
[SVNを捨ててGitを使うべき5つの理由 - Qiita](https://qiita.com/YusukeHosonuma/items/14c59f3878d640a401a1)
[【初心者】【バージョン管理】中央集中型システムと分散型システムについて - Qiita](https://qiita.com/y518gaku/items/9a789b4bddfabe687dfa)
<br>

Git を使用することのセキュリティ・ガバナンスの問題もあるのでしょうが、それはコード資産の管理・運用体制を見直すことで解決するのではないでしょうか？また、コード資産の漏洩も中央集中的に管理している SVN の方が一発の影響は大きいでしょうし、一長一短なところはあります。

何よりも、ソフトウェアエンジニアはデファクトスタンダードな技術を持ち合わせていないと、企業やコミュニティ等から<font color="red">**「学習意欲の低い人材」**</font>と思われてしまう可能性が高いです。

実務未・微経験者については、たまたま運が悪く学習機会に恵まれなかったで済む（最悪、現場で習得するでよい）かもしれませんが、ミドル〜シニアポジションで触ったことがないのは、ソフトウェアエンジニアとしては<font color="red">**「ヤバイ」**</font>と言われても仕方ないのかなと思いました。

# おわりに

長々書いてしまいましたが、ソフトウェアエンジニアとしてこの先生き残っていくには、必要最低限の CS、ネットワークの知識は抑えておくこと、広く使われる技術やツールに触れておくこと、モダン技術を日々追っていくことが大切です。

そして、上記を含むソフトウェアエンジニアとしてのマインドセットをしっかり構築しておくべきだと思います。

ソフトウェアエンジニアに必要なマインドセットについては note で記事にしたので、お手隙の際にご覧いただければと思います。
[ソフトウェアエンジニアに必要なマインドセットとは？ - note](https://note.com/oikwswe/n/nd13891bf2c2b)