Time is money

日常のこと、web関連、映画の感想について書いていきます

大学生からプログラミングを始め、アプリ受託会社で3年間働かせてもらってわかったこと

こんにちは!

アイスコーヒーが美味しい季節になりましたね!

f:id:okutaku:20160417175700j:plain

最近見つけた練馬区の穴場カフェ。

 

そろそろ何か書こうかなと思い、半年以上が過ぎました。。。笑

大学の卒業とも相まって、大学生活で打ち込んできた「プログラミング」について書こうと思いました。プログラミングを学ぶことのメリットなどの一般論ではなく、かなり主観的に大学生でプログラミングを始めてどうだったかを書きます。書けるところまで書きます。それしかネタないのかよ!ってツッコミはご遠慮ください。

0. はじめに

f:id:okutaku:20130223114654j:plain

 今年の春に理系の大学を卒業し、そのまま大学院に進学しました。

プログラミングをやっていると、情報系だと思われがちですが、化学系で実験がメインです。中高からプログラミングをやっていたわけでもありません。

なので、プログラミングとは縁もゆかりもありません。

大学1年の終わりにちょっとしたきっかけがあり、現在もアルバイトをさせてもらっているwebアプリ開発会社でプログラミングと出会いました。アルバイトを始めて、大学卒業で3年とちょいになります。その経緯は、こちらを参考にしてください。

okutaku.hatenablog.com

Rubyquitousという会社で働いています。

rubyquitous.co.jp

この会社は、Ruby on Railsというフレームワークを専門として、受託などを主にしています。オフィスに猫がいて、猫好きにはたまりません。浜松町にあるので、疲れたら芝公園の芝生に寝そべって東京タワーを仰いだり、海にも面しているので潮風に黄昏たりできます!

 

1. プログラミングって実際どうなの?

f:id:okutaku:20151025184839j:plain

今や、「プログラミング教育」がキーワードになっています。プログラミングを学ぶことができるwebサービスも多数でてきていて、短期集中型のカリキュラムで習得できるサービスも盛り上がっています。実際に、何人かの知り合いもそういったサービスを通してプログラミングを始めています。

数年しか学んでなく、コンピューターサイエンスが専攻でもなく、職業としているわけでもないので、声高々に言えませんが、

「プログラミングは絶対に学んだ方がいい」

と思っています。もちろん、すべての人が学んだ方がいいとは思っていません。今や、FacebookTwitterInstagram、LINEなどなどのアプリは一部では生活に欠かすことが難しく、ニュースでも当たり前のように耳にするようになりました。これらのアプリの全てはプログラミングによって構築されており、プログラミングというより、"IT"は多分、これから廃れることはなく、日進月歩で発展していくものだと思います。だからこそ、一般常識として、何らかのプログラミングは学んだ方がいいのではないかと思っています。それらを使いこなして、実際にアプリを作ろうとは思っていません。ただ、大学生で始めたとしても、少しでも面白いと思ったら、がっつり学んで損はないと思います。

 

 2. チャンスは全力で掴むべきだ

f:id:okutaku:20150813210032j:plain

  当たり前かもしれません。でも、すごく保守的な自分にとって、メリットが多くても未知の世界に飛び込むのはとても勇気がいることでした。日々の実験やレポートは厳しくて、生活を圧迫するし、世間でいう大学生の自由はなかったように思います。バイトをする余裕なんてあるのか、そもそもプログラミングなんて自分にできるのか、すごく不安でした。しかし、バイトに来ないかと誘われたあの時に行く選択をして、本当によかったと思います。楽勝な道のりではありませんでしたが、チャレンジしなかったら、今の自分は絶対にありませんでした。チャンスは突然目の前に降ってくるけれど、先が不安でも全力で掴みに行くことが大切だと気付かせてくれました。

 

3. ピンチこそ泥臭く

f:id:okutaku:20160703032941j:plain

 もう4年目になる今でこそ、多少の仕事はこなせるようになりましたが、始めた当初は本当に辛い日々でした。htmlとかcssとかjavascriptとか違いすらわけわからないし、託されたプロジェクトは複雑すぎて頭が痛くなるし、なんの努力もしてないのに下手に聞けないし...とにかくわからないくて、できないことだらけでした。エンジニアなんて自分には向かない、むしろ「お前なんて必要としてない」と言われているようでした。しかし、諦めることは簡単だと自分に言い聞かせ、わかないことは持ち帰ってひたすらぐぐりました。どうしてもわかなかったところは聞くことを繰り返しました。わからないことはひたすらググる。何度エラーが出ても色んな方法を試す。その繰り返し。非効率的かもしれませんが、地頭が弱い自分は他人よりも時間をかけることしかできない。ピンチの状態こそ、泥臭く何でも何度でもやる。その姿勢の大切さを教えてもらった気がします。

 

4. コピペの大切さ

f:id:okutaku:20160703031525j:plain

 やっぱり、最高な形は自分で新しいプログラムを組むことだと思います。しかし、技術も何もない初心者でしかも専攻が情報でもない自分はオリジナルなコードなんて書くことができる、さらにはどうやってプログラミングを学んでいけばもわかりませんでした。その時に、藁にでもすがる思いでとった方法が"コピペ"でした。単なるコピペではありません。できる人のコードをどんな動きをしているのか、考えながらコピペして、自分用に書き換えることを目標としていました。コピペは恥じる行為かもしれませんが、自分が活きる道はそこしかありませんでした。「君はコピペが上手いねー」とよく言われました笑。でも今、コピペをしてきたからこそ、できることの幅が増えて、難しいコードでも読み込む力が多少はついたかなと思います。

 

