他業種からエンジニアを目指す
他業種からエンジニアを目指すには
- 目的を持ってコードを書く
- バグを生む・解決する
- 相談できる師匠に出会う
自身のエンジニア人生を振り返って
今となってはは当たり前のように扱っている下記のようまものからスタートしたわけではなかった
- Git(hub)
- Editor
- 特定のプログラミング言語
- Agile開発
- Terminal
- docker / VM開発
- middleware
転職活動をする際に伝えたり、また面接官として技術能力を確かめるためのヒアリングなども専門領域のものが多い。 ではプログラムを習ったことがない初心者はソフトウェアエンジニアを目指す場合何を話せば良いのか
自分が師匠の立場になった場合
直近1年少し、プログラミング経験はゼロではないが業務経験はほぼゼロの学生出身と仕事を行った際のメモ。
- チーム開発業務をこなしたければまずGitを使った開発フローを習得する
- テストを書く
- 境界線を作らないソフトウェア開発(※ ex. frontendとbackend)
- OUTPUTを出すサイクルを小さく
- 完成を定義できる・完成させる
自分が師匠と出会い、大事だなと思った教わったこと
- プロダクトにこだわる(品質でもプロダクトとしても良いものを作る)
- 感覚だけでなく計測する
- テストを書く
- 境界線を作らないソフトウェア開発
組織やチームなどにも依存する話ですが、自分はプロダクトに関わりたいことや、またそのoutputにこだわる姿勢によく共感していた。 それに必要な過程や手段としてソフトウェアを捉えていて、共通知識で使える資産としてテストとKPI/パフォーマンス等、根拠を計測することを得意ですと表現することが多い。
小さいチームでは境界線を作ってこだわっているだけでは仕事が進まないことが多く、そのために職種の殻を破ってデザイナーやプロダクトオーナー、経営者にも意見を言えるような姿勢を取ることが大事であるとも思う。 ただ上記のことは座学では学べない、肩書ソフトウェアエンジニアとしてご飯を食べるようになってから学んだことである。
ソフトウェア開発を体験できるアカデミー・ハンズオン
何かの方法でチームソフトウェア開発を実行することは非常に学びがあるとは思う。 自身は情報学の大学を専攻しており、その単位や研究の中でソフトウェア開発(らしきもの)を無知として体験した。
就職して以降そのやり方を使うことはなく、反面教師としてなぜ今のやり方を行っているのかと説明するための根拠としてその経験は役に立っている。 大学等以外でソフトウェアを勉強するカリキュラムやアカデミーを学外で受講している方の話を聞ける機会があったが 自身が行っているソフトウェア開発に近い体験で行われているようには感じた。
結果としてそのアカデミーを卒業した方は別の業種についていたが、 ソフトウェア開発社としての肩書を得てそれでメシを食う、今の専門分野を離れソフトウェア開発の世界に飛び込むのは勇気のいる取り組みであると思う。 自分は学業の延長線上でソフトウェア開発エンジニアを選んだが、それでも業務のことを大学でなったわけでもなく、 業務に必要なことは業務を初めてから世界が広がったように思う。
勉強することは無限に存在しているので、自分が何を優先して勉強するのかは選ばなければならない。 現在は長期インターンだったり専門職バイトだったりが良いのだろうか。
まず何を学べばいいですかと言われると、とりあえず「githubを用いたpull-request開発」とCIを用いたテストの実行をせよ、言語は問わないという課題を出す。