

Photo by Gerald Rich

有吉です。昨年入社したpaiza(ギノ) の営業です。

ぶっちゃけエンジニアって、営業が嫌いな人が多いですよね。

「無理な納期の仕事ばっかりとってくる」とか、「技術を知らないのに『すぐできるでしょ』とか言ってくる」とか、不満はいろいろあると思います。私も、以前はそっち側の営業だった…かもしれません。すみません。

「以前は」というのは、自分でプログラミングを勉強してみたら、技術やエンジニアに対する意識がすごく変わったからです。

というわけで、今回は営業の私がなぜプログラミングを学ぶことにしたのか、何を使ってどんな勉強をしたのか、そして勉強したことで何が変わったのかをお話しします。

【目次】

■私の簡単な経歴 農学系の大学・大学院（中退） → 不動産関係の企業で営業（3年ぐらい） → paiza(ギノ) 仕事はずっと営業です。現在は主にpaiza転職の企業向け営業を担当しています。弊社に入社するまで、プログラミング経験はまったくありませんでした。 ちなみに最初は「エンジニアって怖い」と思ってました。「しょうもない質問されたら嫌だろうな」とか「あんまり話しかけられたくないんだろうな」とか思ってました、すみません。プログラミングに対しても、なんかあの黒い怖い画面に、よくわからないアルファベットとか数字とかを打ち込むと、何かができあがる…という、謎で怖いイメージしかなかったです。





■なぜ営業がプログラミングを学ぼうと思ったのか？ 理由は2つありました。 ◆技術的なことがわからないと、営業としてよい提案ができない 業務的にはこれが一番大きな目的です。 入社したてのころは、本当に「メソッドって何？APIって？LAMPって？GitHubって？」みたいな状態でした。 そんなレベルだと、お客様のところに行ってもその場で的確な提案ができないんですよね。「どんなエンジニアを採用したいか」の希望をとりあえず聞いて、聞いたままメモって、持って帰って先輩に相談するだけになってしまいます。 エンジニアの仕事をきちんと理解しない限り、このままでは営業としてよい提案ができないなと感じていました。



◆プログラミングができる営業になれたら付加価値がつく気がする 今や義務教育でもプログラミングを教えるような時代ですから、「ITの知識が薄いままだと、将来的には淘汰されてしまうのでは？」「でも、逆にプログラミングができるようになれば自分に付加価値がつくのでは？」と思ったんですよね。 …まあ要約すると「営業なのにプログラミングできたら、かっこいいのでは…？」という不純な動機ですが…。





■最初の目標 まずはpaizaのスキルチェック問題でDランクをとる

エンジニアと同じ目線で話ができるようになる（お客様とも社内のエンジニアとも） 最初の目標はこんな感じで、それ以降はやっていてわかってきたら楽しくなってくるだろうから、これ以降の目標はそのときに考えようと思っていました。





■自分で書いたコードを晒してみる paizaのスクールでやらせてもらった練習問題を解いたときのコードです。 【問題】

次のような占いプログラムを作成してください。 「ユーザー」と「ユーザーに対応する血液型」、「血液型」と「血液型に対応する占い結果」が与えられます。それぞれのユーザーに対応する占い結果を表示してください。 入力例の1つ目は、ユーザーの血液型についてのラッキーカラーの占いです。

入力例の2つ目は、ユーザーの星座についてのラッキーパーソンの占いになっています。

「血液型」として「星座」などのさまざまな文字列を利用できるようにすることで、他の占いにも対応する必要があることに注意してください。

num1 = gets.to_i hash1 = {} ( 0 ...num1).each do | i | line_a = gets.split( " " ) line1 = line_a[ 0 ] line2 = line_a[ 1 ] hash1[line1] = line2 end num2 = gets.to_i hash2 = {} ( 0 ...num2).each do | i | line_b = gets.split( " " ) line3 = line_b[ 0 ] line4 = line_b[ 1 ] hash2[line3] = line4 end hash3 = {} hash1.each do | k , v | hash2.each do | l , m | if hash1[k] == l hash3[k] = hash2[l] end end end hash3.each do | k , v | puts "#{ k }" + " " + "#{ v }" end よい書き方ができているかはわかりませんが、とりあえずこれぐらいの問題は解けるようになりました、ということで…。





■勉強をしていて難しいと感じたこと 本当に最初のころは、まず「どこの何が間違っていて動かないのか」がわからなかったのが一番つらかったです。「思ったとおりにできないから誰かに聞きたい、でもわからなすぎて何をどう聞いたらいいのかわからない」状態ですね。 具体的なところだと、ループが必要な時に「forとwhileのどっちを使ったほうがいいんだ！？」というのはいつも迷っていましたし、Ruby特有？な部分では、Hashの扱い方を理解するのが難しくて、paizaラーニングをやりながら弊社のエンジニアに質問しまくっていました。 paizaラーニングだと、チャプターごとに内容がわかれていて、どこでつまずいているのかも明確なため、聞きやすい＆教えてもらいやすいのがよかったと思います。自分一人だったら、Hashで挫折していたかもしれません…。慣れるまでの繰り返しと、質問できる環境って大事だなと思いました。 ちなみに、paizaラーニングでは、わからないところは弊社の担当者に質問をしてアドバイスをもらうことができるので、独学で勉強したい人でも安心だと思います。（宣伝）





