3年目プログラマが2017年にやってよかった技術/習慣など

概要

情報系新卒から3年目のプログラマ(もうすぐ4年目突入)が、2017年の1月から12月の間にやってきたことを振り返って、結果的に技術力や生産性に大きく影響したと思ったことについて整理する。

技術ブログを継続的に更新すること

本ブログのこと。学んだこと、身に付けたこと、作ってみたことをどんどん本ブログでアウトプットしてきた。記事としての需要や、内容のレベルの高さは二の次に、自分の頭のなかにあるものを客観視出来るようにすることを第一に更新を続けた。

これによって得られたモノは主に以下の通り。

  • 頭のなかにある曖昧な知識を、客観的な文章に起こすことで整理できた
  • 記事を書くために知識を整理することで、誤りや限定的な問題を再確認することができた
  • 自分がどんな技術や経験を持っているかを、ブログを通して周囲に共有することができた
  • 自分で自分の記事を参考にすることで、ノウハウの再利用ができるようになった
  • そのまま掲載できる汎用性のあるコードを書くように習慣づけることができた(ビジネスとロジックの分離的な)
  • 文章を書く訓練になった

Qiitaを継続的に閲覧すること

以下のような記事を継続更新しているように、Qiitaをほぼ毎日チェックするようにした。

主にQiitaのデイリーストックランキングをほぼ毎日チェックし、気になる記事から関連する記事、また関連する記事と、どんどん目を通すようにした。

これによって得られたモノは主に以下の通り。

  • 継続的な技術情報の収集のクセを付けることができた
  • 幅広い技術に興味関心を持てるようになった
  • 自分の意識の外にあるトレンドを拾えるようになった
  • プログラマ全体の中での自分の位置を再確認でき、より上を目指せるような意識付けができた
  • 色々な記事に目を通すことで、読みやすい記事などの傾向が掴め、本ブログに反映できるようになった

オープン職務経歴書を作成すること

詳細は本ブログの話題のオープン職務経歴書を書いてみる

これによって得られたモノは主に以下の通り。

  • 経歴を客観視することで、自分の強み、弱みなどを継続的に把握できるようになった
  • 「君、何が出来るの?」的な問に対して今後はURLを張るだけで済むようになった
  • いくつかの会社からコンタクトが来て、やりとりすることで自身の市場価値を把握することができた

日々の勉強用のコードをGithubにコミットすること

特定の開発に限らない、日々の勉強用のコードをSa2Knight/studyにコミットするようにした。

これによって得られたものは主に以下の通り

  • 誰も見ないとはいえ、コードがグローバルに公開されるのである程度は読みやすさなどを考慮したコードを勉強段階で書くようになった
  • 「勉強した」という事実に対するセルフエビデンスを残すことでモチベーションが向上した

個人用のBacklogを作成してタスク管理すること

会社ではBacklogを用いてプロジェクト管理しているが、自分用にもBacklogスペースを借りて、個人的なタスクを管理するようにした。Backlogの無料プランは出来ることがかなり限られる(プロジェクト1個のみ、小課題が作成できない、ガントチャートがない、100MBしか容量がないなど)が、現状では特に問題は無い。

そんなにガッツリとした使い方でなく、自分のやること、やりたいこと、やらなきゃいけないことを課題として立ち上げ、それに関連する情報やメモをコメントとして残すという使い方をしている。課題は技術的なことに限らず、日常的なこと(◯◯を買う、✗✗に連絡を入れるなど)もBacklogで管理するようにした。

これによって得られたものは主に以下の通り

  • 個人的なタスクを体系的に管理できるようになり、タスクの抜け漏れが減った
  • 課題として立ち上げることで、良くも悪くも義務感的なものが生じてしっかりとこなすようになった
  • 課題にコメントを逐次投稿することで、あとで振り返る際に多くの情報を得られるようになった

開発環境を全てVagrantからDockerに移行したこと

業務での受託開発や、個人開発で多くの開発環境を同時にローカルに持つ状態が続き、VirtualBox/Vagrantではストレージ的な問題が限界に来ていた。その頃、ちょうどDockerを使ってみたいという気持ちがあったので、Dockerを1から勉強した。Dockerは本来はデプロイの自動化ツールとして使われるものだが、開発環境を全てDockerコンテナに置き換えるということが可能なことに気づいた。少しずつ移行を始め、現在ではほぼ全ての開発環境をDockerイメージ/コンテナに置き換え、ストレージ問題を大きく改善した。

