Wednesday, November 27, 2013

How "junior" developers can become Regex wizards

You need a Regular Expression to validate a phone number or a user's email address, so what do you do? Go onto StackOverflow and copy someone else's code and paste it into your code and be done with it? Well that may work, and if you are in an absolute pinch that can work, but what have  YOU personally really learned? Zilch.

At my job as a "junior developer" I am starting to have to use Regex (Regular Expressions) quite a bit to validate/check for certain things. I could become a "Googling wizard" but I'd rather expend the energy and effort now to become a "Regex wizard" instead. The truth is, Regular Expressions seems
daunting and intimidating, and they may be at as they get more and more complicated, however I think Regex are just different and you need to slow down and think of them as symbols and not try to rush through.

With that spirit in mind I recorded myself doing a basic Regex date string, I did it "cold turkey", so as to be authentic, and real. I did make one mistake and then fixed it, so you can see I'm quite new to this and human :-)  The point is not how much I suck, the point is to go ahead and just try to make your own Regular Expression before just "Googling the answer". I want to be a good developer one day, and I think as a young developer we should put in the extra time to try and really understand something and not just always do what is the quickest.










If you are new to Regex, www.rubular.com is your friend. Put test strings in the box on the site and then look at the Regex "cheat sheet" on the bottom of the page when you get stuck or need a refresher. To the right you will see a blue bar that tells you if you are matching the 'test string' correctly or not which makes it easy to tell if the Regex you are making is actually correct or not.

The other thing is, DON'T RUSH, if you can't take a few minutes at work to fiddle with Regular Expressions, then make sure while eating some turkey and watching the game at Thanksgiving tomorrow that you pull out some random strings to try and match, I find it's actually really fun and not stressful if you don't pigeon hole yourself into a time crunch.

I always have my "mentor" developer at work double check my work when in doubt. NEVER put something that you are unsure of into production. Certainly on your own projects and stuff you should be able to take 5 - 10 minutes to have fun with some Regular Expressions.

Keep coding!

Monday, November 18, 2013

I give you permission to no longer ask for permission to learn to code

Craziness happened this last week. My blog post went viral on Hacker News and Reddit, over 34,000+ people read the article in one week. Needless to say I got inundated with emails from lots of people who are trying to learn to code, others who are trying to get hired. I'm still trying to get back to everyone so I apologize if that's you.

What amazed me was the fact that people are asking "MY" opinion, (feeling like an impostor) just because I started from zero knowledge and actually got hired. Here's the thing though that I would say to everyone who is wondering if they should learn to code or if they "can" learn to code. Here's the thing: if you want it bad enough you can accomplish virtually anything so my answer is of course, "Yes! and Yes!".

I'll tell you a secret that helped keep me motivated when I was really discouraged and felt like I would never understand something. I would watch the movie In the Pursuit of Happiness with Will Smith. No matter how bad things got, they were never as bad as he had it. Not only is it an inspiring movie but it's also a true story. I find that a lot of people that email me are basically saying: "Hey how can I get a really really easy job that pays a lot of money... TOMORROW!!?"

I explained that it actually takes a lot of hard work and usually that's the last I hear from them. Then you have the other side of the coin: You have 80's mindset developers who practically scoff at the idea of "teaching yourself to code" and always point you to Peter Novig's article Teach Yourself Programming In 10 Years. I honestly like Peter's article and agree with it, BUT I think you can learn enough programming/coding skills to be able to add value to a company in a junior role certainly in 6 months to a year.

It's not like a company is going to give you the "root" passwords to their databases on day one even if you were a database wizard. Some things are simply about trust and establishing a relationship over time proving the quality and type of person you are.

So I give you permission to no longer have to ask if you can learn to code or get hired, the short answer is yes if you want it bad enough. That may even mean you need to relocate. Which brings us back to the question of how bad do you really want it?

The hardest thing for me about working in a new field is not being that good at it and having to ask for help and then banging my head against the wall or apologizing and fixing my mistakes. When I was a Blacksmith/Farrier I felt 100% confident that I could make 99% of all the horses that I worked on to move and feel better. I love the confidence that comes from absolutely knowing what your doing and having the experience (from lots of mistakes) of what doesn't work or isn't the "best" way to do something.

I no longer have that same confidence I had when dealing with horses when it comes to coding and in fact most days I have a slight migraine from trying to learn and absorb everything I can. That is what drives me now, I don't want to just have a job. I hate not being really good at something, I hate being the guy who can do the task but if anything goes wrong outside of the norm, I would drown. I push on for the day when I have enough coding history that I can actually draw from it. It's many years down the road but the quickest way to get there is to step on the gas.

I've been bad about blogging, lots of things going on but I do have some big plans for the end of December - early January. I'm playing around with some smallish ideas until then so don't worry. This isn't a "ghost" blog that will dwindle away. It just took me a while to get acclimated to the new place.

Watch out peeps, I've got big dreams let's see if we can make them happen!

Keep coding :-)  

-Josh

Ruby on Rails: Faliure

When I was a kid whenever I would put too much food on my plate and then not eat it all my dad would say: "Josh, I guess your eyeballs were bigger than your stomach...don't take more than you can finish".


Well apparently I still have not learned my lesson on that completely which brings me to the very sad news that +Dustin James  and myself have mutually agreed to end the:  Get hired the hard way mentorship program. 

Why? Not from lack of effort on Dustin's part, in fact he is much farther along at one month than I was at 3 months. The simple reason being there are zero listings for RoR jobs in Manatobia, Canada and a very small sporadic Ruby user group. The truth is I should have checked the tech market place and done some research. In short I failed,  my eyes were bigger than my stomach.

