見出し画像

エンジニア歴5年にして、変遷してきたコピペへの考え方。

この記事の内容

今回は、私がスタートアップにエンジニアとして4年ほど関わった中で、

コピペに対する意識が変わっていったことを備忘録的に書いていきたいと思います。

結果として、私の好きなエヴァンゲリヲンというアニメのキャラクター「カヲル君」

がエヴァQで言ったセリフ

「うまく弾く必要はないよ。

ただ、気持ちのいい音を出せばいい。

反復練習さ。

同じ事を何度も繰り返す。

自分がいいなって感じられるまで。

それしかない。」


について私個人のエンジニアとしてのコピペへのマインドセットとシンクロできるようになった、という話を書いていきます。



忙しい人のために


このように考えが変わりました。



前 コピペはあまりやらずに手で書くことで覚えることができるし、成長できる


今 コピペできるところは可能な限りやったほうがいい


これは「作っては壊し、作っては壊す、良いものができるまでの反復練習」というのをぼんやりと意識できるようになる過程で変わってきた考え方。



以上です。



少しだけ詳しく書きます


当初はコピペはあまりやらない方がよいと考えていた


これを説明するために少しだけ自分のエンジニアとしてのキャリアについて書こうと思います。


エンジニアとして活動し始めた当初は、コピペはあまりやらないように心がけていました。

理由は、コピペをたくさんすることによって、結局あまりコードの中身の理解ができていないのを感じていたからです。

私がコーディングをするようになったのは、大学院に入ってからでした。

最初は研究室でのデータ分析で、メンバーがMatlabを多用していたのをきっかけに、Matlabを触っていました。

それから少しして、 Python を触るようになりましたが、主にデータ解析を行っていたため、関数を何個か書いてグラフを書く、くらいの使い方しかしていませんでした。numpyやpandasといったデータ解析の中で必ず使うようなライブラリは使ったりしていましたが、それ以外のライブラリはほとんど使ったことがなかったのを覚えています。


それからプログラムを書くことの楽しさに徐々に気づき、きちんと学習してみようと思ったのはすでに24才くらいだったと思います。

本格的にプログラミングを始めようと意気込み、何をやっていいのか分からなかったためウェブ上で検索し、progateや、テックキャンプ系の教材をやることにしました。

htmlなどを触ったこともありませんでしたし、データ分析以外のことはやったことがなかったため、ほとんどなにも前提知識がないまま、教材に言われるがままにLaravelやDjangoなどを勉強しました。成果物として、当時よくみていたアニメを紹介するウェブサイトを作ってデプロイしたのはいい思い出です。

そんなこんなでIT系の会社に入ろうと決め、いろいろ紆余曲折あり、現在のスタートアップ企業にたどり着きました。

入ってからはPython, C++を主に書くことになり、ソフトウェアエンジニアであれば使うであろうDockerやクラウドインフラなどにもそこそこ精通できました。


現在は29才なので、プログラムを本格的に勉強しようと始めた頃から5年ほど経ったのか、

と時の流れの速さを感じていますが、

最初の2、3年はコピペに対してあまりいい印象を持っていませんでした。


理由は、教材などを中心としたプログラミングの「学習」を行っていた比率がとても高かったからです。

オンライン教材などは動画とドキュメントなどで構成されていますが、受講生のタイプミスやケアレスミスなどで質問が殺到しないように、サポートの意味でコピペできる環境は念の為作られています。

その環境下で動画をなんとなく観ながら理解した気になり、コード自体はコピペをして教材を進めていくと、最後自分で何かを作ろうとした時、全く何も書けないような事態に陥ったりしていました。


また、そのほかにインプットとして以前からYoutubeのコーディング動画などを参考にしていました。なにかのウェブサイトのクローンをつくる動画など、全体で10時間くらいの動画になっていることも多く、みるだけでは何も得られないため、動画を止めながら自分もコーディングで実際に都度動かしながら学習していました。


この時も、コピペもしくはコードを書かずに受動的にインプットしていると、最終的に全く理解ができていないことが多かったため、大変でもコードを自分で書くようにしていた、というわけです。

したがって、コピペをして早く教材を終わらせるのではなく、理解度を重視するという意味でその時はコピペに対してあまりいい印象を持っていませんでした。


また、(今でも少しは思っていますが)当時は特に部活脳で、

書けば書くほど指が覚えて、引き出しが多くなると思っていました。

これはあながち間違いではないかもしれません。実際に書くことでより覚えやすくなるということはあると思います。したがって、当時はなるべくたくさんのコードを書きまくり、少しでも文法を理解したりするように意識していました。結果としてコピペはなるべく避けるようなスタイルでした。



今はコピペはできるだけした方がいいと思っている

そんなこんなで数年が経ち、今では結論から言うとコピペはやれるものならやった方がいいと思っています。

理由は、勉強のやり方が前とは変わったからだと感じています。

以前は、教材やYoutube を通じたインプットをやっていたのは上でもお話ししました。

