7年前は初心者だった僕へ伝えたい6つのこと
この記事は、7年前はまだプログラミング初心者だった自分へ向けた手紙です。
7年前は社会人としても未熟でしたが、そもそもプログラミングスキルも不安で心配事が絶えない時期だった。
今はそのだいたいの心配事は解消されている。
けど、やっぱり2014年から2015年頃は不安だらけだった。
そんな昔の自分に7年経った今ならどうアドバイスができるんだろう、というのが今回のテーマです。
ちょうどいいので6つ考えてみた。
プログラミングの上達法は継続すること
まず2013年頃は仕事が終わってからずっと自宅でプログラミングの本を読み漁っていた。
当時はObjective-Cでアプリ開発していたからObjcの話しになるけど、本当に当時はObjective-Cは化け物級に難しいと感じていた。
勉強の傍ら何度「プログラミング 上達法 コツ」で検索しただろうか。
どうやったら「最短で」プログラミングが上達するかについて、
検索しまくっていたぐらいにプログラミングスキルに自信を持てない時期だった。
そもそも、アプリが作れないと生活が維持できなかったからそりゃあ頑張るわけだけど・・・。
Objective-Cに慣れてきた2014年に、いきなりSwiftという新しいプログラミング言語が登場した時は本当に苦しかったのを今でも覚えている。
プログラミングがめちゃくちゃできる同僚が「めっちゃ簡単なプログラミング言語が出たね!」と言ってはしゃいでいたのは悔しかった。
僕にとっては新しいプログラミング言語が出てきて「また学習時間が増えるのか」くらいにしか思わなかったよ。
でもね、今になって思えばプログラミングを最短で身につける方法っていうのは結局「継続する」方法以外にない気がする。
先人たちやプログラミングがうまい同僚がなぜ上手いのかは「今まで継続してきたから」に他ならない。
だから君がすべきことはそんなプログラミングがうまい同僚や友人と出会ったら、損得抜きで仲良くなって色々教わればいいと思う。
そんなプログラミングが上手い人達の習慣をコピーすること(真似ること)。
習慣の継続は時を経てば最高の資産になると今は思う。
フロントエンドの技術の変遷はやっぱり激しい
当時(~2014年)はモバイルアプリ界隈はiOS一強だった。
モバイルアプリの業界へ参入する上で選択肢は
- iOS (Objective-C)
- Android (Java)
のどちらかを選ぶかしか選択肢はなかった記憶がある。
Objective-Cを選択すると自動的にMac / iPhone アプリしか作れないというリスクとご臨終する。おまけに難易度高い。
Java を選択するとJava の仕事で食っていけるけどEclipse での開発になる。でもJava の難易度低い。
というプログラミング初心者にとっては結構極端な選択肢しかなかった。
当時の自分はiOSアプリが作りたくてObjective-Cを選択したけど、この選択肢がベストチョイスだったのか、
今でも迷う(笑)。
しかもちょうどObjective-Cの開発に慣れてきた頃に、Swift が登場するとかいう追い打ちをかけてきたのが懐かしいです。
当時はSwiftイケてる勢とObjective-Cずっと残るよ勢が2:8くらいの割合でいた。
それが一年を経過して3:7 へ、また一年経過して4:6と移り変わっていきましたね。
ちょうど肌感では2016年くらいから Swift : Objective-C = 5:5 の比率に変わって、
Objective-C からSwift へのコンバートタスクの求人案件が増えていった。
Objective-C歴3年目くらいで、とうとう僕もSwift を書き始めた。ちょうどSwift 2 くらいの時。
そんなタイミングだったので、このコンバートタスクも一部携わるようになったのは経験的に良かったと思う。
その後と並列してリアクティブプログラミングがCocoa で流行して、上位層のRxによるMVVM開発案件が爆発的に増加したのを覚えている。2016 ~ 2017年頃では開発アーキテクチャーでMVC vs MVVM 論争がめちゃくちゃ流行ってRxSwift がスター的な存在まで輝いてた。
RxSwift 勢は今息してますか?
もう2018年からはObjective-Cで開発しているところは少なくなったのが僕の所感ですが、
求人を見るとSwift : Objective-C = 7: 3 くらいの感覚だったと記憶してる。
2019年には SwiftUI とCombine が登場してRxSwift の勢力が一気に減った感を勝手に感じました。
逆に2016 ~ 2017 年にRxSwift で開発を進めて市民権を得られたアプリは、今でも続いていて保守案件として顕在しています。
この辺りの案件で割と中上級者のプレイヤーが悲鳴を上げてるイメージです。
ただまあ初心者でもRxが書けるみたいなんですが、
初心者が書いたRxSwift + MVVM で作られたアプリの保守はさすがにしたくないよねって話し。
このようにモバイルアプリは、それでもiOSアプリ開発界隈だけの流れでこれなので、これにプラスAndroidアプリ開発の変遷を足すととんでもない歴史になる気がします。
それぐらいモバイルアプリ開発の技術の移り変わりが激しい業界です。
結果として、この業界は
Objective-C
↓
Swift
↓
RxSwift
↓
SwiftUI
↓
?
↓
?
↓
?
という流れを得ています。
モバイルアプリ開発をキャリアとして選ぶということは毎年こういった技術の移り変わりが起きる業界なので、もしもそれの学習コストに耐えられなくなったらサーバーサイドとかに移行したほうがいいかも。
なんせ、こういった技術の移り変わりに対応できたとしても、次の項目で結構モチベーションが下がってしまうからです。
どこまでいってもこの世界は10代・20代が最高に強い
主語がデカイので、もしかしたら界隈にマサカリが飛んでくるかもしれないけど、モバイルアプリは新技術にすぐに慣れる若い年代の方が有利です。
設計面では勿論ベテランの方が仕様変更に強い設計を作れて有利ですが、スピード面では若い人の方が強いですね。
僕も20代の頃はそのスピード面でベテラン勢に優位性を図っていましたが(当時はすみませんでした。)、30代にもなると設計とか色々な事を考慮してしまってスピードを出せなくなった感がある。
自分の中では丁寧に開発してると表現してます。
20代は早く開発できるので仕事をした分だけ評価されるのも面白かった。
当時はあまり例外処理とかライブラリの寿命とかを気にする必要がなかったから(その視点がなかっただけである)。
だけどそれで図に乗らずに開発に慣れてきたら、今度はアウトプットを意識した方がいいかも。
7年前の自分はどうやればプログラミングが上達するか分かんないだろうけど、分からないなりにアプリ開発を続けていけば自ずとプログラミングのコツが分かってくると思う。
0 から 50% にするのは割と続けるだけで到達できる。
80% から 90% とかはさらに死にものぐるいで学習する必要がでてくるかも。
まあ、諦めたらそこで終わりだから継続の習慣を身につければいいと思う。
最新技術が出てきたら迷わず時間を投資すること
これは昔、大失敗した自分への戒めでもある。
2014年にSwift がリリースされたとき、Objective-Cを頑張っていた自分はSwiftの登場でまた学習時間が増えることが嫌で、Swiftへの投資を控えていた。
多分、これは今から当時の自分に戻っても絶対同じ事しそうだけど。
最新技術が出たら迷わずそれに時間を投資するのがベストプラクティスだと思う。
これは言ってもなかなか出来ない選択なので一つコツを教えるとしたら、毎日1時間だけでも触ってみること。
触るのが難しいなら調査するだけでもいいと思う。
1年これを継続してれば、それでその新しい技術の経験値を365時間得たということになる。
簡単に言えば、
毎日
既存技術: 3時間
新技術: 1時間
1年
既存技術: 1095時間
新技術: 365時間
の経験年数を得たことになる。
そうはいっても、
今の自分もこれは全く出来ていない感が半端ないので、できなければ諦めるのも人生。
20代は年収を気にするよりも情報発信したほうが得だから
あんまりこういうことはブログでは書きたくないんだけど、7年前の自分なら必要性を理解していなかったので敢えてこれを書く。
githubにコミットしろという話しではない。
どちらかといえば、ブログなりQiitaなりに自分のしてきたことをアウトプットして情報資産を増やしたほうがいいということ。
年収ももちろん気にする必要があるんだけど、年収は上がっていくとその分だけ税金も累進課税で増えていく。
一応、自社サービスの一環で個人アプリ開発にもチャレンジしてリリースもしたんだけど、
ソースコードのメンテナンスだったり広告費にお金がかかったりで結局トータルでペイできなくて中止に終わったんだ。
個人でプッシュ通知を打つには当時ならサブスクのサードパーティを使って、毎月4~5000円のかかっていたように思う。
だけどやっぱりコストがしんどい。
そこからさらにAppStoreのランキングに乗せるために広告宣伝費として1ダウンロード400 ~ 500 円というコストがかかった。
広告を打つのにも100DLからとかいうユニット単位だったから一発広告を打つだけで20~30万円かかる世界。
今でこそランキングブーストなんて言葉は流行らないけど3年ぐらいまで流行っていた気がする。
大手が予算の限りに広告費でランキングブーストするもんだから、それで個人開発者が絶命されていった。
個人アプリ開発をリリースして資産を増やしたい気持ちがあるのはわかるけど、多分当時に戻るならブログを立ち上げて情報発信でアウトプットしまくっていたと思う。
そのブログに色々な情報を残してブランディングしたほうが情報資産を増やす戦略してはありだったと思う。
2020年は東京オリンピック開催年だったけど感染症で延期されちゃった
今年2020年はこれだけで1冊の本が書けるってぐらいのビッグニュースなんだけど、あれだけ話題になっていた2020年の東京五輪の開催が2021年に延期されました。
そして、再びリーマンショック級の不況が今全世界を襲っている。
東京だけでなく日本、だけでなく全世界がコロナウイルスという感染症で焼かれてるから、これはもう個人で取れる対応策はない。
リーマンショックの時は不運に不運が重なって悲惨な目に逢いまくったけど、7年後の僕はとりあえずは無事だから安心してほしい。
この時のためにこの10年間めちゃくちゃ準備してきたから大丈夫って思ってたけど、やっぱり心配だった。
とりあえず2020年の年越しは乗り越えられそうだから、今は安心してiOSアプリ開発の勉強を頑張ってほしい。