今年でソフトウェアエンジニアになって5年目になります。以下のことについて、いつも思うのは、この業界に入ったばかりのときに知っていたらどれだけよかったかということです。無駄な遠回りをせずに済み、今よりもっと成果も上がっていたでしょう。ああ、過去は追えません。そこで、ここで皆さんに共有したいと思います。特にこの業界に入ったばかりの初心者の皆さんは、以下の8つのことを本当に理解しているかどうか、よく考えてみてください。

8-things-new-programmer-know

1. 良好なコミュニケーション能力。

ソフトウェア開発はチーム活動です。たとえそのチームが自分ひとりだけの場合でも。毎瞬、相互に理解しなければならないことがたくさんあるため、コミュニケーションが最大の問題になります。開発マネジメントの90%はコミュニケーションです。例えば、バグとは何かを人に説明し、効果的な診断方法を理解し、自分の複雑な考えを皆に完全に伝える必要があります。コミュニケーションはプロジェクト成功の最も重要な要素です。非効率なコミュニケーションは、大量の時間と労力を無駄にするだけです。

2. コンピュータサイエンスの基礎。

優秀なプログラマーになるには、コンピュータサイエンスの基礎は不可欠です。しかし、正直に言うと、コンピュータサイエンスとコンピュータエンジニアリングはまったく別物です。優秀なエンジニアになるには、コンピュータの発展トレンドやコンピュータの動作原理を研究する好奇心が必要です。新しいトレンドに存在する可能性のある誤解や、いくつかの代替ソリューションについて深く理解することも含めて、そうして初めて他のエンジニアと交流するための基盤が得られます。アルゴリズムは、面接以外ではあまり役に立ちません。つまり、ほとんどの場合、クラスライブラリがあれば十分だということです。しかし、これはデータ構造とアルゴリズムを完全に無視してもよいという意味ではありません。さらに、コードの推論と最適化は依然として重要です。特にスケールする場合には。

3. コードを読むことを学ぶ。

コードを書くことの重要性は言うまでもなく誰もが知っていますが、コードを読むことについては、ほとんど誰も聞いたことがないかもしれません。これはおそらく最も習得する価値のあるスキルの一つです。この点については、私も今のところ目標達成に向けて努力している途中です。複雑な現象を通して物事の本質を見抜く力があれば、優秀なエンジニアになるのもそう遠くありません。

4. UNIXとLinuxを学ぶ。

この二つはほぼどこにでもあるので、学ぶ価値が十分にあります。コマンドラインを使ってコンピュータを素早く操作できます。必要ならLinuxソフトウェアパッケージをインストールしてサーバーを設定することもできます。viで素早く編集することもできます(そうです、viです。私は個人的にはEmacsユーザーですが)。もう一つ重要なのは、UNIXユーティリティは大幅に時間を節約できるということです。さらに、sed、grep、find、パイプの使い方と、基本的なbash/zshでコードを書く方法も知っておく必要があります。

5. テキストエディタを理解する。

ソフトウェアエンジニアはテキストを自にに操る達人です。今では古いものとみなされているEmacsやviでさえ、エンジニアが学ぶべきエディタです。この2つのうち少なくとも1つは習得すべきです。両者の設計思想は異なり、そのうちの1つを理解することで、コードをより速く書けるようになるだけでなく、特定の環境に縛られることもなくなります。エディタを単に使うだけでなく、エディタを自分の思い通りに従わせ、自動化し、自分のキー操作の習慣に合わせ、問題を解決するスクリプトを書きましょう。

6. 自動化思考

コピー&ペーストは自動化の一種なので、スクリプトを書いて実現することは十分に可能です。そして、気軽にスクリプトを書くことはプログラミングをより面白くします。たった30分で、一日の退屈で単調な仕事を片付けられるかもしれません。自動化はプロセスを簡素化し、多くの新しいことを学ぶこともできます。

7. バージョン管理を理解する。

私は何をするにもgitを使うのが好きです。残念ながら、この素晴らしいアイデアを学校にいた頃はまったく知らなかったのですから、本当に情けない限りです。バージョン管理を使えば、安心して大胆にコードを試すことができます。なぜなら、うまくいかないところがあれば、元の状態に戻したり、入力を取り消したりすればいいからです。It's so easy!

8. 自分で小さなプロジェクトをやってみる。

これは非常に良い鍛錬になります。たとえ時には疲れ果てて、投げ出したくなることもあるでしょう。私たちの成果物は抽象的なので、橋を架けるように実際に目に見える完成品があるわけではありません。そのため、コードを書き続けるしかなく、うんざりしてしまいます。自分の気に入ったプロジェクトに一心不乱に取り組み、我が子のように扱い、全力を尽くして最高のものにしてみたくはないですか?その過程で新しい知識を学び、ツールの使い方を身につけることもできますが、仕事ではそんな機会はないでしょう?答えはもちろん「YES」です。

私自身も上記のすべての点を毎回達成できるわけではありません。しかし、私がこの分野に足を踏み入れたばかりの頃に、誰かがこれらの心からの言葉を教えてくれていたらと今でも思います。心から感謝することでしょう。

訳文リンク:http://www.codeceo.com/article/8-things-new-programmer-know.html