だれでもプログラミングで行き詰まる時

プログラミングを始めたばかりの人だと、プログラミングをしていて実装に行き詰まることが多くあります。 もちろん、一人前のプログラマでも新しい技術を使うときとかには、行き詰まることもあります。 しかし、そこでも 新米プログラマと一人前プログラマでは行き詰まらないためにすることの違い があり、 効率的に開発が行えるかが関わってくるのでは? と考えていたら RSAP という言葉を知りました。

RSAPって?

最近FreeCodeCampというサービスで学習をしていますが、 そこの初心者向けの記事に次のようなものがありました。 How do I get help when I get stuck? この記事でRSAPというという言葉が使われていて、行き詰まらないためにする行動の頭文字が使われています。 RSAPについて順に説明していきます。

R(ead the documentation or error)

公式ドキュメントとエラーをちゃんと読もう ということです。 オープンソースのライブラリであれば、大抵ドキュメントも更新されていますし、公式のチュートリアルもあることが多いです。 そのコードを見ながら、まず、公式通りにやって動くのかを試して、自分がやろうとしていることと照らしあわせて変更していきます。 ここらへんは、以前のこの記事で書いています。(プログラミングにおいて大切な’スパイクを打つ’とは?)

一人前のプログラマは、コードの意味を理解し、ドキュメントの指示に従える能力を持っている のだと思います。 英語で大変かもしれませんが、次第になれますし、コードも一緒に書かれているはずなので、見よう見まねでやってみることもできるはずです。

エラーについては、この記事で詳しく書いています。(新米プログラマが身につけておきたいデバッグに必要な3つのこと)

ある程度コードが読めるようになってきたら、使っているオープンソースのライブラリを読むという行為も非常に役に立ちます。 もしかしたら、ドキュメントには書かれていない機能に気づけたり、エラーの原因をより厳密に捉えることができます。

自分が参加しているプロジェクトでも、プルリクやコミットログ等を追って、何が変更されたのかや、以前のコードが書かれた理由を知ることができると、 より開発を進めやすくなると思います。

S(earch Google)

ググレカスです。大事なことですが、 調べ方にもやはりコツはあったりします 。 例えば、英語のみで検索してみると情報量が倍以上に増えますし、 期間(1年以内に更新があったもの等)を条件に組み込むことで古い書き方は除外したり、 エラーの時は、エラー文をそのまま貼り付けてみるのも効果的なことだと思います。

初心者が躓くことの1つの要因に 用語がわからない があります。 例えばRuby言語で:hogeみたいに:(セミコロン)が先頭についているオブジェクトって、 何て呼べばいいのかわからないと検索しにくいですよね。’:’みたいな記号だとgoogleの検索対象に含まれない場合もあります。 もし、これがSymbolクラスだと名前がわかっていると検索もしやすくなります。 そして、用語が日本語でも英語でもわかってくると自分で検索もできるようになってくるので、 「こういう書き方って何て呼べばいいんだ?」ということを先輩プログラマに聞いてみたりしてみると良いと思います。 ただし、プログラミング言語が違うと同じ言葉でも概念が変わったりするので、そこら辺は注意が必要です。

A(sk your friends for help)

ここまでやってみて解決しなければ次は他の人に尋ねる(助けを求める)段階です。もちろん相手だって暇ではないので、なるべく手短に済ませることがお互いに負担が少ないですが、 尋ねる相手は神ではないので、1のことを喋って10のことを理解できません 違う作業をしていることだってありますし、昔書いたコードで思い出すのに時間がかかるかもしれません。 しっかりと、何のプロジェクトで何のタスクで何に手間取っているのかを説明しなければならないので、ある程度要点を整理しないといけません。

さらに、 一人前になってくると一人で質問と回答ができてくるようになります。 どういうことか説明しますと、ITの業界用語にラバーダッキング という言葉があります。一人前のプログラマは例えオモチャのアヒルでさえ質問してみると答えがでてくるらしいです。 自分以外の物に説明するために要点を整理して、自分の考えなどをアウトプットしていくうちに自然と自分の中で答えが生まれてくる ようになるみたいです。

P(ost on Stack Overflow)

自分達の手に負えないような場合には、ネットで尋ねてしまいましょう。もしかしたら、今後も同じ問題で詰まっている人の助けになるかもしれません。 英語の stack over flow は有名ですが、日本語版の stack over flowteratail を使って質問することができます。

私の働いているソニックガーデンではRemottyというチャットツールを使っていて、そこにグループ単位で話題を投稿できる機能もあり、 ここが社内のstack over flowとなっていて、質問を投げると、知っている人が回答をくれるので役に立ちます。 そして、調べたりしたことは、qiitaに投稿されている(ほとんどはjnchitoさんが投稿してくれていますが)ので、 自分たちの会社で留まらせず外部にも情報を発信しています。

あたりまえだけど

以上でRSAPの説明は終わりですが、もちろん開発効率を上げるには、本を読んで知識を身につけたり、開発環境を整えたりすることで、早くしていくこともできます。 今回の記事では、そんな中でも普段の開発中の習慣について考えてみました。 こういった習慣も見直して改善していきたいですね。