Wednesday, March 25, 2015

Free Code Camp - The 5 Most Common Pitfalls

What up peeps!  I feel like every day gets better and better, I just gotta' say life is good, No brag, just fact :-)

I thought I would give some insight/feedback to those of you who are following along as I go through Free Code Camp. If you are currently going through the course, or thinking about starting Free Code Camp hopefully this will help.

There are 54 challenges that you must complete in the course prep work.  The challenges are supposed to take 100 hours to finish.  After completing the prep work, you will then spend another 900 hours coding for non profits.  Finally you will be turned loose into the coding world, where you will secure an awesome dev job and change the world :-)

It's amazing how many people have started Free Code Camp:  13,796 at the time of this writing.  Only 140 students have made it out to the other side and are currently working for non profits.

Before you get the cool coding dream job, where everything is rainbows and unicorns, you must first pass the challenges!  Think of it like Navy Seal training bootcamp where only the most determined people that never give up will ever make it out.  You can quit whenever you want for any reason, no one will think less of you, but I hope you don't!

I haven't completed all of the 54 challenges yet, I've done 34 of the 54 challenges, I have conquered the beast challenge.  Challenge 34 is by far the toughest and longest challenge of Free Code Camp.  My plan is to go through the course and learn enough Javascript, Node, and Angular to be able to write an app, that I've been wanting to make for a long time.

I write code that works, but probably isn't pretty.  I have a very long way to go till I can call myself a full blown developer.  This post and the following posts are meant to help make learning to code easier for you.

"I'm basically stumbling around in the dark looking for a light switch and writing about my struggles here so you can hopefully find the light switch easier :-)"

Enough said, here's what I've found out about Free Code Camp so far:

NOTE:  I love Free Code Camp, this is in no way meant to be a knock to them or their mission.  Also Free Code Camp is always updating and improving, the things I say below apply to when this post was originally written.

Common Pitfalls

#1  Students are more focused on socializing than in actually learning how to code.

I love the chat room on Free Code Camp and think it's awesome. However I see students staying on the chat room for hours just talking about stuff that has nothing to do with learning to code.  I'm all for socializing, but if your goal is to learn how to code, don't waste too much time in the chat room.

#2  Students don't take learning as seriously because the course is free.

Again it's awesome what Free Code Camp is doing!  One of the downsides I find is that students who are taking the course are not very driven.  I understand students have other things to do, and may be just doing this on the side, but don't let that make you complacent.  I can see why paid bootcamps students tend to work harder because they have so much invested, they really must succeed.

#3 The prep work takes much longer then you think it will, so students get discouraged.

The 54 prep work challenges take far more than 100 hours to complete.  I would say 200 hours is more accurate.  Students start learning to code and then feel like they are slow, because they aren't completing the challenges anywhere close to the  suggested 100 hour guideline.  I can't complete the course in 100 hours, unless I cheat and try to zip through the material without actually learning.

#4 Challenge #34 is a BEAST!

This goes hand in hand with the previous point.  Students are making momentum and then hit challenge 34 and sit there for a month or more.  The other issue with #34 is that they are constantly making more challenges to complete.  When I started #34 there was a total of 30 coding challenges.  By the time I completed 33 coding challenges there were now 43 coding challenges.  At what point can you move on?  I hear they are going to make 100 coding challenges total for #34.  #34 already takes half of the the entire course time.  As more and more coding challenges are made for #34, are students going to have to spend 350 - 500 hours to complete the prep work?

#5  The new free version of learning Node.js is terrible

 The free version of learning node is so “buggy” that it is simply unusable in my opinion.  You will waste far too much time trying to use the tools, than time spent actually learning Node.js.  I appreciate what is trying to do, but it's just not there yet.  I know students need to complete the course work in order to move on to the next challenge.  I personally am using Tree House to learn Node.js.  I would suggest doing the Tree House Node.js course and then clicking on "Challenge Completed" on the Free Code Camp Node.js Challenge.  I'm not saying to be dishonest, I'm saying learn Node.js however works for you and then move on.

Free Code Camp is pretty sweet, they are kicking butt over there blazing a path through an unknown new territory. We should all be grateful and thankful for what they are doing.  I plan on making several more posts like this to show you how I navigated the course, how to get unstuck on challenges you are facing, and especially on how to conquer the beast challenge :-)

Keep coding peeps!

Sunday, March 22, 2015

We need dreams to keep us alive, never lose yours!

I'm at the end of what was a great weekend, life is so good :-)  I'm a pretty stocky guy, I'm 5' 11" and weigh 230 pounds, no one believes I weigh that much, but I do.  When I was 16 I ran a lot and weighed 146 pounds.  I was embarrassed about how skinny I was, so I started going to the gym and working out like mad.  Over the next 16 months I gained a lot of muscle and weighed 175 pounds, I felt more confident around people.

When I was a farrier, I would shoe horses for plastic surgeons, attorneys, people who worked in underground buildings in Washington D.C.  Although it was never directly said, I got the impression that my powerful clients thought I wasn't very smart to be shoeing horses in the 21st century.  I learned to code, I learned some fancy computer science terms that I could use in conversations to make myself seem smarter.  My confidence grew, I felt more confident around powerful people.

