(プロが答える)プログラミングとはそもそも何か?② – よくある Q and A

Q and A
この記事は約41分で読めます。

こんにちは。九条です。

今回はプログラミングのよくある Q and A についてまとめました。

なお、この記事はプロが書いております。プログラマのリアルな実情を紹介したいと思います。

  1. 参考記事
  2. Q and A
    1. プログラマに成るにはどうすれば良いですか?
    2. 学生ですが、プログラマに成るためにやるべきことは有りますか?
    3. 副業、フリーランス、かつ在宅で働くにはどうすれば良いですか?
    4. 資格は必要ですか?
    5. 学歴は必要ですか?
    6. 文系でもプログラマに成れますか?
    7. 工業高校と、専門学校と、大学のどれが良いでしょうか?
    8. 何学部へ行けば良いですか?
    9. 高卒で就職しましたが、辞めて大学へ行くのはありですか?
    10. 数学、英語が苦手でもプログラマに成れますか?
    11. 5教科で言うと何が近いですか?
    12. コミュ障に向いている仕事ですか?
    13. どんな人にプログラマが向いていますか?
    14. プログラマのアルバイトはありますか?
    15. プログラマにならない人でもプログラミングを勉強した方が良いですか?
    16. システムエンジニアとプログラマの違いは何ですか?
    17. プログラマは稼げますか?食っていけますか?
    18. プログラマは AI の普及で淘汰されますか?
    19. プログラマの職場はブラックが多いですか?
    20. クラウドソーシングで稼げますか?
    21. スタンドアロンアプリと Web アプリはどう違うのですか?
    22. HTML&CSS はプログラミング言語ですか?
    23. もっとも稼げる(将来性のある)言語は何ですか?
    24. もっとも需要のある言語は何ですか?
    25. C言語は挫折しやすいですか?
    26. プログラミングは無料で始められますか?
    27. 子供にプログラミングを勉強させるには、何から始めれば良いですか?
    28. プログラミングを勉強したいのですが、何から始めれば良いですか?
    29. Web と書籍のどちらで勉強すれば良いですか?
    30. ホームページを作りたいのですがどうすれば良いですか?
    31. プログラミング上達のためには何をすれば良いですか?
    32. お勧めのプログラミングスクールはどこですか?
    33. デスクトップPCとノートPCのどちらが良いですか?
    34. Windows と mac どちらが良いですか?
    35. 写経はした方が良いですか?
    36. プロは幾つぐらいプログラミング言語を覚えていますか?

参考記事

(プロが答える)プログラミングとはそもそも何か?①

Q and A

プログラマに成るにはどうすれば良いですか?

副業、在宅、フリーランスのイメージがありますが、大半のプログラマは普通の会社員です。

大半のプログラマは、大学を卒業してから新卒で採用されてプログラマに成ります。もちろん、専門学校卒や大学院卒もいます。私もこのルートでプログラマに成りましたし、これが一番ハードルは低いです。

しかし、これは新卒採用のチャンスが必要なので、既に大学を卒業してから期間が経過している人には使えない方法です。

この場合、未経験者歓迎の求人に応募していくしかありません。しかし、多くの求人は、実務経験3年以上を条件に募集していて、かなり根気強く探す必要があると思います。

新卒枠ではなく既卒枠の場合、未経験者歓迎でも、まったく知識のない人を採用することはほとんどないと思います。なので、最低限の勉強はしてから応募すべきです。最低限の勉強すらしていない人を採用する企業は、疑ってかかるべきです。プログラマとは名ばかりで、単純作業に従事させられるかもしれません。営業職に従事させられるかもしれません。

さて、私が考える「最低限」ですが、これは基本情報技術者試験を突破し、かつ自分がメインで使いたい言語の参考書を最低1冊は読んで内容も理解しておくことです。

極々稀ですが、これ以外のプログラマに成る方法として起業する方法があります。自分でアイディアがあって、それを作って売ったら絶対売れる!という確信がある場合、それを自分で作る方法があります。

私はやっていませんが、これは非常に夢のある仕事の仕方です。

私は、東方project(東方シリーズ)のファンなのですが、この作品は ZUN さんという方がほぼ1人でゲームシステム、グラフィック、音楽、プログラムを全部担当して開発した作品です。

ただし、同人誌即売会にしてもアプリストアにしても、赤字にならずに売れている製品はごく一握りしか存在しません。

もしかしたら、アイディアも実現可能性もあるのに、設備や資金が無いと言うこともあるかもしれません。その場合は、誰かに投資してもらう方法があります。例えば、基本情報技術者の実施団体のIPAが未踏プロジェクトという企画をやっており、それを利用すると投資して貰える可能性があります。

私がアリエナイと思うのは、いきなりフリーランスになることです。極稀にそういう方もいるらしいので、全面的に否定する気はありませんが、フリーランスは普通に就職して、実務経験を積んだ方がなるものです。

詳しくは次の記事も読んでください。

(参考資料)副業、フリーランス、かつ在宅のプログラマを始めるにはどうすれば良いですか?

学生ですが、プログラマに成るためにやるべきことは有りますか?

情報工学等を専攻していて学校でプログラミングを教えてもらえる場合と、そうではない場合で変わってきます。

情報工学等を専攻している場合は、資格(基本情報技術者、できれば応用情報技術者)を取得するのがお勧めです。資格は役に立たないという声もある一方、高く評価する企業も存在します。

また、プログラミングを習ったら、実際に自分で何かを作ってみましょう。実力が明らかに伸びますし、作品を公表できれば出合いに繋がる場合もあります。

私の場合は、学業以外でもプログラミングをしていたことで、プログラマや講師のアルバイトをさせてもらうことができて、更にスキルを伸ばすことができましたし、人脈もできました。

情報工学等以外を専攻していて、学校でプログラミングを教えてもらえない場合は、本業の勉強が疎かにならない範囲で、自分で勉強しておくことがお勧めです。

新卒採用の場合、専門的スキルは評価せず、後で教育すれば良いという考え方の下で採用することが多いです。

しかし、全ての企業がそうではありません。

私が新卒で最初に就職した会社では、学業以外でもプログラミングをしていたことや、アルバイトをしていたことが評価され、採用になったように思えます。

それと、学校で習うことと言うのは、あくまで個人的な意見ですが、私は実務でも役に立つと考えています。ということは、就職する前からプログラミングを勉強したいた人と、そうでない人の間に大きく差が付きます。

また、採用した後、実際には教育せずに放置する企業もあります。その場合も、学生のうちからプログラミングをやっているかどうかで大きく差が付くことになります。

