@HIROCASTER さんの記事
を騙されたと思って試し,9ヶ月経った今の気づきを書いておきます.
① 毎日コードを書く
始めた当初は楽しさがわからず,なかなか辛かったです. しかし入社した時に,5分でもとにかく「毎日」続けようと決めて,PCも常に持ち歩いて続けました.
- コードを書く
- 不明点が出て壁にぶつかる
- 調べる
- 解決
- モノが動く
- 楽しい
- コードを書く
- ...
結論これです.
毎日続けると,様々なものがどんどん積み上がります.
コードを書くスピード,品質が上がるのに伴って,コードを通して実現できることが増えます.そして,難しいことにも挑戦してみようと思うようになります. その結果,やっている内にどうしていいかわからないバグなどが発生し,一旦は壁にぶつかります.しかし,ネットで調べたり人に相談したりして解決できると,楽しくて,またさらに新しいことに取り組むようになります.
机の上の勉強も大事だけど,結局かかないと何も始まらないです.
② テストコードも書く
単体テストのコードを書くには,逆にテストできる適切な設計をする必要になります. TDDとかやるようになってからは,自ずと設計も整うようになりました.
テストコード書くのは,ただコード書くことの倍,コストが掛かるので当初は面倒くさがって敬遠してました. しかし,サービスが大きくなってきたり,複数人で開発するようになると,テストが無い方が,後々コストがかかって面倒くさいです. リファクタリングしようとすると,莫大なエラーが発生して元にもどせない・コード修正して次の日になったらエラーでサービス落ちてるなど, コード量が増えれば増えるほど自分で監視できなくなって破綻します.
今はテスト書かれてないと不安で仕方が無いという心持ちです.
③ ソフトウェア全体を仕上げるまで書く
「Hello World」と出力するだけのアプリやサービスはあり得ません.クラス同士のデータやり取り,DBへのCRUD,HTTP通信など,必ず何かと何かが組み合わさって完成です.
そういう意味で,正しいサービスをつくれるようになるには, 普段から全体を俯瞰するよう心掛ける必要がある考えています.
ハードウェアやネットワーク,サーバの仕組みを始め,企画者が考えていることも理解しようとする. これを理解しているのと理解していないのとでは,プログラムをつくる際に,考慮できる範囲が全然違います. さらには,プロダクトオーナーの思いや,一緒のチームで開発するメンバのことまで.
④ コードを公開する
Githubに公開しています.
公開するまでは,こんなしょぼいコード公開しても意味無い,とか考えて敬遠してました. しかしそもそも,コードを公開している人なんてたくさんいるので,余程のことがないとアクセスすらされないものだとわかってから,気にせず公開するようになりました.
ただ,Webに公開することで人にみられる可能性は少なからずあると思うと,逆にもっと良いコードが書けるようになろうっていう自己啓発にもなります.
本格的な開発をするようになってからは,privateリポジトリも使うようになったので,上記のGithubで閲覧できるものは,現状,大したものは上がってないです.
⑤ ソフトウェアを動作する状態で公開する
上に同じです.
⑥ How to を見たら実践する
①で書いた通り,調べものしてると,いわゆるHow toはたくさん出てきます.何もわからない時は,とりあえず写経したり,関連することはその都度調べたりしてました.
⑦に続く↓
⑦ How to にアレンジを入れる
続きです.
そのうち,How toのプログラムの「ここの書き方美しくないとか」,「俺ならこう書く」といったアレンジができるようになってきます.
それぞれの流儀があるので一概には言えませんが,Web上にあるHow toは全部正しいとは限りません. 正しくコードが書ける人も,人に見せるように簡略化して書いていたり,そもそも変な書き方してる人もいて,様々です. 結局最後は,自分自身で理解する必要があります.
⑧ 好きな言語がある
現状,本格的に触ったことがある言語は,Java, C#, JavaScript(言語?)です.
この中で強いて言うなら,JavaScriptが好きです. 愛しているという程の思いはないのでまだまだだと感じますが,JavaScriptを使ってできることが増えてきたので,そういう点で.
⑨ プログラミング以外に趣味がある
元々趣味はあったので割愛. ちなみに,ルービックキューブやロードバイク,ランニング,お酒など趣味は多い方です.
⑩ 常にハックするテーマを持っている
好きなことに関してはのめり込んでやってました.
春先だとAndroid,夏はJavaScriptやMeteorJS,最近はAngularJSというGoogle製のWebクライアントフレームワークに興味があります.
まとめ
- 毎日コードを書く
- テストコードも書く
- ソフトウェア全体を仕上げるまで書く
- コードを公開する
- ソフトウェアを動作する状態で公開する
- How to を見たら実践する
- How to にアレンジを入れる
- 好きな言語がある
- プログラミング以外に趣味がある
- 常にハックするテーマを持っている
今後も継続していきます.