SE(システムエンジニア)?
プログラマー?
どちららもシステムを作ってる人だけど、明確な違いがよくわからない。
システム系を目指しているけど、どっちになればいいのかよくわからない。
そのような方もいらっしゃるかと思います。
その疑問に対して明確に回答していきます。
私はWeb系の会社にて数多くのSE(システムエンジニア)やプログラマーと日々仕事をしており、それぞれの具体的な作業をもとにお話をしていきます。
内容としては以下になります。
システム開発における全体作業
システム開発を行う際にいくつかの作業工程があります。
システム開発のスタートからゴールまでその作業を並べたものが以下になります。
工程名 | 作業内容 |
---|---|
要件定義 | 顧客の要求をシステムとしてどのように実現するか、できるかを、顧客と話をしながら決めていく作業になります。 |
基本設計 | 要件定義で決まった内容をシステム観点において、どのような動きにするのかの大枠を定めて書類化(基本設計書)する作業です。 |
詳細設計 | 基本設計をもとに、実際のプログラミングレベルまでの動作まで定義をして資料化(詳細設計書)する作業です。 |
実装 | 基本設計書、詳細設計書をもとに実際にコンピュータにてプログラムを作る作業です。 |
試験 | 実装にて作られたプログラムを動かして各種設計書通りの想定で動いているかを確認する作業です。もし異なる動きをしていた場合は修正を行います。 |
リリース | 試験が終わったプログラムを実際に動かす環境に適応させてシステムを稼働させる作業です。 |
リリースが終わると開発フェーズは完了して、運用フェーズへと入ります。
さて、システム開発の全体作業がわかったところで、この作業のそれぞれを誰が実行するか。ということになります。
では、SE(システムエンジニア)とプログラマーがそれぞれどのよな分担で作業を実施しているのかわけてみましょう。
以下になります。
作業工程 | 役割分担 |
---|---|
要件定義 | SE(システムエンジニア) |
基本設計 | SE(システムエンジニア) |
詳細設計 | SE(システムエンジニア) |
実装 | プログラマー |
試験 | SE(システムエンジニア) |
リリース | SE(システムエンジニア) |
システムエンジニアとプログラマーでそれぞれの作業の違いがわかったでしょうか。
実際、現場(会社やプロジェクトによります)では、SE(システムエンジニア)とプログラマーの境目があいまいだったりするところもあります。
半分システムエンジニアして、半分プログラマーをしてみたいな人たちもたくさんいます。
ただ、役割として大枠を理解してもらえれば良いかと思います。
SE(システムエンジニア)の作業
システム開発の役割表からもわかるようにSE(システムエンジニア)の作業としては以下でした。
実装(プログラミング)以外の作業は、ほぼSE(システムエンジニア)が行います。
ただ、単純に資料を作ったり、試験をしたりと、デスクワークがメインではありません。
顧客と話したり、プログラマーと話したりと、プロジェクトに関係する人たちとのコミュニケーションが多くなる立ち位置です。
要するに顧客とプログラマーの中間に位置する役割となっています。
したがって、システム全般の知見とコミュニケーションが重要視されるお仕事になります。
具体的には以下の記事を参考にしてください。
プログラマーの作業
プログラマーの作業としては、上記の役割では「実装」部分になります。
コンピュータに対してプログラミングを行っていくという作業ですね。
したがって、プログラミングスキルというものが大きく問われる職種になります。
プログラミングにおいて課題が発生した場合は、解決していかねばなりません、
もちろんスケジュールもあるため、期日までには実装が終えてなければなりません。
システムエンジニアと良くコミュニケーションを取りながら、顧客の要望をしっかりと意識した上で実装に取り組めることが、とても望ましいですね。
また、システムエンジニアからはそれを求められています。
要するにそこの意識がシステムエンジニアとプログラマーとで合っていないと、細かい箇所でどうしても食い違いが発生していますからです。
したがって、プログラマーだとしても、与えられたプログラミングをする。
というだけではなく、できるだけそのシステムの意味合いについても意識するように作業を進めることが良いですね。
SE(システムエンジニア)とプログラマーどちらを目指すのか
では目指すならどちらの職種を目標に進んだ方が良いのか。
結論としては、まずは「プログラマー」を目指してください。
その理由としてはSE(システムエンジニア)は、システムのことがわかってないと厳しい職業です。
そのため、システムのこと(まずはプログラミングを行うプログラマー)を理解したうえで、ステップアップとしてSE(システムエンジニア)を目指すということが良いでしょう。
プログラマーとして一定量のプログラミングの経験やシステムの知見を身につけます。
そして、SE(システムエンジニア)を目指す方は、SE(システムエンジニア)へと進んでいく。
また、プログラマーをさらに続けたい方は、プログラマー職を続けるが良いかと思います。
まとめ
SE(システムエンジニア)とプログラマーのそれぞれの役割、また違いなどについて説明してきました。
内容は以下でしたね。
SE(システムエンジニア)とプログラマーどちらもシステム開発には欠かせない職種です。
また、記載した通りですが、明確な役割の区切りがない会社やプロジェクトも多々あります。
システムに関係する職種を目指している方であれば、両方の知見をしっかり持てることがとても良いです。
そのためには、まずはプログラマー、そしてSE(システムエンジニア)と段階的に進んでいくことがとても望ましいパターンと言えます。
以上です。
コメント