Saturday, February 20, 2016

How to easily pass Free Code Camp's Algorithm Scripting challenges - OR - Why you shouldn't use the browser challenges

New coaching testimonial coming on Sunday!

While researching Free Code Camp ( It changes quickly so I wanted to make sure what I was saying was up to date ), I found out some issues with the browser based scripting challenges that really bothers me.  As of last year, I was able to use the Ramda.js library in the browser challenges online.

I tried every way to call/require the Ramda.js or Lodash.js libraries without any success.  I searched online for 30 minutes trying to figure out how to use Ramda.js with the online coding challenges and couldn't find any information.  I personally think the Ramda.js library was removed.  Either way, it should not be this hard to figure out how to use a Javascript library like Lodash or Ramda with the challenges.

I know as of August last year (2015) Quincy Larson said on Quora that you could use Ramda and Lodash in the online challenges:
https://www.quora.com/What-are-some-websites-to-practice-mini-problems-for-coding

I also can show you how I used Ramda.js last year with Free Code Camp online challenges:
https://github.com/joshuakemp1/FREE-CODE-CAMP/tree/master/ecc


I hope I am wrong, I hope someone will clear up this issue and show me how to use Ramda.js with Free Code Camp, without it, I don't think you should use the online editor.  I recommend copying and pasting the challenge into a text editor and then using Lodash or Ramda libraries.

The article below is how I used to easily solve the Free Code Camp challenges, hopefully, this will help you solve the challenges easier or switch over to Ruby :-)


This was my original post as of a month ago.

I've been asked by many people to write how to pass the Free Code Camp scripting challenges.  Here goes:


NOTE:  I love Free Code Camp's Algorithm challenges and recommend them to my coaching clients all the time.


There are several reasons why Free Code Camp's challenges are hard:



  • When you run your code you don't get to see the output ( sometimes you get some sort of output, put it's not the same as running it in a REPL on your terminal ).
  • You can use the Ramda.js Library but it is not advertised on the site at all.
  • Nowhere does it tell you on Free Code Camp how to call the Ramda.js Library.
  • Why would you have a Javascript library built into the Bonfire Algorithm challenges but not tell beginners how to call a Library?
  • Using built-in methods is frowned upon in the community, using nested loops is considered better and more 'vanilla Javascript'.



8 steps to solve them easily

Here's how to get around these issues:

(1)  As soon as you get to Bonfire Algorithm Challenge, the very first thing to do is click on the 'Run tests' button.

You want to find out all of the edge cases that you need to solve with your code. Leave this browser window open to reference.

(2)  Next copy and paste the Bonfire Algorithm Challenge code into your text editor.  This is where you will actually work on solving the challenge.  Once you solve one of the cases you need to solve for the challenge, paste it into the browser and run the tests.  Using this approach you will eventually solve the entire challenge.

(3)  Look at the 'helpful links', they are basically the methods you will be using to solve the challenge.  NOTE:  This is the best new feature that Free Code Camp has added lately, this is exactly what I used to do in the past, look for a Javascript method that could solve the challenge first before doing anything else.


(4)  Next look at Ramda.js Docs and see if you can find a built-in method that you can use to solve or partially solve the challenge.


(5)  Make sure you test that you are requiring and using the Ramda.js library correctly on your local machine.  First install Ramda with NPM, if you don't have NPM you will need to install Node.js.  After installing Node and Ramda, open the REPL from the command line and make sure you can access the Ramda methods.

(6)  Always be checking your codes output.  Use 'console.log' all through your code if you don't know what something is doing or want to see output for a particular piece of code.

(7)  Always avoid using multiple nested loops if possible as your solution.  No company will ever want you writing code like that in production.  Ignore people who say to learn that way first and then use methods.  Everytime you use a loop you add another layer of complexity to your code, use the built-in methods as much as possible.

(8)  First try to solve the challenge anyway possible, if you get it solved, then see if you can clean up your code or solve the challenge in a cleaner way.  Don't strive for perfect when you are just starting out.  Focus on completion and solving the challenge first, pretty second.


