私はいま40歳でウェブのエンジニアとして楽しく仕事をしているが、最初から楽しかったわけではない。社会人になってからはずっとウェブ業界にいることはいたが、エンジニアとして楽しく働けるようになるまでにはあれこれ経験し、紆余曲折があった。この記事ではこれからエンジニアになりたい人、すでにエンジニアだけど現場で苦労している人にエンジニアとして楽しく働くコツを伝えたいと思う。
目次
エンジニアとして楽しく働くのに大事なこと
エンジニアとして楽しく働くには何が必要だろうか。この問いには色々なエンジニアが様々な主張をすると思う が、以下に私の考えを挙げてみよう。
- 技術やプログラム自体が好き
- 技術的なことで課題解決するのが楽しい
- 技術で困っている人を助けるのが楽しい
- あれこれ考えながらプログラム作業をするのが好き
- 新しい技術が好き(テッキーである)
- 自分で作ったプログラムが動いているのを楽しめる
- 数学的素養または論理思考が、少なくとも不得意ではない
どれも少し言い換えている程度で本質的には似たようなことを言っているが、ここで、長いドミノが少しの狂いもなくゴールに到達する様を思い浮かべて欲しい。最初の一手から最後のドミノが倒れるまで一切のミスも許されず、完璧に一つ一つのドミノを配置する必要がある。
プログラムもドミノと同じようなもので、ある程度大きなものになると一切のミスも許されない。ほんの少しの記述ミスがあるだけで全体が動かなくなる。そういう複雑なものを動かすために、あなた自身が楽しめるか?はエンジニアとして楽しく働く大きなポイントだと思う。
私自身が黙々とプログラムを書くのが好きなため、エンジニアの適性があったものと思われる。こういう素養がないと、エンジニアとして楽しく働くのは難しいだろう。とはいえ、エンジニアはテッキーである必要はない。多少プログラミングの腕が未熟でも、エンジニアとして活躍する余地は十分にある。その理由を次に伝えよう。
単にエンジニアと言っても様々なポジションがある
単にサッカー選手と言っても点を取るフォワード、駆け上がるサイドバック、ゲームを組み立てるミットフィルダー、それにゴールキーパーなど様々なポジションがある。
エンジニアもそれと同じで、全てのプログラマー・ITエンジニアがごりごりの技術おたくで、理系出身で、がんがんプログラミングをしているというわけではない。エンジニアにも様々な役割があるのだ。それを紹介しよう。
- アプリケーション・エンジニア
- インフラ・エンジニア
- サポート・エンジニア
- 社内SE・情シス
- セールス・エンジニア
- 採用担当エンジニア
- 研究者
アプリケーションエンジニア
世間一般で単に「エンジニア」というと、このアプリケーションを開発するエンジニアであることが多いように思う。とはいえ、ウェブ業界に限定して説明するならば、アプリケーションエンジニアであってもインフラ周りのエンジニアは多少なり必要で、役割の境界線は曖昧である。実際には設計をして、コーディングもして、ドキュメントも書いて、営業に説明をして、と大忙しである。
インフラ・エンジニア
昔からインターネットは悪意に満ちていて、セキュリティ対策は必須である。アプリを設置するサーバーを管理することを専門にするのがインフラエンジニアである。さらにネットワークを専門に管理するエンジニアもインフラ・エンジニアと言えるだろう。ここにおいてもその境界は曖昧である。
サポート・エンジニア
例えば自社サービスを展開している会社が、その顧客のリテラシーが高い場合はサポートする人にもエンジニアとしての素養が求められる。高度なテクニカルサポートはエンジニアでないと対応できない場合が多い。技術的なことに詳しく、対外的なコミュニケーションもとれる必要がある。
社内SE・情シス
一定以上の規模の会社だと(だいたい100人以上)、会社内のパソコンやサーバー、ネットワーク、開発環境、セキュリティ対策などを整えるエンジニアが必要となる。それが情シスである。大きい会社だと情シスだけで何名もいたりする。
セールス・エンジニア
数千万とか億単位の大きな開発プロジェクトになると、開発側も発注側もリテラシーが高い。この価格帯なら開発側だけが技術が高くて売られる方は素人みたいなケースは少ない。そうすると、営業段階で技術的に高度な話がばんばん出てくる。営業がSQLもしらない、UAも知らないでは話にならないので、営業するエンジニアが必要となる。それがセールス・エンジニアだ。
採用担当エンジニア
開発会社がエンジニアを採用するに当たり、人事のプロに採用を任せてもエンジニアの採用は難しい。技術的に関する具体的なやりとりができないからだ。だからエンジニアが採用担当をすることもある。もちろん専任とは限らない。たいていの開発会社においてエンジニアは常に忙しく、エンジニアが面接に同席する場合は忙しい合間をぬっていることになる。それでも開発スケジュールは変わらないのだけど。
研究者
研究者については私は直接知らない。だから想像で書く。例えばドコモ(でもソフトバンクでもどこでもいいのだけど)が5Gをサービスとして推進する場合を考えてみよう。当然5Gを裏付ける技術が自社に必要となる。そういう専門分野の技術をひたすら突き詰めるのが研究者だ。こういう職種はアプリ開発とサーバーの知識の両方が必要、とかではなく、専門分野をひたすら極めていく必要がある。Pythonの機械学習はすごい詳しいけどサーバー周りの知識が全然ない人とか、そんな感じだ。大学院で論文書いた博士とかがなるんじゃないかな。
思いつくままにエンジニアの種類について書いてきたが、上に書いた通りこれらの境界は曖昧である。開発会社の現場においては様々なエンジニアが色々な役割を担っている。私もアプリ開発をして、サーバー管理をして、顧客のテクニカルサポートをして、社内のgitを管理して、DOS対策をして、提案資料を作り営業に同席し、採用面接に出て、と上に書いたことをほぼ経験している。
ポジションと自分のスキルが一致すればエンジニアは楽しい
なぜエンジニアには様々なポジションがあるかについて書いたかというと、エンジニアとして活躍するのに必ずしもテッキーである必要はないということだ。そりゃ設計もできて、セキュリティに詳しく、複数の言語を操ればすごいことだが、みんながみんな、そういうエンジニアである必要はないのだ。サッカーで全員がフォワードだったり、全員がキーパーだったりしたら試合が成立しないでしょ。多くの場合、開発はチームで進むのだ。
ここであなたに質問がある。
あなたは漠然と「エンジニアになりたい」と思っていないだろうか。具体的にエンジニアとしてどう活躍をしたいかイメージできているだろうか?多分できていない人のほうが多いと思う。現場のことも知らずにあまり細かい目標を立てると、かえって自分の可能性を小さくしてしまう危惧もあるが、自分がエンジニアとしてどういう立ち位置が向いているのか、少しくらい想像しておいてもいいと思う。
あなたの中にあるどんな素質が、エンジニアとしてのどんなポジションに向いているのか。一度考えてみよう。折衝が好きなエンジニアもいれば、対外的なことが大嫌いでひたすらプログラミングをしたいエンジニアもいる。採用や部下の教育が好きなエンジニアもいれば、そうでない人もいる。
30歳を過ぎてエンジニアになった私の場合
たいして参考にならないだろうけど、35歳を過ぎてエンジニアになった私の経験してきたことを少し書いておこう。
私は文学部卒で、しかもフランス文学課というコテコテの文系だ。数学嫌いで文学部に逃げたタイプだった。大学生のときにniftyのレンタルスペースで初めてホームページを作成し、ホームページビルダーなどを使っていた。なお、その当時はウェブサイトとは言わず「ホームページ」と表現する時代だった。
ホームページビルダーでは細かい修正ができず、デザインの細かいところにこだわるにはHTMLとCSSを勉強する必要があり勉強した。ご存じの通りhtmlは簡単なので、これはけっこうあっさり身についた。
当時はちょうどgoogleやSEO、ブログなどの用語が一般的になり始めていた時期だ。本を片手に自分のウェブサイトで色々なこと試し、そこそこのビッグワードでSEO上位を維持した時期があり、アフィリエイトで月間20万くらい稼いでいた。管理しているページが増えてきたので、レンタルサーバーにCMSをインストールして本格的にウェブサイトを構築した。
さらにページが増えてきて、効率よくページを管理するにはプログラムを勉強すると痛感し、当時はやりのPHPの本を一冊買ってやりこんだ。初歩の初歩くらいは身についたかもしれない。しかしその後PHPを触ることはなく、少なくとも仕事で扱うレベルには達しなかった。
社会人になり、HTMLができたせいかWebの仕事を得ることができた。デザインはできないが、コーディングとほんの少しシステムよりのことが分かった程度だったが、仕事はあった。ウェブやITまわりの仕事を経験し、携帯電話のブラウザ機能の開発テスト、ECサイトの運用、ネットワークの監視、ウェブコンサルタントなど多岐に渡った。20代のときは多少テクニカルな仕事もしたが、エンジニアではなかった。
20代は何も考えおらず流されるままだったが、それらの経験はいまのエンジニアとしての自分に大きく役立っている。ちゃらい20代はすぐに終わり、30代で転機が訪れた。
30代でやってきた転機
30代初めの頃は、ベンチャーの開発会社で、その会社が独自開発したCMSの運用サポートを担当していた。当時、プロダクトオーナーのエンジニアとウェブ運用が得意な私の2人でそのCMSの対応をしていた。エンジニアは開発し、私は開発以外のそのCMSに関するほぼ全ての業務を担当していた。主に顧客サポートだが、業務は多岐に渡った。
そんなある日、一緒に楽しく仕事をしていたプロダクトオーナーのエンジニアが退職することになり、突然わたしはそのCMSの業務を一人でやることになった。代わりのエンジニアはアサインされず、LinuxにSSHでログインするのがせいぜいの私が、事実上のプロダクトオーナーになったのだ。他のプロダクトのエンジニアは各自の案件で手一杯でCMSのことに構う余裕がない。だから私が一人で業務を回した。「事実上のプロダクトオーナー」とはそういう意味だ。いま思えばずいぶんおおらかな環境だったと思う。
そのCMSはPythonで記述されており、10年以上前にPHPの初歩をかじった私に開発に関してはなんとかなる代物ではなかったが、どういう機能があり、バグに対してはどういうふうに対処すればいいかは熟知していた。とりあえずこうすれば、この問題は回避できるのようなノウハウがどんどん自分にたまり、元々属人化していた業務がさらに属人化していった。
とはいえ、ソースもかけないのではできることに限界がある。自分で対応できないことへのストレスがたまり、これはプログラムを勉強するしかないという気になった。プログラムやサーバー周りの勉強をしていった。Python、SQL、JavaScript、サーバー周り、数学などを独学しつつ、OJTでスキルが広がっていった。もちろん失敗をたくさんしたことは言うまでもない。
元々読書家だったのが関係していたのか、コツコツ勉強するのは嫌いではなく、また仕事に関係のある関心のある領域であったためか、勉強は順調に続いた。数学だけでなく物理の勉強、コンピュータの基礎の勉強などもした。数学嫌いだった高校生の頃が嘘のようだ。
そうやって自分の対応できる技術的な範囲を少しづつ広げていったわけだが、若いときに自分でアフィリエイトサイトを運営していた経験が大きく役立った。どういうことかいうと、お客さんはCMSを使いウェブを運用しているわけだが、自分でウェブ運用の経験があるから運用側の気持ちは事情が分かるのだ。また、Movable TypeやWordPressなどのCMSを自分で構築・運用していたので、CMSがどういうものなのか、そしてそれに関連する機能がどういうものなのか頭にモデルがあった。だからお客さんの言っていることがすぐに理解できるのだ。これは大きかった。
そして、かなり自由な環境にいたことの影響も大きいと伝えておく。ベンチャーの開発会社だったが、アルバイトでも監視されることもなく自由に働ける環境だった。もちろん自由な分だけ責任を伴うのだが、私はその環境でテクニカルサポート、サーバーの障害対応、炎上対応、ウェブ運用のアドバイス、営業、提案資料の作成、システム開発の見積もりなど、CMSの周りにあることはほぼ何でもやった。しなかったのはウェブデザインくらいかもしれない。
プロダクトオーナーのエンジニアが辞めたとき、自分も辞めることはできたが、そうはしなかった。この程度はなんとかなるだろうと楽観的だった。その延長に今のエンジニアとしての自分がいる。挑戦できる環境にいる場合、挑戦するほうが得である。失敗しても、よほど致命的な失敗でない限りたいしたことないし、仮に致命的な失敗でも一回くらいならどうにでもなる。
エンジニアとして楽しく働くポイントを整理する
以上を踏まえて、エンジニアとして楽しく働くポイントを整理しよう。まず、何度か書いた通り、あなたは必ずしもごりごりの技術おたくに技術力で勝負する必要はない。例え彼らに技術的で太刀打ちできずとも、現場の課題やWeb運用の現実を知っているとか、対外的な折衝・営業ができるなどのなんらかのスキル・経験があれば、そのスキルと経験の浅いプログラムスキルを組み合わせて活躍できる場は必ずある。
私がいた開発会社でみた一人の新卒エンジニアの例を紹介しよう。理工系の学部を出て、その分野で大学院まで出て、プログラムの理論の部分に詳しい新卒がいた。その人はプログラムはできるがウェブ運用やCMSのことを知らなかった。CMSの機能を開発をするにしても、どういう機能が必要で、システムの内部でどういうデータの動きをするかなど詳細な説明をしないと実装できなかった。頭にモデルがないから、開発意図を汲み上げるのに時間がかかるのだ。やがてそんな彼も経験を積み成長していった。
結局のところ、技術的なスキルと、ウェブシステムに関する知識・経験の2つが大事であり、どちらも時間をかけて身につけていくものだ。焦って思い詰めた状態で勉強してもいいことはないから、楽観的にいこうではないか。
もし短い距離でエンジニアになることを目指すなら、あなた自身でウェブサイトを構築することをおすすめする。VPSなど安価なサービスでいいので、サーバーを立ててウェブサーバーやCMすぉインストールし、CMSの設定やhtmlなども自分でやる。ドメインの取得、DNSの設定ももちろんする。そして実際にウェブ運用をしてアクセス数を稼ぐ。これはウェブ運用の課題が自分で分かるようになるのでイチオシだ。たいしてお金もかからない。
- 昔苦手だったものでも、それが関心のある領域に変化すれば身につく。若くなくても身につく
- いまやっている努力が将来の何に結びつくか分からず不安に感じるときもあるだろうけど、無駄にはならない
- 人生遠回りしてもOK。40歳からエンジニアを目指してもなれる人はなれる
- 挑戦・失敗が許される環境にいるほうが成長できる
- 楽観的過ぎるのも悲観的過ぎるのもよくない。どんどん挑戦しよう
- 多少プログラミングの腕前が未熟でも、関連知識が豊富なら未熟さを十分補うことができる
最後におすすめの本
私がエンジニアになるのに勉強した具体的な内容や書籍については、また別の記事で改めて書くことにするが、最後にエンジニアを目指す人に有用だと思われる書籍を数冊紹介してこの記事を終えることにする。もしあなたが読書をする習慣がないのなら、読書による代理体験をあまくみてはいけない。代理体験があれば、しないでいいはずの苦労をある程度は避けることができるから。
『ひとり情シス 虎の巻き – 実話で学ぶITエンジニアの理想の仕事術』 成瀬雅光著 日系BP社
いまプログラミング・スクールに通っているとか、就職活動中であるなどの人は、開発現場の実態がどんなものなのか当然知らないと思う。その未経験を、読書による代理体験で少しは埋めることができる。本書は中堅の製造業のIT部門にいた著者が、一人情シスになって経験したことをまとめてある。エンジニアが置かれるIT現場の現実を知るにはうってつけの一冊。
『わたし、定時で帰ります。』朱野帰子著 新潮社
テレビドラマになったらしいが、おすすめするのは小説である。このドラマは舞台がウェブ制作会社であり、ウェブ業界で働く人なら親しみを感じるだろう。著者はウェブ業界で働いていたに違いない。これからウェブ系のエンジニアになって活躍したいと考えている人は、ウェブ制作会社の現場の一端を垣間見ることができるだろう。もちろんウェブ制作会社といっても規模は様々なので、この小説での内容が誰にでも参考になるわけではないが、それでも読む価値はある。そして単純に読み物として面白い。
『完全SIer脱出マニュアル』池上純平著 シーアンドアール研究所
富士通株式会社にSEとして入社したエンジニアの体験記。私はSIerで働いたことはないが、本書を読んで「ああ、SIerとはこういう感じなのか、どんなに給料が良くても絶対に働きたくないな」と思った。野心溢れる若者が、現実を知らないでうっかり自分とは相性の悪いSIerにでも入ったら大変である。本書を読めばそういう失敗を未然に防ぐことができる。やはり読書による代理体験は有用だと確信する。
『独学プログラマー』 コーリー・アルソフ著 清水川貴之監訳 日系BP社
本書に書いてある通り進めれば、プログラマーとして必要なスキルを一通り経験することができる。体系的に学べるというのが大事な点で、それによって知識の抜け漏れを防ぐことができる。エンジニアになりたいと決心した人が最初に読む一冊として最適である。
この記事に関連する記事
メルマガ登録
SEが商品登録、在庫管理、発注などのEC業務を効率よくプログラムで実施する方法を無料配信します。
- APIやツールによる業務効率化
- 広告運用に関するTips
- CVRを改善するアクセス解析のコツ