副業、フリーランス、かつ在宅で働くにはどうすれば良いですか?

これは、実務経験のあるプロなら可能かもしれませんが、素人にはまず無理です。また、仕事にありつけたとしても、全く旨味の無い働き方です。

詳しくは次の記事で考察しています。

(参考資料)副業、フリーランス、かつ在宅のプログラマを始めるにはどうすれば良いですか?

資格は必要ですか?

結論から言うと必要ありません。

本 Web サイトがテーマにしている司法書士試験は、この試験に合格しないと、法律上、司法書士にそもそも成れないという性質のものです。こういう資格を業務独占資格と言います。

司法書士と違い、プログラマの仕事に法律上、資格が無いとできない仕事は存在しません。情報処理安全確保支援士だけは名称独占資格です。司法書士と同じで、登録していない人が名乗ると違法ですが、業務独占資格は存在しません。

ただ、プログラマの仕事を資格必須にすべきという意見も存在しており、将来はどうなるか分かりません。

※CMMIのコンサルや監査のような特殊な仕事は資格が必要ですが、マイナーな分野ですので、例外と捉えておけば良いと思います。

こちらの記事もお読みください。

(参考記事)プログラマになりたいのですがお勧めの資格はありますか?

学歴は必要ですか?

資格と同じで、○○卒以上でないとプログラマに成れないという法律は存在しません。

そして、プログラマは実力主義社会でもあります。学歴が高いからと自動的に出世ができるわけではありません。

しかしながら、プログラマが学歴社会で、有名なプログラマや高収入のプログラマに高学歴な方が多いのも事実です。

先に述べた通り、プログラマの多くは新卒採用で採用されます。新卒採用では、実務能力を元に採用するのではありませんから、学歴が採用の判断基準のひとつになることは十分に考えられます。

そのため、学歴は高い方が有利だと考えています。高校よりは短大を、短大よりは大学を、大学よりは大学院を、採用面でも、待遇面でも有利だと思いますので、資金があるなら学校は出ておいた方が良いです。

ただし、私が最も尊敬しているプログラマは高卒で、その方は圧倒的な技術力を持っていて、収入も非常に高い方です。一方では、非常に偏差値の高い大学の出身者でも、実務が全く務まらずに、早期退職する方もいます。

なので、一概には言えないのも確かで、プログラマは学歴社会かつ実力主義社会の世界だと言われています。

文系でもプログラマに成れますか?

なれます。

そもそも学問を文系と理系に分けるのが、かなり根拠に乏しい考え方だと思います。文系と理系両方の性質を持つ学問も存在します。同じ文系でも、国語、英語、社会では全く要求される適性も異なります。他の記事でも書きましたが、私は国語と英語が苦手で、社会は圧倒的に得意です。国語は情緒や感情を文章から読み取る繊細な感性が要求されることもありますが、社会は文系の科目であるにもかかわらず、そのようなことは要求されません。

先に述べた通り、プログラマの多くは新卒採用で採用されます。新卒採用では、実務能力を元に採用するのではありませんから、文系の方でも普通に採用されます。

ただし、学生のうちからプログラミングを勉強していた方が、就職してから有利だと思います。この差を覆すにはそれなりの努力が必要になります。

なので、文系の場合、入社後にプライベートの時間を削って勉強が必要になることは覚悟すべきですし、それが嫌なら、学生のうちに予習した方が良いと思います。

工業高校と、専門学校と、大学のどれが良いでしょうか?

まず、工業高校は全くお勧めしません。

私が工業高校出身者なのですが、かなり自分の選択を後悔しています。

というのは、工業高校の場合、教師は実務経験者ではありませんし、プログラミングが好きでその道を選んだ人は稀です。非常に言い方が悪いですが、大学では情報工学を専攻したものの、プログラマになれなかった落ちこぼれが、プログラミングから逃げて教師になることもあります。

なので、大したことは指導してもらえませんし、高校生が本気で勉強すれば、教師を簡単に追い抜くという状況になってしまいます。

そうすると、教師から目の敵にされて、クラスで浮き上がってしまい、いじめの対象になることさえあります。というか、私がそうなりました。(これは、私の人当たりの悪い性格も影響しているのかもしれません。)

工業高校と言うとオタクが多く、気の合う奴がいるかもしれないと思うかもしれませんが、実際には進学校の方がオタクも多いですし、意識が高い人が多いです。私の場合、同じ工業高校の生徒の友達よりも、進学校の他校の生徒の友達の方が多かったぐらいです。

もっともこれは学校次第なところもあります。私の高校は極端なケースかもしれません。学校次第では実務経験のある教師や、熱血教師がいて、きちんと指導してもらえる可能性もあります。

※商業高校については経験が無いので分かりません。

専門学校を選ぶ場合は、短大卒扱いになるところを選ぶことが前提です。今流行りのプログラミングスクール等は短大卒扱いになりません。こういうところを選ぶと新卒枠で応募できないので学歴そのものが就職の役に立つことにはならないことが殆どです。

先に述べた通り、資金があるなら学歴は高い方が良いと考えています。高校よりは短大を、短大よりは大学を、大学よりは大学院を出た方が良いです。

これは、実際に求人サイトやハローワークを見ていただければ分かります。学歴で応募制限を付けている求人はそれなりにあります。高卒以上とか、短大卒以上とか、大卒以上とかです。

なので、専門学校よりは大学を出た方が、就職先の幅は広がります。

何学部へ行けば良いですか?

基礎から学問分野まできっちりやりたい人は、情報学部、情報工学部、工学部情報科等が良いと思います。

ただ、これらの学部や学科は、ごく一般的なプログラマに成る場合は、オーバースペックかもしれません。独自に言語を作りたいとか研究者になりたいというのであれば、これらの学部や学科を選んだ方が良いと思います。

プログラミングは色々な分野と絡んできますので、経営情報や環境情報のような学部も存在し、そういうところでもプログラミングを学ぶことは可能だと思います。

高卒で就職しましたが、辞めて大学へ行くのはありですか?

ありですが、多額の学費を要するので慎重に考えましょう。

私の周りにも、就職してから、情報工学のある大学へ行き直した方、大学院へ進学した方がいます。どちらも新卒枠でプログラマに採用されており、就職には成功していると言えます。

年齢にもよります。日本の就職事情というのは、年齢が上がるほど、未経験の分野に飛び込むのが難しくなると言われています。個人的に、このことは不条理なことに感じますが、それが現実です。

数学、英語が苦手でもプログラマに成れますか?

なれます。

というか、私がどちらも苦手です。

