文系でもプログラミング習得はできる!【現役文系プログラマーが解説】

PROGRAM

文系でもプログラミングが習得可能かどうか悩んでいる方に。

この記事を読まれている方は、

  • 文系でもプログラミングができるか知りたい
  • 文系のプログラマーの体験談が聞きたい
  • 文系でプログラマーになるにはどうしたら良いか知りたい

おそらくこのように考えている方が多いと思います。

この記事を書いている私は、
プログラミング未経験から転職を果たした現役の文系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。

この記事では、現役の文系エンジニアが、文系でもプログラミングの習得はできるというお話をしたいと思います。

文系でもプログラミング習得はできる!

文系でもプログラミング習得はできる!

結論から言うと、文系でもプログラミングの習得は可能で、プログラマーやエンジニアになることもできです。

理由は私自身が文系プログラマー・エンジニアだからです。

ハードウェアを仕事とするには理系の技術的・数学的専門知識が必要になってくるかもしれませんが、ソフトウェアに関してはプログラミングの基礎さえ押さえてしまえば、そういった専門的知識がなくても普通に仕事をすることができます。

なぜプログラミングに専門的知識は不要なのか

もちろん専門的知識を知っているに越したことはないです。
活動できる幅も広がりますからね。

ただ、プログラマーになるだけであれば、必須ではありません。

理由は簡単で、プログラミングは人間がわかりやすい言葉で書けるようにできているからです。

例えば、PHP言語であれば画面上に”Hello World!”という文字列を出力するには命令文は以下の一文だけで済みます。

<?php
    print("Hello World!");
?>

およそ40年以上前の1972年に登場したC言語であっても、若干コード量は増えるものの、以下の数行で書けてしまいます。

#include <stdio.h>

int main(int argc, char *args[]) {
    printf("Hello World!¥n");
    return 0;
}

簡単に言うと、文字列を出力したければ、英語で「出力する」を意味するprint(f)という関数を使えば良いだけ、ということです。

機械語やアセンブリ言語でプログラムを組もうとしたら相当大変ですが、モダンなプログラミング言語では必要な専門的知識を極力なくし、誰でも簡単に書けるようにし設計されています。

そのため、理系の方ではなく、むしろ言語(英語など)を得意とする文系の方のほうが有利といっても過言ではありません。

このようにプログラミング言語は、プログラミングの普及を狙っていて、誰でも簡単に書けることを目指しているため、専門的知識は不要なのです。

プログラミングの難しさ

プログラミングの難しさ

いくらプログラミング言語が誰でも書きやすいように設計されているからといっても、やはり文系の人には数学的観点が不足しているし、技術的なこともわからないので厳しいのではないか、と思われる方も多いと思います。

確かにそういった知識が要求される場面は皆無ではないですが、プログラミングの難しさはそこではないと私は思っています。

プログラミングはフローを書けるかが大切

フローを書けるか、言い換えれば、筋道を立てられるかということです。
これは別に技術的・数学的専門的知識があろうとなかろうと関係ないです。

どういうことかと言うと、プログラミングをする際は、プログラミングの目的をはっきりさせ、それから処理の順序を考えるのが普通です。

例えば、ロボットに1,000円を持たせ、全商品120円の自動販売機でお金がなくなるまで飲み物を買わせるプログラムを組むことを考えてみます。

一つ120円なのだから「残金が120円以上あれば買う」というループを繰り返せば良いんだなということはすぐわかりますが、
もしかしたらプログラミング初心者にとっては、このフローがすぐには浮かばないかもしれません。

これは簡単な例でしたが、実際の業務システムの開発でフローを考えるときはもっと複雑になるものです。

専門的知識よりフローを頭に描けるかの方がはるかに重要になってきます。

プログラミングには英語が少し必要

英単語がわからないとプログラムの命令文の意味が理解できない場合が多々あります。

例えば、変数はvariables(var)、配列はarrayだということを知らないと、

以下のJavaScriptの意味や

<script>
var name = "田中";
</script>

以下のPHPのコードの意味も全くわからないと思います。

<?php
    $names = array("田中","佐藤","小林");
?>

覚えてしまえばたいしたことなく、本当に些細なことなのですが、数だけは多いので、人によってはやりづらさを感じる方もいるかもしれません。
(ちなみに私は英語が得意だったので苦には感じませんでした。)

苦手な方はアプリ等で空き時間を使って中学・高校レベルの英単語を思い出しておくと良いです。

エンジニアはずっと勉強が必要

「プログラミング言語を覚えればいいだけなんじゃないの?」とか「プログラミング言語とあとはせいぜい英語だけでしょ?」と思われる方も多いのではないかと思います。

甘いです(笑)

上からの指示書に従ってプログラムを組むだけのプログラマーであれば問題ないかもしれませんが、将来エンジニアやコンサルタントを目指される方は、日頃から顧客の業界知識や業務について勉強しないといけません。特にシステム化するためには業務フローは必ず押さえなければなりません。

勉強しないと本当に全く話ができません。

顧客は業務に関する悩みを抱えて、依頼を出してくるわけですから、その業務に関する知識がなければ、何も話せませんし、プログラムだって組めないですよね?

そのほか、他のプログラミング言語や最新技術に関して勉強していかなければいけない部分もあります。
例えば、Web系であれば最近はブラウザでできることが年々増えていっています。カメラを使って映像を読み込んだり、マイクやヘッドフォンを使って通話をしたり、GPSで位置情報を共有したり。そういったことができるようになってきました。
そういうデータを扱おうとすると、サーバー側で行わなければいけないことも同時に増えていきます。
例えば通話をしたければ、サーバー側ではPBXサーバーを立てないといけないですし、クライアント側ではJavaScriptを使って双方向の通信を実装しないといけません。

このように最新の技術にキャッチアップし、必要に応じて、目的に合ったプログラミング言語を学ぶ必要が出てきます。

まとめ:文系がプログラミングを習得するために必要なこと

まとめ:文系がプログラミングを習得するために必要なこと

ここまでで、プログラミング言語は万人が書きやすいように設計されていることを説明しつつ、一方でプログラミングの難しさについても解説してきました。

最後に、プログラミングを習得する際に必要な資質をまとめておきます。

  • 妄想が得意であること
  • 英語を苦に思わないこと
  • 学ぶことを継続できること

1点目の「妄想が得意であること」は「プログラミングはフローを書けるかが大切」という話とつながっています。どういう風に実装したら顧客の目的を実現できるか、使いやすさや融通を考えたらどんなフローにしたら良いか、などを常に試行錯誤できる方でないといけません。

2点目の「英語を苦に思わないこと」というのは「プログラミングには英語が少し必要」という話と関連しています。
何かわからないことがあってグーグルで検索するときも、英語を使った方がヒット数も多く効果的という理由もあります。

3点目の「学ぶことを継続できること」は「エンジニアはずっと勉強が必要」という話と対応しています。言語は流行り廃りが激しいので、最新の技術やプログラミング言語にキャッチアップしないといけないのと、顧客の業界や業務の知識を磨かないといけないという話でしたね。

この3つに耐えることができる人であれば、文系の方でもプログラマーやエンジニアになることができると思います。
まあ・・・もうほぼ文系理系関係なくなってますが(笑)

要するに、プログラマーは文系だから理系だから・・・ってことがない職種です。
もしプログラミングに興味を持たれた方がいれば、以下の記事でプログラミングの基礎を解説していますので、ぜひご覧ください。