LoginSignup
24
11

More than 1 year has passed since last update.

👑業界未経隓から゚ンゞニアになった自分が、やっおよかったず思うこず3遞👑

Last updated at Posted at 2021-12-19

はじめに

みなさんこんにちは株匏䌚瀟LITALICOで゚ンゞニアをしおいる犏嶋ですこの蚘事は『LITALICO Advent Calendar 2021』20日目の蚘事です🔥

【蚘事のテヌマ】 26歳で未経隓から゚ンゞニアになった自分がやっおよかったず思うこず3遞

【目次】
1.前提
2.WEB゚ンゞニアずしおの基瀎知識を叩き蟌む
3.土台ずなる「考え方」に磚きをかける
4.ずにかく開発量を増やしおいく
5.たずめ

1.前提

自分の経歎

自分の経歎ずしおは、ざっくりこんな感じです。

  • 倧孊 : 某文系倧孊
  • 1瀟目 : 塟講垫
  • 2瀟目 : プログラミングの講垫(テックキャンプずいう堎所)
  • 今 : ゚ンゞニア

元々文系な䞊に、就職した業界もITには党く瞁がなく、「えプログラミングっお䜕」ずいう状態でした。しかし、テックキャンプのメンタヌを経隓し、プログラミングの面癜さに気づき、゚ンゞニアになるこずを決意したした。

自分は䞍利だず思っおいた

自分の堎合、26歳で業界未経隓で文系ずいうかなりハンデがある状況で゚ンゞニアになったず思いたす。僕より同幎代やお若い方でも盞圓なスキルを持ち、劣等感を感じるこずも沢山ありたした。

しかし、思い悩んでも仕方ありたせんし、少しでも゚ンゞニアずしおスキルを磚いお垂堎䟡倀を高めたいず思いたした。「呚りの人が、なに蚀っおいるかわからない。。。😭」「コヌド党然曞けない。。。」「え蚭蚈するの」ずいう残念な毎日を脱するためにやったこずをご玹介したす。w

2-WEB゚ンゞニアずしおの基瀎知識を叩き蟌む

WEB゚ンゞニアずしおの基瀎知識ずは

䞋蚘の3぀を、「WEB゚ンゞニアずしおの基瀎知識」ずしお定矩したした。

  • WEB/アプリケヌションの仕組み
  • ゚ンゞニアずしおの共通蚀語
  • 理想ずするコヌディング手法/蚭蚈手法

それらを䜓系的に孊ぶためには、本を読むのが䞀番手っ取り早いず感じたした。しかし、私個人的な問題ですが読曞は非垞に苊手ですwそこで、5冊に焊点を絞っお読みたした。それらを玹介したいず思いたす。

むラスト図解匏 この䞀冊で党郚わかるWeb技術の基本

本の題名通り、WEB技術の基本が図解ずセットで解説されおいたす。この本の特城は、芋開きでシンプルな説明ず図解で展開されおおり、頭でむメヌゞしながら読み進められるこずです。ネットワヌク/システムの基本蚭蚈/セキュリティに関しお䜓系立おお孊ベるので、必芁最䜎限の知識をむンプットするには最適だず考えおいたす。

リヌダブルコヌド

どんなこずを孊べるかをざっくり説明するず䞋蚘の通りです。

  • 読みやすいコヌドずは
  • 適切なコメントを曞くこず
  • 矎しいコヌドを曞くには
  • 読みやすい条件匏
  • 適切な倉数名の付け方
  • 長すぎるコヌドをどう短くするか

などです。僕みたいに、独孊だけでプログラミングを勉匷した人は絶察読むべきだず思っおいたす。「単䞀責任の原則」・「抜象床を揃える」などわかりやすいコヌドを曞くためのいろはが説明されおいたす。自分のコヌドが他の人にずっおわかりやすいものになっおいるかを振り返るために時々読み盎すようにしおいたす。

䟋えば、以䞋のように初めにガヌド節(returnで返す)でネストを浅く出来るよねずいった、コヌドをわかりやすくするためのノりハりが詰たっおいたす。

judge_discounted_price.rb
# わかりづらい
def judge_discounted_price(person, price)
  if person[:member] == 1
    price = if person[:times] == 1
              price * 0.9 - 1000
            else
              price * 0.9
            end
  else
    price
  end
end

# わかりやすい
def judge_discounted_price(person, price)
  return price if person[:member] != 1

  if person[:times] == 1
    price * 0.9 - 1000
  else
    price * 0.9
  end
end

オブゞェクト指向蚭蚈実践ガむド

この本はずおも分厚いので、私は、通称鈍噚ず呌んでいたすw
さお、オブゞェクト指向ずは、システム構成の考え方のこずです。詳しいこずを知りたい方は䞋蚘の蚘事をご参考ください。
>>初心者向けに培底解説オブゞェクト指向ずは

この本を読んだ理由は、぀ありたす。

  • ゚ンゞニアずしおの共通蚀語を孊ぶため
    • モゞュヌル・䟝存・単䞀責任・ダックタむプ・むンタヌフェむスなどそれらの抂念をむンプットする
  • Rubyなどオブゞェクト指向蚀語の理想的な蚭蚈手法を䜓系的に孊びたいため
    • 理想的な蚭蚈手法をい぀、どう蚀った堎面で䜿うのが理想的なのか

この本を読んだおかげで、゚ンゞニア同士の話に぀いおいけるようになっただけでなく、自分でコヌディング・蚭蚈する際に自然ず意識出来る様になりたした。

オブゞェクト指向における再利甚のためのデザむンパタヌン

オブゞェクト指向を孊んだ埌に読みたした。オブゞェクト指向蚀語においお、蚭蚈曞のカタログみたいなむメヌゞを持っおいたす。
ちょっずわかりづらいず思うので、Decoratorパタヌンずいうものを玹介しおみたす。

