@HIROCASTER さんの記事

プログラミング上達がはやいヤツの特徴10個

を騙されたと思って試し,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 にアレンジを入れる
  • 好きな言語がある
  • プログラミング以外に趣味がある
  • 常にハックするテーマを持っている

今後も継続していきます.