多くのプログラマは数学とは無縁な仕事をしています。

プログラミング言語を習得する上でも、実務を行う上でも数学は必須ではありません。

ただし、数学は分野によっては必要になります。つまり、プログラミングで何をしたいのかによって変わってきます。例えば、3次元のゲームやVRコンテンツを作る場合は、線形代数学の知識が必要になります。

私も、学生の頃は趣味でそういうものを作っていたので、数学の知識はそれなりにありましたが、今はもう忘れてしまっています。

私はそのような仕事をしていませんが、最近流行りの人工知能やデータサイエンスの分野では数学が必要だと言われています。そしてこういう仕事は高収入なものが多いです。

なので、数学が得意な方が仕事の幅が広がりますし、高収入な仕事を得られる可能性もあります。

英語については、プログラミングそのものには全く必要ないですが、英語のマニュアルを読む場合は必要になります。

とは言っても、最近流行りのプログラミング言語やライブラリについては、日本語のものが出回っていますので必須という訳ではありません。

プログラミングに関する技術の多くは、海外で開発されていて、日本語の資料が追い付かないことがよくあります。そのため、最新の技術を使って仕事をしたい場合は英語が必要になります。ですが、プログラマの誰しもが最新の技術を使って仕事をしているわけではありません。

数学と同じで、英語が得意な方が仕事の幅が広がりますし、高収入な仕事を得られる可能性があると思います。

以上から、数学も英語も必須ではありませんので、苦手だからプログラマに成れないと思う必要はないですが、できた方が良いのは間違いないです。

5教科で言うと何が近いですか?

プログラミングは理数系の学問と思われがちですが、実は社会科の要素が強いです。

まず、プログラマは仕様書を書いたり読んだりする機会が沢山ありますが、これには緻密な文章能力が要求されます。これは法律の勉強にも通じるものがあります。言うまでもなく、法律は社会科に当たります。文章能力と言えば国語でも要求されるかもしれませんが、国語の文章能力というのは情緒や感情を文章から読み取る繊細な感性が含まれており、プログラミングに要求される能力とは異質なものです。

多くのプログラマはお客さんから仕事を請けて何かを作ることが多いと思いますが、そのためには、お客さんの業務の事を知っている必要があります。例えば、不動産関連のソフトを作るのであれば、法律について知っておく必要がありますし、会計ソフトを作るのであれば、会計について知っておく必要があります。

そして、法律や会計は社会科の分野です。

この他、プログラミングをチームで行う場合に、それをどうやってまとめて行けば良いかというプロジェクトマネージメントという分野もありますが、これもまさに社会科です。

社会科の大きな性質として、当為の法則を扱うということがあります。当為の法則とは、「~べきである。」という法則です。プログラミング言語そのものは当為の法則ではないのですが、言語の使いこなし方は当為の法則の塊だと言っても過言ではありません。例えば、「プログラムにはコメントを書くべきである。」「コメントを書くなら分かり易いプログラムを書くべきである。」等です。

道徳も求められます。

プログラミングは職業倫理が強く要求される仕事です。情報処理安全確保支援士の研修でも数時間をかけて、倫理についてディスカッションする機会があるほどです。

単純接客業であれば、お客さんの気持ちだけ考えて動いていればいいかもしれませんが、プログラマの場合は、例えば、品質等、お客さんの気持ち以外にも譲れないことが出てきます。

例えば、品質だけを取っても、品質は絶対に妥協しないという方針も有れば、お客さんが望んでいて、かつ品質を犠牲にするリスクを、品質を犠牲にしたことによって生じる利益が圧倒的に上回るのであれば、犠牲にしても良いという考え方もあるでしょう。また、どちらが正しいのかは場面場面で変わるという考え方もあります。

コミュ障に向いている仕事ですか?

これは難しい質問です。

プログラマにはコミュニケーション能力が要求されると言われていますが、コミュニケーション能力という言葉が具体的に何を指すのかという問題があります。

完全に一人で仕事をしたいという場合、間違いなくプログラマには向いていません。

東方project(東方シリーズ)の ZUN さんのように、起業して一人で全部やるなら別ですが、多くのプログラマは人と共同作業を行います。

大半のプログラマは、お客さんから仕様をヒアリングして作りますから、そこでコミュニケーションは発生します。またお客さんと直接接しないプログラマもいますが、それでも同業者から仕様を聞き出すのにはコミュニケーションが発生します。

プログラマが取り扱うのは非常に複雑な事象が多いです。そのため、複雑な事象を如何にして正確に人から聞き取るかあるいは人に伝えるか、という能力が要求されるのは間違いありません。その意味では、コミュニケーション能力が要求されます。

ですが、必ずしも「人当たりの良さ」という意味でのコミュニケーション能力は求められません。

実際、私は非常に人当たりの悪い性格ですがプログラマは務まっています。接客業に比べると、多少人当たりが悪くともプログラマと言う仕事は務まると私は実感しています。

なので、コミュニケーション能力という言葉が具体的に何を指すのかによります。

どんな人にプログラマが向いていますか?

分かりません。

心理学的性格検査とプログラマの収入の相関を研究した論文は見たことがありません。

プログラマとして成功している人であっても、人によって「こう言う人がプログラマに向いている」という意見は異なります。

なので、こういう性格の方が向いていると一概に申し上げることはできません。

ただ、中にはプログラミングをいくら親切に教えても、血を吐くような努力をしても理解できない方がいます。

なので、プログラミングの業界に飛び込むのであれば、独学で良いので予め勉強して、自分に向いているかどうかを見極めておく必要があると思います。

プログラマのアルバイトはありますか?

少ないです。

プログラマのアルバイトは実務経験が必須となっている場合が多いです。

プログラミングの仕事はあまりアルバイトには馴染みません。

というのは、プログラミングには次のような特徴があるからです。

  • 実務経験者であったとしても、戦力になるためには既に作り込んである既存のプログラムの動きを教える必要があり、育成に時間がかかる。
  • プログラムには書いた人の個性が入る場合があり、人の入れ替わりがあると引継ぎのコストが発生する。

こういう性質から、プログラマには長期勤務して欲しいという要望が発生します。

アルバイトは、短期間を想定していることが多いですから、この要望に馴染まないと言えます。

プログラマにならない人でもプログラミングを勉強した方が良いですか?

した方が良いです。

これは、弁護士にならない人にも、義務教育で法律の入門部分を教える必要があるのと同じです。

理由は3つあります。

1つめは、プログラミングを趣味にしている方がいますが、プログラミングについて知れば、貴方の趣味がひとつ増えるかもしれないからです。貴方の世界が広がるとも言えます。

