38歳でトラック運転手からRuby on Rails開発者へ転職したPedroの物語
(writesoftwarewell.com)- Pedro David Garcia Lopezはスペイン出身で、2015年に英国へ移住してトラック運転手として働いた後、38歳でRuby on Rails開発者へキャリアを変えた
- 運転手時代は、1か月のうち自宅にいられる時間が通常4〜6日しかなく、家族の役割と長時間勤務の間で継続的な学習時間を作るのが難しかった
- 2019年9月から1年以内に開発者になるという目標を立て、PythonとUdemyの講座を経て、Flatiron SchoolのブートキャンプでRuby、Sinatra、Rails、Reactを学んだ
- 2020年のCOVID下で最初の開発者職を探す必要があり、数か月間面接の連絡がなかった後、Manchesterでの最初の機会を、低い給与と長い通勤条件にもかかわらず受け入れた
- 現在はRubyとRailsの生産性と楽しさを高く評価しており、新しいプログラマーには、すべてを追いかけるのではなく、学び方、質問すること、メンター探しに集中するよう助言している
トラック運転手から開発者へ変わった道のり
- Pedro David Garcia Lopezは42歳のスペイン人で、2015年に英国へ移住したが、家族の近くで暮らすためスペインへ戻る計画でいる
- 2015年にトラック運転手として英国に来たのは、娘にも新しい機会を与え、英語をきちんと学びたいという理由があった
- 運転手として働いていた頃は、英国と欧州各地を行き来しており、自宅には通常1か月に4〜6日ほどしか滞在しなかった
- プロの運転手として、道路上にあるほぼあらゆる種類の車両を運転したことがあり、EU大陸の国々を少なくとも一度は訪れ、トラックの走行距離だけで地球を何周もするほどの距離を走った
コンピューターへの関心と初期学習の失敗
- 初めてコンピューターに触れたのは約12歳の頃、夏のタイピング教室で、MS-DOSやWindows 3.1を扱いながらコンピューターに魅了された
- 14歳で父親が亡くなった後、勉強と家族を支えることを両立しなければならなかったため、自宅にコンピューターを置くことはほぼ不可能だった
- 18歳で正社員として働きながら3か月間お金を貯め、初めてのコンピューターであるPentium IIを購入し、その頃からプログラミングを学びたいと思うようになった
- C++の本から始めたが、技術的すぎて難しく、面白いものを作ることができず、その後は生活に追われてプログラミングを深く掘り下げられなかった
1年以内に開発者になるという決断
- 英語力が向上し、オンライン情報へのアクセスが容易になるにつれ、子どもの頃に抱いていた開発者になる夢を再び思い出した
- YouTubeでHTML、CSS、JavaScriptの講座を視聴し、「7日でプログラマーになる」といった類の講座も試した
- freeCodeCampはより構造的で本格的だったが、トラック運転の長時間勤務と、父親・夫としての役割のため、十分な学習ペースを作るのは難しかった
- 長年の運転生活と家族の世話を経て、安定した仕事を辞め、1年以内に開発者になるか、諦めるという計画を立てた
- 2019年9月に本格的に始め、PythonとUdemyの講座で基礎を学んだが、真似はできても自分で作れるという確信は得られなかった
Flatiron Schoolと最初の就職
- 複数の選択肢を検討した末、Flatiron Schoolに入学した
- コース修了後に仕事を得られなければ費用を払わなくてもよい条件だったため、リスクが小さいと感じた
- ブートキャンプでは、Rubyの基礎からSinatra、Ruby on Rails、Reactまでを体系的に学んだ
- 教師、仲間、課題、練習を通じて、単に真似する段階を超え、新しいものを作れるようになった
- 2020年5月末にコースを修了し、自分で問題を見つけて解決し、新しいことを学べるという感覚を得た
- 卒業時期はCOVIDの時期で、ロックダウンの影響により、面接や人々とつながる機会が少なかった
- 38歳で実務経験のないブートキャンプ卒業生という条件の中、数か月間面接の連絡を受けられず、履歴書が捨てられているのではないかと不安になった
- 最初の機会はManchesterで生まれ、自宅から電車で2時間の距離にあり、リモートワーク制度はなかった
- 給与はトラック運転手時代の3分の1程度で、そのかなりの部分が電車代に消えた
- 技術スタックはPHPとjQueryだったが、開発者として始める必要があるという理由でオファーを受け入れた
RubyとRailsへの評価
- RubyとRailsにはブートキャンプで初めて触れ、Superbyteで働きながらさらに多くの経験を積んだ
- SuperbyteではMongoidと一部Reactを含む非標準的なスタックを使っていたが、チームから多くのことを学んだ
- Ruby on Railsで専門的な経験を積んだ後、愛着はさらに深まり、Railsのコンベンションに慣れると多くのことが簡単になると考えている
- RubyとRailsの魅力として、コミュニティと進化し続けるエコシステムを挙げている
- Reactから離れてHotwireエコシステムを受け入れることに期待しており、Railsのやり方で多くの部分を扱える点を前向きに評価している
本、ロールモデル、学習方法
- 技術書はキャリア後半にさまざまな不足を感じるようになってから読み始め、まだ読むべき本が多いと考えている
- 印象に残った本は次のとおり
- Layered Design for Ruby on Rails Applications, Vladimir Dementyev
- Rebuilding Rails, Noah Gibbs
- Ruby Under a Microscope, Pat Shaughnessy
- Practical Object-Oriented Design in Ruby, Sandi Metz
- プログラミングが得意で情熱を持つ人々、そして知識を共有する人々を尊敬している
- Quincy Larson、freeCodeCamp、コンテンツ制作者たちを感謝の対象として挙げている
- Flatiron Schoolの教師だったAvi Flombaumも記憶に残る人物であり、一緒に働いた人々が開発者として、また人としての成長を助けてくれたと考えている
現在の働き方とツール
- 短いキャリアの中で、完全リモート、ハイブリッド、週5日のオフィス勤務をすべて経験した
- スペインへ戻る計画とともに、4月中旬からgocertifyの完全リモートの役割へ移る予定である
- SuperbyteではJunior Developerから、よりセミシニアに近い役割へ移り、コードの作成、概念設計、一部のR&Dに参加した
- ほとんどの時間はコードを書いているが、ペアプログラミングとPRレビューも楽しんでいる
- 教えることが概念を学ぶ最良の方法だと考えており、同僚にアプローチを提案したり、同僚から学んだりすることを好んでいる
- よく使うツールは次のとおり
- コードエディター: VS Code
- データベースGUI: MongoDB Compass
- ターミナル: iTerm with oh my zsh
- ブラウザー: Chrome
- メモとプロジェクト管理: Apple Notes、VS Code Markdown、GitHub projects/issues
- コミュニケーション: Microsoft Teams
新しいプログラマーへの助言
- 最も重要な助言は、学び方を学べということだ
- 人によって学び方や記憶の仕方は異なるため、自分に合った学習方法を見つける必要がある
- Pedroは、自分で作ったり、チュートリアルを見た後に再現したり、さらに関心のある領域へ拡張したりする方法で学ぶ
- 本は最初はコーディングせずに読み、読み返すときは真似するためではなくガイドのように使う
- すべてを学ばなければならないと感じる必要はなく、好きなことを1つに絞るほうが、あまりに多くのことを浅く学ぶより遠くまで進める
- 新しいプログラマーには、一生懸命働き、思い切って質問するよう助言している
- 最も愚かな質問は、しなかった質問だと考えている
- 自分が十分でない、あるいは知識が少なすぎると感じないようにと言っている
- RubyとRailsは、転換点を越えると簡単で楽しく感じられるようになる可能性があると勧めている
- メンターや成長を助けてくれる人を見つけるのもよく、Ruby学習者向けのリソースとしてFirst Ruby Friendを提案している
- 連絡チャネルとしてLinkedIn、Twitter/Xを持っており、既存のDjango製個人サイトが停止したことをきっかけに、Ruby on Railsでwww.lorrydriveloper.comを作り直す計画である
1件のコメント
Hacker Newsの意見
英国で、開発者(主にC#)から逆にトラック運転手へ転向した
今は12トンの固定式トラックから44トンの大型トレーラーまで運転していて、余暇にはRoRとGolangで開発するのが、報酬をもらって開発していたときより楽しい
週の労働時間は38〜40時間から平均50〜52時間に増えたが、HGVの運転は開発者だったころより報酬がはるかに良い。ただしこれは、開発者としての腕前やレベルをより反映しているだけかもしれない
例外はあるが、難しい面接を突破しなければならず、ここには総報酬20万ドルのインターンみたいなものはない
だから技能職を学ぶ、スクラムマスターになる、交通関連の仕事をする、といった選択肢も現実的な代替案になる。開発者はスタグフレーションに閉じ込められており、たとえばシドニー大都市圏で通勤90分圏内の家を買うのは、ほとんどの開発者にとっても難しい。15年で住宅価格は3倍になったが、開発者の給与や契約単価はそれほど上がっていない
慣れた場所にとどまり、大きな変化を恐れる人もいるが、一時的な不便が長期的にはより大きな満足につながることもある。トラック運転へ来るにせよ去るにせよ、あるいはどんな職種であれ、話し続けてくれれば、燃え尽きや幻滅を経験している誰かの励みになり得る
職業と趣味が同じとき、自分以外に上司がいないという違いは大きい
以前考えたことがあるが、小さな田舎町の中心部で操作しなければならない状況が心配だった。住んでいた町では、家に突っ込まれることがよくあった。そういうことが多いのか、かなり厳しい配送時間のプレッシャーを受けるのか、HGV免許を取るのにどれくらいかかったのかも気になる
年を取ってからキャリアを変えるのを見るのは良いことだが、「他の人たちと同じ土俵に立つために困難を乗り越えた人たち」という表現は、車椅子を買ってあげるためにクラスメートが募金したという類の記事に似た感じがする
世の中に善良な人たちがいるのは気分が良いが、私たちの暮らすシステムが特定の人たちを意図的に下に縛りつけている現実は完全に無視している
「クラスの子どもたちが力を合わせて、孤児を孤児粉砕機から救うために寄付しました!」みたいな話だ。だがそもそもなぜその機械が存在するのか、という疑問が残る
下にいるべきだと見なされる人が成功したり、ましてや神が禁じたかのように卓越したりすると、抵抗や極端な罰を受けることになる。時にはひそかに、しかし多くの場合は密室で少数の人々によって露骨に行われる
優先順位を正しく設定できず、税金が個々の市民の生活と結果を改善するために使われるようバランスを取れなかった失敗に近い
人々がこのように労働市場で横へ移るために大きな努力をしなくて済むよう、そもそもその価値に見合う報酬を払っていれば、もっと良かったはずだ
プログラミングを一度やってみたいとは思うが、金融方面から来るとトラック運転手ほど年収計算が簡単ではない
かなりシニアなポジションにいきなり入る必要があるだろうが、それは現実的ではない
ときどきFlatiron Schoolのようなところや各種ブートキャンプが、Rubyの代わりにElixirを教えていたらどんな世界になっていたのか気になる
それと「lorry」は本当に良い言葉なのに、米国では使う機会がなくて残念だ
そうした卒業生の技術スタックが新規プロジェクトの選択に影響を与えるほど十分に増えるまでは、市場で重みを持ちにくいし、おそらくそうはならなかっただろう。CS学位のない新人開発者にとって、Rubyしかできないというのも実際かなり厳しい選択肢だが、それでもRubyはブートキャンプ以前から人気があったから教えられたのだ。Elixirは好きだが、そうしていたらほとんどの学校は数か月で閉鎖し、卒業生もあまり得るものがなかった可能性が高い
以前はKDE開発者だった
コミュニティのメンバーがITに入ってきた興味深い例があって、ソプラノ歌手がコミュニティマネージャーになったり、孫たちのためにゲームを改善したくて祖母が開発者になったりした。良い時代だった
ほぼ38歳の立場からすると、それがそんなに年を取っているとは感じない
不思議なことに、20代で経験2年の人たちは、40歳に近い人が自分たちと同じ知識を2年以内に得られないと思っている。むしろ40代や50代は、人生経験のおかげでより実用的で規律があり、細部により注意を払い、忍耐力もある可能性が高い
認知機能の低下や衰弱が現れる可能性が高まる80代になるまでは、本当に年老いたとは見なしにくい。子どものころは40代を年寄りだと思っていたが、考えてみればその時点から本当に老いるまでまだ40年ほど残っている。それはほとんどの会社、結婚、キャリアが続く期間よりはるかに長い
Ruby on Rails の求人は今でもかなり人気があるのか?
優れた開発者なら、数週間で新しい言語に追いつける。私もそうしてきたし、チームがまったく初めてのスタックでプラットフォーム全体を作るのも見てきた。プログラミングとは主に、問題を分解し、解決策を作り、実装することだ。コードはその成果物にすぎない。
私の地域での感覚では、非伝統的なバックグラウンドの出身で CS の学位がないなら、Ruby や Python のような少し典型的でない言語を学ぶほうがよいかもしれない。より人気のある言語を使う会社に応募すると、その言語の学位と経験を持つ候補者の大群の中で競争しなければならない。
Ruby や Python の会社は、期待される学位を持たない人を採用することにもう少しオープンで、いろいろな面で少し緩い可能性もあると思う。私はほとんど Java の会社でしか働いてこなかったが、一度だけ Python の会社で働いたことがある。そのチームは Java/C++/C# をほとんど政治的に嫌っていて、Python は素晴らしいという点で好戦的だった。その感情を共有していれば、候補者に強い親近感を抱いただろう。
今働いているところには、昔から Ruby on Rails で作られた変わった製品が一つあり、そのチームも Ruby が何より優れていると強く信じる、同じように情熱的で妙に政治的なチームで、非伝統的なバックグラウンドの人をより多く採用していた。Python の職場を離れたあとも、何年もの間 Python をやる開発者だけを探すリクルーターから連絡が来たが、まるで製品やチーム構成、企業文化よりもそれが重要であるかのようだった。Java や C# チームの仕事を紹介するときは、普通は言語よりも会社、投資家、製品のようなものを強調する。
JS、Java、C# より求人数は少ないが、Ruby 開発者も少ない。昔からずっとそうだった。
実際には主張している経験がない人があまりにも多く、シニア開発者なら答えられるべき基本的なプログラミングの質問をすると、候補者の約 80% が ChatGPT に直行して、自分の答えであるかのようにする。LeetCode のようなものですらなく、「ポリモーフィズムとは何か」「リファクタリングとは何か」程度だ。
業界全体がこうなっているのかもしれないが、人材プールが小さいのでずっとはっきり見える。自分の思い通りにできるなら職場では別のものを使っていただろうし、人材プールが小さいことだけが理由でもない。Rails の「楽しく」時間を節約してくれる機能の多くは、複雑なアプリケーションでは影響があまり大きくないか、私たちを遅らせる鋭い角に変わる。
Node、dotnet、Go、Java はいずれももっと人気があるように見える。
「Flatiron School に入ることにした。課程を終えたあと仕事を得られなければ費用を払わなくてよかった」という部分が核心だ。
私もブートキャンプに通ったし、入学面接が必要なところの一つだったが、初心者にはかなり難しい本物の面接だった。ブートキャンプモデル は、うまく実装されていれば実際かなり良い。もちろん腐敗や詐欺もあり、残念ながら多くの罪のない人たちがお金を失った。
だからブートキャンプを検討するなら、入るのが難しく、所得分配契約 があるところを選ぶのがよい。ただし所得分配契約も怪しい場合がある。技術と無関係な仕事、たとえば小売業の仕事を得ても返済を求められることがある。
https://news.ycombinator.com/item?id=40067939
この種のものについての私の経験では、概して非常に搾取的で、弱い立場の人々を狙うことが多かった。最大の手がかりは、こうしたところの多くが契約条件を公開していないことだ。たいてい詳細を知るまでに何時間も手続きを経なければならないが、それは今述べた理由から情報が広まるのを望んでいないためだ。
逆に、簡単なフィルターとしても使える。「今すぐ詳細を送ってもらえますか?」と尋ねたときに「4時間の現地セミナーに来るまでは無理です」と言われたら、その時点で見送ればいい。
「40歳でトラック運転手に?」
私たちの業界の 年齢差別 が表れている。38歳でこの職業を始めることが古代人扱いされ、ほとんど奇人ショーの展示物のように扱われる雰囲気だ。