SEの仕事は高度なスキルが必要となるお仕事です。
その難易度の高さゆえ、『仕事がわからない』と感じる場面が何度もあります。
10年SEをやってきたわたしですらしょっちゅう『わからない』と感じる場面があるのですが、一言でわからないと言ってもその理由は様々です。そして、理由別に対処方法も異なってきます。
問題を解決するために大切なことは、まず抱えている問題をしっかり分析することです。

と思っていても、しっかり何がわかっていないのか、見極めていきましょう。

SEの仕事がわからないと思う瞬間
1.パソコンがわからない
SEになる人はどちらかといえばパソコンが得意な人が多いです。ですが、かならずしもそうというわけでもないのです。
中には、

という人もいます。10年SEやってますが、そういう人を何度も見てきています。
別に、パソコン触ったこと無い人が使えない人、と言っているわけではありません。ある程度パソコンが得な人のほうが有利である、適正がある可能性が高い、という意味です。
それでもIT企業がパソコンを触ったことがない人を採用する理由としましては、
- パソコンは入社した後でも覚えられる
- パソコンを使うだけがSEの仕事じゃない
ということです。
パソコンは『習うより慣れろ』です。とにかくいろいろ触ってみるしかありません。まずはタイピングといった基礎的なところから始めましょう。
タイピング速度が上がると、その分だけ効率よくパソコンを扱えるようになり、パソコンのスキル習得が早まります。
2.プログラミングがわからない
SEやってるけどプログラミングがわからないという人は実はけっこう多いです。わたしの体感では、3割程度はまともにプログラミングができていません。
プログラミングができないのは特別能力が低いからではないんです。本当にむずかしいだけなんです。
それでもプログラミングがわからないと、SEの仕事はむずかしい…。SEの仕事は務まらないということもあります。

わかっている人からすると、プログラミングの本質はたった3行で説明できてしまうのです。
- 処理は連続する
- 処理は分岐する
- 処理は繰り返す
これはソフトウェア工学でも上記の話をしていますし、極論すると上記3つだけでプログラムは構成されています。あとは構造体だのクラスだのといった要素が複合的に乗っかってきているだけです。
プログラミングがわからないという人は、まずしっかり基礎を固めましょう。基礎を固めるのに最も最適なのがC言語です。
今どきC言語をメインで使っている会社なんて組み込み系・制御系以外にないと思います。C#やJava、PHPでアプリを作っている人からするとなんだか遠回りに思えてしまうかもしれませが、逆にこれが近道です。
基礎をしっかり習得すればすべてのプログラミング言語の習得が簡単になります。プログラミング言語はみんな基本的なところは一緒で、あとは若干仕様が異なるだけです。基礎が完璧なら仕様の差分だけ学べば良くなります。
3.効率的なコーディングがわからない
プログラミングがわかっていてもコーディングがわからない。そんな人もいるでしょう。

- プログラミングというのはプログラムを作ることを指す。
- コーディングはソースコードを書く行為を指す。
コーディングがわからない、というのは、必要なプログラムを作る上で、ロジックを組むことができないということです。
- どこでif文を使えば良いのだろうか?
- while文を抜ける条件はなんだ?
プログラミングがわかる、というのは机の上での話です。実務ではソフトウェア製品を実現するためのコーディングが必要です。これが『活きたプログラミングスキル』であり、学校の勉強だけでは学べない、習得できないものです。
実務では『活きたプログラミング』が必要…ゆえに、新卒は理系でも文系でも誰にでもSEになれるチャンスがあるわけです。
…少し話が逸れました。戻ります。
コーディングがわからない、という時には、ひたすらプログラミングを経験するしかないです。

ソースコードがスパゲティの麺のように長くなって良いです。リュウグウノツカイのように長くなっても良いです。
まずは書く。長くても良い、できるだけ正しく書く。長いソースコードを関数化するなどして効率よくすることはあとからでも可能なんです。
4.設計など、仕事の進め方がわからない
SEの仕事はプログラミングばかりではありません。会社によるかもしれませんが、ソフトウェアの設計という仕事もあります。
ソフトウェア開発という仕事は他の仕事と比較すると歴史が浅く、未成熟なものです。たとえば、建築であればどこにどんな釘を刺す、柱を建てる、などが決まっています。しかし、ソフトウェアの場合はすべてが曖昧です。
設計書に書くこと、書くべきこと。会社によってやり方も違うし、作るソフトウェアによっても違ってきます。毎回ゼロから作ることになります。
だからこそ、ソフトウェアの設計をいざやろうとすると、

