どうもこじらです。
「プログラミングって難しそう🤤」
と思っている人って多いんじゃないかと思います。
それはまぁ、正しいと言えば正しいですし、正しくないと言えば正しくないです。
どっちだよってねw
今回はこの微妙なニュアンスを明確にしていく形で、IT企業に約2年弱勤めてみて感じた「生の声」を綴っていきたいと思います。
求められるプログラミング能力
日本の一般的なIT企業で求められる「プログラミング能力」というのは、さほど高くないと思っていいです。
いや、言い方が悪いですね。
「一般的なIT企業で仕事をする上で必要とされるプログラミング言語に対する理解度は割と低くても大丈夫で、求められる能力はもっと別にある。」という感じです。
プログラミング言語への理解
まずは、「ITは案外ハードルが低い!」と思える部分から話します。
「プログラミング言語の習熟はIT業界で働く上では必須!」
と思っている人は多いんじゃないかと思いますが、案外そういう訳でもありません。
出来ていない人はたくさんいますし、プログラミング能力が必要にならない業務だってたくさんあります。
てか、目的によって必要になる習熟度は大きく変わります。
- 仕事で使えるようになるため
- 資格を取るため
- プログラミングオタクになるため
この3つで見てみても大きな差があります。
食パンの袋の留め具に例えて話しますわね。
- 1.の場合、使い方を覚える必要がある
- 2.の場合、名前が「バッグ・クロージャ―」であると覚える必要がある
- 3.の場合、材質、効率的な形状、主要な製造元まで覚える必要がある
という感じですね。
別に、食パンの袋の留め具の名前や材質なんて知らなくても使うことは出来ますよね。
プログラミング言語も同様で、名称や内部構造を理解していなくても、プログラミング言語の使い方さえ覚えれば仕事ができます。
当然、資格の知識はあったほうがいいですし、プログラミングオタク並みの知識があるに越したことはないですが、それと「仕事ができるかどうか」は別の話です。
だって、日本の一般的なIT企業は深いプログラミングの知識なんて求めていないんですからね。
プログラミングの難しさとは
じゃあ「プログラミング言語自体が難しくないなら何が難しいのか」という話ですよね。
私が思うプログラミングの難しさは、
- 言語の内部構造をしっかりと理解すること
- プログラミング言語を使って作られたものの使い方を覚えること
- 読みやすいコードを書くこと
等にあると思います。
言語の内部構造をしっかりと理解すること
これは上の例でも挙げた内容ですね。
プログラミング言語の使い方を理解するのはそこまで難しくありませんが、内部まで理解しようとすると大変です。
理解しようとすると、すぐにPCのハード面の知識が求められます。
ただ別に、量子力学を知らなくてもスマホは扱えますし、一般相対性理論を知らなくてもGoogle Mapsは扱えますよね。
まぁ知ってるに越したことはないんですけど、学ぶ優先順位は低いので「ある程度」知っていれば問題ありません。
プログラミング言語を使って作られたものの使い方を覚えること
これは度々覚えなきゃいけない知識です。
プログラミング言語を理解したからと言って、それだけを使って仕事をする訳ではありません。
他の誰かが作った「便利ツール」を使いつつ、プログラミング言語を書いていきます。
※ここでいう「便利ツール」というのはフレームワーク、APIというものを指しています。
自分がプログラミングをする場合、大体はこのように「便利ツール」の連鎖の上にプログラムを作ることがほとんどです。
この場合、
- プログラミング言語
- 便利ツール1-1
- 便利ツール1-2
- 便利ツール2-2
- 便利ツール3-1
の基本的な概念を理解しておく必要があります。
これの難しさは、それぞれに個性や訛りがあることですw
一番厄介なのは「便利ツール3-1」でしょうねww
一つひとつの便利ツールは、それぞれたくさんの人手をかけて作り上げられています。
たくさんの人が手掛けている分、変な訛りが入ったプログラムもありますし、自分の思考と合わないプログラムもあります。
それらを読み解いて、意図を理解しなければならないのがプログラミングにおける一番厄介なポイントと言えるでしょう。
読みやすいコードを書くこと
今度はあなたが「便利ツール」を作る側です。
「便利ツール」を使う側の人に、あなたの意図を相違なく伝える必要があります。
その便利ツールのプログラムを読む人はどういう人か分かりません。
自分と思考が合わない人が読むかもしれません。
「便利ツール3-1」を踏襲して作った便利ツールですが、読み手はその仕様に疎いかもしれません。
「便利ツール3-1」はある程度知っていても、「便利ツール2-2」の仕様には疎いかもしれません。
今現在、読みやすいとされているコードであっても、時代とともに読みづらいコードになってしまうかもしれません。
そんな状態で、なるべく「一般的な言葉や様式」を使いつつ、プログラムを書くことが求められます。
…まぁ、ここまで深く考えてプログラミングしている人は少ないと思いますが、多かれ少なかれこういうことを考えながらコーディングしているものです。
IT業界で求められている能力とは
私はIT企業の経営層でもなんでもないただのぺーぺープログラマーなので、実際のところは分かりませんが、私が思う「IT業界で求められている能力」について少し話して終わりにします。
IT業界で求められている能力
IT業界では
- 概念を自分の知識に落とし込む能力
- 人に説明する能力
- 新しい知識を意欲的に取り入れることができる能力
これらの能力がとても重要だと思います。
え?他の業界もそうだろって?うるせぇなぁ!!!!!!!(謎のガチギレ
1.概念を自分の知識に落とし込む能力
概念を自分の知識に落とし込む能力。言い換えると「理解力」ですね。
- 自分が置かれている状況を客観的に見ることができる
- 物事の真髄を理解しようとすることができる
- 「自分は何が分かっていないか」を考えることができる
これらが出来れば、自分が知らない知識や概念であっても、効率的に理解することができます。
この業界では大きな強みになり、とても重要な能力だと思います。
2.人に説明する能力
これはシンプルかつ最も難しい能力かもしれません。
人に何かを説明するには、相手が
- 何を知っているか
- 何を知らないか
を理解しつつ、相手の目線に立ち、相手が考えやすい順序で話す必要があります。
例えば、Javaを使って「路線を調べるアプリ」を作った場合、
- Javaに詳しいプログラマー
- 路線に詳しい駅員
のまったく違う2人に説明しなければいけない可能性があります。
それぞれ専門分野が違うので、分かりやすい説明は大きく異なります。
「Javaに詳しいプログラマー」には、プログラムの仕組みから説明する方が分かりやすいかもしれませんが、「路線に詳しい駅員」にその説明をした場合はどうでしょう?
普通に、「このボタンを押すとこうなります。」といった、プログラムの仕組みには深く触れない説明の方が分かりやすい可能性が高いですよね。
まぁ、言葉で言うのは簡単でも実際にやってみると本当に難しいんですよねぇ…。
しかも、実体がないものを説明しなきゃいけないのが余計に難しい……。
まじで、結局日本語が難しいんすよ。
3.新しい知識を意欲的に取り入れることができる能力
新しいアプリケーションを作り始めるたびに、新しい知識を取り入れる必要があります。
しかも、プログラミング言語は少しずつ変化し、「便利ツール」も変化していくため、IT知識も常に学び続ける必要があります。
勉強&勉強になるので、新しい知識を意欲的に取り入れることができ、楽しいと感じることができる人はIT業界に向いていると思います。
あとがき
今回はいきなり思い立って下書きなしに書き始めた記事なので、読みづらかったかもしれませんw
なるべく読みやすい文章を書こうとは思っているんですが、読み手がどういう人か全くわからないんですよねぇ……。
だってまず、
- 句読点に合わせて文章を読む人
- 文章を字面で見て句読点では句切らない人
の2パターンがいますからね。それぞれで読みやすい文章は違います。
本当色々難しいんだわ。
まぁという感じで、今回はプログラミング言語やIT業界について少し綴ってみました。
「プログラミングはたしかに難しいけど、難しいポイントは業界外の人の認識とはちょっと違うよ」っていう内容の記事でした。
何かの意思決定のきっかけにしてくれたらうれしいです。
こじらでした
じゃ
コメント