質問: プログラム能力 私は今春就職する学生で情報系の研究室に所属しています。私の内定先で、同期入社(se採用のみ)で大卒は自分だけで他は全員専門学校出身です。皆はc・java・basicを学習してきていますが、私はc・javaでしたので最近になってbasicを勉強し始めました。専門学校の人たちよりプログラムをいじる時間が少ないので、入社当時のプログラム能力に差が出るのではないかと思っています。会社はソフト開発でオープン系です。入社まで時間が余りありませんが、ようやく卒業研究が終わったので本格的な勉強をしたいと思います。入社前にプログラム経験を専門学校の人に負けない位に出来ればと思っていますが、学習する上(3つとも)で気をつけた方が良い事・やっておいた方が良い事などありましたらアドバイスをお願いします。
回答: 先に一言。極端な書き方をします。 私は現役でフリーランスのsi(se/pgからケーブル敷設まで)をやっています。 そんな私から、あなたの勘違いを指摘させていただきます。 se/pgに求められる能力は決してコーディング能力ではありません。 問題(課題)の把握とその分析、そして最適なソリューションの選択です。 最低限必要な能力としては、問題と解決手法を誤解無く読める母国語の文章で簡潔にまとめられる事です。 極端な話、プログラム言語なんて、リファレンスを見ながら書ければ十分です。 1つの言語にとらわれすぎて、40歳50歳になって潰しが効かなくて困っているseもいっぱいいます。 簡潔な箇条書きで書かれた母国語の文章をそのままプログラミング言語に当てはめれば、ある程度のプログラムは作れます。 「抽象化」が出来ればさらに良いでしょう。 次に必要な能力は、データを整理する能力です。 データを系統立てて整理し把握できる状態にする事。これが必要なのです。 つまり、箇条書き能力とデータ整理能力があればpgとして最低限の仕事は出来るという事です。 そこに「プロジェクト管理」や「抽象化」「オブジェクト指向」、データの「正規化」が出来れば技術サイドのseとして十分やっていけます。 さらにその上に、お客様の日常使っている言葉で語られた要望を、簡潔にもれなくまとめる能力が加われば、営業サイドのseとしてやっていけます。 プログラミングの技術を云々するのは、ゲームや制御系など、タイミングにシビアな世界のみです。 業務系の世界ではお客様の要望をいかに取りこぼし無く拾えるかが課題になると思います。 つまり、最大限必要なのは「国語力」と分析能力です。 分析能力や抽象化には「集合論」や「離散数学」が応用できます。 あまり幅を広げずに、国語力の増強と集合論の会得に心がければ良いseになれると思います。 自分にある程度の能力が備わったと思ったら、トレンドをチェックする事を忘れずに。 ただし、トレンドには"はりこ"の様に中身の無い物も多いので、うたい文句全てを信じない事。 最初は話半分で、「この案件に使えそう」と思った時に調べ始めても十分間に合います。 (知らなきゃ調べようもないですから、新しいものが出たら概要だけでも調べておきましょう。) コーディングしか出来ない頭でっかちには無いセンスで勝ちに行きましょう。(o^ー')b 無理せず、がんばってください。