2013年3月26日火曜日

「プログラミング出来ない奴ちょっと来い」を読んだプログラミングができない奴と、4年前の俺、ちょっと寄ってって

前置き


先日増田に投稿された記事

「プログラミングできない奴ちょっと来い(http://anond.hatelabo.jp/20130322031333)」

Gunosyで流れてきたり、トラックバックも沢山ついてるので気になっていたら、やっぱり

「プログラミングは一朝一夕に達成できるものじゃない - カレーなる辛口Javaな転職日記(http://d.hatena.ne.jp/JavaBlack/20130324/p1)」

なんて記事も書かれてました。

俺のポジションとしては概ね後者のエントリーに同意です。紹介されている本も良書なので読んでおくべき本だと思います。

だけど、この方法でプログラミングができるようになる人ってのはたぶん、本を一回読んで理解できて、授業なんかを受けて及第点を取って、コードを書いて一発で自分の物にする「頭のいい」人なんじゃないかと思いました。

あ、ちょっと言い過ぎました。

今回のブログのタイトルにもした「4年前の俺」は、プログラミングができない人間でした。どれくらいできないのかと言うと、次のような感じ。

  • 大学のプログラミングの実習の単位を落とす
  • 「1年勉強したらどうにかなるやろ!」と思って独学で勉強した
  • 結局、同じ授業を3回受けて単位を取得した
  • 可だった
大学の授業なので当然ながら周りの人達は1度の履修で合格、たまに再履がいても2回でどうにかなるレベルの授業。
それを3回も受けないとどうにもならなかったので、自信を持って「プログラミングができない!」を名乗っていいと思います。

ちなみに、今はプログラミングができるのか?と聞かれると今は次のような感じ。
  • 業務や趣味で利用している言語やFWのリファレンスを見れば、要望の実現可能性、必要な工数の見積、実装、試験が行える
  • 数カ月後に自分が見て理解のできるコードが記述できる
  • 数万行レベルのシステムに絡んだことはない
したがって、下の上くらいは名乗っていいと思います。中級はまだ早い気がしますが。

ですが「プログラミングができない」とは思っていません。
よって「プログラミングができない人が、初級レベルになる方法」レベルでの提案をさせてもらいたいです。

ただ、時期的に新卒や学生向けです。

対象読者


理由(授業、仕事など)があってアプリやシステム、ライブラリの実装を行いたいと思っていても、本を読んでも理解ができず、授業を聞いても頭に入ってこず、コードを書いても呪文にしか思えない人。このような人で「自分はプログラミングができない」思っている大学生や新卒。
あと、もしも時空が歪んでこの記事が4年前から閲覧できるなら、当時の俺。

プログラミングができるようになる2つの方法


結論から言うと方法は2つで、両方の実践が早道でした。
  • まず、良い師を見つけて自分が良い弟子になること
  • 良い友を見つけて、自分も良い友であり続けること
こうやって書くと、プログラミング以外でも通用できそうなただの体育会系一般論な気がして来ました・・・。

良い師を見つけて、良い弟子になること

良い師とは、「プログラミングができて、それを人に教えることができる」人です。

情報系の大学生ならこれは簡単ですね、あなたの履修している授業の先生です。

新卒も同じですね、あなたの教育担当の上司です。彼らに積極的を活用しましょう。

あなたはプログラミングができないのです。もっと言うと「何がわからないのか分からない」のです。だから聞きに言ってください。訪ねてください。師はあなたに教えるために居ます。あなたに教えて、その成果で飯を食ってます。

自分一人で考える時間が勿体無いです。俺はこれで2年間を無駄にしました。

良い友を見つけて、自分も良い友であり続けること

あなたの同期や同僚はあなたと同じレベル・・・と言う訳にはいかないと思います。

俺の大学の同期はみんなできる人で、ちゃんと4年で大学を卒業し、中には大学院にも行って就職をしました。俺が何年もかけて取った単位を簡単に取り、良い成績を納めてました。

でも、すごく良い人達でした。

詰んでる俺を助けてくれようと色々教えてくれたことを覚えてます。ただ、俺の態度は悪かったです。

まあ、嫉妬と言うかそういうのがありました。同じ学年で同じ授業を受けてるのに、なんで彼らは良い点取ってるのに、俺はできないんだ?そういう思いがあったので、彼らのアドバイスを素直に受け入れられなかったと思います。

お陰で2年間を余計に過ごしました。

まとめ

良書も読みましょう、コードだって書くべきです。
そして、それらと並行しつつ自分ができないのを認めて、誰かに頼りましょう。
以上が、自分が余分に大学生を2年間過ごして学んだ事柄でした。

元となった2つの記事とは、あんまり関係のない話に落ち着いた気がする・・・。

2013年3月6日水曜日

Hosebirdを使ってユーザーストリームを取得する

TwitterAPIも1.1になったりと色々盛り上がっている中、新しいライブラリのHosebirdをTwitterが公開しました。

米Twitter、Streaming API向けJavaクライアント「Hosebird Client」をオープンソースに

TwitterがAPIのクライアントライブラリをOSSにするのは初めてとのこと。

面白いのが、Twitter4jを利用していること。どの程度のことができるのかはわかりませんが、
今までTwitter4jを利用して作成したアプリケーションの拡張なんかがお手軽にできるかもしれませんね。

というわけで、TwitterなのでScalaでコードを書いてみました。sbt 0.12.2, scala2.9.3で動きます。




ClientBuilder#hostとClientBuilder#endpoint を変えてあげれば他のストリームもお手軽に取得できます。


あ、FirehoseだからHosebirdなのか。今気がついた・・・・。

GitHub