職業プログラマの技術力?

id:fkm:20060907のエントリ。

ソフトウェア関係に就職する場合、C言語の最低のラインはどのあたりまで知識としてもっておく必要があるのだろうか?ポインタと構造体と配列がわかっていれば十分なのだろうか、それともまだまだ上なのか…?

実際に働いてみるとわかることなんだが、
新卒で会社に入る限り、就職活動の段階でどの程度技術をもってるかは
多くの会社では*1あまり意味がない。


技術力よりも、いわゆる人としての能力*2
求められるケースが多いのが実情だ。


なぜか?
考えられる理由を挙げてみる。

  • 採用担当が技術に明るくない
  • 技術力を計ることをあきらめている
  • 技術は後付でもいいと会社または採用担当個人が考えている
  • そもそもまとまな技術者なんて求めていない*3

などなど。
まぁ、会社によって事情はいろいろだろうから、
一概にどうとは言えないが、ここに挙げたような側面があるのも確かだ。


もちろんそうでない会社もあることはある。
だがしかし、多くの企業、特にメーカー系の企業やその傘下のグループ企業などにおいて
この傾向が強いということをプログラマとして働く中で感じてきた。


外側からは、少し前のLD事件でIT企業が虚業であるかのように言われ、
内側では、偽装請負のような悪質な勤務形態や中間搾取の企業間構造などが存在し、
技術者の位置づけが軽んじられる状況も多々ある。
そんな中において一プログラマとしての自分の立ち位置や、
今後の方向性をどうすべきか、非常に面白く且つ難しい問題だ。


fkmさんが職業プログラマになりたいと願うのであれば、
遅かれ早かれ、きっとこのような問題にぶつかるはずだ。
ただ闇雲に技術力を磨くのではなく、何らかの位置づけや目標をもって
やっていけば、それがなんであれきっと役に立つ日がくるだろう。
そうでなければ、なんのための技術なのか、なんのためのプログラマなのか。


っと自分の愚痴になってしまいそうだ(笑


で、まぁ、実際問題どの程度のC言語の知識があれば十分かと言う話。
自分の同期で入社した人間でまともにC言語を書ける人間は約20人中3人程度でした。
他の人はC言語って何?とか聞いたことあるとかその程度。
んで実際にC言語を書けるってレベルの人でも、
ポインタがまともに使えなかったりする。
まぁ所詮そんなものなのだ。
制御構文が判って、構造体と配列と共用体がわかって
あとはポインタが使えれば、ひとまずはOKだと思ってもらって構わないと思う。


それ以上のアルゴリズムについての知識や、スタックやヒープの扱いやら
関数の呼び出し規約やら文字コードやらという雑多な知識は
後からどうにでもなるものし、仕事をやっていけば
自然と身につくもの。
SQLなどのC言語とは直接関係ないが、業務に必要な知識も同じだ。


だがまぁ、yaneurao氏のようなところでバリバリやっていくのを目指すのであれば、
言語の文法に関すること以外の、↑にあげたような雑多な知識が求められるケースの方が
遥かに、遥かに多いはずだ。
一つの言語に拘泥するなかれ。
C言語C++を深く知ることは勉強になるし、将来きっと役に立つ。
だが、それと同等かまたはそれ以上に、多くの言語と多くのシステムに触れることも
大切で、業務遂行上必須と言える。

*1:技術力を重視する会社もままある

*2:コミュニケーションや精神性など

*3:ただの労働者としか考えていない