paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

開発経験ゼロの営業がプログラミングを勉強してみたらメリットばかりだった話

f:id:paiza:20180327171807j:plain
Photo by Gerald Rich
有吉です。昨年入社したpaiza(ギノ) の営業です。

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

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

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

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


【目次】

■私の簡単な経歴

農学系の大学・大学院(中退) → 不動産関係の企業で営業(3年ぐらい) → paiza(ギノ)

仕事はずっと営業です。現在は主にpaiza転職の企業向け営業を担当しています。弊社に入社するまで、プログラミング経験はまったくありませんでした。

ちなみに最初は「エンジニアって怖い」と思ってました。「しょうもない質問されたら嫌だろうな」とか「あんまり話しかけられたくないんだろうな」とか思ってました、すみません。プログラミングに対しても、なんかあの黒い怖い画面に、よくわからないアルファベットとか数字とかを打ち込むと、何かができあがる…という、謎で怖いイメージしかなかったです。

■なぜ営業がプログラミングを学ぼうと思ったのか?

理由は2つありました。

◆技術的なことがわからないと、営業としてよい提案ができない

業務的にはこれが一番大きな目的です。

入社したてのころは、本当に「メソッドって何?APIって?LAMPって?GitHubって?」みたいな状態でした。

そんなレベルだと、お客様のところに行ってもその場で的確な提案ができないんですよね。「どんなエンジニアを採用したいか」の希望をとりあえず聞いて、聞いたままメモって、持って帰って先輩に相談するだけになってしまいます。

エンジニアの仕事をきちんと理解しない限り、このままでは営業としてよい提案ができないなと感じていました。

◆プログラミングができる営業になれたら付加価値がつく気がする

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

…まあ要約すると「営業なのにプログラミングできたら、かっこいいのでは…?」という不純な動機ですが…。

■最初の目標

  • まずはpaizaのスキルチェック問題でDランクをとる
  • エンジニアと同じ目線で話ができるようになる(お客様とも社内のエンジニアとも)

最初の目標はこんな感じで、それ以降はやっていてわかってきたら楽しくなってくるだろうから、これ以降の目標はそのときに考えようと思っていました。

■何をやったのか

paizaラーニングのRuby入門編

まずはこれをやりました。なんでRubyにしたかというと、paizaRubyで作られてるし、初心者でも割と学びやすいって聞いたので…。

自分の場合、「空き時間にやろっと」とか言ってるといつまでたってもやらないし、間があくと忘れたりして非効率になりそうな気がしたので、2月は平日週2×2時間と土曜日4時間ぐらいの学習時間を自分のスケジュールにがっつり組み込んでいました。

ちょうどそのときpaizaではpaizaラーニングを使ったプログラミングスクールを開催していて、その隅っこに置いてもらっていました。

paizaのスキルチェック問題

paizaのスキルチェック

paizaラーニングのRuby入門編だと「Ruby入門4: 配列の基礎」ぐらいやればスキルチェックでDランクがとれると聞いていましたが、実際Dランクは学習を始めて割とすぐに取得できました。

でも、調子に乗って「もしかしてこのままCランクもいけるのでは?」と思って挑戦したら玉砕しまして…その後はRuby入門を進めつつ、ひたすらDランク問題を解きまくりました。スクールでは練習問題が60問用意されていたので、それを2月中に全部解きました!

「もうDランクレベルの知識は完璧では?」となってから、再度Cランク問題に挑戦して……結果、Cランクを獲得できたときは本当にうれしかったです!

paizaのスキルチェック問題について、詳しくはこちら

■自分で書いたコードを晒してみる

paizaのスクールでやらせてもらった練習問題を解いたときのコードです。

【問題】
次のような占いプログラムを作成してください。

「ユーザー」と「ユーザーに対応する血液型」、「血液型」と「血液型に対応する占い結果」が与えられます。それぞれのユーザーに対応する占い結果を表示してください。

入力例の1つ目は、ユーザーの血液型についてのラッキーカラーの占いです。
入力例の2つ目は、ユーザーの星座についてのラッキーパーソンの占いになっています。
「血液型」として「星座」などのさまざまな文字列を利用できるようにすることで、他の占いにも対応する必要があることに注意してください。


f:id:paiza:20180327202722j:plain

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もマスターしたいし、シェルコマンドの勉強とかも始めているんですが、本気でエンジニアになろうと思ったらそれだけじゃ全然足りませんよね。

それこそ、新卒からエンジニアとして働いているすごい人たちって、学生のころから今まで何年もかけて情報系の知識と経験を蓄積されているわけですし…営業の経験しかない自分が今からエンジニアを目指しても、絶対にその人たちにはかなわないな…というのが、よくわかりました。

ただ、今後もプログラミングの勉強は続けます。技術的な知識をもっと増やしながら、エンジニアとちゃんと話せて、的確な提案ができる営業を目指したいと思います。

■プログラミングを勉強して、仕事に生きていること

一番大きいのは「エンジニアとプログラミングが怖くなくなった」ことだと思います。

勉強していてわからないところがあると社内のエンジニアに質問させてもらうんですが、私がしょうもないであろう質問を聞いても、普通にみんなやさしく教えてくれるし…。

営業先でも、CTOの方とかが相手でも、臆せず技術的な話をヒアリングできるようになりました。知識も増えたので(といってもまだまだですが…)、質問をするときも失礼じゃない聞き方ができるようになってきた気がします。

以前:Django?それ何ですか?フレームワーク??それ何ですか??」
今:DjangoってPythonのWebアプリケーションフレームワークですよね?RubyでいうとRailsみたいなものですか?」
「募集条件はDjangoの使用経験を必須にするよりも、Web開発経験があれば言語やフレームワークの種類は問わない、としたほうがより多くの方にリーチできるかと思います」

…みたいな感じです。

いま思うと、最初のころに訪問していた企業様には、うまく要件を聞き取ったり提案したりできていなかったと思います…本当に恥ずかしい&申し訳ない気持ちでいっぱいです…。(フォローさせてもらうと、いま改めて提案させていただいているところもあります…)

■まとめ

というわけで、営業の私がプログラミングを勉強してわかったこと・思ったことをいろいろ書いてみました。

とりあえず直近では、Railsの勉強をしてWeb上で動くものを作ってみたいなと思います!SQLももっと使えるようになりたい!あと、paizaのスキルチェックでBランクをとりたいです!

営業の私でもCランクをとれたんですから、エンジニアの皆さんならBランクも余裕だと思います!ぜひ解いてみてください。

paizaのスキルチェックでは、プログラミング問題を解くとS・A・B・C・D・Eの6段階のランクを取得できます。
paizaのスキルチェック





paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。