This page is intended for users in Hong Kong. Go to the page for users in United States.

【経験談】文系・未経験からエンジニアになって分かった3つのこと

マインドアイル の清水です。今回は、私の経験について少しお話ししたいと思います。

先日のインタビューでも少し書いていますが、私は一社目の会社に文系・未経験から開発職として入社し、3ヶ月の研修と9ヶ月の実務の後、1年目の最後に新人賞をいただきました。今年の2月に転職し、現在はマインドアイル株式会社で働いています。

現在、弊社ではエンジニアを募集しているのですが、ご応募いただく方の中には、私と同じように文系出身やプログラミング未経験から、プログラマやエンジニアとして働きたいという方が少なからずいらっしゃいます。

この記事では、私が2年間の経験から分かってきた、プログラミングに関する3つのことを共有したいと思います。私もまだ社会人2年目の若手ですが、これまでの経験は話すことができ、それらが何かしらの価値になることもあると思っています。少しでも、これからプログラマやエンジニアを目指す方の参考になれば幸いです。

(これから先書いてあることは、技術的な観点より、考え方やマインドセット的な観点で書かれています。予めご了承ください。)

文系・未経験からエンジニアになって分かった3つのこと

①エンジニアには向き不向きがある

いきなり身も蓋も無いようなことを書いてしまいましたが、あくまで「向き」「不向き」があるということであって、「できる」「できない」ということではありません。その観点でいけば、誰でもできると思っています。

私は早稲田大学出身なのですが、在学中は専攻の心理学以外にも、教育学や環境学や生物学など様々な講義を受けたり、1年間留学中にハイチやマダガスカル出身の人達と一緒に学んだり、ミクロネシアの島で伝統的なサバイバル生活を2週間送ったりと、多様な人たちと出会い多様な価値観に触れてきた大学生活だった、と思っていたんですが(←ここツッコみたい人は是非弊社のミートアップなどにいらしてください)

新卒で出会った35人の同期の方がもっと多様だった。

あれだけ濃い大学生活で全く触れ合わなかったような価値観を持った人たちが多くて、大きなカルチャーショックを受けました。

その経験から分かったのは、自分の好きな気持ちや興味から出向いた場所で出会う人達は自分と似ていたり共感しやすい人達なんだということです。

開発職で入社したのは、興味というより将来の可能性を考慮した選択だったので、自分とあまり似てない人に出会うことになったのかなと思います(仲は良いです!笑)

そして研修や業務での実際の様子を見ると、私はプログラミングに向いてないのかなあ、とすぐ思うようになってしまいました。

例えば、私はずっと同じ姿勢でいるのが苦手で長くても2時間に1回くらいは席を立ちたいんですが、

情報系出身でプログラミング経験者の同期の女の子は6時間くらい座りっぱなしでも平気だったり、

私はバグが出ると「あー、いやだー」という気持ちになるんですが、

情報系出身の同期の女の子は「嬉しい」と言ってたり、

そういう違いをたくさん見つけたのです。

この経験から私は、プログラミングには「向き」「不向き」があるんだと確信しました。

ただ、ここで伝えたいことはそういうことではなくて。もしかしたら、これからプログラマを目指す方の中にも、私と同じように、「自分はプログラマには不向きなんじゃないか」と考えることがあるかもしれません。

けれど、それは全然悲観することではないです!これは仕方ないことです。これらの違いの8割くらいは生物学的なもので、どうしようもないことだと私は思っています。natureで変えられないなら、nurtureで変えれば良いと思うんです。

次項から、プログラミング入門時のコツみたいなものを書いていきます。

② 目的 を明確にすることの大切さ

入社してすぐに「エンジニアには不向きかも」と思ってしまった私ですが、曲がりなりにもエンジニアとして業務に向き合ってきて見つけた、「あ、これができてるとプログラミングしやすいな」という条件が2つあります。

その1つが「そのプログラムを書く目的を明確にできていること」です。

「そのプログラムを書いて何をしたいの?」に答えられる時と、答えられない時って、プログラミングの出来に大きな差がある気がします。

開発研修の時によく陥りがちだったのですが、新たに覚えた構文とかを書くときに、ただ再現することが優先になってしまい、その構文ってそもそも何を実現するために使う構文なんだっけ?というところを意識できていない時期がありました。

