The Self-Taught Programmer

This is a post for the BeProud Advent Calendar 2018 (Day 24).

プログラミングをはじめたきっかけ

もともとパソコンは好きでそこそこ使いこなしているつもりでした。しかし、ずっと「プログラミングは難しすぎる」という偏見を抱いてしまっていました。 つまり、まずは高度な数学を理解し、コンピュータ・サイエンスの勉強でもしないとダメだと思い込んでいました。

その考え方を覆してくれたのは、 CS50 でした。 ハーヴァード大学の教養科目で、コンピュータ・サイエンスの「入門編」ですが、 edX に無料のオンライン講座として公開されています。たまたま David J. Malan教授 の授業を見て、とても魅力的でした。受講者達に「ピーナツバターサンドイッチを作るためのアルゴリズム」を書かせたのです。そして、実際にTAやボランティア学生がそのアルゴリズムにしたがってサンドイッチを作ります( YouTube )。 そこで、プログラミングの「楽しさ」に気付かされ, オンライン講座に登録しましました。半年の間、C, PHP, JavaScriptに触れ、様々な課題を解きながらプログラミングの基礎的な部分を身につけて来ました。

ずっと「できない」と思っていたことは、実は「 やり続けたら、できるようになる 」ことだとわかりました。

その後、様々なサイトを使って、学びたいものを次から次へとピックアップしてきました。(役に立ったサイトについてはまた別でまとめたいと思っています。)

趣味から仕事へ

前職はカリキュラムの文言チェックや、時間割の作成など、「手作業」で行うタスクが多かったです。CS50を終えた時に、たまたま「 退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング 」という本と出会い、それらのタスクの自動化にチャレンジして見ました。 手作業で何日もかかるようなタスクが、数秒で終わってしまうようなプログラムが書けたときはとても嬉しかったです。ちゃんと想定通りに動くまでは十数日もかかってしまいましたが、最終的にはとても効率が良くなりました。 ただ、前職の業務内容に「ソフト開発」の文字はなかったから、合間作業になることが多く、複雑な気持ちでいました。「もっとコードを書きたい!」という欲望がだんだん強くなり、転職活動を始めました。実績がないことなど、技術要素に知らないことが多くかなり迷っていましたが、9ヶ月くらいで無事に就職を決めることができました。

脱・独学プログラマー

BeProudに入ってからは Python Challenge という、未経験に近い人が実業務のプロジェクトに必要なスキルを身につけるための研修を受けました。 一見、「コードを書く」タスクが中心ですが、独学プログラマだからこそ身につけられなかった要素もたっぷり含まれていました。

  • コードレビューの観点
  • Slackやチケットを使ったコミュニケーション(仕様確認など)
  • 作業時間の把握と共有

独りで学習・開発している時は、それぞれあまり気にしていなかったですが、チーム体制になるとどれも欠かせないものばかりです。「ずっと独りで黙って作業する」は、独学ならではのスタイルですが、チームで共同作業する時は「いない」と思われがちなので、コミュニケーションを意識する必要はあります。

また、技術的な内容についてはBeProudの先輩たちが書いてくれた Pythonプロフェッショナルプログラミング 第3版 も、かなり読み応えはあります。実務経験がなかった自分にとってはタイムリーな書籍で、参考になることがとても多かったです。

入社して9ヶ月目ですが、これからも、日々「学習」をし続けていきます。このブログはまだ作り途中ですが、身につけてきたことなど、少しずつここで公開して行きたいと思っています。