プログラミング 美徳の不幸

Ruby, Rails, JavaScriptなどのプログラミングまとめ、解説、備忘録。

いわゆるWebエンジニアの成長について


某R社を5日でクビになった話 - Code.io

この記事を見て感じたところがあるので書きます。
まず、感想としてはこのレベルでPHPができると言ってしまったら相手に誤解があるだろうし、インターンをクビになるのもしょうがないことだと思います。会社側に責任があるとすればこのレベルであることをあらかじめ見抜けなかったこと、つまり一度でもプログラミングの話をすればわかる話なので、それをやらずに勧誘していたということかと思います。

まぁ、いわゆるこういう半端なエンジニア、初心者とも一人前とも言えない人を採用してしまい、ミスマッチの事故が起きるのは今後増えてくると思います。初心者から半端なエンジニアを経て一人前になっていくので、それ自体は別に恥ずかしいことではなく、要するにこういうレベルだというのが正確に伝わればいいのかなと思います。


で、これは古くから言ってたり言われてなかったりなことですが、一応外でお仕事してエンジニア側に問題がないと言える(仮に作れなかったり作るのが遅くても先方の仕様や要求がキツくて、こちら側として最低限のスキルは持っているといえる)レベルはだいたいこんな感じかと思います。

1. エディアが使える(vimとかsublime textとか。メモ帳はダメ)
2. terminalやコマンドラインで「cd ls ssh rm mv」あたりを使ったことがあり、その他(chmod, scp, passwd)はマニュアルを探せば使える
3. mysqlpostgresqlといったRDBMSをインストール、設定して起動しプログラムからつなぐことができる
4. なんらかのWebアプリケーションフレームワークを使って小規模でいいのでサービスを作ったことがある
5. HTTPのGETとPOSTの違いがわかる
6. オブジェクト指向言語インスタンスインスタンスメソッドといった概念を理解している(難しく説明できなくてよい)
7. 掲示板を作れる
8. 作ったプログラムはapacheなり、なんらかのアプリケーションサーバに乗せて動かすことができる


まぁこう考えると意外といろいろ覚えてもらわないといけないことがありますが、実際はこれは序の口で現実的には

9. SQLを理解している
10. RESTfulといったリソース設計を知っている
11. MVCを理解している
12. javascriptを書ける
13. jQueryを使える
14. gitを使える
15. ウェブにおけるセキュリティをある程度理解している。具体的にはcsrf, xss, SQLインジェクションあたりを説明できるレベルで良い
16. きれいにコードを書ける。
17. 使用する言語でよく使われるライブラリについてある程度知っている
18. AWSやherokuを使える

で、さらにフリーランスとして安定的に食っていくには

19. ウェブ以外でアプリも作れる
20. メジャーなライブラリの作者だったりする
21. goとかscalaのような新興言語に詳しい
22. angularJSのようなjavascriptフレームワークを使える
23. データベース運用や高負荷サーバ運用の知識
24. AWSの本格的な運用やオートスケールの知識
25. エンジニアリーダーとしてかんばんツールスクラムマスターの経験
26. 自動テストをちゃんと書ける

とか、上げればキリがないほど求められるスキルはあります。


でまぁgithubを面接代わりに使いましょうとか、ブログを書きましょうとか、プログラマ向けのスキルチェックとか最近いろいろありますが最終的には入社や事前の試験で企業側が妥協せずにちゃんと確認することが重要かと思います。以前も似たような感じでスキルが足りない方が現場に入って混乱してしまうケースが(前職の現場で)ありましたが、それも採用を急いでいて妥協して採ってしまったという、採用側のミスがありました。

まぁ何にせよ入った後にやっぱりスキル足りませんねでさよならは関与する人全員辛いので、お互いにちゃんと分かり合った上で採用になることを祈ります。