5. プログラミングは茨の道

f:id:okutaku:20160703031928j:plain

 初心者で実際の開発現場に参入したものとして、プログラミングはつくづく茨の道だなと思います。どの職業でも日々学びだと思いますが、まずプログラミングは何を学べばいいのか分かりません。本当に分かりません。HTML?CSS?JavaScript?へ?Ruby?Rails?MySQL?へへへ?鯖?未知の世界すぎて、広すぎて、何から手をつけていいのか分かりません。そして、残念なことにフルスタックでアプリを作って公開するまで持ってくまでには、全ての技術が必要で、何かバグが起こってると全て動かなくなります。残念。でも、今までやってきてわかったことは、一つ一つクリアにしていくしかないんだということです。地道に。

 

6. 継続すること

f:id:okutaku:20150624181257j:plain

 多分、よっぽどの天才でない限り、プログラミングを始めても全く上手くいきません。全部教えてくれるようなメンターがつきっきりで面倒を見てくればいいですが、そういうわけにもいきません。まず、エラーの意味すら分からず、辞めてしまいたくなります。だけど、諦めずに継続する。同じようなエラーを何度も乗り越える。ひたすらググるググるググる。そうすれば、少しずつ見えてくるものがあると思います。これは、短期のプログラミングスクールなどでは得られないのではないでしょうか。小さな小さなブレイクスルー、の積み重ねが大事なんだと思います。理系だと何かと大学が忙しくて、アルバイトも週数時間程度でした。なので、そんなに爆速での成長はできませんでした。だけど、細く続けてきたからこそ、今があるんだと思います。

 

7. プログラミングは自分の可能性を広げる

f:id:okutaku:20160703033308j:plain

 プログラミングをやって、自分でアプリ作って、公開してると一気に人脈が広がります。IT界隈、コミュニティが狭いので人伝えで人脈が広がります (コミュ障には辛い...)。そのため、色んな価値観に遭遇します。web系のインターンに参加したり、気が合う仲間とサービスを立ち上げてもいいと思います。日本でもほとんどの人がスマホでwebにアクセスができて、TwitterFacebookなどのSNSが発達している中、スマホアプリを含めて、webの可能性は大きいです。多種多様なwebサービスが日々出ては消える中、自分のアイデアを形にして、世に出すのは簡単なことではありませんが、やらない手は

ないと思います。それを可能にするスキルこそ、プログラミングだと信じています。自分の専門以外のもう一つの刃として、プログラミングにどっぷり浸かるのもいいと思います。

 

8. プログラミングは最高に楽しい

f:id:okutaku:20150523032657j:plain

 プログラミングは最高に楽しいです。自分のアイデアを形にして、サービスとしてリリースして、誰かに使ってもらえる。皆で議論して、何が求められているのか、どういう価値観を形にするのか、価値あるユーザー体験って何なのか。それを動く形にするにか何が必要か、どういう仕組みすれば、シンプルなのか。考えて考えて考えて実装する。ミスチルの"彩り"の歌詞にあるように

僕のした単純作業が この世界を回り回って
まだ出会ったこともない人の笑い声を作ってゆく
そんな些細な生き甲斐が 日常に彩りを加える
モノクロの僕の毎日に 少ないけど 赤 黄色 緑

 面白いことに、一旦システムを構築してしまえば、エンジニアがいなくても、サービスは回ります。自分が書いたコードがどっかで動いていて、人と人をつないで、笑顔が生まれる。プログラミングは、ただ単にコードを書いているわけではなく、人と人のコミュニケーションを生んで、小さな幸せを生産しているんだと思います。

 

9. 誰も自分の人生に責任なんて負ってくれない

f:id:okutaku:20160703033447j:plain

 自分の記事ですが、下の記事を引用します。

この記事の中で、今でも思うことは、

「誰も自分の人生に責任なんて負ってくれない」

ということです。有限の時間の中では、今まで決断の連続でした。プログラミングを始めたのも、教師になるという将来を諦めて出した決断でした。自分が出した決断は、自分しか責任を負うことはできないと思います。どのチームにいるとしても、どの程度時間を割くにしても、仕事としてやるにしても、その責任は自分しか取れない、常に反芻しないと、と思います。

 

10. プログラミングを始めたら何ができるようになるのか

f:id:okutaku:20150705225209j:plain

 ここがこの記事で言いたいことです。プログラミングを勉強すると、当たり前ですが、アプリを作ることができます。プログラミングを始めて1年間くらいは、壁の連続です。1年くらいすると、段々とアプリを作るにどうしたらいいのかわかってきます。アプリを作れるようになったら、次は仲間探しです。この数年でわかったことは、エンジニアといえど、いくらアプリを作れるとしても、一人でできることは本当に限られているということです。同じ方向を向いた仲間とサービスを開発することで、サービスの開発は何倍にもなります。皆で議論しながら、実際にユーザーが使ってくれるサービスを開発することのやりがい、それをこの3年間で学んだことだと思います。

 

以上、もはや何を目的に書いているか分からなくなってしまいましたが、誰かの何かの役に立てれば幸いです。