2つめは、プログラミングを自分自身ではやらないとしても、仕事で問題に直面した時に、こういうときはプログラマに仕事を頼めば解決するんだ、ということが想像できるようになるからです。プログラミングを知らなければ、仕事を依頼するという発想が出てきません。

3つめは、セキュリティ対策のためです。例えば、一昔前にウィルス対策ソフトに偽装したウィルス(Win AntiVirus Pro)が流行しました。ネットを閲覧中に、「あなたのPCはウィルスに感染しています。」と脅して、ウィルス対策ソフトを勧めてくるという手口です。このお勧めしてくるウィルス対策ソフトが実はウィルス対策ソフトではなく、ウィルスなのです。この手口に騙されてウィルスを自らインストールした人がたくさんいました。これは、インターネット経由で、いきなりウィルスをスキャンすることはできない。(HTML と JavaScript だけでは閲覧者のPCのファイルには、原則として直接アクセスできない。)というプログラミングの基礎を知っていれば防げたはずの問題です。このように、初見のセキュリティ上のトラップを見抜けるようになるという利点があります。

システムエンジニアとプログラマの違いは何ですか?

この区別は曖昧になっていて、単に肩書の違いでしかないこともあります。

昔は、プログラミングをする場合は、システムエンジニアが先に設計書を書き、プログラマが設計書通りにプログラミングするという区別をしていました。言い方を替えれば、お客さんとプログラマの橋渡しをするのがシステムエンジニアということになります。

しかし、設計書を書いたら、それをそのまま作れば、お客さんが望むものができ上がるということは稀になっています。

システムエンジニアとプログラマが明確に分かれている職場であっても、プログラマが実際に設計書を見た段階で、初めて設計書の矛盾が発覚するということもあります。この場合はプログラマも一緒になって設計を詰めることがあります。

また、最近流行りのアジャイルソフトウェアのような開発手法では、お客さんを開発に巻き込んで、プログラマと直接やりとりしながら開発することもあります。

プログラマは稼げますか?食っていけますか?

稼げますし、食っていけます。

まず、司法書士と違い、プログラマはプログラマを名乗るために試験に合格したり、登録したりする必要がありません。

そのため、ニートでもプログラマを名乗れます。その意味では稼げないプログラマも食っていけないプログラマもいるのですが、これは極論なので、会社員のケースについて考えます。

会社員の場合、会社員の平均値程度は余裕で稼げます。

実際に、求人サイトやハローワークを見ていただければ分かります。未経験者でも月給20万円程度は貰える求人が多くを占めています。ここらか出世すればさらに上を狙うこともできます。

夢のある話をしておくと、自分でアイディアを出して製品にして、それがヒットすれば、もっとたくさん稼げる可能性もあります。

それと、プログラマは安定しています。

手に職を付けるタイプの仕事ですから、会社を辞めたとしても次を探しやすいのです。

ただ、これは高い技術力を持っていることが前提です。技術力が伴わないプログラマの場合は、会社をクビになるか、自発的に辞めてしまうこともあります。

よって、プログラマとして、稼ぐため、食っていくためには、高い技術力を身に着ける必要があると言えます。

プログラマは AI の普及で淘汰されますか?

されません。少なくとも、されないというのが当事者の多数派の意見です。

今、このような議論が非常に流行っています。「職業○○が AI の普及で淘汰される。」という議論です。司法書士も AI の普及で淘汰されると言われることがあります。

往々にして、これらの議論をする人は、その職業のことを何も理解していません。その職業に就いている当事者からすると、とてつもなく無知な事を言っていると映ります。

このような議論が流行する理由は分かりませんが、そういう議論をすれば、本が売れたり、ブログの収益が発生したりする環境があるのでしょうね。

プログラミングをする上では顧客からヒアリングして提案することが必要ですが、それは AI が苦手としている分野です。

また、そもそもの話、AI を作るのはプログラマの仕事です。そうだとするならば、AI が普及すればするほどプログラマの仕事は増えるはずです。AI の普及によっていろいろな仕事が淘汰されるのが真だとしても、AI を作れるのがプログラマだけである以上、AI が普及しても最後まで残る仕事はプログラマであるはずです。

以上から「プログラマが AI の普及で淘汰される。」という議論がいかに無責任で頓珍漢なことを言っているかがお分かりいただけるかと思います。

実は、AI に限らず、プログラミングを自動化しようという試みはありました。その中にはそれなりに成功しているものもありますが、使いこなしに非常に高い専門知識を要求されるので、結局、それを扱うのがプログラマの仕事になります。例えば、仕様を入力するだけでプログラム言語を使わなくてもプログラムが動作するソフトは研究中ですが既に存在します。しかし、仕様を入力するには、プログラムを書く以上の専門知識が要求されるのです。

私の予測ですが、AI が普及した場合に、淘汰される可能性があるのはプログラミング言語です。プログラミング言語を使わなくてもプログラムを作れる時代は来ると思いますが、プログラミング言語の代替となるソフトを使いこなすのにプログラマが依然として必要になると考えています。

プログラマの職場はブラックが多いですか?

職場に依りますが、平均的に見るとホワイトな職場が多いと言われています。

たしかに、過労自殺するような方も一部存在するのは事実です。そして、プログラマと言えば、徹夜のイメージを持つ方もいるかもしれません。しかし、多くのプログラマは徹夜なんてしていませんし、休日出勤も稀です。定時で上がっている人が多数派だと思います。

クラウドソーシングで稼げますか?

稼げません。少なくとも私は稼げません。

まず、クラウドソーシングにはお客様先常駐のような、フリーランスのエージェントサイトと同様の案件が掲載されていることがあります。受注したことは有りませんが、そういうものは稼げる可能性があります。

しかし、クラウドソーシングと言って一般にイメージされるであろう、副業在宅の業務形態では稼げません。今からお話するのも在宅副業の業務形態のお話です。

実は、私も失業していた頃にクラウドソーシングサイトに登録したことがあります。しかし、稼げないと思ってすぐに撤退しました。

クラウドソーシングサイトに色々な案件が貼ってありますが、安い案件ばかりです。できるだけ早く仕事を片付けて沢山の仕事をこなせば稼げるだろうとは思いますが、それは難しいのです。

早く仕事を片付けて沢山の仕事をこなすには、その仕事の分野に精通している必要があります。プロと言ってもあらゆる専門分野に精通しているわけではありません。精通しているのは実務経験のある特定の分野だけです。

