著者は、企業との共同研究でデータ分析を用いており、普段からPythonやRといったプログラミング言語を使っています。他にも、Webサイトを構築するために、HTMLやCSS、JavaScriptといった言語も用いることが出来ます。
しかし、筆者はバリバリの文系です。大学生の際には経済学部に属し、大学院では経営分野に進学しました。つまり、文系の温室で育てられたものの、実務レベルでプログラミングを行うことが出来ているのです。
本稿では、文系である筆者が実際に仕事レベルのプログラミングを身に付けた経験から、文系の人でもプログラミングが出来る理由を解説します。さらに、どのような人にプログラミングが向いているのかといった観点からも解説し、文系の中でもプログラマーに向いている人を考察します。
スポンサーリンク
「文系にプログラミングは無理」だと思っていないか。
「文系にプログラミングは無理でしょ。」
このように思う方には、以下のような考えがあるはず。
プログラミングの印象
- プログラミングって難しそう
- 理系で数学をやっていないと無理
- AIとか機械学習ってよく分からない
- コードの羅列を見るとうんざりする
- 英語が苦手だから読めなさそう
- 頭が良くないと無理
一般には、確かに上記のような意見が見られ、文系だとプログラミングを避ける人が多いでしょう。実際、プログラミングのレベルが上がれば上がるほど、求められる水準が高まるため、上記のようなスキルが必要になる可能性も高まります。
しかし、実際には高度なスキルが求められる場面は少なく、初心者でも比較的簡単に実装できる案件が豊富に存在します。数学や統計、機械学習といった専門知識を使う場面は、企業内部でデータサイエンティストとして働く場合に限られます。組み込みのエンジニアや、AWS等のクラウドサポートエンジニア、Webサイトのデザインを行うWebデザイナーには、初心者でも1年以内の学習で就職・転職することが可能です。
つまり、「文系にプログラミングは無理」という発想を取ると、自分の可能性を捨ててしまうことになります。筆者も初期段階では多少苦しんだものの、プログラミングを習得した今となっては、自分でエンジニアの案件を取れるだけでなく、作りたいソフトやアプリを開発することができます。文系でも、プログラミングで生計を立てることは可能です。
スポンサーリンク
文系でもプログラミングが出来る理由
先述したような各理由から、文系はプログラミングを避けがちです。そこで本稿では、プログラミング学習を始める方が抱えやすい不安な点を1つ1つ解消していきます。
プログラミングって難しそう
文系の方にとっては、「プログラミングってなんだか難しそう」という、フワフワした懸念があると思います。
確かに、競技プログラミングや一流企業のトップエンジニアになると、高度なプログラミング技術を要求される場合が存在します。しかし、初心者プログラマーや一般的なエンジニアのレベルならば、多少のコード規則を覚えるだけでプログラミングが可能です。
さらに、基本的な事項はどのプログラミング言語でも大幅に変わることはないため、1つの言語を身に付けてしまえば、それを他の言語に応用することが可能になります。エンジニアが複数の言語を華麗に操ることが出来るのは、1つの言語をマスターしていることが理由なのです。
例えば、if文やwhile文、for文といった基本的な文法は、どのような言語でも見かけることの出来る基本事項です。これらの文法は形こそ違えど、どの言語においてもその働きに大差はないため、言語が変わったとしても簡単にシフトすることが出来るのです。
このように、プログラミングの規則を覚えること自体はそこまで難しいものではなく、それらは他の言語にも応用できるため、プログラミングは短期間の学習で身に付けることが出来ます。
理系で数学をやっていないと無理
プログラミングのコードは、如何にも理系でないと読み解けないような英文字の羅列になっています。
しかし、各コードには一切数学は用いられておらず、簡単な規則に基づいてコードが記述されているだけです。そこに文系や理系といった区分けは存在せず、数学が全くできない文系の方でもコードを書くことは可能です。
数学的素養を必要とするのは、難しいプログラムの構造を構築するようなトップレベルのエンジニアだけで、初心者は四則演算が出来ればプログラミングを問題なく行うことが出来ます。小学生や中学生でもプログラミングをこなす人が存在することからも、高校・大学レベルの数学的素養が必要ないことが分かるでしょう。
AIや機械学習がよく分からない
最近話題となっているAIや機械学習については、職種によってそれらを業務で用いるかどうかが決まります。ただし、これらの高度な技術を用いる可能性は基本的に低いです。大抵のエンジニアは、業務用の組込みプログラムや、Webサイトの構築やデザイン、受託開発を担当します。AIを用いるのは、主にAIエンジニアかデータサイエンティストです。
彼らは、企業が主導するAI事業に参画するか、高度な分析手法を用いた調査を実施するなど、一般のエンジニアが担当する分野とは異なる業務をこなします。したがって、エンジニアは必ずしもAIや機械学習に精通している必要はなく、これらの知識に疎くても、プログラミング学習を開始することは十分可能です。
ただし、AIの知識を有していた方が業務の幅を広げられることは確かです。
コードの羅列を見るとうんざりする
初心者にとって、大きな心理的障壁になるのが大量のコードでしょう。筆者もプログラミング学習を始めたころは、大量のコードの羅列を見てうんざりしました。
これらのコードは、案外単純な規則によって書かれています。一度その規則を理解できてしまえば、コードを読むことはそこまで苦ではなくなります(それでも、他人が書いたコードを読むのはつらいですが…)。
さらに、ほとんどのコードは1行で完結しており、複数行に渡って意味が続くものは稀です。すなわち、一見すると英語の羅列に見える大量のコードは、ただ単に1行1行のコードが長く記述されているだけであり、日本語と同じように上から読んでいくことが出来ます。
各コードは様々な命令文で構成されているものの、その意味は単純なものが多いです。例えば、「if」という記述を見れば、そのあとには何かの条件が満たされた時に実行される文が書かれています。他にも、やっていることは単純な並び替えであったりと、1行1行で記述されている内容は全く難しくありません。そもそも、コード自体が難解な物であれば、初心者でもプログラミングが可能な理由を説明できません。
英語が苦手だから読めなさそう
プログラミングをするにあたって、英語が出来た方が有利なのは確かです。しかし、コードに用いられている英語は日常的に使わない単語を多く含むため、英語が出来ないことを気にする理由はありません。むしろ、英語が出来たからと言ってプログラミングが得意になる訳ではありません。
コードの内容は英単語とある程度結びついているものの、単語の意味から命令文の内容を具体的にイメージするのは困難だからです。したがって、英語が得意な場合でも、それは各コードの記憶がしやすい、といったレベルでの有利にしかつながりません。
それよりも重要なのは、英語のリファレンス(参考文献)を読める力です。コード自体の英語は分からなくても、Google検索でその命令内容を調べれば問題ありません。しかし、Pythonなどの言語は英語圏で用いられるのが主流なため、日本語のリファレンスが少なくなっています。このような場合、分からないことは英語で調べる必要が出てきます。
ただし、現在ではDeepLなどの強力な翻訳ツールが存在するため、英語が読めなくてもあまり問題にならない場合が多いです。以上の点から、英語が読めなくても、プログラミングをすることは十分可能です。
頭が良くないと無理
最後は、地頭が必要ないことを解説します。
まず、トップレベルのエンジニアには、当然ながら頭の良さが求められます。その理由は、彼らがAIや機械学習といった高度な技術を用いたり、最先端の研究で論文を執筆したりするからです。このレベルになると、現在普及しているような技術をさらに発展させる必要が出てくるため、並みの素養では業務を遂行することが出来ません。
しかし、本稿で何度も述べているように、プログラミングは初心者でも学習を行うことの出来る分野です。一般レベルのエンジニアならば、数か月も頭を捻って自力解決するような問題に当たることはほぼ存在せず、分からないことはGoogle検索で対処法を調べるのがセオリーになります。或いは、技術書と呼ばれるプログラミンの本を用いることもあるでしょう。
いずれにせよ、一般的なエンジニアには地頭の良さはそこまで求められません。むしろ重要なのは、ある程度の速度を保って開発が行えることです。
プログラミングは、ある程度の勉強をすると機械的に作業が行えるようになります。いちいち頭を使って考える必要はなく、「こういう場合はこの処理」「このエラーはこの処理が原因」という風に、ある程度の検討をつけながら作業をすることが可能になるのです。すなわち、慣れれば慣れるほどに頭を使わなくなっていきます。
初心者のうちは、どんなコードを書くにしても頭を悩ませるかもしれません。これは、経験を重ねることで対処法が体に染みつき、機械的にコードを組んでいけるようになるのです。つまり、圧倒的な地頭の良さは求められていません。
スポンサーリンク
プログラマーに向いている文系の特徴
それでは、プログラマーに向いている人の特徴はどのようなものなのでしょうか。本稿では、2つの特性をご紹介します。
パソコンを触るのが苦ではない
筆者の経験上、プログラマーに対する適正を左右するのは、「どれだけ多くの時間パソコンに触れたか」だと思います。文系の方でも、Word・Excel・PowerPointを日常的に使用する人なら、プログラマーの適性がある程度はあると言えそうです。
この理由は、プログラミングの過程では想定外のエラーが頻発するからです。自力でパソコンの問題を解決できない人だと、プログラミングを行うハードルは一気に上がります。これは普段からの慣れが重要であるため、短期間の学習で改善できる能力ではないと思います。現時点でパソコン操作があまり分からないという人は、プログラミングへの適性が低いかもしれません。
勘違いされやすいのは、タイピングの速さです。タイピングの速度が速ければ良いのは間違いないのですが、実際のプログラミングでは大量のコードを1日で記述することは滅多にありません。初心者の方であれば、1日に100行も記述できれば十分なレベルだと思います。1日100行程度のコードであれば、タイピング速度はほとんど問題になりません。
さらに、コードの記述では日本語が一切出てこないため、英語タイピングが必要になります。多くのプログラマーは英語タイピングの技術を身に付けているわけではないため、本当にタイピング速度を気にする必要はないのです。
重要なのは、ファイルの編集を自在に行えるか、プログラミングする環境を整えられるか、といった観点でしょう。ここに、パソコンへの慣れが出てくることになります。
分からないことを自力で調べられる
パソコンへの慣れの次に重要なのが、分からないことを自力で調べられる能力です。普段からGoogle検索で物事を調べている人は、プログラマーへの適性があると言えます。
プログラミングの過程では、絶対と言っていいほどにエラーが頻発します。エラーの原因は自分のタイプミスであったり、変数の型が違っていたり、コードの動きを理解していなかったりと、非常に多岐に渡ります。これらの膨大な可能性の中から、なぜ目の前のプログラムが動かないのかを、自力で検証できる必要があるのです。
この検証に当たっては、主に3つのルートが存在します。1つ目は、Google等でエラーの原因を検索すること。2つ目は、技術書などの書籍から情報を得ること。3つ目が、先輩や同僚に聞くことです。
この3つの対処法のうち、最もまずい方法は3つ目です。自分が質問をすればするほど、相談相手の時間は奪われてしまいます。さらに、相談相手はあなたのプログラムの内容を熟知している訳ではないため、一般的にイメージされる「質問」とは別次元のレベルで、あなたの対応に時間を取られることになるのです。つまり、出来るだけ人に質問をせずに自力解決できる素養が必要になります。
ここで、1つ目と2つ目の選択肢を忠実に実行できる力が求められます。自らのプログラムが吐き出したエラー文と自分の感性から、エラーの原因をネット検索や書籍で調べるのです。この過程を何度も繰り返していくことで、段々とプログラミングのスキルが向上していきます。
以上から、自力で問題解決を出来る人材がプログラマーに向いていると言えるでしょう。