The good news is Dustin is still learning Ruby on Rails and I will be giving updates from time to time just not at such a "rabid" style pace. The man is smart and very talented. He will do well! Keep following him along his journey on his Blog

I guess the lesson to be learned is, you may have to move to get hired even if you are good at RoR. There are definitely certain areas of the country where it is easier to get hired as a junior dev just because the demand is so great.

My apologies to the junior rails community, keep coding :-)

Sunday, November 3, 2013

HOW A BLACKSMITH LEARNED TO CODE

UPDATE September 2016: We are now inundated with bootcamps and it's getting harder to land a junior developer position. I created a course to help you get hired faster, a proven method that I've used for the past year with my coaching clients. This course is the EXACT way I helped my coaching clients get hired, for a more affordable price and in the shortest amount of time! 

Everyone everywhere is pushing this whole "Learn To Code" movement, but is it actually possible? This former Blacksmith/Farrier says a resounding: "YES!"

I wrote a Book on how to do what I did, but here's the condensed version of how I went from zero experience writing code to getting hired 9 months later as a junior developer and how you can do the same! I finally decided to teach myself to code after getting my hand kicked real bad and breaking my thumb while shoeing a horse. I came home and told my wife that I was done with shoeing and I was going to teach myself how to code and get hired, despite no experience and no degree. That was October 23rd, 2012. (9 months and 2 days later I was hired by ZipList in Reston, Virginia).

Month 1
~Pick a language to learn. I recommend Ruby on Rails because it's fairly easy to learn and there are a lot of entry level jobs for Junior Developers. In order to get hired 8 - 9 months from the day you start, especially with no degree as such in my case, you MUST start marketing/networking NOW!
~ Start a blog today and blog 3x per week.
~ Start a Twitter account and start getting some followers (they may later become your employer).
~ Join every local Ruby on Rails Meetup group within 50 miles and attend EVERY meeting. Start making relationships now and let people know what you are doing. You'll also learn more than you can imagine just by listening to "coder lingo".
~ Start installing stuff and getting your "dev" environment set up.
~ Download and start learning how to use Sublime Text 3.
~ Complete Zed Shaw’s excellent book: "Learn the Command Line the Hard Way". If you are not familiar with using the terminal.

Month 2
~ Start Chris Pine's "Learn To Program" Book.
~ Complete the first 15 lessons of Git Immersion which is free online.
~ Take Mattan Griffel's excellent course 'One Month Rails' which cost $49 per month. Trust me it's the best money you'll ever spend and I don't receive a penny for recommending, it's just that good!

Month 3
~Complete Zed Shaw's other awesome book "Learn Ruby the Hard Way". It's tougher than Chris Pine's book but you should be ready for it at this point.
~ Spend the rest of this month catching up on all the loose ends of stuff you didn't totally understand or got done in the previous month. Completely "flesh out" the Rails app you made while doing "One Month Rails". "Learn Ruby the Hard Way" is a lot to do in and of itself in one month.


Month 4
~ Make a basic web app and get it online and DNS working correctly.
~ Find a friend with a TINY small business (any business) or you can just find a crappy old site that needs a serious facelift (farmers markets are a great place to find these).
~ Make a basic site using Twitter bootstrap (look at Michael Hartl's Rail's Tutorial for help).
The goal is to make and deploy online a real website for a small business. You will learn so much from having to make something from scratch and have it online in 30 days. You'll struggle but don't give up!


Month 5
This is where things get real, by the end of this month, you should have made a pretty kick butt Twitter app. Now is the time to take on the BEAST of all tutorials:
~ Michael Hartl's Rails Tutorial, all 547 pages of it. The first 3 of the 11 chapters should be easy because of the other things you've done. Go through all 11 chapters and NO "copying and pasting".
This tutorial will probably take you a solid month if you work hard on it. You have now made 2 sites to show potential employers down the road! You should volunteer to speak at local meetup groups and give a talk on how to do something basic for beginners, this is the best marketing you can do.

Month 6
You are getting close and at the 6-month point, you want to really let people know that you are serious and are actively pursuing a junior dev job.
~ This month you will want to launch your own personal site. Make a video on your site about who you are and what you've done and that you are looking to be hired.
~ Put your resume up on Dice.com, Indeed.com
~ Make a Linkedin portfolio to get the word out.
~ Give another talk at a meetup group because this is where you'll more than likely make your connection to get hired.

Months 7 & 8
This is where you start juggling.
~ Give as many short talks at local meetup groups.
~ Get back to recruiters, do phone interviews, respond to emails.
~ All the while within these 2 months you need to make a web app with 2 other developers to show employers that you can work on a team and also make a really cool app to demo to potential employers.  Stay the course, you’re almost there. Soon you will be sitting in engineering meetings and drinking free espresso every morning!

The last 2 months were the hardest for me personally to keep up with. From interviewing to working full-time, with a family and still trying to learn and make an awesome web app so needless to say- I didn't sleep much. Plan on getting around 4 - 5 hours of sleep until you are hired. Know this, though: if you study hard and follow the plan, you can get hired 8 - 9 months from today!

I studied 21 hours per week mostly from 10pm - 1am or until I fell asleep on the couch. If you can study 3 hours per night you can get in 84 hours a month, which is really good! Don't give up, stick with it and you can change your life, start a cool career, and make great money in a short amount of time!

UPDATE July 2015:  30+ people have emailed me and told me the above helped them land a dev job, but I think for people who are totally brand new to learning how to code, getting an entry level QA position first may be a better, less stressful option.  With 3 - 4 months of studying, you can land an entry level QA job.  QA jobs pay fairly well, and require a lot less actually coding skills, they are a nice way to get into an I.T. company without having to be a full blown developer.  If you are serious about changing your life check out my QA Coaching


Don't give up, keep coding!  You can do this!!!