The Firehose Project – WEEK 6 / Working with CoffeeScript

The Firehose Project offers several coding challenges that enable you to develop logical thinking. It also prepares you for interviews. They are pretty difficult and it takes a lot of drawing diagrams, testing, rethinking, and banging your head against the wall.

I was able to finish all over the coding challenges and it gave me confidence that I could start tackling interview questions.

I’ve heard that other bootcamps don’t offer these kinds of algorithm challenges, but I think they are crucial to include in one’s learning. They are really important in developing problem solving skills that can be applied in other ways. They also teach you how programs only act the way you tell them to act.

Alongside the coding challenges, I have been taking a look at CoffeeScript under recommendation from my mentor.

CoffeeScript is basically an easier version of JavaScript that omits a lot of “unnecessary” things such as semi-colons. The concept is said to be kind of derived from programming languages such as Ruby and Python.

I found CoffeeScript to be convenient, but at the same time I felt it would be pointless to try to use it before I fully understood Javascript to a certain level. My mentor agreed as well; learning these frameworks are important, but it’s obviously better to learn the original language first.

On one hand, CoffeeScript enables you to write simpler code. On the other hand, becoming a developer isn’t always about writing simpler and faster code, sometimes you have to step back and look at what the programming languages actually are, what their history is, etc.

Thus, I have started reading Douglas Crockford’s Javascript: The Good Parts. It’s a book worth reading and it also isn’t too long. I highly recommend it to anyone starting out, as it goes in depth into the features of Javascript in a very comprehensive way.

The more I learn about programming, the more I feel that there is to learn. It is honestly a very interesting field for me and I love the fact that you can never be done with learning programming. There is just so much to learn.

Progress this Week

  • Understand what CoffeeScript is and its implementations
  • Gained more knowledge about Javascript and its history
  • Feel more confident with algorithms and coding challenges

The Firehose Project – WEEK 5 / More Coding Challenges

This week was another week of banging my head against the wall. My mentor told me that I should be able to solve at least three coding challenges, so here I am trying to tackle as many of these as I can.

These coding challenges are great though, they really train your mind to think logically and to break the problem down into small little pieces.

The first coding challenge was tough, because I didn’t know how to think through the problem. But after solving a few, I was able to get the hang of how to handle problems, debug them, and eventually solve them.

Not to say that I solved everything on my own though, I got a lot of help from Ken, who is one of the mentors at the Firehose Project. He really has a way of explaining things in a very clear and understandable way.

So in two weeks, I finished most of my coding challenges! The toughest one was reversing a linked list. This took me about a week, but after solving this one, the others were very easy in comparison.

Strengths of The Firehose Project

I feel that these coding challenges are one of the merits of joining the Firehose Project. Without these challenges, there is no way that anyone could solve more difficult problems in the future. I really like how not only the mentors, but community members try to help each other out.

Progress this week

  • Improved on figuring out logic
  • Improved debugging skills
  • Improved problem solving skills

The Firehose Project – WEEK 4 / Coding Challenges

This was a rough week for me: solving coding challenges are HARD.

The coding challenge I was doing this week was called image blur 3. I basically had to write a code that would accept a multidimensional array with 0s and 1s and turn the 0s into 1s where the 0 had a  Manhattan Distance of x from the 1.

At first, I had no idea where to tackle the problem. I broke the problem step by step, trying out different methods of what I thought would work.

After a while, I figured out the logic of how to get the code to work. The next step was to write code that would make the logic work.

What I ended up doing was writing a bunch of bad code using while loops with 4 different conditions (long and difficult to read), instead of trying to implement much simpler code.

Solving the problem after about 12 hours was satisfying and lead to more confidence. The next coding challenge is more difficult, and again I find myself not knowing where to start.

Progress up until now

  • Improved on figuring out logic
  • Improved writing logical code

The Firehose Project – WEEK 3 / Overcoming the initial mountain

The first two weeks, I struggled with the language itself, the syntax, the structure, etc. It took me about three weeks until I became comfortable with the language. Coding challenges are now a problem of figuring out the logic, rather than figuring out the language.

What it took to reach this level

  • Reading documentation
  • Going through Ruby Monk
  • Writing code every day

After about on average 3 hours of coding on weekdays and 5 hours of coding on weekends, I was able to overcome what I feel is the first mountain.

Diving into Javascript

I started diving into Javascript with the suggestion of my mentor. I went through the Codecademy course, but since I had become comfortable with ruby, I was able to learn the language very quickly.

People always told me that once you learn one language, learning another is easy. I guess this is what they meant.

The Importance of Mentors

My mentor helps me figure out what the next steps for my coding career is. This is super helpful because without an experienced person telling me what to do next, how would you know what the right step would be?

Progress up until now

  • Became more comfortable with programming in general
  • Became more comfortable with backend side (rails)
  • Able to understand and explain what Models, Views, and Controllers do
  • More comfortable with using bootstrap
  • Able to solve a lot of problems on my own

I’m still not able to

  • Implement javascript or jQuery into my websites
  • Explain ActiveRecords
  • Use Sass
  • Solve complex programming problems

I am amazed at the progress I am making each week with this program. This blog helps me keep track of my progress. Looking back, it is cool to see that the stuff I didn’t understand last week, I understand now!