「プログラミング上達がはやいヤツの特徴10個」を9ヶ月間実践してわかったこと

@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(言語?)です....