Learn to use your REPL and local machine instead of relying on the Free Code Camp online editor.  Focus on the output of your program and try to slowly solve one piece of the challenge at a time.  Never get discouraged, if it takes you 3 days to solve a challenge that's okay, you will have learned a lot about coding in those 3 days.  Don't worry if someone else can solve a challenge in 3 minutes, they have probably seen similar challenges before.


Keep coding peeps, you can do this!!!




Friday, February 5, 2016

Why you should learn to code but not become a developer

I sell several copies of my book everyday that promises you can learn to code and land a Rails job.  That is still true.  What I am saying with the title of this blog, is this:  

It is soo much easier to learn how to code and land a QA or Test Automation position, than it is to start out as a full blown developer.  Being able to solve basic coding algorithms on Free Code Camp is not the same as being a developer.  NOTE:  Free Code Camp is great, this is not about them.


At my first job, I wore many hats, did some email management of the support Queue, did some testing, some front end work but it wasn't a full blown developer only position.  At my second job I did test automation which basically meant I was using Ruby to keep track of performance metrics and wrote several different scripts that solved/tested various things.  I think the longest script I personally wrote was 387 lines of code.  


There is nothing wrong with what I did, I mean my code worked, it solved the problem and the company still uses it to this day everytime a certain build is triggered.  Honestly, the script was me 'hacking' trying to figure out how to solve the issue, which I did.  The script wasn't written in OOP, ( Object Oriented Programming ), it was just me functionally writing code to solve the issue.  It could have been written in probably 100 lines of code if it was written in OOP.


I am not very good at OOP.  I don't instinctively think in that manner, I am learning more about OOP, I need to improve the way I write code.  I love learning and love programming, so this is a 'good problem' to have :-)

So back to my point, you can learn to code and land a full blown Rails job.  What I am seeing in my coaching and from the emails I receive is that most humans who have zero coding backgrounds will not be comfortable doing this.  You may be able to land the job, but you will be struggling all the time.  I love that I get to use Ruby at my day job to write automation, every day I get to improve my coding abilities.

I think learning to code can be broken down like this:

Learn the basics of coding:

If, else statements
Loops
variables
data structures:  Arrays, Strings.

Knowing the above you can do a lot.  You can solve most problems that you will face in test automation at an entry level.  This is what I did at my first job, I knew Arrays and Strings well and could always solve an issue by looping over it enough times and throwing in some control statements.  You can solve 80% of problems with the above which I think is a really positive and encouraging thing for beginners new to code.  NOTE: Yes, I knew more than the above, yes I passed tutorials on Classes and OOP concepts, but I didn't actually ever use them in real life.

Learn more of the language:

Hashes
Recursion
Different types of loops
Ternary operators
Case statements
Code indentation
Cleaner code, not being redundant with code.


The second job I started to use this more, this is when I started to use things like 'Robo-cop' and 'Ruby linters' to help me learn more about how to write code better.



OOP

This is where I am now.  I know of OOP but typically if I have something that I need to solve I will do it functionally.  This is the year I am trying to get away from that and really embrace OOP.

 I need to better understand and use:

Classes  ( most basic algorithm challenges don't involve using classes and can be solved by writing a few simple methods )
Modules
Inheritance
Clean Code ( I am currently reading the book, and am trying to implement it in real life )
Deeper knowledge of the Ruby language, trying out and playing with new methods just to learn more about Ruby.

In order to be good at Rails ( I'm not ) you need to be good at OOP and not simply be hacking things together until they work :-)

The above is why I also switched to Ruby Mine IDE instead of Sublime Text 3 for many reasons.



This is why I suggest to learn to code and then get a job that involves coding but not at a level like being a full-blown developer.  I think you will make your life easier and not become frustrated with coding but instead, will still find it fun, and will enjoy the journey of learning more and more every day.

I plan on writing a post on how to easily solve the first 30+ of Free Code Camp algorithm challenges ( people have been emailing me asking ).  It's actually quite simple and not too hard.  Which brings me to my point, solving algorithm challenges exclusively will not make you a good developer.  I think OOP is where things get harder, learning to think in OOP, is a different skill set in itself.

I don't think you should sit in your basement for 5 years until you are amazing at OOP and then try to get a job.  No, I think you should get an entry level job in QA that involves 50% of the time writing code.  Then you will get to grow and learn all the while being paid!

Keep coding peeps, you can do this!