Pocket

※本記事は、2016/6/7に投稿されたTechAcademyマガジンからの転載記事である。


これからエンジニアというキャリアを目指している方向けに、成功するための大事な9つのことを現役のエンジニアが語っている。プログラミング初学者、未経験者は学習を始める上で知っておきたいことが詰まっているだろう。


本稿は、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のイラストはそれを見事に表現している。

tasks

Q. ユーザーが写真を撮ったらナショナルパークにいるかどうかチェックしてもらってもいいかい?

A. お安い御用。数時間あればできるよ。

Q. あ、あと鳥の写真かどうかチェックしてほしいんだ!

A. それは研究チームと5年くらい時間が必要だな。

同じような質問にも見えるが、開発の難しさは大いに異なる。開発経験がない人からすれば、何が難しくて何が簡単なのか分からないかもしれない。

ただ、それは難しいプロジェクトを完成するごとに自分で理解してくるもの。そして、解決案やこうすれば良いといった勘はやっていく中で身につくものだ。

もちろん初めの頃は極めて大変かもしれないが、やっていく中で簡単に感じていくものだろう。

logo

 

 

 

Pocket