本当に学び始めであれば、深い意味を考えずただプログラミングすることは有用だと思うのですが、ある程度分かってくるとつまづきます。応用が効かなくなります。

書き始める前に、「これって何を実現したいんだっけ?」と目的を明確に意識するようにすると、プログラミングしやすいなっていうのが、コツの1つ 目です。

目的達成のために必要なものの用意とそのつなぎ合わせ

「これができてるとプログラミングしやすいな」というコツの2つ目は、目的達成のために必要なものの用意とそのつなぎ合わせをすることです。

これは、②の目的の明確化の後にあるステップなのですが、流れでいうと

  1. 目的を明確にする
  2. 目的達成に必要なものを用意する
  3. 用意した部品をつなぎ合わせる

という3ステップがプログラミングの一連の流れだと私は考えています。

分かりやすくするために料理で例えます。

「サバの味噌煮を作ること」が目的だとします。

ここで、調理中は「この調理をして何になるの?」という問いに、常に明確に「サバの味噌煮ができる」と答えられることを意識します。「なに作るんだっけ?」とか「実は鮭のムニエル作ってた」とかいうことにならないようにする、ということです。これが 1.目的を明確にすることです。

2.目的達成に必要なものを用意することは、準備段階です。サバの味噌煮を作るためには何が必要か考えるのです。例えば、材料だったら、サバ・味噌・生姜・その他調味料が必要だな、とか。調理道具は包丁・雪平鍋を用意しよう、とか。

それから、調理の順番もシミュレーションします。

まず生姜をスライスして→サバの下準備をして→サバをお鍋で煮て→サバを先に取り出して残り汁はとろみが出るまで煮詰めて→お皿に盛る、とかです。

必要なものの用意と調理の順番が確認できたら、後はそれに従って実際に調理するだけです。調理が3.用意した部品をつなぎ合わせていくことに当たります。


私がプログラマとして働き出して一番苦労していたのはこの③必要なものの用意とそのつなぎ合わせで、実現したい機能のイメージが明確でも、そのために必要なものを知らなかったり、どのように組み合わせたらいいのか分からないからできない、みたいなことがよくありました。むしろそんなことしかなかったんじゃないかというくらいです。

じゃあこれをどう克服できるかというと、経験しかないのかなと思っています。できるだけ幅広く、奥深くいろんなコードに触れて、経験則を増やしていくしかないのかなと。

逆に言えば、1つ1つのことを積み重ねていけばできるのがプログラミングかなと私は思っています。

必要な材料や調理方法を知らないときは、サバの味噌煮を作るのは魔法のように思えるけど、それらを知れば、誰でもサバの味噌煮は作れます。だから、誰でもプログラマやエンジニアになれると思います。

目標 × 経験 = 自信

以上が、私がエンジニアになってからの2年間で分かってきた3つのことです。

はじめの頃は文系・未経験というバックグラウンドもあって、エンジニアとしての自分に常に自信がありませんでした。原因を分解すると、

  1. 目標のエンジニア像がなかった
  2. 経験が少なかった

の2つだと考えています。

2.経験が少なかった は先述したように分かりやすいかもしれませんが、個人的には1.の目標のエンジニア像を持つことも重要だと感じ始めています。

「目標」って「大切にしたい価値観」と言い換えられるのかなと思います。「大切にしたい価値観」があって、その価値観が肯定されるからこそ自信がついていくのであって、そもそも「大切にしたい価値観」がない場合、いくら経験が増えても自信はついていかないのかな、と。

自分なりの目標に基づいて、たくさん書いて、たくさんバグ出して、また書いて、少しずつ成功していくと、エンジニアとしての自信も形成されていく。

表すならば、

目標 × 経験 = 自信

の方程式が成り立つんじゃないかなあと思っています。

プログラミングを始めても、つまづきが多くて「向いてないのかなあ」と思ったり、「自信がないなあ」と思ってる方に、何か響くものがあったなら、幸いです。

また、弊社では絶賛エンジニアを募集中です。私と一緒に頑張ってくれる方、ぜひお待ちしております!

マインドアイル株式会社's job postings
7 Likes
7 Likes

Weekly ranking

Show other rankings