The sad truth is I'm still the same person I was then and am today.  I have a huge dream that I've only dared whisper to my wife.  I made the mistake of telling a good family friend about my dream.  She laughed so hard tears came out of her eyes.  I became a little tight lipped about sharing my dream after that incident.  It's such a big dream that less then 1% of people ever accomplish it.  I believe in living your passions and going for big goals.  Everyday making small deposits toward your dream until one day you are living the dream.

I've had this "laughable" dream since I was 24.  I had a light bulb moment and thought: "If I could do anything with my life...I would do that!"  This dream has nothing to do with coding, although, everyday I work towards becoming better at development.  Everyday I take another small step to my "laughable" dream.  That's the thing about passions, if they don't motivate you to work on them at midnight, then is it really a passion?

I am running again, 4 - 5 days a week,  I missed running and am glad to be doing it again.  This post isn't really about coding, but I just wanted to be honest with you and share that I struggle too.  I don't have all the answers, but I don't let that stop me.  I follow my passions and always try to take the next step in the journey towards achieving them.

Whether you are learning to code or becoming a chef, I hope you find the courage and perseverance to accomplish your dreams.  Don't listen to the "dream snatchers" out there, you can accomplish your goals, never give up!

Keep coding peeps :-)

Tuesday, March 10, 2015

2 tools to help you learn how to code.

I thought I would share with you the hardest challenge for me personally, about learning how to code and how I overcame it.  I want to encourage beginners who are about to give up coding, because they feel like they just don't "get it".  The truth is, I couldn't either, I felt extremely non gifted when it came to coding.

The hardest part about learning how to code is not learning the syntax, Html or Css.  The hardest part about learning to code is the actual "coding logic".  Growing up I struggled with Algebra and abstraction like you wouldn't believe, I thought I was dumb.  A lot of math wizards get abstraction much quicker than I do.  For me I have to keep struggling and struggling until I finally get the concept to "click" in my brain.  The thing is not to give up, don't make yourself feel bad that you aren't naturally "gifted" as a coder.

3 months after I started learning to code, I couldn't solve a single problem on the easy coderbyte challenges.  Hours of trying, didn't help, I didn't understand the concept of a method.  I didn't understand how different data structures got to use different methods.  Thankfully I am more stubborn than dumb and didn't quit.  Days went by, still I didn't understand.  What helped me to break out of the rut, was realizing that I only really needed 2 coding skills to solve most of the coding challenges.

DISCLAIMER:  This is not about writing beautiful code.  This is about improving your coding abilities enough to solve basic coding challenges.  Pretty comes later :-)

I realized that the power of coding was in knowing how to use 2 things ( statements ) in a language:

1) If else statements
2) for loops

Once I realized that I really only needed to figure out how to use those 2 statements.  I gained a lot more confidence.  Now whenever thoughts crept into my head like:

"Maybe you're just dumb" 


"Maybe you aren't meant to learn how to code"

I would focus on learning how to understand for loops better.  Since I am a very visual learner, I would take little pieces of paper and write a variable name on them.  I would them make another piece of paper and call it array.  I would then manually try to walk through what was happening with the data instead of trying to keep it all in my head.

The good news is after a week or so of doing this, I started to get it.  Finally it clicked and I realized that I was way over thinking how loops work.  Loops aren't magic, they are actually really simple.  Even when you throw in a double nested loop, I would simplly print out what was happening at each step of the loop.

Yes, nested loops aren't the best.  Yes you probably should use a for each iterator instead of a for loop.  For me though, once I understood how loops work, I realized how much I could do with just a simple for loop and some if else statements.

Whenever I had some code logic that wasn't acting as I thought it should I would just look at this:

That's all I would do.  I slowly started solving coding challenges.  I started to gain a little more confidence.  Yes my code looked like crap, but I wasn't giving up on learning how to code.

After focusing on using only 2 simple statements to solve coding challenges.  I decided not to stress about feeling the need to use more complicated data structures.  Instead I tried solving as many problems as I could using only arrays.  I didn't care what the problem was, I first tried to solve it using an array.

Dumb I know, but for me that's how I started to realize that I did in fact need more of what the language had to offer.  Instead of reading a massive book and freaking out about: linked lists, hash maps, dictionaries etc.  My mind was now eager to see what else in the language could help me solve a coding challenge easier.

Then I discovered underscore.js, lodash.js, and recently ramda.js libraries.  How do you use a library?  How do you use a REPL to run Javascript?  What is a REPL?  Coding is no longer scary to me, it's still hard, but fun :-)

I strongly encourage you, whether you've been painting houses your whole life, are a CS college drop out, or in my case were shoeing horses for 8 years.  Don't compare yourself to others, you can learn this stuff.  Learn in such a way that your mind looks forward to solving coding challenges instead of dreading them.

I'm on step 6 of 6,327 steps to becoming a senior developer one day, but that's ok!  Progress is progress, my motto is: keep it fun, never give up and you will learn how to code!

Keep coding peeps!

P.S.  Let me know if you'd like more "how to" style blog posts.  I have lots to write, but I want to write things that will benefit people who are starting out on the path of learning how to code.  Comment below or email me :-)