ホーム > 雑記 > 新卒プログラマが押さえておくべきポイント – 長期か、短期か、それが問題だ

新卒プログラマが押さえておくべきポイント – 長期か、短期か、それが問題だ

  • 2011年3月28日 10:00 AM
  • 雑記

The one point you shoud know before becoming programmer

まずは、個人的な話から。
会社を辞めて、ちょうど1年。Webサービスを作り始めて、4年以上経つでしょうか
学校でプログラムを習い、それを基礎にWebサービスを作り始めました。

私は高専で、情報工学を専攻していました
そのため、情報関連技術の基礎的なところは、ひと通り、学校で学んで来ました。

Webサービスを作り始めて、学校で学んだそれらの知識も役立っています。
しかし、確実に学校だけでは、学べないことがあります。

それが、今回のテーマである”長期か、短期か、それが問題だ“です。

ここからは、私が感じる、学生時代に学べなかった、これから学ぶべきことをまとめていきます。

長期的視点を持つこと

Long way

長期的視点、それは言い換えると、”運用を考える“ということです。
運用と一言に言っても、様々な運用があります。

  • インフラの運用
  • サービスの運用
  • コードの運用

インフラとサービスの運用はイメージが付きやすいでしょう。
インフラの運用は、サーバを含めたハードウェア周りを落とさずに運用すること
サービスの運用は、そのサービスがうまく回るように、様々なメンテナンスをしていくこと

恐らく、学校でプログラミング言語だけを習った人は、コードの運用が理解しにくいでしょう。
コードの運用、それはつまり、

未来を考えてコードを組むこと

です。
それが、オブジェクト指向設計や、言語自体の思想、そして良いコードとは何かと言う問いに繋がります。

コードは必ず、変化します

プログラマはある問題を解決するために、コードを組みます
そして、この問題を解決するコードが完成します。
完成したコードに対して、この後、必ず次のことが起こります。

  • 完成したコードでは問題を完全に解決できなかった
    • > いわゆる、バグ
  • 問題自体が変わってしまった
    • > 機能追加

会社に入ってコードを書くと、この二つのことに頻繁に悩まされます

学生時代にも、コードは書きます。
卒業研究のため、課題のため、自分の趣味のため…など。
しかし、これらのコードには重要な点が抜け落ちています。
これらのコードには、定期的なフィードバックがないのです

学生時代に組むコードの多くは、その場限りのコードです。
問題は変化しないし、長期的に運用することによるバグも発生しません。
そのため、機能追加もなく、人のコードを読む必要がありません。

会社で組むコードは、これの真逆です。
問題は変化し、長期的に運用することによるバグが発生します。
新規にコードを組むよりも、機能追加のほうが多いでしょう。
つまり、他の人が書いたドキュメントも存在しないコードを、読まねばなりません。

これが、新卒プログラマが初めに自覚すべき点だと、私は思います。

補足:
ただし、学生時代からオープンソースに貢献してきた学生は、その限りではないかと。
オープンソースほど、自分のコードが洗練される場はありません。
先ほど述べた全ての点が、詰まっていますからね。

それと、学生時代の話は、私の経験上です。
上記のようなコードばかりなのは、高専という特殊な場に居たせいかもしれません。
大学ではもっと違うコードを書くよ。という話があれば、コメントください。
参考になります。

長期か、短期か、見分けること

Long or short way

会社のために書くコードは、全てが長期的であるべきです。
それは、そのコードが自分が会社を辞めた後も、運用される可能性があるから。

しかし、自分のためのコードはどうでしょう。
これは、逆に短期的なコードをたくさん書くべきです。

ここで言う自分のためのコードとは、以下のようなコードです。

  • 複数のデータをまとめて処理するための、エクセルのマクロ
  • ソースコード内の変数名を置き換えるための、正規表現
  • フレームワークのソースを高速に編集するための、vimのスクリプト
  • 頻繁に行う処理を簡単にするための、Linuxコマンドのワンライナー

これらは全て、自分の作業をコンピュータに任せるためのコードです。

これは、コンピュータに任せられる!と閃いたら、すぐにコードにしましょう。
長期的なコードに必要な、テストも、抽象化も、全て不要です。
あまり考えずに、ざっくり作っちゃいましょう。
それらのコードは、自分で使っているうちに洗練されるはずです。

今、自分が書こうとしているコードは、長期的なのか、それとも短期的なのか、常に見極める必要があります。

言語を極めること

Which language

自分が使える言語を一つ以上、持ちましょう
プログラミング言語の母国語のようなものです。
その言語であれば、すぐにコードが思いつくレベルまで、言語を極めることが大事です

このような言語が一つあると、まず、コードを書くのが早くなります。
リファレンスも不要で、コードが書けます。
集中してコーディングでき、効率が上がります。

言語を一つ極めると、他の言語の習得も早くなります。
英語が話せるようになると、他の国の言葉も早く習得できるのにも、似ています。

基本的には、各言語で方言があるだけ
その方言の使い方を理解し、それが内部的に何をしているか、理解すること。

中途半端に、色々な言語をやるよりも、まず、一つの言語を極めたほうが良いでしょう
そうすれば、自然と他の言語も話せるようになるんです

私は、PHP > Python > Cの順で、コードが書けます。
(JavaやVBも書けますが、使いこなせるレベルじゃない)

Pythonを学んだときは、PHPの知識をベースに学びました。
今は、Object-Cの勉強をしていますが、CとPHPと比べながら、学んでます。

自分の得意な言語があると、それと新しい言語を比較しながら学習できます

言語を極めた基準の一つに、適切なテストコードが書ける、ということが挙げられます。

テストコードを書くには、かなりスキルが必要です。
正直、簡単なロジックを組むよりも、適切なテストコードを書くほうが難しい。
抽象化し、テストし易くするために、その言語の特性を利用していくためです。

逆に、テストコードほど、参考になるコードはありません。
他の人の書いた、テストコードを、そして、テスト対象のコードを読むことで、言語の理解が飛躍的に高まります

長々と書いてしまいましたが、まずは得意な言語を持ちましょう。
どんな言語であれ、一つでも得意な言語があれば、色々とメリットがあるよ。ということが、言いたいのです。

正直、この記事には、まったく意味がないのかもしれません。
なぜなら、これらのことに気付けない学生は、こんな記事を読んでいないだろうし。
(そう、私自身そうでした。ま、こうやって自分を一般化するのは良くないんですけどね。)
逆に、この記事にたどり着いた学生は、これらのことに少なからず気づいているはずです。

これを読んで、少しでも、楽しくプログラムを組める人が増えることを望みます。
それに、私も更にステップアップして、次のレベルの記事が書ければ良いな。

ちょっと一言

今、亀有のnagicafe+に来て、記事を上げています。
nagicafe+、オススメです。集中して作業できますよ。
亀有に来た方は是非、お立ち寄りを。

blog comments powered by Disqus

ホーム > 雑記 > 新卒プログラマが押さえておくべきポイント – 長期か、短期か、それが問題だ

スポンサードリンク
書いている人
つぶやき
RSS 気になるニュース
過去の記事

ページの上部に戻る