そうなると、実際に受注できる仕事は非常に限られてきます。クラウドソーシングサイトには多数の仕事があるように見えて、実際に受注できる仕事は、プロでも少ないのです。

もちろん、不慣れな仕事でも時間をかければできるのですが、そすると最低賃金を割ってしまうので、普通にバイトした方がマシということになります。

稀に、素人でもできるような仕事があるのは確かですが、そういう仕事は競争率が高く、実績豊富な方がかっさらって行きます。

そういう方よりも優先して発注していただくためには、安くする必要があると思いますが、そうするとやはり最低賃金を割ってしまいます。

また、実際には価格交渉等、プログラミング以外の手間も発生します。私もあともうちょっとで受注というところまでいって、仕様書を見せて頂く段階まで進んだものの、価格交渉に入って高すぎるという理由で結局仕事が流れたことがあります。

こういうプログラミング以外の手間は丸々損失となりますから、こういうことを繰り返していると、仕事を受注できたとしても、やはり最低賃金を割る可能性があります。

プロでもこんな感じなのですから、素人が稼ぐのはもっと現実的ではありません。

それに、これが一番問題なのですが、クラウドソーシングで小規模な単発の案件ばかりを取っても、スキルが付きません。

よく、クラウドソーシングで副業から始めて、スキルを付けて、企業から大きな案件を取ろうという主張を見かけます。

しかし、そういう大きな案件はチーム作業です。チーム作業をする場合、小規模な単発案件とはまた違ったスキルが要求されます。例えば、開発方法論というジャンルの知識です。こういうスキルは、クラウドソーシングで小規模な単発の案件を取ることを繰り返しても身に付きません。

実務経験者を募集している求人に、クラウドソーシングでの実務経験を主張しても、認めてもらい難いのではないかと思います。

スタンドアロンアプリと Web アプリはどう違うのですか?

現在、ソフト(特にアプリケーションソフトウェア)をスタンドアロンアプリと Web アプリに分けて論じるのが主流になっています。

この他に、基本ソフトウェアとアプリケーションソフトウェアという分類の仕方もあって、本来ならば、こちらの方が正し分け方なのですが、とりあえず置いておきます。

スタンドアロンアプリとは、PC やスマホの端末の上で直接動作するアプリです。典型的には Android に搭載されている電卓アプリのようなものが該当します。動作する上で、インターネットに接続する必要が原則として無く、全ての処理はスマホで完結します。PC のアプリである Word や Excel もスタンドアロンアプリに分類されます。

スタンドアロンアプリの特徴として、動作が端末の計算速度の性能に依存することが挙げられます。端末の計算速度によっては動作がもたつくことがあるわけです。特に、ゲームは分かり易く、PC や家庭用ゲーム機向けに作られたゲームを、そのままスマホに移植することは困難です。これは PC や家庭用ゲーム機の場合、計算速度が速く、それに合わせて作っているので、計算速度の劣るスマホでにそのまま持って行ってもまともに動かないからです。

これに対して、Web アプリというのがあるのですが、こちらはややイメージが持ちにくいかもしれません。分かり易い例としては Gmail が Web アプリです。Web アプリは、ブラウザ(インターネットを閲覧するためのソフト)と、サーバ(インターネットの向こうにあるコンピュータ)の共同作業で動作します。

要は、Gmail を例に考えると、インターネットに繋がってさえいれば、自宅の PC でも会社の PC でも、スマホでも同じメールを閲覧できます。自宅の PC でメールを削除すれば、会社の PC から見てもスマホから見てもメールが消滅しますよね?

これは、メールのデータを端末が抱えておらず、サーバが抱えていて、どの端末から見てもサーバは同じデータを返すからです。プログラムの本体はサーバに存在し、サーバが自分の抱えているデータを端末に配信し、端末はそれをブラウザに表示しているだけです。

Web アプリの特徴として、ブラウザさえあれば、端末を問わず(PC でもスマホでも)動作することが挙げられます。ただし、ブラウザで計算負荷の高い処理を行う Web アプリも存在しており、そういうものは端末の計算速度の影響を受けることになります。

HTML&CSS はプログラミング言語ですか?

違います。

HTML はマークアップ言語に分類され、CSSはカスケーディングスタイルシートの略です。なお、他のマークアップ言語として XML や LaTeX が存在します。

Progate のようなプログラミング入門サイトに HTML&CSS の講座があることから、プログラミング言語だと誤解されがちですが、HTML&CSS はプログラミングと直接の関係はありません。

重箱の隅をつつくように感じられる方もいるかもしれませんが、プログラマに言わせれば結構重要なポイントですし、ここを誤解したままだと永久にプログラミングはできません。

私は、冒頭の参考記事の方で次のように述べています。

コンピュータへの命令を1行1行を入力していき、コンピュータはこれを上から順に実行するのですが、この命令には2つの重要な仕掛けがあります。

  • ユーザの入力等が、特定の条件を満たす場合、ある部分の命令の実行をスキップする。(あるいは、満たす場合だけ実行する。)
  • ユーザの入力等が、特定の条件を満たす場合、ある部分の命令を繰り返し続ける。

実は、これらの仕掛けだけで、世の中のソフトは全て作れてしまいます。

HTML&CSS にはこのような特性がなく、HTML&CSS ではプログラムを書けません。

では、HTML&CSS とは何かというと文書です。Word や Excel の保存ファイルと同列に考えてしまって構いません。ただし、HTML&CSS には重要な特徴があり、それは編集に専用のソフト(Word や Excel)を必要としないと言うことです。メモ帳と言われる PC に標準で搭載されているアプリがあれば、どの機種の PC であっても編集することができます。また、ブラウザ上での表示に特化した文書です。一般的なブラウザは Word や Excel の文書を表示できないかと思いますが、HTML&CSS はブラウザであれば必ず表示できます。

以上の特徴は、自動生成のしやすさに繋がります。Web アプリではサーバがプログラムを実行した結果、HTML&CSS の文書が自動生成され、サーバはそれをブラウザに返し、ブラウザはそれを表示することで Web アプリが成り立ちます。

また、HTML&CSSの特徴としてリンクを貼ることが容易にできるということもよく挙げられることです。

この記事では HTML&CSS とまとめて表記しましたが、厳密に言うと個別の概念です。HTML が文書本体だとすると、CSSは文書を画面に表示する際のレイアウトや装飾を決めるものです。

以上から、HTML&CSS は Web アプリを作るなら必須の前提知識となりますが、プログラマの誰しもが使うものかと言えばそうではありません。

もっとも稼げる(将来性のある)言語は何ですか?

C言語です。

