Day 16

I completely missed my 6am wake up this morning. I realized I didn’t reset my alarm from Sunday night. Since I was up until 1am Sunday night I changed my alarm so I could get more sleep. However, thinking about it now having finished tonight at 11pm instead of 10pm I think I’ll keep it this way. No matter what I know after 8pm I can be productive. My wife is home and the kids are supposed to be in bed. Whereas in the morning if the baby isn’t happy or one of the toddlers decides that 7am is a good time to wake up I’m stuck and just lose that coding time. I also think this will be more effective as the labs and projects get more in-depth. A longer time will allow me to get in and tackle a problem that only an hour might not.

Not much to report today except I’m done with Object Relationship and will be starting Object Architecture tomorrow. I have noticed that things are getting repeated to let them sink in and produce some muscle memory. Even if that muscle is the brain. So there will be a video lecture that will be something being built and being explained as it’s built (or be a Q&A while it was happening), then a lesson showing step by step how the same thing is built, then a lab where you do what was just taught verbatim, and do it one more time non-verbatim but the exact same thing.

I’m 17 lessons/labs away from my first projects! That gets me so invigorated to just crush these next few labs and to start building. I can’t wait to have some stuff to show off and add to my portfolio.

Time spent today: 2:26
Time spent total: 73:26
Lessons completed today: 4
Lessons completed total: 264

Day 15

Day 15 and I’m still here. If you didn’t see it I wrote a rather long blog post today as one of my requirements for Flatiron. Since that took up over an hour and I had a 1:10.00+ video as a lesson I didn’t get much done. However, I DO have notes from the past couple of days that I never took the time to share.

So on Saturday morning I did a study group with some people and learned a lot. We went through one of the more challenging Procedural Ruby labs. One thing that I had never thought to do was put my pry in the rspec test file. So I could look at what was going on when everything had already been passed in. I had been putting the pry in my code and then needing to call the methods above it before I could work on the current problem. I’m still not 100% on utilizing pry but I’m getting there. It’s definitely easier and more useful than IRB.

Another nifty thing I learned from the study group, which I’m still not completely comfortable with but makes sense, is calling methods on end. For example, we did this:

def all_holidays_with_bbq(holiday_hash)
  holiday_hash.map do |season, holidays|
    holidays.map do |holiday_name, supplies
      supplies.include?("BBQ") ? holiday_name : nil
    end
  end.flatten.compact
end

The way this works is the .flatten.compact is being called on the return value of holiday_hash.map. It’s still settling in my mind and I haven’t used it since but I can see where this is useful.

Mike who I pair programmed with last night informed me to get a solid understanding of self so I’ve been taking details notes on things I think are of value. I have:

We can define methods in which we tell objects to operate on themselves. We do so using the self keyword, inside the body of an instance method, to refer to the very same object the method is being called on.

I like that definition and it’s not too abstract for me to understand what it’s saying.

Lastly, in one of the lectures, Avi stated to try not to use the return method. He said if you have to use return you’re probably doing something wrong and utilizing return can cause problems. This is because every method has a return. We should be able to get what we need utilizing higher level methods that will return to us what we’re looking for. This makes a lot of sense to me. If I have to use the return method then I’m probably missing something in the code I’m returning. While this isn’t a hard and fast rule it’s something I’m going to try and stick to.

If you’re keeping up, I didn’t look into ||= &. or .tap today.

I’m 55% through Object Oriented Ruby. I just realized this because I took a glance at my Dashboard which I haven’t really been doing lately. It’s moving along but I know it’ll take a while once I get to the end. I have some projects to look forward to!
Object Oriented Ruby Projects

Time spent today: 3:17
Time spent total: 71:00
Lessons completed today: 2
Lessons completed total: 260

Why Software Development?

So as part of my bootcamp experience Flatiron School requires me to write blog posts. This is a feature that I don’t think all bootcamps have but is smart. If I can write about coding then I show a deeper understanding about why I am a job ready developer. We all know that our online presence is part of our “resume” now as more and more hiring managers are looking at social profiles when making job decisions (even if it’s a legal slippery slope…).

So I have assigned topic of, “Why did you decide to learn software development?”

There are many reasons I decided to learn software development. Initially, it was because it is the “cool” thing to do these days. Demand is > Supply when it comes to people in the tech industry and overall everything we do now is being run by a computer. The Internet of Things (IoT) needs to be programmed. I truly believe that we are moving to a knowledge economy and very soon (on the grand timeline) most repetitive jobs will be replaced by robots, including driving. See a great post on automation here. However, people will need to program these things.

Things like bootcamps are popping up like crazy as people are making the jump to be developers. The potential pay and benefits are attractive too. We’ve all seen images of massive tech companies and their offices where you can take a break from your bean bag workstation and get a massage from the in-house masseuse while listening to a private live Billy Joel concert streamed to your company provided Bluetooth Beats headphones. Okay, maybe not that extravagant but you get the idea. Or the person who travels the world making 6 figures and all they need is a laptop and internet. Having that remote work freedom at some point is also attractive. Who wouldn’t want this life?

Another driving force is that I was in hospitality. An industry that is NOT family friendly. 55+ hour weeks are required for salary managers in most instances and nights, weekends, holidays are the busy time. I kept with it by saying I would eventually be in a high enough job title where I would be doing more strategic planning and thus work a more typical 9-5 schedule. I still believe that to be true. Once a person gets to District Manager or F&B Director you check in on early morning and closing operations occasionally but you could care less how the money is counted at close, just that it’s counted correctly. If it isn’t counted correctly there’s always a manager below you to push that to anyways. Something I rarely speak about but through my 10 years in the restaurant business I was laid off 4 times. I was paid severance a couple times and a couple times just collected unemployment but the lack of job stability paired with seeing people 2 years into a tech career making 2x what I was making cemented my interest.

