oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

今さらのFizzBuzz問題をやっておく。

id:akuwanoさんが僕の愚痴に 真面目に付き合ってくれたので、ちゃんと自分もやっておきますw


インフラエンジニアとして必ずしも重要では無いかも知れないけど、そもそもインフラ構築する際にはid:akuwanoさんの指摘

  • そういうものを知っていると言う好奇心
  • プログラムの基礎を知っている
  • 論理思考して形にくみ上げられる

に加えて

  • どのようなシステムの為にインフラを構築するのか。その時に各サーバ上でどのようなアプリケーションが動作するのか理解出来ていないとインフラエンジニアとしてどうなのか?
  • トラブル時や運用時に効率良く対応出来るか
  • 大量ログの解析等の作業も。
  • 出来て損は一個も無い。むしろ出来ない事で損する事の方が多い。
  • どれか一つの言語でも基礎が分かっていれば、他の言語でも開発は出来なくてもソースを読んでなんとなく挙動を理解出来る。
  • Bug発生時に開発会社さんに「現象はこういう現象です。ここのこの処理がこうなのでは?」とスムーズに事が進むヽ(´ー`)ノ
  • 開発者の「それはこういう理由だからですよ。」と言われても嘘かどうか見抜けれるw 少なくとも「本当だな。」「今の理由はキナ臭いな・・・」ぐらいは分かります。マジで。
  • インフラ側の対応が必須なのか、アプリ側の挙動で対応出来るレベルなのかの切り分けにも?

などなどの理由が。
で、現在職場では同僚の募集をしていたのですが、条件にOSやネットワーク、DB等の知識、運用・構築経験の他に
シェルスクリプトで簡単なログ解析レベルのプログラム経験」というのを入れていました。

で面接の時にホワイトボードコーディングをお願いしてみているんですが、言語に関わらずsyntax error等を気にせずとお願いしても
今の所、FizzBuzz問題でこちらが想定しているレベル*1、及びそれ以上の回答者は「0」です・・・。(´Д⊂
みなさん経歴書では「Perl4年の経験あり」「bashでの運用バッチ作成経験あり」などが書かれている人たちでした。

あんまりレベル高い話じゃないですが、基本文法を抑えれば後はタスクや問題に適したサンプルソースを効率良く検索して、
逆引きリファレンスとかと必死ににらめっこすればとりあえず急場を凌げるんですよね。
ただ、スタートをそもそも切れないとちょっと厳しいかなと。
少なくとも「〜〜基本文法最速マスター」などを読んで基礎ぐらいは書いた事も無いとちょっと厳しいかなーと思っていました。

で、自分が普通に書いたらこんな感じ・・・。ヽ(;´Д`)ノ

#!/usr/bin/ruby

for i in 1..100
  if (i % 3 == 0) and ( i % 5 == 0)
    p "fizzbuzz"
  elsif (i % 3 == 0)
    p "fizz"
  elsif (i % 5 == 0)
    p "buzz"
  else
    p i
  end
end

「でかい口叩いてこれ・・・プークスクス」という声は華麗にスルーもインフラエンジニアとして必要だと思います。
文字数ではid:akuwanoに勝ったw Rubyさすが!
ちなみにさんざん「プログラミング重要!!」って言いましたが、自分はせいぜい簡単なTwitterBot作ったり、
ちょっとだけDBを絡めてWebアプリもどきを作るのがやっとってレベルっす。(・ε・)

*1:下に書いた僕のスクリプトレベルです。