■プログラミングを学んでわかったこと ◆コードは「動けばOK」じゃなくて読みやすさも大事なんだ！ 最初は、お手本コードでメソッド名とカッコの間とかに入っている半角スペースの意味もわからなかったので、エンジニアに「このスペースって必要なんですか？何か意味があるんですか？」と聞いてみました。 すると、「このスペースはなくても動くけど、あったほうが他の人も読みやすいコードになります」と言うじゃないですか。私はそこで初めて「コードって、いま動くものが書けたらいいんじゃなくて、後から見返したり、他の人が読んだりするものなんだ、そのために改行とかインデントとかコメントとかが必要なんだ」ということがわかりました。 「可読性の高いコードが書けるエンジニアを採用したい」と言われることって結構あるんですが、それまでは「コードの可読性」って一体どういうことなのか、いまいちわかっていなかったんですよね…。自分でコードを書きつつこの質問をしたことで、初めてちゃんとコードの可読性とその必要性についてを理解できた気がします。



◆エンジニアも全てを覚えているわけじゃないんだ！（調べればいいんだ！） 最初は問題を解いていて、「これやったことある気がするけど忘れた…」という処理が必要になると、いちいちpaizaラーニングの動画に戻って最初から見直したりしていました。 でも、やったことない内容に当たるとすぐにつまずいてしまって…一人で延々と悩んでからエンジニアに質問したら、なんと「ググって調べればいいんだよ」「メソッドの使い方とかエンジニアも全部覚えてるわけじゃないんだから調べればいいんだよ」と言うじゃないですか。 これは衝撃でした。それまで私は、Rubyエンジニアたちは、Rubyのメソッドを全部暗記してコーディングしているんだと思っていたのです。そして自分も、Rubyに入門するならpaizaラーニングで出てくるメソッドぐらいは丸暗記しなければならないと思っていたのです。 いま冷静に考えればそんなわけないんですけど、最初は「調べる」という行為すら思いつきませんでした。だって、Web上にメソッドの使い方に関する情報がたくさん転がっているというのも、どう調べたらそういうページを見つけられるのかも知らないってレベルだったので…。



◆言語によってコードの量って全然違うんだ！ 開発経験のある社員と話していたら「Ruby書きやすいよねウンウン、自分は初めてがC言語だったから大変だったなぁ」と言われました。 私はまだRubyしか勉強していなくてほかの言語を知らないので、「えっ、そんなに違うんですか？」とC言語のコードを見せてもらったら、同じような処理をするにしてもC言語の方がコードがめっちゃ長くて驚きました。 それから、「C言語はRubyがいい感じにやってくれる処理も自分で記述してやらないといけない、でも軽い」みたいな話をちょっと聞いて、言語によっていろいろ特性があるんだなということを知りました。そして、これって絶対知っておかないといけないなと思いました。 それまで、いろいろな言語が存在している事実だけは知っていても、「言語によって特性があり、それぞれ向いている開発内容が異なる」ってのはちゃんと理解できていなかったので…。 今後はRuby入門だけでなく、ほかの言語の入門編もやってみて、言語ごとの違いを身をもって体験したいと思います。



◆ロジックは地道に考えないといけない 自分は物事を地道に一つずつ考えるのがあまり得意ではなく、隙あらば「細かいことはすっ飛ばしてラクしたいぜ」と思ってしまうのですが、プログラミングのロジックを考えるときもそんな考えだと、処理が漏れてるとか、コピペだとうまく動かないとかいうことが発生しちゃって、なかなか思った通りの挙動にたどり着けませんよね。 複雑なロジックは地道に考えないと、思った通りのものは作れないというのがわかりました。私は地道に一つずつ考えるみたいな作業がすごく苦手だったので…プログラミングを自分でするようになって、地道な作業に対するメンタルも鍛えられている気がします（？）。



◆プログラミングめっちゃ楽しい！ プログラミングってめっちゃ楽しいですね！（2回目） 自分で書いたものが思ったとおりに動いて結果が表示されると本当にうれしいです。もっと早く始めればよかったです。



◆エンジニアってすごい、自分はエンジニアにはなれない プログラミングの勉強をしていると、「エンジニアに向いてるんじゃない？」と言われることもあります。 ただ、私は学生時代に大学院へ進んだ結果「自分には、部屋にこもって地道に何かを極める…みたいな仕事は向いていないな」と気付いたので…。仕事としては、むしろがんがん外に出てお客様と話せる営業のほうがずっと向いていると実感しています。 あと、自分で勉強を始めたことで「エンジニアってずっと勉強をし続けないといけないんだな」と、本当に身をもってわかりました。 私はRubyは多少使えるようになりましたが、今度はRailsで動くものの作り方も覚えたいし、SQLもマスターしたいし、シェルコマンドの勉強とかも始めているんですが、本気でエンジニアになろうと思ったらそれだけじゃ全然足りませんよね。 それこそ、新卒からエンジニアとして働いているすごい人たちって、学生のころから今まで何年もかけて情報系の知識と経験を蓄積されているわけですし…営業の経験しかない自分が今からエンジニアを目指しても、絶対にその人たちにはかなわないな…というのが、よくわかりました。 ただ、今後もプログラミングの勉強は続けます。技術的な知識をもっと増やしながら、エンジニアとちゃんと話せて、的確な提案ができる営業を目指したいと思います。



