エンジニアを目指す人が最初にすべきこと、するべきでないこと

近年、エンジニアを目指す人が増えてきています。今までパソコンを触ってきていない人もエンジニアを目指し始めており、史上空前のエンジニアブームといってもよいでしょう。この記事では、これからエンジニアを目指す人向けに何をすべきか、何をすべきでないかを説明していきたいと思います。

エンジニアを目指す人が増えている背景

近年、エンジニア需要の増加 *1 でエンジニア(システムエンジニア、プログラマーのこと)を目指す人が増えてきています。文系の大学生、主婦、営業部で働いているサラリーマンなど、今までパソコンに触れてきていない人もエンジニアに興味を持ち目指している、といった状況です。

そのような状況はTwitterの「#駆け出しエンジニアとつながりたい」のようなタグからも垣間見ることができます。

また、SNSの発展に伴いインフルエンサーの影響も年々大きくなってきています。一部のインフルエンサーが発信する、好きな時に好きな場所で働く自由な働き方*2、高収入(フリーランスで年収1000万円)*3などのキラキラしたイメージがエンジニア人気にさらに拍車をかけています。

プログラミングについては興味がないが、働き方や高収入に魅力を感じている人が多い印象です。

穴の空いたバケツに水を注ぐな

これからエンジニアを目指す人へのアドバイスは「穴の空いたバケツに水を注ぐな」です。

プログラミングの学習を始めた人の話しを聞いてみると、インフルエンサーが発信している自由な働き方、高収入に魅力を感じ、フリーランスを目指してプログラミングの学習を始める方が多い印象です。

学習を始めることは大変素晴らしいことなのですが、プログラミングに関する学習をしてきていない人たちの多くはパソコンの操作がままなりませんので、ファイルを作成したり、画像をダウンロードしたりといった、パソコンに慣れている人だったら難なく行える操作ができません。

私はこのようなパソコンの操作がままならない状態を穴の空いたバケツ状態と呼んでいます。穴の空いたバケツにいくら水を入れても何も残らないように、この状態でいろいろと教えても多くの知識は定着しません。

残念ながらこの状態で高額な教材を購入したり、高額な学費を払ってプログラミングスクールに通っている人がいます。しかし、この投資は割りに合わない可能性が高いです。

穴の空いたバケツに多額の資金を投資することは避けましょう。
穴の空いたバケツ

穴の空いたバケツに水を入れてもほとんどが流れていってしまう

エンジニアを目指す人が最初にすべきこと

エンジニアを目指す人が最初にすべきことは、穴の空いたバケツをふさぐことです。

まずは次の2点をおさえます。

  • 学習する下地をつくること
  • プログラミングが自分にあっているかを確認すること
この2つが整うまではお金をかけてはいけません。無駄な投資になってしまうリスクがあるからです。

学習する下地をつくる

どうやって学習する下地をつくるかですが、HTML/CSSの学習からはじめましょう。

最初からPHPなどのプログラミング言語を学習した方が効率がいいというインフルエンサーもいますが*4、パソコンに慣れていない人はプログラミング言語をインストールしたり、実行したりすることが難しいので、そこで詰みます。

また、ターミナルやブラウザーに表示されているプログラムの実行結果をみて、楽しいと感じる人はあまりいないでしょう。それよりも、華やかなHTML/CSSの画面をみる方がやりがいを感じられるものです。

パソコンの操作に慣れていない人はHTML/CSSから始めましょう。具体的な方法については、別の記事で説明したいと思います。

プログラミングが自分にあっているのかを確認する

最初の段階で必要なのは、パソコンの操作に慣れつつプログラミングが自分にあっているのかを確認することです。特にプログラミングの学習が楽しいと感じられるかどうかが重要です。

高額な費用を払った後にプログラミングは自分にはあっていなかったと知る人もいます。自分にあっているかどうかは数十万円の学費を払わずとも、数千円の入門書を買って1カ月くらい学習をやってみればわかります

プログラミング学習を楽しいと感じることができればOKです。

参考リンク

  1. IT 人材需給に関する調査
  2. 【月収800万】海外フリーランスの1日ルーティン【マレーシア】
  3. WEBフリーランスで年収1000万円超えないのはどう考えてもおかしい
  4. 【プログラミング初心者必見】HTML/CSSから勉強し始めてはいけない理由

ブログシステムをHexoにしました

ブログシステムをHexoにしました。ブログデザインも新規で作成しました。ブログシステムはそのうちリプレースしたいなと常々思っていたのですが、なかなかこれといったものがなく時間が経ってしまいましたが、ついにリプレースすることができました。

以前のブログシステム

以前のブログシステムはOctopressを使っていました。このOctopress、いくつか問題点がありました。

動作が遅い

Markdownで書いてそれをhtmlに変換する仕組みなのですが、その速度が遅いです。
記事数が少ない場合はそれほど気にならなかったのですが、100記事くらいになってくると明らかに遅くなってきます。
現在では、プレビューモードで変換するのに10秒程度かかってしまい、気持ちよく記事が書けない状態でした。

メンテナンスされていない

2015年で開発が止まっています。新機能や改善もないですし、機能に問題がある場合も修正がされません。開発が止まっているものは使うべきではありません。今から使うのはやめたほうがいいでしょう。

なぜHexoにしたのか

Node.jsで書かれているから

HexoはNode.jsで書かれています。
最近はNode.jsを使うことが多いので、Node.jsで書かれているブログシステムを使いたかったのです。

静的サイトジェネレーターだから