実は、C言語の需要は殆どありません。

求人サイトやハローワーク、フリーランスのエージェントサイトを見ていただければ分かりますが、C言語の案件は非常に少ないですし、これからも減っていくと思います。

ですが、一流のプログラマにC言語を知らない人はあまりいません。

C言語は原始的な言語ではあるのですが、非常に汎用性の高い言語で、有名どころでは Windows はC言語で作られています。そのため、他の言語に何らかの形でC言語の影響がみられることが多々あります。影響というのは必ずしもポジティブなものではありません。むしろ、C言語を反面教師にした言語が多いです。

後発の言語の機能について深く理解しようとした場合、その反面教師の事も知っておく必要があると思うのです。例えば、現在実用化されている言語の殆どに搭載されている「ガベージコレクション」はC言語の理解のある人には理解しやすい概念ですが、C言語を知らない人には意味不明な概念になると思います。

IT業界は変化が激しいのですが、C言語は不変の基礎を学べる「強い」言語だとも言えます。

求人をよく見ると、稀にですが、C言語を使わないにもかかわらず、C言語を知っていることを募集の要件としている案件もあります。

もっとも需要のある言語は何ですか?

これは明らかに JavaScript です。

※JavaScript と Java は名前が似ているだけの全く別の言語です。

もっとも、今からプログラミングを勉強しようとしている人にとっては現在の需要よりも将来の需要の方が意味を持ってくると思います。しかし、将来どの言語が流行ると予測するのは、「職業○○が AI の普及で淘汰される。」という議論と同じく、無責任なものになります。なので、将来の予測ではなく、現在の話をします。

JavaScript は、現在においてブラウザ上で実行可能な唯一無二のプログラミング言語です。そのため Web アプリを作るのであれば、ほぼ確実に使います。

ただし、JavaScript だけでは片手落ちになってしまいます。Web アプリは、ブラウザと、サーバの共同作業で動作すると述べましたが、Web アプリを作るためには、ブラウザで動作する言語だけでなく、サーバで動作する言語も必要だからです。(ただし、電卓のようなアプリであれば、ブラウザだけで完結することもあるので JavaScript だけで作れます。)

そのため、Web アプリを作りたいのであれば、JavaScrip に加えてサーバで動作する言語も学ぶことになります。

サーバで動作する言語で、私が、現在において最も需要があると思うのは PHP です。これは、求人サイトやハローワーク、フリーランスのエージェントサイトを見ていただければ分かりますが、PHP の案件は圧倒的に多いです。

実は、私も在宅の仕事を探していた時期があったのですが、在宅の仕事の殆どが PHP と JavaScript の案件ばかりで、これらの実務経験者でないと応募できないものばかりでした。私は、元は C# プログラマで、当時、PHP も JavaScript も経験が無かったため、かなり焦ったのを覚えています。とりあえず、就職して PHP と JavaScript の経験を積ませてもらうことが、生き残るためには必要だと感じました。

管理人は全くかじってもいませんが、PHP 以外では、最近、Python の需要も伸びています。

Python は、報酬の高い案件が多いという特徴(ただし、難易度も高い案件が多いです。)があり、最近注目されることの多い言語です。

C言語は挫折しやすいですか?

何とも言えません。

世間ではとてつもなく難しい言語という見方が支配的のようです。

しかし、それは実務として何かを作りたい場合の話です。学習レベルであれば、それほど難解なわけではありません。

実は、C言語の文法は非常にシンプルにできていて、覚えることは非常に少ないです。むしろ、最近の言語にはクラスやガベージコレクションという非常に難解な概念があり、躓きポイントになっています。C言語のポインタや構造体、malloc() による動的メモリ確保も躓きポイントではありますが、最近の言語の躓きポイントに比べれば、大分ハードルは低いのではないかと思います。

プログラミングは無料で始められますか?

はい。

例外はあるものの、今流行りの大抵のプログラミング言語の処理系は無料です。

ただしプログラミング言語の処理系そのものではなく、IDE や高機能テキストエディタ等の、開発を効率化するためのソフトは有料であることが多いです。これらは、実務では必須の場合がありますが、学習レベルでは必須ではありません。

ただし、パソコンとインターネットの接続環境は必要です。スマホでプログラミングできる言語処理系も無いわけではありませんが、作業効率の観点からとてもお勧めできません。

インターネットの接続環境が必要なのは、プログラミングの作業では、インターネットを使って調べなければならない場面が多々あるからです。また、スクラッチや Progate のような Web アプリ形態の学習教材も存在しており、それらを動作させるためにもインターネットの接続環境が必要です。

子供にプログラミングを勉強させるには、何から始めれば良いですか?

まず、子供が望んでもいないのに勉強させても、伸びるわけではないと思います。プログラミングは本人の自主性が大事です。それを踏まえた上でお読みください。

スクラッチと言う教材(無料の Web アプリ)があるので、それを始めてください。対象年齢は小学生ぐらいです。もっと低い年齢の場合はスクラッチ Jr というスマホアプリがあります。

スクラッチは一見するとプログラミングをやっているようには見えないですが、実はプロから見ても本格的なプログラミング言語に属します。HTML&CSS はプログラミング言語ではないと述べましたが、スクラッチはプログラミング言語の要件である、逐次、選択、繰り返しの3要素を具備しているため、立派なプログラミング言語です。

C言語を使うと、画像を表示し、それを主人公に見立てて、キーボード操作で上下左右に動かすだけでも1ヵ月以上かかると思います。ネット上のサンプルをそのまま写せばすぐに終わることですが、きちんと自分で考えて作れるようになるには、C言語の文法を理解しておく必要がありますし、Windows という OS の仕組みについても理解しておく必要があります。

この点、スクラッチであれば、フィーリングで触っているだけでも、簡単なゲームぐらいなら1日で作れてしまいます。

スクラッチに慣れたら、本格的なプログラミング言語を勉強すればよいと思いますが、大抵の言語には、英語が必須ではないものの、英単語が登場するという問題があります。これは中学生以上になると問題とはならないのですが、小学生の場合は、ハードルになります。

この解決策として「なでしこ」という日本語のプログラミング言語が存在しています。管理人は使用したことがありませんが、英単語がハードルになるようなら、こういうものから試してみると良いでしょう。

子供向けの教材として、スクラッチの他に「RPG ツクール」というものもあります。これは、お手軽に RPG(ロールプレイングゲーム)を作るためのツールですが、プログラミングの勉強になります。実は、私も RPG ツクールからプログラミングの道に入りました。私が触っていた昔の RPG ツクールは、プログラミングと呼べるほどの機能を搭載しておらず、制約が大きかったのですが、最近の RPG ツクールは本格的なプログラミング言語を搭載していて、かなり凝ったことができるようです。