So I dabbled while still working my restaurant job. I learned from freeCodeCamp the most among many other places. Knowing that I could work on a project for hours without taking a break, then stop for the day, then pick it up two days later, then stop, then get stuck the next day and make zero progress, then two days later finish it off, and LOVING that process cemented in me this is something I wanted to do.

I also realized that on the intellectual front I would always be challenged and have something to learn when it came to software development. I’ll never know it all and that is a bonus.

So how could I make this career transition with a mortgage and 3 kids? In person bootcamps were out of the question. There are two in Nashville (that I know of) and I know people who have graduated from each. First, Nashville Software School is an awesome program. However, it takes 6 months and we didn’t have 6 months of me not working to spare. The other is The Iron Yard and while they have a solid reputation the approximately $1000/week tuition was not going to work. In addition, I knew I couldn’t be out of pocket completely for 12 weeks, my family life would fall apart. So I came across the Flatiron School Online Web Developer Program. Work at your own pace when you have time, job guarantee, a solid curriculum, and high praise from people in the industry I spoke with. The work at your own pace is what sold me the most. I could code before the kids got up and after they went to bed and all weekend long when my wife was home. I could still take care of my kids all day M-F and we wouldn’t have to pay for a nanny. I could potentially finish in 12-15 weeks (they say the curriculum takes ~800 hours) just like a more traditional bootcamp but spend $6000 instead of $10k+. Boom, now to get in. I applied, did some coding, and got accepted (acceptance rate is ~8% so it’s competitive).

So ultimately I decided on software development for a few reasons:

  • It genuinely interests me outside of doing it as a career.
  • The pay ain’t bad.
  • More “normal” schedule so I’ll be home for dinner, off on weekends and holidays.
  • The possibility of working remotely.

Day 14

I promise a good blog post soon. It’s almost 1 am after a LONG pair programming session, thanks Mike! We did, however, figure out a hard lab. I would’ve been struggling with it for sure. It’s not as ambiguous as it could be and we didn’t break down our methods as much as we could. However, we got all 15 tests passing and learned some new methods along the way. Specifically, the Dir class methods. Mike also showed me that there’s a solution branch to all of the labs on GitHub which I never knew about. I guess it says something that I’ve made it so far so quickly and never looked at a solution. However, there can be knowledge gained from refactoring with new knowledge based on what the school thinks is the best code for the problem.

I do have “homework” from Mike too (some things he has learned recently that I’m not knowledgeable on). Specifically, ||= &. and .tap.

Time spent today: 11:09
Time spent total: 67:43
Lessons completed today: 11
Lessons completed total: 258

Day 13

I’m keeping the update short and sweet tonight. I got A LOT done today. However, my amazing wife has let me code all day and into the night on her birthday. Anything important I took notes on today I’ll throw in tomorrow’s post. It’s time to spend some time with her.

Time spent today: 9:15
Time spent total: 56:35
Lessons completed today: 13
Lessons completed total: 247

Day 12

Today didn’t see much coding. Mostly because the Intro to Object Oriented Ruby is a 1:10.00 video by of Avi teaching the basics of OO Ruby. Which was good. I found that him talking through concepts made them more clear as I worked on just a couple labs afterwards. It also meant that I took some notes on things that I thought were most important.

Notes which of course I’ll share:

self is the implicit receiver of all non-explicit method calls.

also

local variable is variable
instance variable is @variable
class variable is @@variable

and

attr_reader macro creates getter method
attr_writer macro creates setter method
attr_accessor macro creats both setter and getter method

Avi also talked about how he personally only used the attr_accessor macro when he’s building stuff. Then after everything is working he takes away abilities depending on what the methods actually are doing. The attr_accessor macro is the most flexible so it makes sense to use that by default.

Time spent today: 2:05
Time spent total: 47:20
Lessons completed today: 4
Lessons completed total: 234

Day 11

Today was strong work. I finished Procedural Ruby! Now I have Object Oriented Ruby which has final projects and I’m done with the Ruby section! I have to say it started to feel like I wasn’t making progress but the last two days have reinvigorated me. I know it gets more complex as I go and the projects get bigger and take longer but the groove is starting to fall in place.

I spend a good amount of time on the second to last lab of Procedural Ruby (there is a small RegEx section that is last). One specific part was hard but I was stoked with the elegant (so I think) answer I was able to come up with. My original plan was NOT this.

# given that holiday_hash looks like this:
# {
#   :winter => {
#     :christmas => ["Lights", "Wreath"],
#     :new_years => ["Party Hats"]
#   },
#   :summer => {
#     :fourth_of_july => ["Fireworks", "BBQ"]
#   },
#   :fall => {
#     :thanksgiving => ["Turkey"]
#   },
#   :spring => {
#     :memorial_day => ["BBQ"]
#   }
# }

def all_supplies_in_holidays(holiday_hash)
  # iterate through holiday_hash and print items such that your readout resembles:
  # Winter:
  #   Christmas: Lights, Wreath
  #   New Years: Party Hats
  # Summer:
  #   Fourth Of July: Fireworks, BBQ
  # etc.
  holiday_hash.each do |season, holiday|
    puts "#{season.to_s.capitalize}:"
    holiday.each do |holiday_name, supplies|
      puts "  #{holiday_name.to_s.split("_").collect {|split_holiday_name| split_holiday_name.capitalize}.join(" ")}: #{supplies.join(", ")}"
    end
  end
end

🙂

I wish I could have done a few more lessons tonight but my next lesson has me watching a 1:10:00 long video. It was still a good productive weekday.

Time spent today: 4:08
Time spent total: 45:15
Lessons completed today: 12
Lessons completed total: 230