この記事は、Qiitaに投稿した内容をARISETechblog向けに修正加筆したものです。オリジナルを読んでみたい方は以下URLを参照ください。
https://qiita.com/moririnz/items/c1068ffdfb0666110a5a
はじめに
初めましてこんにちは!COBOLerだった者です。
3年前にARISE analyticsへ入社し、今はビジネスアナリストやモバイルエンジニアをやっております。
今回の記事では、「業務では汎用機やCOBOL、レガシーな技術をメインに使っているけど、モダンな開発を学習してデータサイエンス系やWeb系にキャリアチェンジしたい!」と思っている人に向けて環境の準備方法や、オススメの言語、学習方法、心構えについて紹介します。
データサイエンティストを目指す人が多く読みそうなこのサイトでこの記事を書く意味があるのかちょっと心配ですが、化石言語のCOBOLなどをメインに扱っていてナウでモダンな開発言語の学習に手を付けるのに不安を覚えている「レガシーエンジニア」のために書きます。
僕たちレガシーエンジニアはモダンな言語が怖い
多くのレガシーエンジニアはモダンな技術に興味があって、すでに何回か挑戦していると思う。けど、どこかで辛かったり、難しかったりといろんな理由があって挫折を経験している人も多いと思う。何回か挫折すると恐怖が勝って、もうモダンエンジニアにはなれないと感じてしまい、再度チャレンジできなくなっているのではないだろうか?
少し挫折を振り返って整理してみよう。
大きく挫折する理由は、環境の準備、学習言語の選定、学習方法、心構えじゃなかっただろうか?
- 環境の準備であれば、オープン系のコンソール操作だけでも大冒険だ。コマンドが多いし、ディレクトリとかいう概念でファイルが散らばっていて、汎用機より難しく感じる。
- 学習言語の選定であれば、何から学べばいいか分からないし、モダンな言語は変数が固定長じゃないし、いつでも宣言できる。代入もmove文なんて書かずに=で終わるから普段と違って難しく感じる。
- 学習方法であれば、僕たちCOBOLerの教材は90年代のものが多くてわかりにくいし、たまに間違っているものがあっても、何十年も修正されないままだ。そして、似たイメージをモダンな言語の教材にもってしまい、学習を始めようするとやる気が削がれる。
- 心構えに至っては最悪だ。何十年も前から滅びると言われているCOBOLを使っているからなのか、自分も一緒に滅びるんじゃ無いかと心配している人さえいる。
多くのレガシーエンジニアには上記の内容に共感して貰えると思う。ではもう僕たちレガシーエンジニアはモダンエンジニアに転身できないのだろうか?
大丈夫!そんなことはないから安心して欲しい。今から僕と一緒に挫折を回避して、楽しくモダンな言語を学ぶ方法を考えよう!
一旦環境構築は置いて、コーディングだけに集中しよう。
さっきも話したけど、僕たちレガシーエンジニアには環境の構築や、オープン系のコンソール操作だけでも大冒険だ。苦労して環境を構築できた時の喜びもあるけど、苦労で挫折したら元も子もない。そんなことならいっそ、環境構築もコンソール操作もやらなければいい。
じゃあ、環境構築もコンソール操作も行わないでコーディングするにはどうするか?
ブラウザを使ってワンクリックでコーディングができるサービスを利用すればいい!
オススメのサイトを2つ紹介しようと思う。
paiza.io : https://paiza.io/ja
Colaboratory : https://colab.research.google.com/?hl=ja
2つともブラウザがあれば開発環境が準備できて、日本語に対応していて本格的なコーディングにも十分耐えられる。
これで環境構築の大海原に出るなんて無謀なことをしないでも、ワンクリックで環境が手に入った!
次は、みんなが一番興味があるだろう学習言語の選定について話し合おう。
Pythonから始めよう
僕たちレガシーエンジニアは何故か最初にC言語に手を伸ばすことが多いけど、悪いことは言わない。やめておいた方がいい。C言語が悪いという話ではなく、C言語はほぼ何でもできる最上級難易度の最強開発言語だと認識してもらうといい。そんな言語をレガシーな僕たちが扱うとすぐに僕たちの心が折れてしまう。そうなると変わらない僕たちのままだ。
じゃあ、どの言語がいいのか?僕はPythonをオススメする。異論がある人は多いと思う。RubyだったりGo、JavaScript、Rust、Javaと色々ある。けど、こだわりがなければPythonから始めよう!Pythonにできないことはほとんどないし、最初のモダン言語としても間違いはないと思う。
もしまだ迷っているなら聞いて欲しい。僕たちはレガシーエンジニアだ。僕たちではモダンな言語の良し悪しを判断するのは難しい。きっとwebサイトで言語の将来性を調べたり、年収を調べたりして悩んでいるんだと思う。けど、考えてみて!将来性を調べても流行り廃りはどうなるかわからない。そこに囚われて学習に入れないのは本末転倒だと思う。それなら深く考えずにPythonから始めよう!
安心して欲しい。Pythonを自由に扱えるようになっているころには、自信がみなぎったモダンエンジニアになっているはず!
申し訳ないが、move文は=になるし、変数は固定長から可変長が主になる。
許してほしい。さすがにCOBOLの言語特性を引き継いだモダン言語はなかった。。。
Pythonを動画で学ぼう
開発言語を学ぶ時に何を参考に学習を始めているだろうか?
多くのレガシーエンジニアは本から入ると思うけど、これを辞めよう。僕も経験があるが、分厚いオライリー本を買って学習を始めたはいいものの、3日もたたずに飽きてしまい本棚に2年以上放置しちゃう(「ゼロから作るDeep Learnig」はもうすでに6年間は放置している。。)。
なので本で学習するのは余程の勉強好きか、忍耐がある人以外やめておいた方がいいと思う。僕たちはすでにレガシーな90年代、下手したら80年代の教材で勉強をしていて心に傷を負っている。その傷を思い出しながら本で勉強するのは辛いだけだ。
さて、僕的に一番いい学習方法は動画だと思う。通勤中やゲームをやっている合間に聞き流すこともできるし、分からなければコメントなどで質問もできる。僕たちのことだ、次は最適な動画選びで悩み始めると思う。これもお見通しだ!
悩みをスキップするために、オススメのコンテンツを有料、無料に分けて紹介しよう。できれば有料の方を学習してもらいたいが、無料のものでも十分Pythonを理解できるのでお財布事情にあわせて選んでほしい。
(僕は本は積んでしまったがDeep Learnigの技術は動画でちゃんと学んでいるので安心してほしい)
有料:現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
https://www.udemy.com/course/python-beginner/
無料:【完全版】この動画1本でPythonの基礎を習得!忙しい人のための速習コース(Python入門)
https://www.youtube.com/watch?v=yeZ3STy3k44
これで開発環境、開発言語、教材も揃った。いざモダンエンジニアへの道を駆け上りたくなるかもしれないが、少し待ってもらって、最後に心構えについて、認識合わせをしよう!
レガシーエンジニアがモダンエンジニアになるための大切な心構え
僕たちレガシーエンジニアはよくこう教わる。モダンな技術には流行り廃りがあってモダンエンジニアは常に学び続けなければいけない。学習の継続は否定できない。けど、毎回0から学ぶわけではないことは認識してほしい。一度、モダンな技術を学べば、次の技術が出てきてもベースが似ていることが多い。だから、過去学んだことと7、8割は似通っている部分があって、残りの2、3割を新しく学び続けることになる。
2、3割の繰り返し学習が苦しいと考える人もいるかもしれない。そんな人はまずこの記事で書いた方法でPythonの学習をしてみて欲しい。そこで少しでも楽しい、面白い、興味が湧くと感じたのならば心配いらない。その感覚は次の技術が出てきた時に、2、3割の繰り返し学習で何度も味わえるようになるものだからだ。
一度、この快感を知ってしまうと苦しいなんて考える暇はない。常に新しい技術を学びたい!と考えるようになる。いいサイクルが回り始めて、学び続けることが習慣になった時に、ふと実感すると思う。今までCOBOLが滅びると言われ続けて、一緒に自分も滅びるんじゃ無いかと悩む日々から開放されていると。
やったね!!
やっと僕たちレガシーエンジニアが、モダンエンジニアへ転身する際の挫折ポイントを全て回避できた。早速モダンエンジニアにチャレンジしてみよう!
+(プラス)な話
レガシーエンジニアからモダンエンジニアになってみて
僕はモダンエンジニアに挑戦してよかったと思っている。
この記事を読んだならわかると思うが、僕はARISEに入社する3年前まではレガシーエンジニアだった。
毎日、COBOLを書き、汎用機で運用管理をしていた。パソコンは10年以上前のスペックでwindows7だったし、資材はGit管理しておらず、紙に印刷して蛍光ペンで差分を塗ってファイリングして差分管理をしていた。
そんな環境から心機一転して、ARISEのモダンな環境に飛び込んだ。
正直に言うと最初は何もできなかった。Gitの使い方も知らなかったし、Node.jsやFlutter、AWSなどのクラウドサービスも入社してから本格的に触った。最初は、不安と焦りしかなかったけど、ARISEの手厚い成長支援のおかげで、今では一人でもモダンな技術を使って0からサービスを作れるようになった。
モダンエンジニアになって、一番実感していることは「クライアントへ価値ある機能をスピーディに提供できるようになった」ことだ。レガシーエンジニアのときは、レガシーであるがゆえに、価値を生み出すこと以外に時間が掛かったり、価値そのものを生み出すのに時間が掛かった。例えば、資材管理の手間とか、モダン技術なら1コードで終わるものもレガシーだと何百コードも必要だった。モダンエンジニアになってモダンな言語を学んだことで、価値を生み出すのに最適化された環境で、本来やりたかった価値ある機能の提供を実現できるようになったのだ。
もちろん、様々な言語やサービスを利用する機会にも恵まれた。言語だけでもこの3年間で JavaScript、Dart、Pythonなど、フレームワークならReact、Flutterなど、クラウドサービスであれば、AWS、Firebaseなど様々な技術に触れて成長することができた。
もしレガシーエンジニアのキャリアに悩んでいてこの記事を読んだならば、モダンエンジニアを目指す際にARISE analyticsも検討してくれるとありがたい。ARISEならモダンエンジニアになれる環境は整っている。
終わりに
レガシーエンジニア時代に同僚から相談された時によく話していた内容を記事にしました。+の部分は今回のテックブログ版で加筆しています。
レガシーな環境が配属先になった新卒エンジニアが、レガシーなコーディングしか体験できず、コーディングの楽しさや新しい技術を学ぶ興奮を知らないままでエンジニアを辞めていくのを何度も見て、悔しかった記憶があります。もしレガシーな環境からモダンな環境へ挑戦を躊躇っているならば、勇気を出してモダンエンジニアに挑戦してみてください!
宣伝で恐縮ですが、ARISE analyticsではポテンシャル層のエンジニアも募集中です!