それらのインプットが、自分にとっては最適の勉強方法だと当時は思っていたからです。結果として、受動的になりすぎないようにコピペは行っていなかったとお話ししました。


今では、勉強の方法はアウトプットになりました。

教材などを使ったコーディングの勉強などはほとんど使わなくなり、個人開発などでアプリを作ったり、ハッカソンに出てなにかプロダクトを開発したり、自分の興味のある分野のライブラリをgithubなどを参考にしながら作ってみたり、というような活動の延長として、結果として自分の経験や知識量が増えるような勉強の仕方に変わりました。


一番の例として、ハッカソンに出場して作成したモバイルアプリのモックアップを、個人開発として伸ばしていき、Appストアにローンチしました。また、ユーザなどが増えていったり、収益が非常に少額ではありますが出たりして、それが楽しくてもっとユーザを増やしたいと思い、アンドロイドの開発も行っています。

また、アプリをローンチするにあたって、アプリができることを表示するランディングページが欲しいなと思ってウェブサイトをつくったり、その延長で自分のポートフォリオサイトも作ったりしました。

このように、何かを作るということを目的にし、技術はその都度しらないことをカバーしていくようなスタイルにしました。

結果として、以下のような考え方になりました。


やりたいのは、プロダクト(動くもの、他人に見せることのできるもの)を完成させるということ

結局のところ最終目標はアプリ開発であればアプリをローンチしたり、多くの人に使ってもらうことなので、開発はなるべくスピード感をもってやりたい、というような考え方になりました。

その上で、もしコピペをすることで開発スピードが上がるのであれば遠慮なく行うことにしています。


必ず実装が難しい箇所に行き当たるため、そこまでは体力を温存すること

なにかプロダクトを開発したり、ウェブサイトなどを作ったり、いろいろ自分でアウトプットをしようとすると、必ずどこかの局面で実装が難しい箇所にぶち当たります。エラーなどの解決策が分からず時間を使ってしまうことを「ハマる」といったりしますが、結局のところどれだけ経験を積んだとしても、この「ハマる」という局面は必ず訪れるものだと理解できるようになりました。その難しい箇所に行き当たった時、経験によって解決にスムーズにたどり着けたりするかもしれませんし、もしかしたらかなりの作業量が投下されるかもしれません。私は、スムーズに開発している時間帯にこそ、この難しい時間がくることを想定しているため、スムーズにいくところはなるべく省エネで切り抜け、難しいところに集中して時間をつかうような考え方をするようになりました。結果として、省エネの一環として、コピペできるところは容赦無くたくさんコピペするようにしています。


もしダメになったら壊して作り直せばいいこと

この考え方も、スタートアップでの経験や、ハッカソンでの高速なプロトタイプ開発によって少しずつ身についてきたものだと思っています。

結局、ソフトウェア開発において、特にスタートアップなどに必要なプロトタイプ開発において、作り方に完璧な正解はないのだと考えることができるようになりました。

自分が最適だと思っていた構成も、もしかしたらもっとスマートな方法があるかもしれませんし(というより絶対にあります)、選択する言語や技術スタックについても、どれが最適化ということはやってみないと分からないことが多いからです。そう言う意味で、集中力やモチベーションが高いうちにプロトタイプを高速に作り、それをどう改善していけるか、もしくはお客さんの要望に答えることができるか修正やアップデートを加えていくようなスタイルになりました。結果として、もし自分の作ったものが全然ダメだなと思ったり、他の人のアイディアによって大きく改善されそうな見込みがある時は、思い切って一度作ったものを壊し、また新しくプロトタイプを作るような瞬発力を自分の中では大事にするようになりました。Googleでは、2年に一度ほとんどのコードを一新するレベルで書き直すそうです。Googleで働くような一流のエンジニアたちでも、人の入れ替わりや日々進む技術に対応するために、作っては壊し、作っては壊すような文化があるのだなと後で知り、これでいいのかもと少しだけこの考え方を信頼できるようになってきたように思います。

最後に、この作っては壊し、作っては壊せばいいではないか、という言葉は、私の好きなアニメのエヴァンゲリオンでも、カヲルくんというキャラクターが、

「反復練習さ。同じ事を何度も繰り返す。

自分がいいなって感じられるまで。

それしかない。」

と言っています。

私はこれを、「いいものができるまで、何度も壊しながら繰り返せばいい。」

というふうに自己解釈しています。



終わりに


取り止めのない文章になって位しまいましたが、

私がどのような経緯でコピペについて非常に肯定的になったのか

と言うことについて私のエピソードや考え方の変遷とともに備忘録的にまとめてみました。


どのような考え方が正しいのか、ということよりも、

自分が経験とともに考えるようになったことについて大事にしていこうと思います。

また、他人の他の考え方についてもオープンに耳を傾け、いいところは真似できるようにこれからも頑張りたいと思っています。



今回はこの辺で。



kenmaro


この記事が気に入ったらサポートをしてみませんか?