現役エンジニアが語る!エンジニアとして成功するために知っておきたい大事な9つのこと
これからエンジニアというキャリアを目指している方向けに成功するための大事な9つのことを現役のエンジニアが語っています。プログラミング初学者、未経験者は学習を始める上で知っておきたいことが詰まっているでしょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
本稿は、Codementorのブログ記事を、Codementorより了解を得て日本語翻訳し掲載した記事になります。
CodementorのSteve Klabnik氏(以下Steve氏)は、オープンソースプロジェクトのコントリビューターとして知られており、2014年には1900以上のコントリビュートを行っています。
今回は、Steve氏よりこれからエンジニアを目指している方に「エンジニアとして成功する上で大事な9つのこと」を紹介していきます。
1. 常に1つのことに集中する
自分が新しいことを学ぶときはいつでも、やるべきことを分解して取り組むようにしている。
プログラミングをする際、作業によっては複雑に構造化して考えるものがあるだろう。1つのタスクを消化するためにもあらゆる方法があり、選択するだけで迷ってしまう。
ただ、何をするにもプラス面マイナス面はあるわけだから、1つのことに集中し、それに向かうことが大事なのだ。
2. 人々はそれぞれいろんな考えを持っている
プログラミングを知らない人の中には、簡単なことだと思っている人もいる。そういった人は、アセンブリのコーディングをすればあとは全てコンピュータがやってくれると勘違いしている。
本当のWeb開発者は、マークアップ言語・プログラミング言語を書き、スタイルを当ててあらゆるデバイスやシステムに応じて作っているのが事実である。もちろん相当難しいことだ。
3. 80%の仕事で十分だ
同じ車というものを作る上でも乗用車とレースカーでは必要な機能が違うだろう。
レースカーに搭載されている機能すべてが乗用車でも必要になるということはほとんどない。それは逆も然りだが、つまり80%くらいの完成度で十分なのだ。残りの20%の機能というのはほとんどの人が使わないし100%完璧を目指すのはよろしくない。
残りの1%のバグを追いかけても時間を浪費するだけなのだから。
4. 「ググる」能力を高めよう
多くのプログラミング初学者は、「ググる」という仕事を過小評価しすぎている。私の仕事ではよくプログラミングをする時間よりも何か検索していることの方が多かったりする。
5. 分からなければ聞く、分からない人がいれば助ける
プログラミングは、社会的な活動要素が多い。もし知人のサポートが無ければ自分は良いプログラマーにはなれなかったと思う。周りの知人は何かしら得意分野があって何か聞けばすぐに教えてくれる。逆に彼らから質問があればサポートするようにしている。
6. 技術は常に変わり続けている
テクノロジーは常に変化しており、プログラマーも言語主義者でいてはならない。
もし私が1980年代にプログラミングを始めていたら間違いなくアセンブリ言語を利用していただろう。しかし今ではほとんど使われていない言語だ。
これは全てのテクノロジーに当てはめることができて、Ruby on Railsも誰も使わない将来が訪れるかもしれない。
7. オープンソースに貢献しなくても問題はない
私にとってオープンソースに貢献したりドキュメントを作ることはより自分をステップアップするために大事な要素だけれども、ほとんどの人はドキュメントを読むことすら退屈に感じるだろう。
だからオープンソースに貢献するよりも自分にとってのゴールに向かうことが大事なのだ。
私のケースを少し話そうと思う。
私がRailsのコントリビューターになりたいと思った時に、当時あった未解決のイシューに全て目を通したことがあった。その中から一つピックアップし、解決案を提出したらそれが受け入れてもらえたのだ。その体験が自分にとっては本当にワクワクするもので
より自分の技術のレベルを上げるために難題にチャレンジし、
8. プログラマーは失敗の連続である
もしあなたがテスト駆動開発をした場合、「red, red, red, green, red, red, red, green」といった反応を見ることになるだろう。どういう意味かと言うと、作業のほとんどがエラーの連続であるということだ。
もちろんエラーばかり表示されて先に進めないと気分も下がるだろう。ただ、完璧にいかなくても上手く動かなくても焦ることはない。それがプログラマーの仕事なのだから。
9. 諦めない
プログラミング初学者からすると、何が難しくて何が簡単なのかイメージしづらいだろう。だから簡単だと思っていたことが本当は難しい実装であったりする。もちろんその逆も然りだ。
XKCDのイラストはそれを見事に表現している。
Q. ユーザーが写真を撮ったらナショナルパークにいるかどうかチェックしてもらってもいいかい?
A. お安い御用。数時間あればできるよ。
Q. あ、あと鳥の写真かどうかチェックしてほしいんだ!
A. それは研究チームと5年くらい時間が必要だな。
同じような質問にも見えるが、開発の難しさは大いに異なる。開発経験がない人からすれば、何が難しくて何が簡単なのか分からないかもしれない。
ただ、それは難しいプロジェクトを完成するごとに自分で理解してくるもの。そして、解決案やこうすれば良いといった勘はやっていく中で身につくものだ。
もちろん初めの頃は極めて大変かもしれないが、やっていく中で簡単に感じていくものだろう。
[お知らせ]TechAcademyでは初心者でもエンジニアになれるオンラインブートキャンプを開催しています。これからエンジニアを目指す方はぜひご覧ください!