こんにちは、フロントエンドエンジニアのまさにょんです。
今回は、後輩のフロントエンド・エンジニア (1年目)のメンティーから開発効率を上げるコツについて教えてもらいたいとメッセージが来たので、
まさにょんの考える開発効率を上げるコツの中でも『意識と行動』ついて解説します。
開発効率を上げるコツ 『意識・行動編』
エンジニア2年目のフロントエンドエンジニアのまさにょんですが、個人的に意識していることや行動していることを後輩メンティーのためにまとめました。
構造を分析する癖を持つ: 構造を分析するようにする
エンジニアは、Systemの構造を理解する必要があります。
そのシステムは、どういう構成・構造で何を実現しているのか?どういう機能を提供しているのか?
こういったことを理解しながら、開発を進めていく必要があります。
そこで、常日頃から構造を分析する癖を持っておくと、開発効率が上がります。
- どういう構成要素 (Component)を持っているのか?
- どういう関係性 (Relationship)があるのか?
- どういう処理フロー (Processing Flow)なのか?
上記のようなQuery (質問)を自身に投げかけて、紙やEditorに思考を書き出すことをオススメします。
言語化・文章化する癖を持つ
言語化・文章化することで、考えが広がったり、観えてくることがあります。
「頭の中で完結するのは、一部の天才だけです!」
自分が凡人だと自覚しているのならば、ちゃんと言語化・文章化を意識しましょう。
「文章化することで、凡人でも考えることができますし、天才と戦えます!」
思考を言語化・文章化する癖を持つことは、かなりオススメです。
未来に向けた計画性: 目的・目標設定および、中間地点などのルーティング・設定をする
エンジニアに限らずですが『未来に向けた計画』をしっかりと意識しながら、行動することは開発効率を上げる上で重要です。
目的・目標(Goal)の言語化・文章化は、意識と行動を促進していく上で超重要です。
簡単に、目的・目標設定および、中間地点などのルーティング・設定の手順をざっくり示すと次のとおりです。
- 目的と最終目標(Goal)を言語化・文章化する。
- 目的・目標(Goal)に向かうまでの道のり(過程・プロセス・Step)を言語化・文章化する。
- 途中に待ち受けるStep を中間目標として、個別のClearすべきTaskとして設定する。
- 上記の個別Task(Step, 中間目標)をClearするための方法を言語化・文章化する。
『未来の最終目標』にベクトルが向いた状態を意識しながら、ルーティングを紙やVSCodeなどのEditorで記述していきます。
Goal(目標)に向けて、道のり(過程・プロセス)を明確にして、Step By Step で「中間地点」をClearしながら進んでいきましょう。
Task管理をする: Editor(VSCode) やノートで Task管理をする
Editor(VSCode) やノートで Task管理をすることは、開発効率を高めてくれます。
先述の計画性と併せて、必要なことですが、中間目標 (Step)をClearするためにClearするTaskなども管理していきます。
例えば、まさにょんの場合は、次のようなTask管理をしています。
- Project情報を管理するためのディレクトリを作成する。
- 事例) ロボ玉Appの開発 なら『ロボ玉App』ディレクトリを作成
- 中間目標 (Step)に応じたディレクトリを作成する。
- 事例)『ログイン/ログアウト機能』のディレクトリ, 『ロボ玉の購入処理機能』のディレクトリなど
- 各ディレクトリの中に、実装のための情報を管理したり、Task管理のファイルを作成する。
- Task-Management.txt を作成して、Taskの進捗情報や今日のTaskを記述しておく。
上記のような工夫をして、タスク管理をして、1つ1つ Missionを Clearしていく楽しさを育てることをオススメします。
小さい単位で試す: 小さい単位で Test・実行をしながら前に進む
プログラムや実装を一気に実行しようとしてもエラーになることが多いです。
上記で「目的・目標設定および、中間地点などのルーティング・設定」や「Task管理」の重要性を示しましたが、
そのようにして決めた、1つの「中間地点」(中間目標)や「部分的なTask」をClearするのにも中身には、
さまざまなプログラムの実装などをする必要があります。
そしてそれらを実装する際は、小さい単位で Test・実行をしながら前に進んでいくとスムーズに開発が進みます。
コスパのいい!楽しむメンタル: 学ぶことやエンジニアリングを楽しむ
楽しむことの方が成長よりも大事だし、結果として効果を発揮してくれます。
- 『メンタルの健康面』: メンタルの健康面で考えると我慢は続かず、楽しいが勝ります。
- 『パフォーマンスの発揮』: モチベーションの向上や、集中力-Up、パフォーマンスの持続効果もあります。
- 『真剣さ』: 楽しいことは、真剣に楽しむし、真剣に遊べます。
よく聞くのは、RPG感覚で「スキルアップ = レベルアップ」と考えると楽しいと言う声です。
これは、まさしくGame感覚で楽しみ、パフォーマンスを発揮しているいい事例だと思います。
エンジニアリングを楽しむメンタルは、メンタルの健康面や、持続性もあるのでオススメです。
以前の記事で、楽しむことを1番大事にして生きる『楽しさ至上主義』について解説しています。
報連相 のタイミング & 適切に頼る力 (相談力)
エンジニアに限らずですが、「報連相」を徹底することは重要ですし、開発効率にも関わってくる事案です。
エラーなど、30分以上悩むような問題 (自己解決が難しい問題)は、すぐに報告して次の手を考えましょう。
1人で悩んで解決できない問題も、一緒にエラー解決に動いてもらったり、
できる人・わかる人に観てもらったりすると案外、すんなり解決するのはエンジニアあるあるです。
上記のように、相談は時間を決めて自己解決できない問題に関してしていきましょう。
また、進捗報告はこまめにしましょう。
Clear状況や取り組んでいることや、今後のTaskなどを雑談ぐらいの感じで話したりでいいと思います。
報告は、いいこともよくないことも両面、提示するのも大事なポイントです。
そうは言っても普通に話すのはいいできるけど「報連相」は苦手という方もいると思います。
そんなあなたには「報連相は、コミュニケーションである!」という考えがオススメです。
かしこまらずに楽しく「報連相」すればいいと思います。
まさにょんは、今の現場の上長とは『ロボ玉フレンド』です。
Skillの熟成: 学んだことをOutputする
学んだことをOutputして、自身のSkillを高めることは、開発効率を上げてくれます。
また『Qiita, Zenn, ブログ などに、学習内容をOutputする』と後からそのDocumentを参照することができるので、
仮に細かい内容を忘れたとしてもしっかりと学んだことをOutputしてLogを取っておけば、後から役立つこと間違いなしです。
このOutputに関しては、エンジニアが成長する上で重要なポイントなので、細かく次項でまとめています。
I/O-Cycleが人の成長を加速させる!
『Skillの熟成: 学んだことをOutputする』について、ここで少し深ぼっていきます。
エンジニアにとって、I/O-Cycle (学習サイクル) の質と量(回転数)が、その人の Skill-Up, Level-Up に直結してきます。
I/O (Input/Output) の Cycle (回転) は「学習サイクル」そのもの!
『I/O』(Input/Output) の Cycle (回転) は「学習サイクル」そのものだと言えます。
この『I/O-Cycle』を意識して成長を加速させるのならば「量」と「質」どちらも高めていく必要があります。
- 「量」的な Power-Up アプローチ: この回転数を上げる・高める
- 「質」的な Power-Up アプローチ: Inputする情報の質, Outputの質を高める
まずは「量」(回転数)です。いろいろ試行錯誤しながら「質」を高めていきます。
Input-力をどう高めるか?
Inputに関しては、業界にいれば、いろいろと情報が入ってきますが、次の3点がポイントです。
- 『好奇心・学習意欲』: アンテナを張っておいて、気になったこと・分からないことは、すぐに調べる。
- 『検索力』: 知りたい情報や、問題の解決のために必要なことを言語化して、問い合わせするSkillを磨く。
- 『メディア活用』: Google のおすすめNews, Twiiter, フィードApp, Youtube などメディアを活用する。
人は、Input過多に陥りがちなので、意識的にInput情報を元にしたOutputを増やすことをオススメします。
Output-力をどう高めるか?
Outputに関しては、実践あるのみ!
最初は、つたないOutputでも、回数をこなしていくうちに磨かれていくものです。
とりあえずやってみる精神性が大事で、動きながら質を高めていきましょう。
最初の習慣化するまでの壁を越えてしまえば、後はすることが当たり前になっていきます。
エンジニアの場合、
- Qiita, Zenn, ブログ などに、学習内容をOutputする
- 「個人開発」や「チーム開発」などでアプリの開発をする
上記2つのどちらかが、Outputの方法として最適だと思います。
ちなみに、上記の2つの事例は、普段の業務ではエンジニアは強制的にInput/OutputのCyCleを回していると思いますが、それとは別の活動という意味合いです。
特にオススメなのは「個人開発」による「I/O-Cycle」が一番、効率がいいです。
新しい技術でアプリを開発するとなると、新しい技術についてInputしてOutputするを高速で回すことになるので、
レベルアップがグッとできます。
また、業務が忙しすぎて、「個人開発」には手が回らない人には『Qiita, Zenn, ブログ などに、学習内容をOutputする』をオススメします。
以前に、エンジニアがブログをするメリットをまとめましたが、ここに記述したように、
MyDocumentとして学習内容のLogを残して、後から参照できるのが『Qiita, Zenn, ブログ などに、学習内容をOutputする』一番のメリットです。
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!