プログラミングを勉強したいのですが、何から始めれば良いですか?

何かしら目的(作りたい物)がある場合は、その目的に合ったプログラミング言語から入ることをお勧めします。その方がモチベーションも維持しやすいです。

以下の話は、何となくプログラミングを勉強したいという場合にお勧めの方法です。

大人の場合でも「子供にプログラミングを勉強させたいのですが、何から始めれば良いですか?」で取り上げたスクラッチや RPG ツクールから始めるのはひとつの選択肢です。

本格的なプログラミング言語を勉強したい場合は、課金が必要になりすが、Progate というサイトがお勧めです。

Progate の大きな特徴として、ただ読むだけでなく、課題を解きながら学べることと、プログラムをその場で打ち込んで動作を確認できることがあります。本格的なプログラミング言語を始めるとなると、何らかのソフトのインストールが必要となるのですが、Progate は Web アプリで完結しているので、今からでも直ちにプログラミングを体験できるという利点があります。

その代わり、Progate は、ブラウザという孤立した結界の中のような環境で動作するため、実際に何かを作りたいとなったときにやはりソフトのインストールが必要になります。Progate ではソフトのインストールについては触れていないので、ここで躓く人がたまにいます。

実際に何かを作りたい場合は、C#言語をお勧めします。プログラミングをする場合先に述べたようにソフトのインストールが必要になるのですが、ここで、海外製のソフトをインストールしなければならないことも多く、英語のサイトに行く必要があるので、これがひとつのハードルになりますし、インストールの他にも追加で作業が必要な場合があります。(例えば PHP であれば、Web サーバを立ち上げる必要があります。)

この点、C#言語は Microsoft の Visual Studio という日本語の無料のソフトをインストールすれば、プログラミングに最低限必要なものが一式手に入るようになっています。

Web と書籍のどちらで勉強すれば良いですか?

使い分けが必要です。

Progate を挙げましたが、Progate は書籍に比べると網羅性が高くなく、プログラミングの体験には適していますが、それだけで直ぐに何かを作れるようになるわけではありません。

また、言語の文法については Web にはあまり体系的な網羅的な情報源が存在しておらず、あったとしても難解なものが多いです。

なので、Progate をやる場合でもやらない場合でも、書籍で学ぶ必要が出てきます。

一方は、Web は「こういう時はどうすれば良いんだけっけ?」となったときに、検索すれば、端的に答えが得られる場合があるという利点があります。

そのため、体系的な網羅的な学習を終えた後に、実際にプログラミングをする段階に入ったときには、Web も使いこなす必要があります。

ただし、Web の誰が書いたか分からないコード(素人が書いているかもしれない)を無闇に自分のプログラムにコピペして使うのは危険です。Web の情報を参考にする場合は、本当にそれが正しいのか、公式のマニュアルを見て裏付けを取りましょう。

ホームページを作りたいのですがどうすれば良いですか?

プログラミングは必要ありません。

昔は、ホームページというと、HTML&CSS をメモ帳を使って書いて作成していました。その方法で今でも作れますが、もっと便利なものがあります。

※HTML&CSS はプログラミング言語ではなく、HTML&CSS をメモ帳を使って書いて作成しても、プログラミングではありません。

HTML&CSS をメモ帳を使って書くのはとにかく面倒臭く、ミスも発生しやすいのです。例えば、私の Web サイトであれば、上の方の表示領域に、メニューがありますが、メニュー項目を削除したくなった場合や順序を入れ替えたくなった場合、全ての記事(百近くあります。)のファイルを手作業で編集する必要が生じます。今時、こんなことはやりません。

(参考記事)3日あれば可能、WordPress アフィリエイトブログの作り方①

この記事で述べているように、ブログサービスか WordPress を使うことが一般的です。

実際に、私の Web サイトは WordPress でできています。Wordpress の場合、メニュー項目を削除したくなった場合や順序を入れ替えたくなった場合でも、数秒で作業が完了します。

ただし、Wordpress をカスタマイズして凝ったことがやりたいという場合は PHP や JavaScript を使用してプログラミングをする必要が出てきます。

以上の話は、ブログやそれに近い Web サイトを作る場合のお話です。

全く独自の機能を持ったホームページを作る場合は、自分でイチからプログラミングする必要があるかもしれません。

例えば、私は、暇があるなら、受験生が毎日の学習時間を記録して後で集計して表示してくれるようなホームページを作りたいと考えていますが、もしそれを作るのであれば、プログラミングが必要になります。

細かいことですが、全く独自の機能を持ったホームページは、一般的にはホームページとは呼ばないことが多いです。Web アプリという呼び方をします。

プログラミング上達のためには何をすれば良いですか?

プロ向きとなりますが、次の記事をお読みください。

(参考記事)プログラミング脱初心者(上達)のためにすべき3つのこと

まだ就職が決まっていない場合は、何か目的を決めて実際に作りながら覚えるのが最も効率が良く、モチベーションも維持しやすいと思います。何かを作った実績があれば、就職する際のアピール材料になる可能性があります。

お勧めのプログラミングスクールはどこですか?

※私はプログラミングスクールを利用したことがありません。

プログラミングスクール自体お勧めしません。

理由は3つあるのですが、1つ目は、プログラマが学歴社会なのに対して、プログラミングスクールを卒業しても、一般的には学歴とは認められないからです。これが専門学校や大学との決定的な違いです。新卒枠で応募できると就職では圧倒的に有利になるのですが、プログラミングスクール卒では、おそらく新卒枠での応募ができません。

2つ目の理由は、IT業界は変化が激しく、常に勉強しておかなければならないと言うことと関係してきます。

プログラミングスクールを使えば今流行りの技術は押さえられるでしょうが、それが仮に廃れた場合に、またスクールに行き直すのかという問題があります。スクールに行かないと学習できなかった人が、新しい技術について行けるでしょうか?

実は「IT業界は変化が激しい」と言っても不変の基礎が存在します。不変の基礎を押さえておけば、新しい技術が登場してもスムーズに学習できます。不変の基礎は学問の領域になってくるのですが、大学や専門学校ではそこまで踏み込んだ指導がしてもらえます。私自身は、プログラミングスクールを利用したことが無いので、明確なことは申し上げられませんが、そこまで踏み込んだことを教えてくれるスクールは、少ないのではないかと思います。

3つ目の理由は、プログラミングの学習においては、市販の教材が圧倒的に最強だからです。