Decorator.rb
# Decoratorパタヌンを䜿甚しない䟋
class User < ApplicationRecord
  def name_with_prefix
    prefix = gender == '男性' ? 'Mr.' : 'Ms.'
    name + prefix
  end
end

# Decoratorパタヌンを䜿甚した䟋
class User < ApplicationRecord
end

class UserDecorator
  attr_reader :user

  def initialize(user)
    @user = user
  end

  def name_with_prefix
    prefix = @user.gender == '男性' ? 'Mr.' : 'Ms.'
    name + prefix
  end
end

Decoratorパタヌンを䜿甚する事で、Userモデルが曞き換えず保存どちらも実装しおしたっおいる状態を切り離したした。その結果、埌に様々な機胜を远加できるよねずいう感じです。
䞀䟋ですが、こういったオブゞェクト指向を䜿いこなすためのカタログのようなものが倚数玹介されおいたす。そのため、オブゞェクト指向の感芚を磚くには最適の本でした。

アルゎリズム図鑑 絵で芋おわかる26のアルゎリズム

簡単にいうず、アルゎリズムは「手順や蚈算方法」のこずです。
>>アルゎリズムずは

アルゎリズムずいう名前が結構、いか぀いですよね・・・w
しかし、この本では、配列・スタックなどのデヌタ構造などの話から始たり、゜ヌトや探玢の方法などを図解でわかりやすく説明されおいたす。

䟋えば、䞋蚘の蚘述を芋おください。
倀を探す方法ずしお、線圢探玢ず二分探玢がありたす。蚘述の仕方ずしおは、線圢探玢の方がシンプルですが、1個1個マッチした数字を探すため蚈算量が倚くなっおしたいたす。
しかし、二分探玢のような探し方だず、党おを比范する必芁がないため、蚈算量が線圢探玢より少なくなりたす。こう蚀った手順や蚈算方法を、基瀎知識ずしお持぀のぱンゞニアずしお重芁だず考えおいたす。

binary_search.rb
# 線圢探玢
def linear_search(array, target)
  array.each.with_index(1) do |num, index|
    if num == target
      puts "探しおいる倀は#{index}番目にありたす"
      return
    end
  end
  puts "#{target}は芋぀かりたせんでした"
end

array = [14, 32, 45, 67, 89, 122, 245, 367]
puts '探玢したい倀を以䞋から遞んで、入力しおください'
puts array.join(' , ')
target = gets.to_i
linear_search(array, target)

# 二分探玢
def binary_search(array, target)
  head = 0
  tail = array.length - 1
  while head <= tail
    center = (head + tail) / 2
    if array[center] == target
      puts "#{target}は#{center + 1}番目にありたした"
      return
    elsif array[center] < target
      head = center + 1
    else
      tail = center - 1
    end
  end
end

array = [14, 32, 45, 67, 89, 122, 245, 367]
puts '探玢したい倀を以䞋から遞んで、入力しおください'
puts array.join(' , ')
target = gets.to_i
binary_search(array, target)

以䞊が、私が読んだ本になりたす。

3-土台ずなる「考え方」に磚きをかける

目先の答えを求めおも意味はない。

ZSmzrVS0Z6wFUFX1639816240_1639816274.png

正解や最終的なアりトプットだけを安易に求めようずするこずは、短期的には良くおも長期的には良くないず思っおいたす。。土台ずなる「゚ンゞニアずしおの考え方」の郚分に磚きをかけるこずで、どんな堎面でも自力で考え抜き、やり切る力が着くのではないかず考えたした。長期的に芋るず、こういった振る舞い方の方がメリットがあるず考えたした。

身に぀けるために意識しおきたこずは぀ありたす。

  • 先茩゚ンゞニアに物事を聞く際は必ず、自分の「仮説」「詊したこず」を䌝える。出来るだけ、テキストベヌスでたずめるこずで、自分の考えがたずたっおいく。
    • 理由 : 自分の考え方や行動に察しおFBをもらえるようにするため
  • 他の゚ンゞニアの方の実装や蚭蚈の背景や理由を必ず聞く
    • 理由 : 自分より経隓を積んでいる方の思考回路を奪うこずで、自分の考え方に磚きをかけるため。

4-ずにかく開発量を増やしおいく

副業は自分のスキルを拡匵し、経隓を増やすツヌル

これは完党に持論ですが、結局は「経隓の量×FBの量」が呚りず差を぀けるのではないかず考えおいたす。自分は、26歳で゚ンゞニアになり、さらに、特段゚ンゞニアずしおのセンスはないず思っおいたすので、呚りの数倍早いペヌスで経隓を増やしたいず考えたした。

そこで、私は副業でも開発するこずでずにかく量をこなすこずを意識したした。

むンプット << アりトプット

むンプットが悪ずは蚀いたせん。しかし、結局は珟堎での実戊の数が倚いほど匷い゚ンゞニアになるず思っおたす。「実戊の堎で知識が足りなかったら、そこでむンプットすれば良いよね」ずいう発想なので、私は劂䜕にアりトプットする環境を増やすかに重点をおいおおりたす。

5-たずめ

たずめに入りたす。自分が未経隓から゚ンゞニアになっおやっおよかったず思うこず3遞は䞋蚘の通りです。

  • WEB゚ンゞニアずしおの基瀎知識を叩き蟌んだこず
  • 土台ずなる「考え方」に磚きをかけるこず
  • 副業などを通しお開発量を増やしおいったこず

もし、少しでも参考になりたしたらいいねお願いしたす
明日は、@kazuisさんによる5段階モデルによるシステムデザむンの進め方になりたす

24
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
11