という状況に陥ります。ソフトウェアの設計には定石があるようで、ないんです。
- ウォータフォール
- スパイラル
- アジャイル
- XDDP
IT業界のすごい人たちが開発手法についていろいろ検討しているようですが、未だに最適解が出てきていません。
わからない、というのは、実はみんな同じです。でもわからないでは済まされない。仕事を任されたからにはこなさなければなりません。
そんなつらい状況におかれて仕事をうまくこなすには…?
わたしも苦戦する日々ですが、もっとも大切なことは『調査』です。
- お客さんの要求は何か?
- どこを改造すればいいのか?
- 改造した時の影響範囲はどこか?
- どういうテストをすればいいのか?
『わからない』の正体は作る・改造する対象がよくわかっていない、知識が不足しているということなんです。対象をこれでもか!ってぐらい調べることにより、何をやればいいかがわかってきます。
設計でやるべきことがわからない、考えたり悩んだりすることがなくなるぐらい徹底的に調査しましょう。
5.規格・仕様がわからない
SEの仕事はプログラミング、設計以外にも必要となる知識があります。規格や仕様です。
わたしは過去に客先常駐のSEとしていろんな企業に派遣されてきました。その中にはスマホに関わる会社でも働いたことがあります。
スマホが通信をするためには、通信の規格というものがあります。通信規格は海外のすごい人たちがたくさん議論して決めています。
規格書は英語だし、日本語の説明はどこにもありません。むしろ、海外のすごい人たちが議論している議事録を読んで製品を作ったりもします。
わたしも長年SEをやっていますが、このパターンが一番むずかしくて仕事がわかりません。
この場合は転職するなどして仕事の内容を変えたほうが良いです。こういうのは学歴の高い、頭のいい人じゃないと務まらないと思います。
よく、SEは頭が良くないとできないとか、学歴だとか言われますが、仕事内容によります。基本的にSEは誰にでもできる、文系出身でもできる仕事ですが、電気電子・物理が関わるようなソフトウェア開発は避けたほうが良いです。
6.人の話がわからない
コミュニケーション能力に問題があるパターンです。
SEはだいたいパソコンに向かって仕事をしていることが多いのですが、人と接する機会がゼロというわけではありません。
自分が作るプログラムとメンバーが作るプログラムを結合するために、インタフェースを決める必要があります。
インタフェースは間違えると設計段階まで手戻りすることがあり、慎重に間違いなく進めなければいけません。
そんなとき、人とのコミュニケーションに問題があると失敗することがあります。
『人の話がわからない』の正体には下記があります。
- むずかしい言葉がたくさん出てきてわからない。
- 『聞く』力がない。
- 相手に『伝える』力がない。
仕様の誤解釈は致命的な欠陥につながりますので妥協することなく、わからない時にはわからないと伝えましょう。
- 誰がやるのか?
- いつまでにやるのか?
- 何をやるのか?
上記3つを必ず明確にしましょう。つまり、自分の作業範囲を明確にするということです。

作業範囲を明確にすれば責任の範囲も明確になり、あとで問題が発生しても押し付けられる事が無くなります。うまくコミュニケーションが取れなくても、『誰がいつまでに何をやるのか』をはっきりさせておけば良いのです。

まとめ
- パソコンがわからない
- プログラミングがわからない
- コーディングがわからない
- 設計がわからない
- 規格・仕様がわからない
- 人の話がわからない
『わからない』の内容によって対処法が異なります。まずはしっかり問題を分析しましょう。問題分析ができたら適切な対処をする。
それでもどうにも改善できないようであれば転職を検討してみても良いと思います。
仕事がわからないと自分に自信を無くしてしまうし、自己嫌悪に陥ってうつ病といった精神疾患を患ってしまう可能性もあります。
SEの仕事は体力勝負みたいなところがありますが、健康第一で続けていきましょう。