ブログシステムには大きく分けて静的サイトジェネレーターとデータベースを使ったブログシステムがあります。Hexoは静的サイトジェネレーターと言われるシステムです。静的サイトジェネレーターはMarkdown等の形式で書かれたファイルをhtmlに変換するソフトウェアです。

静的サイトジェネレーターのメリットは表示速度が早い、セキュリティリスクがほとんどない、他のシステムに移行しやすいなどのメリットがあります。個人ブログであれば静的サイトジェネレーターがおすすめです。

人気のあるブログシステムだから

Node.jsで書かれていて人気のあるブログシステムはHexoとGatsby、あとは最近VuePressも人気が出てきているようです。
他にどんなソフトウェアがあるかはこちらで確認することができます。

人気のあるソフトウェアは開発が活発で便利な機能も多く、使いやすいことが多いです。

現在も開発が行われているから

Hexoは現在も開発が行われています。2019-10-14にバージョン4.0のリリースが行われました。

Hexo vs Gatsby vs VuePress

Node.js環境の静的サイトジェネレーターはHexo、Gatsby、VuePressの3つが人気です。GatsbyとVuePressは次の理由で採用しませんでした。

Gatsbyを採用しなかった理由

GatsbyはReactベースの静的サイトジェネレーターです。Reactに慣れている人であればいいかもしれませんが、私がReactに詳しくないのもあり、Gatsbyは学習コストが高いという印象です。あえてその学習コストを払ってGatsbyを使うメリットが見当たらないので採用を見送りました。

VuePressを採用しなかった理由

VuePressがメジャーバージョンになったということもあり、VuePressも試してみました。情報が少なくまだまだ使いづらいというのが正直なところで、VuePressを使うメリットが見当たりませんでした。
ブログではなく、ドキュメントなどのシステムとして使うならありかもしれません。
一応、サンプルコードをGitHubにあげているので興味のある方は参考にしてみてください。

結論

特にこだわりがなくブログを楽に構築したいということであれば、Hexo一択ではないかと思います。最後にHexoを使うメリットについて説明します。

Hexoを使うメリット

ブログの基本機能が簡単に作成できる

Hexoでのブログ構築は5つのコマンドを実行するだけです。

1
2
3
4
5
$ npm install hexo-cli -g
$ hexo init blog
$ cd blog
$ npm install
$ hexo server

hexo server を実行後にhttp://localhost:4000 にアクセスするとブログが表示されます。

テーマの作成がしやすい

Hexoにはテーマ作成をサポートするツールが用意されています。
generator-hexo-themeを使えば簡単にブログテーマの雛形を用意することができます。
ブログテーマは自作したのですが、その雛形はgenerator-hexo-themeで作成しました。

CI/CDも簡単

masterにマージしたら自動的にデプロイする設定を入れています。そのあたりも公式のマニュアルが用意してあり、手順にそって設定していくだけでCI/CD環境を作ることができます。私はGitHub Pagesを使っており、サーバー費用0円でブログを運営しています。コストパフォーマンスは最高ですね。

まとめ

Hexoは学習コストが低く、テーマ作成もわりと簡単にできるので楽にブログを作りたい人におすすめです。Node.js環境でブログを作りたいときは検討してみてはいかがでしょうか。

スピードの価値

開発をする上で最も大切にしなければいけないものはなんでしょうか。私はスピードだと思います。

開発はコストです。早く終わるということは、その分コストを削れます。コストを削ることができればその分が利益になります。ビジネスの目的である利益に貢献しているので、これはとても価値のあることです。

バスより飛行機が高いのも早く目的地に着くからですね。食洗機や洗濯機をお金を出して買うのも、家事の時間が短縮されるからです。
ブラウザは何を使っていますか?世界のブラウザのシェアNo1はGoogle Chromeです。Chromeが1番速いからみんな使っているのです。

速いということはそれだけで価値があるのです。

シンプルに実装する大切さ

私はシンプルに実装することをとても大切にしています。最も大切にしていると言っても過言ではありません。

プログラミングの経験が浅い人は、難解なコードを書いたり、短い行数でコードを書けることがかっこいいと考えているかもしれませんが、完全に間違っています。シンプルに実装することは実は難しいのです。プログラムというものは、すぐに複雑になってしまうからです。複雑でかっこいいコードを書こうという考えがそもそもの間違いです。

この記事を読んでいるみなさんは、今後は簡単でシンプルな必要最小限のコードを書くという意識でコードを書いてください。

私はNode.jsのコミッターがトラディショナルなfor文を使ったコードを書いていることを見たことがあります。そのコードは、これ以上ないくらいシンプルなコードでした。

現在のプログラムの多くは、今後も多くの変更が入ります。そうであれば、完璧に動くことよりもメンテナンスがしやすいことが大切です。後々、悪い影響を及ぼすコードは複雑で難解なコードです。シンプルで意図が明快なコードが問題を起こすことはありません。

一般的な技術を有したエンジニアであれば誰でも理解できるコードを書いてください。

テストカバレッジ100%を目指さない理由

結論

テストカバレッジ100%は目指さない

理由

以前、このようなツイートをしました。

テストカバレッジ100%に違和感を感じない人はもう少し勉強した方がいいですね。

テストカバレッジ100%を目指すとこのようになってしまいます。

さらにテストの問題も発生します。

テストカバレッジの問題については次の記事に詳しく書いてあります。

全てのコードにコメントを書くのは馬鹿げていると感じる人は多いでしょう。全てのコードにテストを書くということも同じように考えるとどうでしょう。何事も過ぎたるは及ばざるが如しです。

12331