山本五十六の名言「やってみせ」

まずは、あなた自身がプログラマーになって、見本を見せることが第１歩です。

プログラマーに向いている性格

その後受託系の会社に就職できたのだけど、人間関係がうまくいかなかったようで数ヶ月で辞めた。 鬱病気味になったみたい...。

どうやら、プログラミングという仕事の特徴について、あなたは理解していないようですね？

プログラミングの特徴は、「コンピューターが相手なので、嘘やハッタリが一切通用しない」ということです。

人間相手なら、適当に指示を出したり、いい加減な対応でも何とかなるけど、コンピューター相手だと1mmも融通が利きません。

従って、プログラマーに向いている性格は、

嘘をつかない 几帳面 パズルを解くのが好き

という3点が必要です。

警察に職務質問されて有名になった江添亮さんのブログ等を読んで、この方のようにネチネチと論理をこねくり回すのが好きなら、プログラマーに向いています。

(例)本の虫: 麻布十番で職務質問を受けた話 https://cpplover.blogspot.jp/2017/08/blog-post.html

プログラムというのは、小さな部品を組み合わせて、大きなシステムが作られています。

小さな部品がパズルのピースに相当して、大きなシステムがパズルの完成品です。

つまり、大きな問題を小さな問題に分解して、１つずつ順番に問題をつぶして行く姿勢が必要です。

プログラミング・パラダイム（考え方）には、

命令型 手続き型（Java等） 宣言型 問合せ型（SQL等） 関数型（Haskell等） 論理型（Prolog等）

があります。

命令型のプログラミング言語しか使えない人がプログラマーになると、テスト地獄に陥って、結果的に鬱病を発症しやすくなるだろうと危惧しています。

上述のように、パズルのピースを組み合わせてプログラムを作るには、「関数型」の作法を身に付けておくと良いでしょう。

関数型プログラミングを習得するために、今なら「Haskell」または「OCaml」というプログラミング言語をお勧めします。

HaskellやOCamlは、良い参考書がたくさんあるので、本屋に行って実物を確かめてください。

Haskellを学んでみて、パズルのピースを組み合わせる感覚が理解できたら、あなたはテスト地獄に苦しめられないプログラマーになれるでしょう。

もしも、Haskellが理解できないようだったら、残念ですがプログラマーには向いていないかもしれません。

（例外的に、あなたがマゾで、テスト地獄や残業、徹夜が楽しいと思える性格なら、Haskellが理解できなくても大丈夫かもしれません。）

Haskellの教材（英語）を紹介するので、参考までに読んでみてください。

http://learnyouahaskell.com/chapters

（このサイトの内容は、日本語の書籍「すごいHaskellたのしく学ぼう！」として出版されています。）

Haskellは、順番に学べば必ず理解できるようになっています。

もしも、Haskellが習得できなければ、大きな問題を小さな問題に分解して解決していく作業には不向きな性格かもしれないので、他の仕事も検討してはいかがでしょうか？

（人生は一度きり。時間の無駄にならないようにお気を付けください。）

あなたと友人が、無事Haskellを習得して、テスト地獄を乗り超えるスーパーハッカーになり、日本のIT産業を牽引されることに期待いたします。

（追記）

まずは、自分が作りたいアプリやサービスを作ってみよう。

自分が作りたいプログラムすら作れない人が、他人が希望するプログラムを作るなんてできっこないからねｗ

（プログラマーが楽で簡単な仕事だと思ったら大間違いですよ？）

（追記 その２）

関数型プログラミングをマスターしておけば、OOPでも役に立つよ。（現実には、関数型もOOPも必要に応じて投入するし）

iOS→「プロトコル指向プログラミング」「RxSwift」、Android→「RxJava」辺りのキーワードでググってみて。

別に皮肉とか宗教戦争で煽ってるわけじゃなくて、自分も苦労して辿りついた口だから、今から始める人には遠回りして、余計な苦労を味わって欲しくない。

（追記 その３）

他の人が書いてたけど、１人でプログラミングするんじゃなくて、２人（ペアプログラミング）や３人以上（モブプログラミング）から始めたら良いかも。

Googleの「プロジェクト・アリストテレス」で、仕事の生産性を改善するには「心理的安全性」が重要と分かり、プログラミングの仕事もやり方が変わって来ています。

ソニックガーデン倉貫さんの働き方が参考になると思います。

https://kuranuki.sonicgarden.jp/2017/01/psychological-safety.html

（追記 その４）

元記事が消えていたのでバックアップしておきます。（この投稿だけ読むと意味が分からなくなるため）

https://anond.hatelabo.jp/20170910205249

2017-09-10

■知り合いをプログラマにさせたいんだけど知恵を貸してくれ

プログラマって育休からの復帰しやすいだろうし、アルバイトよりは待遇いいし、勤怠ゆるいし、労力の割に楽ちんだと思うんだよね。 接客のバイトで消耗するくらいなら、プログラマになればいいと思っているのだが、その知り合いは自身のことをプログラミングを不向きと評価しているらしい。私は、プログラミングに限らず物事は時間をかければ習熟していくものだと思っているので、不向きではないと思うんだ。不向きというのは物理的に制限のある時だと思う。 その知り合いについて。 Vimはぎこちないけど使える。日常的にmacOSを使っていてターミナルの操作はできている。cd, ls あたりは理解している。 趣味を含めてアプリケーションを完成させた経験はないが、ifやfor文などの基本構文は理解している。数年前にプログラミングスクールのようなところに半年間通っていた。その後受託系の会社に就職できたのだけど、人間関係がうまくいかなかったようで数ヶ月で辞めた。鬱病気味になったみたい...。 何か成功体験があれば自然とのめり込んでと思うんだけどなかなかスイッチが入っていないみたい。 こちら側からは、プログラマーになれば？と直接は伝えてはなくて、素人でもプログラミングできましたみたいなネットの記事をシェアーしているくらい。(心理的リアクタンス避け) 知恵を貸して欲しい。

ツイートシェア