あるきながラジオ#12 【ゲスト回】大学生活でプログラミングを独学できたzuminさん②

TimeCrowd代表があるきながら語るポッドキャストのweb版です。
音声はこちらで聴くことができます。


2019.3.14

西小倉 zuminさん2回目、よろしくお願いします!

zumin よろしくお願いします。

西小倉 前回、zuminの自己紹介も兼ねて、中学生から今に至るまで、プログラミングをいかに独学してきたかを話してもらいましたけど。その続きで、プログラミングって教材とかはあっても、自分の頭で考えてどんどん進めていくことができる人になるには壁があって、どうやって初心者から脱却できるかっていう話ができればと思っています。僕も独学してきたので、独学あるあるとかの話をできればと思います。

僕から話すと、師匠がいた方がいいとか、ググればわかるやんとかっていう話は結構話題になると思うんですけど、僕が思うのは、三項演算子ってあるじゃないですか。A=B?C:Bっていう。

zumin はいはい、ありますね。

西小倉 あれを初めて見た時になんだこれはみたいな。三項演算子っていう言葉を知らないからググれないっていう。

zumin たしかにそういうの結構ありますよね。

西小倉 そうそう!ある程度プログラミングできちゃうと、「なんでわかんないの?」っていう風になるんだけど、冷静に考えたら確かに僕らもわからなかったよねみたいな。
学びたての人は、みんなこういう紆余曲折しながら勉強するんだけど、やっぱり全体像がわからない人は、ちょっとつまずくと、「私むいてない」みたいになっちゃうよね。

zumin そうですね、読むのって意外と難易度高いのかもしれないですね。書かれているプロジェクトのコードとかを読もうと思ってもなかなか初心者の方は読むのが辛そうだなっていう…。

西小倉 僕が書いたやばいコードを、初心者の駆け出しの人に丸投げして解読してもらってるんですけど、申し訳ない気持ちでいっぱい…(笑)でも、一人で書くより、初心者の人でも分かるようにキレイに書こうっていう気持ちっていいよね。

zumin なんか命名規則とか、純粋にコード特定のテクニックとかではなくて、どの言語にも関わらず大事なことってあると思っていて、そういうのはリーダブルコードとか読むといいのかなと。

西小倉 リーダブルコードにはどういうことが書いてるの?

zumin 例えば、変数の命名の仕方とか色んなことが書かれているんですけど、読みやすいコードを書くための一冊っていう感じで。多分、初心者でプログラミング始めたてで読むと全てを理解するのは難しいと思うんですが、最初に全部ばーっと読んで、それ以降もプログラミングにチャレンジして、中級者くらいになった時に、もう一回読んてみると、また違った見方ができるんじゃないかなと。

西小倉 結構分厚い本なの?

zumin そんなに分厚くなかった気がしますね。

西小倉 本もリーダブルなんですね、読みやすいんですね。

zumin そうですね、結構内容的にも純粋に読みやすい本になっていると思うので…。

西小倉 昔ってエンジニアって理系のイメージあったけど、今は法学部とか出てる人がエンジニア向いてるって言ってる人がいて。

法律とプログラミングって似てて、「コード」ってどっちも言うんですよね。憲法のことをコードってたしか言って、プログラミングってコンピューターに指示するための法律作りっていうか命令作りで、憲法も人を制御するっていうか…一緒なんですよね。
プログラミングにおける実行結果は、法律における判例。こういうバグがあるから法改正しようみたいに似ててて…。読みやすい文章書くのも、保守性の高いのもなんか似てるなーっていう。

zumin そうですね。考えたことなかったですけど、似てる感じはしますね。

西小倉 昔は、なんか「プログラミングできる人はコミュ障だ」みたいなステレオタイプみたいなのがあったけど、最近はできるCPO、コードも書けるけどコミュ力も高いみたいな。zuminもそうやし。

zumin なんか、すべてのプログラマーがコミュニケーション能力があった方がいいとは思っていなくて、例えば、とても技術的に深いスペシャリストの人がいて、他の顧客に近い立場でコミュニケーション能力が高い人がコードを書いて、そこで詰まった問題だったり技術的な課題を解決する人って、そのエンジニアの人とコミュニケーションとれればいいと思うので。
なので、誰とでも気軽にコミュニケーションがとれる能力は必ずしも要らないのかなって思います。

西小倉 それ、すごいわかります!うちってもう人と会いたくないっていうエンジニアが多くて…。

人と会うのは僕が多いので、フワフワした案件はエンジニアに振るより自分でやった方が早いのでついついやっちゃうんですけど、そうするとやっぱり詰まった時に、人に会いたくないエンジニアの人に渡すとすぐに解決してくれるんですよ。モチベーションが違うわけですよ。

僕とかは人の役に立つことが好きで、その手段としてプログラミングだけど、その人達はお客さんのためというよりかは純粋にプログラミングに興味がある。何も言わなくても最新の技術を追って、常に試したりしている人達なので勝てないよね。何か問題あった時に根本的に理解してるから解決スピードが早い。そういう話よね?どっちも必要っていう。

zumin そうですね、どっちも必要と思いますね。

西小倉 だからプログラミング勉強するぞっていう時に、自分はどっちなのか明確にしておいた方がいいかもしれないですよね。

zumin でもどちらが向いているのかって、初心者のうちは分からないと思いますね。特にプロゲートとかRailsとかを一回やった程度だと、多分全然わかんないと思うんですよ。
とりあえず全部やってみました。で、これからどうすればいいんだろうっていう風になっちゃうと思うんですけど。

自分はたまたますぐアルバイトをすることができたり、ハッカソン出て書く機会があったりと、勉強する以外にも純粋に作るものがあったので、どうやって作ればいいんだろうというのを考えて、壁にぶつかりながらちょっとずつ進んでは戻ってというのを繰り返していたんですね。

西小倉 そのバイトとかで実践する時に、レビュアーとかはいたの?他の人がレビューしてくれるとかはあったんですか?

zumin 最初の方は全然そういうのはなかったですね。

西小倉 もうセルフマージしていくみたいな?

zumin そうですね、一緒にやってたメンバーが4人だったんですが、みんなRails初めてみたいな感じだったので。それぞれがどうやったらいいのかを調べたりしながら書いて、なんか「ここはこうやった方がいいっぽいぞ」みたいに書いては話してみたいな感じで最初は進んで行ったので、Rails始めた頃に自分が書いたコードをみると、すごいバットコントローラーとかだったりして…今思うとすごいコードを書いてるなって感じになりますね。

ただプログラムを書く上で、Rails始める前からもっとコードキレイにならないかなとか、もっとかっこよく書けないかなとかは思っていたので、調べながら「こっちの方がいいっぽいぞ」というのをやったりしてましたね。でもリファクタリング をやろうとするとすごく重いので、その時はとりあえず終わっておいて、次また気をつけようっていう。なんかそういう感じでした。

西小倉 なるほどー。またあっという間に12分経っちゃいました。1人で喋るより2人で喋った方が面白い話ができるんで、ぜひまた頻繁にやりましょう。zuminさんでした!ありがとうございました!

TimeCrowdに戻る