これが資格試験の勉強であれば、ものによっては必要な教材が市販されておらず、予備校に通うことが必須となる場合があります。しかし、プログラミングはそうではありません。

プログラミングを極めようと思えば、学者の書いた論文や著名な実務家の書いた本(一次ソース)を読む必要が出てきます。

プログラミングスクールの場合、独自の教材を使うと思われ、それらが分かりやすく解説されているというメリットはあるでしょうが、教材作成者の独自の解釈というノイズが入ってしまいます。

そうすると、一次ソースを誤解したまま解釈してしまうリスクがあります。

例えばリファクタリングと言う言葉はかなり誤解されています。本来、リファクタリングとはテスト自動化とセットで行うことで、バグを作り込まない環境を作ってから着手すべきものですが、そこが抜け落ちた状態で紹介され、誤解が広く浸透しています。(プログラミングスクールの教材が原因ではなく、もっと古くからあった問題です。

この他には、UML のユースケース図も誤解が多いです。ユースケースと呼ばれる要件定義の手法があり、ユースケース図はその文書の目次として使われることを想定したものですが、そこが抜け落ちて、何のための図なのか意味不明になっていることもあります。(これも、プログラミングスクールの教材が原因ではなく、もっと古くからあった問題です。

以上から、どんなに分りやすい教材あっても、一次ソースに触れることが必要だというのが私の意見です。

プログラミングスクールで分かりやすく教えてもらえることにメリットがあることは否定しませんが、それでは一次ソースを読む癖が付かないのではないかと思います。

デスクトップPCとノートPCのどちらが良いですか?

置き場所があるなら、デスクトップPCを強く推奨します。

プログラミングで何をしたいのかにもよるのですが、動画編集やゲームに比べたら、PCのスペックはそれほど要求されないことが多いです。文法事項を学習するだけなら、ノートPCのスペックでも問題ありません。

ただ、実務となると、ノートPCでは厳しくなります。というのは、ノートPCはディスプレイが狭いからです。私は、自宅でプログラミングをするときには、デスクトップPCにディスプレイ2台を接続して使用しています。学生の頃は、グラフィックスボードを2枚挿しして、ディスプレイ4台を利用していました。

何故、ディスプレイが複数必要かというと、プログラミングでは非常に多様なツールを使用する機会があるからです。

まず、プログラミングをするには、IDE(統合開発環境)かテキストエディタを常に開いて使うことになりますが、それがディスプレイ1台を占有します。

そして、プログラムの実行結果を確認するのにディスプレイ1台を使いたくなります。調べ物をするのにもブラウザを使いますし、その他にも、例えばタスクマネージャでCPUやメモリの使用状況を調査したりもします。こういう「その他のツール類」がディスプレイを占有してしまうのです。

もちろん、ディスプレイ1台で作業できなくは無いのですが、ウィンドウの切り替えの手間が面倒に感じますし、効率も悪くなります。

ただし、ノートPCでもディスプレイを外部接続できる製品があるので、そういう使い方も検討の余地があります。

Windows と mac どちらが良いですか?

Windows を強く推奨します。

Windows を利用している人が圧倒的多数派です。

mac にできて Windows にできないことと言うのはほとんど存在しません。例外としては iPhone や iPad のアプリ開発ぐらいでしょうか。

Windows をお勧めする理由としては、フリー(無料)ソフトの充実が挙げられます。例えば、mac で画像編集をしようと思うと PhotoShop という非常に高価なソフトが必要になりますが、Windows の場合、Paint.NET というソフトが無料で使えます。

この他に、データベース管理ツールの A5:SQL Mk-2、PupSQLite 等、Windows には非常に優秀なフリーソフトが揃っています。

Windows と mac の他に、Linux という環境もありますが、まだ mac よりは Linux の方が普及しているかもしれません。

Linux はサーバとして普及していて、サーバと同じ環境でプログラミングができるので、Windows で開発したプログラムをサーバに配置する際にスムーズに行えます。(同じプログラムでも環境が変わると動作しなくなることがあります。)

そして Linux は Windows や mac と違って無料で使えるという強みもあります。

ただ、Linux はGUI(グラフィカルユーザインターフェイス)の使い勝手が極めて劣悪という問題があり、個人的にはプログラミングに使うのはあまりお勧めしません。

写経はした方が良いですか?

写経と言うと、他人の書いたプログラムを丸写しする漢字練習のようなことを言いますが、全くする必要はないです。

プログラミングは自分で考えて書かなければ上達しません。

写経ではなく「模倣」なら学習方法として有効な場合があります。

「模倣」とは既存のソフトの外部仕様だけを見て、それと同じ仕様のものを自分で考えて作るということです。

プログラミングで上達したければ、何か目標を決めて実際に作っていくのが良いと言われていますが、何を作っていいか分からない場合もあると思います。

そこで、例えば Twitter と同じものを、自分で考えて作ろうというのが「模倣」です。これであれば練習になると思います。

プロは幾つぐらいプログラミング言語を覚えていますか?

極端な話ですが、プロでも新卒採用されて、きちんと教育を受けていない素人同然のプログラマも稀にいます。そういう方は、言語をひとつも覚えていません。

極論ではなく、もう少し典型的な場合をお話すると、色々な人がいます。

派遣やフリーランスで、色々なプロジェクトに関わる人の場合は複数の言語を使いこなせます。

しかし、ひとつの会社のひとつの部署でずっと仕事をしている場合は、ひとつの言語しか使いこなせないプログラマもいますし、それでも仕事で困ることはありません。

どちらが良いのかは一概に言えません。

ちなみに私はひとつの言語に精通しているタイプです。最近になって PHP と JavaScript を使うようになりましたが、ほぼ C# 言語だけでやってきました。

ひとつの言語しか知らなくても、お客さんからどんな要望が来ても対応できるようなスペシャリストになれば重宝される人材になれます。例えば、私は、C#言語でデザイナを使わずにイチから自作のコンポーネントを作成できますが、こういうことができる人材は少なく、職場によっては重宝されると思います。

ただ、本当にひとつの言語しか知らないという方は稀で、仕事で使う言語はひとつでも、趣味レベルで他の言語をかじったことがあるという方が多いでしょう。というのは、プログラミングでは複数の言語を覚えて、文法を言語間で比較することで理解が深まる場合があるからです。例えば、私なら、仕事ではほぼ C# 言語しか使用したことがありませんが、C言語や Java の文法も知っています。

⇐管理人の Twitter を Follow したい方はこちら。

コメント

タイトルとURLをコピーしました