これによって得られたものは主に以下の通り

  • 大量のVMによって圧迫していたストレージを、共通のDockerイメージから開発環境ごとに派生したイメージを使うことで一気に削減した
  • コンテナの停止、再開が非常に高速なので、スムーズに開発環境の切り替えを行えるようになった
  • デプロイツールとしての本領を発揮することで、開発環境をそのまま別のマシン、サーバで動かせるようになり、環境構築が非常に容易になった

関連記事

vimの使い方を1からやり直したこと

2015年からずっとvimを使った開発をしてきたが、イマイチvimを活用できていない低迷期が続いた。そこで、vimを1から勉強し直そうと決意。基本的なカーソル移動からキーバインド、vimプラグインまで、書籍を通じて幅広く学んだ。とにかくvimmerになってやろうという気持ちで、vimらしい操作しか出来ない体にしてやろうと動いた。

これによって得られたものは主に以下の通り

  • コーディングの効率が物凄く上がった

関連記事

Backlogの操作の多くを自動化したこと

BacklogAPIや、BacklogのWebhookを活用して、Backlogの様々な定形作業を自動化した。主に自動化した処理は以下の通り。

  • Backlogの課題の作成、クローズ
  • Backlogの課題の作業時間の自動付与
  • Backlogの作業時間を元にした作業報告の生成

これによって得られたものは主に以下の通り。

  • 課題への着手と中断を明示化し、作業毎に自動で作業時間を付けることでメリハリのある仕事ができるようになった
  • 課題ごとの正確な作業時間を付けることで、工数を振り返ることが容易になった
  • 日ごと、週ごと、月ごとのプロジェクト別の作業率を集計することで、自身の業務全体を客観視出来るようになった
  • 課題の作成、着手、クローズの一連の流れを守ることで、心なしか業務(=課題をこなすこと)が楽しくなった

関連記事

Rails/LaravelでフルスタックなWebフレームワークを学んだこと

ここからは技術的な話が中心。

RubyのRuby on Rails及びPHPのLaravelを用いたフルスタックフレームワークの正しい使い方を学ぶように心がけた。これまではフレームワークはなぁなぁに使っていたが、一から公式ドキュメントにしっかり目を通して、フレームワークが提供している有用な機能を可能な限り使いこなすように心がけた。

これによって得られたものは主に以下の通り。

  • フレームワーク本来の機能を使いこなすことで、自分でコードを書く量が大幅に削減し、工数を減らせるようになった
  • フレームワークの機能を活用することで、安全で効果的なコードを書けるようになった
  • 公式ドキュメントを読む能力が身についた
  • 英語で検索して英語でドキュメントを理解する能力がちょっと身についた

Angular/React/Vueでフロントフレームワークを学んだこと

自分の中で2016年まではフロントエンドはjQueryで頑張るものだったが、2017年はAngularに始まり、React、Vueとフロントエンドのフレームワークにも幅広く手を出すようになった。結果的に自分に最もしっくり来たのはVueだったので、今後はVueをより突き詰めつつ、他のトレンドにも目を光らせたい。

これによって得られたものは主に以下の通り。

  • jQueryで頑張ることしか知らなかったフロントエンドの世界が一気に広がった
  • SPAを効果的に開発する技術が身についた
  • 基本的にカオスなことになっていたフロントエンドが、フレームワークの導入によって体系化されたコードを書けるようになった

モダンなフロントエンド技術を学んだこと

前項と重なる部分が多いが、フロントエンドフレームワークを学ぶ過程で数多くのフロントエンド技術を身に着けた。以下はその一部。

  • ES6
  • node
  • npm
  • babel
  • gulp
  • eslint
  • scss
  • webpack

特にES6は自分にとって衝撃的だった。今まで書いてきたJavaScriptは何だったのか、JavaScriptはここまで便利になっているのかと驚いた。ブラウザのサポートがそれなりに進んでいる現在でも、ES6の利用にはトランスパイラを導入するのが一般的で、少々手間がかかってしまうが、それでもES6を使わないコーディングは自分の中でなくなった。

これによって得られたものは主に以下の通り。

  • ES6を身につけることで、より高品質なコードが書けるようになった
  • node/npm周りを身につけることで、幅広いnode_moduleが使えるようになり、フロントエンドの実装の幅が格段に広がった
  • scssを身につけることで、ロジカルにcssを記述できるようになった
  • フロントエンドが好きになり、フロントエンジニアとして突き詰めたくなった

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です