Wednesday, December 17, 2014

What happened???

Thank you so much to everyone who emailed me, instant messaged me with support and checked in on me to see how I was doing, I really appreciate it!!!

There is so much to say and write about I don't know where to start.  One thing I will say is that once you get hired and start working for a company you really can't give much insight or say anything about what you are doing or about the place you are working.  I really miss being able to just say it like it is. :-)

In a nutshell, the company I was working for ZipList had financial troubles, that I knew about 6 months ago, but was told we would be okay and to ride it out.  I am a loyal person at heart and decided to stay with ZipList.  Long story short-- the parent company that owned ZipList pulled the plug on us unexpectedly.  Many people from the team was let go besides myself.


I give credit to our CEO and several of the people I worked with for trying to help me out and making the transition smooth to a new job.  In hindsight I probably should have left when things started going downhill, but that's hindsight.  I had a romantic idea in my head about being loyal to the company that gives you your first break.


Somewhere along the way (after I got hired at ZipList) I wrote an article on my blog which was picked up by Hacker News and Reddit.  Soon I was getting emails all the time and being asked for advice on how to be become a great programmer like me.  I enjoy helping people out and seeing many people follow the same path I did.  BUT with all that being said I have turned into a bit of a let down.

People meet me thinking I must have "ninja" coding skills which is absolutely not true.  Now that I am at a new company and can speak a little more freely about the past 16 months, I want to first and foremost clear up this myth that somehow started once my blog post went viral overnight with some 45,000K people learning who I was overnight.  I even met an engineer on Facebook who knew who I was and assumed I must be really talented as a developer ( Boy was he surprised ) :-)

Let's clear this up once and for all, I am very much a JUNIOR developer.  3 years ago I could barely email people and text.  Somehow now I am writing APIs in my sleep.  Full blown developers in France are asking me how to improve the performance of their Ruby code.  Someone in Texas offered me a developer role because I must be that good.  Nope, I am still learning and loving this learning journey as much as ever.  I still feel even stronger than ever that anyone can in fact get hired on an engineering team in 6 months of self study and learning.

I hope you aren't too disappointed when you see that I still write crappy, non perfect code and look things up constantly. Everyday I strive to get better and better.  I do not have any special DNA or secret coding gene.  My secret is to always try my hardest and to never give up, if that means getting to work a little early or staying up a little late at night when the kiddos are in bed. My coding has greatly improved and I am better than ever.

With that being said I am thrilled beyond thrilled to be working at Perfect Sense Digital as a QA Engineer doing testing automation, performance testing, and load testing.  Guess what the best part is?  Ruby is kick butt awesome for testing automation using Selenium!!!  I really didn't know that much about testing before getting hired but I really love learning another aspect of development.  I think it will make me that much better of a developer in the long run.

I had rewritten my book to show people an even better, clearer path to getting hired on an engineering team in the shortest amount of time.  After rewriting 80% of the book, I learned that I was being let go at Ziplist.  Needless to say the book had to be put on hold for the time being, but not forever :-)  I am super busy right now learning so many new skills and trying to stay on top of things in my new role but expect more frequent blog posts, chock full of good insights about what I have learned in the past 16 months which can hopefully help you on your path to learning how to code.

Lastly, I just wanted to say thank you to all the people who read this blog and have emailed me. Your support and encouragement through thick and thin is amazing and very helpful.  Never listen to the dream snatchers, you can learn to code, get hired, and make a good living doing something you love!

Keep coding peeps :-)

Monday, November 24, 2014

Brief Sabbatical

Sorry I haven't blogged in a long time.  I am being let go from ZipList on December 5th.  I've been very busy and a little stressed, more posts to follow on the 6th.

Friday, October 3, 2014

A simple way of spotting a good developer

When I was first learning how to shoe horses, other blacksmiths and farriers would treat me like garbage.  All they could say were derogatory things, in their minds everything that I did was terrible.  They would purposely make me burn my hands while working with hot shoes and then laugh to no end.  The only name that they thought was appropriate for me was: "Boy!".

They loved to shout: "Hey Boy! Go fetch me a bucket of water!" or "Boy! Hurry up you're never gonna' get this!...blah blah blah."

I swore that one day when I was on my own I would never treat any new comers to the farrier/blacksmith world like that.  Over the 7.5 years that I was self employed shoeing horses I helped several people get into shoeing and let them ride along with me to the different barns I worked at.  I think I helped people learn more about horses, more about making horseshoes, and shoeing horses.  I always felt good when someone would say: "I thought all farriers were nasty old men, but you are really nice!".

How does this apply to coding and development?  I'll show you.  Not all farriers were mean, I rode with 7 different farriers over the span of 2 years, and learned a surefire way to spot the good ones from the bad.  The good farrier treats you like an intelligent human being when you are "learning the ropes", when you make mistakes he points them out to you, shows you how to not repeat them, and let's you fix the mistake.

A nasty farrier looks for ways to humiliate you in front of a barn full of people.  A nasty farrier talks down to you, gives you tasks that are far beyond anything you can handle, and then loudly and public says how poor of a job you did. 

My secret was to try and only ride with the farriers that treated me like a human being from the start as much as possible.  The farriers that treated me like crap when I was an apprentice and didn't know anything, would then want to be buddies once I was doing well and on my own.  They would ask me to cover for them from time to time, sometimes I would help them sometimes I wouldn't.  I would always bend over backwards to help a farrier who had treated me with respect from the start.

I remember driving up to Washington D.C. at 11:30pm to fix a shoe for a D.C. Park Police horse that needed to be on patrol the next day for a nice farrier that was out of town.  I didn't make a penny from that work, or even have the cost of my gas paid for, it didn't matter I was more then happy to help out.

I was reminded of this recently when I was at a place I won't mention publicly.  I won't go into the details, but just suffice it to say that the same principles are true across the board whether it be as an apprentice or a junior developer.  I am so thankfully and grateful for my original mentor +David Bock , for all of his time, incredible teaching style and most of all his respect.  I now know how experienced and skilled David is and I am sure there were many times he could have been rude or said things that didn't encourage, but instead he always encouraged me to a higher level, to learn more.

I don't own a company, but I know if I did, and was looking for good developers, I would look for someone like David who takes the time to share his wealth of knowledge with others.  It's late, 12:45am so I will end this post.  After spending the last 4 hours working on fixing errors on my computer, I am ready to crawl into bed!

Never give up and keep coding peeps, you can do this  :-)

Tuesday, September 30, 2014

Coding Logic

When you first start learning to code, everything is incredibly hard to understand and intimidating.  The past couple of weeks as I am working on making a little Rails app just for the heck of it, I am surprised how much different I feel when facing errors or things that I don't know.

Since coding for a couple of years now, everything new I am learning seems to always have a "knowledge link" that connects the new thing I am learning to something I have dealt with before.  In no way does it mean that it is easy, but it gives me a feeling almost like swimming, this may be a new lake but it's still swimming.

I am really enjoying learning Javascript, I like Ruby and all of the awesome built in methods and cool magic.  I feel like my "coding logic" and understanding has grown more though with Javascript.  It's probably just me, but I really have to think more about how the code is working when all of the easy to use methods are taken away.  I also appreciate Ruby more now, after using Javascript.

One other thing that used to scare me like crazy was recursion, for the life of me I couldn't wrap my head around it, then it clicks one day and it's hard to understand why I couldn't grasp it until now.  I still don't understand all about recursion, but I feel very comfortable with how it works, how to use it in simple cases instead of a loop, and also reasons why I shouldn't use recursion.

I used to try and memorize lots of Ruby's methods and thought that if I simply could memorize them all I would be that much better of a coder, that is simply not true.  One thing that I find really cool about coding is that some languages have different syntax and cooler methods than others, but some computer science concepts are the same across the board.

For example recursion can be used in any language, if - else statements are virtually the same in most languages, also while loops are pretty standard.  I like knowing that I could solve a problem in another language even if I really didn't know the syntax all that well simply by knowing some basic computer science principles that are true across the spectrum.

Another thing I learned is that you need to always learn something new that isn't related to your current job or else you will only have the skills that you use in your day to day work, which could possibly limit your opportunities down the road.

What's funny is Stack Overflow used to be a guessing game for me.  I'd look up a problem I was having and then try some of the code listed in an answer.  If it worked I felt like it was "black magic", not understanding what it really was doing.  I still use Stack Overflow, but now I can usually have a much clearer idea of what is likely going wrong and what specifically I need to fix.

I am loving the journey of learning to code more and more everyday.  I like having those light bulb moments when something I learn can then be used to solve something else.  I only feel bad that I am not blogging more, I just hate to not be coding in my free time!  Life is good people, drink up!

Keep coding peeps!

Tuesday, September 9, 2014

Why moving, writing code, and golf are similar

I apologize for the long absence in writing.  My family and I have been collecting and packing boxes to move in our spare time for the past few weeks.  I forgot how much work it is to move especially with little kids!  We moved into our townhouse in Marshall, Virginia this past weekend after moving out of our little 2 bedroom apartment which was located  on the 3rd floor - 39 stairs up!  After this move I promised myself to never again, no matter what will I live on the 3rd floor of any building!

Life has been good otherwise, I haven't been able to do much of the Epicodus coursework, work has been busy.  I am learning some of the Ractive.js library as well as the mustache.js library so my spare time has been filled with moving and doing some tutorials using Ractive.js.

Over the past couple of weeks, I have noticed some similarities between the process one takes when planning, packing, and finally moving into a new home and that of coding.



  • Getting boxes from local stores can be painfully slow even when you call ahead and ask for them to be held for you I was immediately reminded of the process of setting up a dev environment.  No matter how easy it sounds there are always going to be a few unexpected snags.

  • Packing up everything we owned took far longer then I had originally anticipated, even though we did a move like this 2 years before.  The difference was all of the kids toys and junk that we had collected or been given for them.  Developers I am told are always way too optimistic on estimating how long something will take to make, the same was true for my move.

  • I remembered how steep and tough the 39 stairs were to climb 2 years ago when we moved into the 3rd story apartment, so I called all of my biggest, baddest, and strongest friends to help .  I promised them all an awesome lunch and drinks if they would give me a hand.  I estimated with every one's help that it would take no more then 1 hour to have the truck fully loaded.  2.5 hours later, on one of the hottest, most humid days of the year, everything was loaded into the truck.  Code is never the exact same and usually takes longer than what I think it will take in my mind.  I shouldn't ever try to rush it, same goes for moving.

  • The new place has only 2 steps, I estimated 35 minutes to unload everything.  With every one's help the truck was completely empty after only 15 minutes!  This rarely happens in software when everything goes perfect, but when it does it blinds us, confuses our memories and makes us think that we can be more optimistic with our estimates next time... which leads us back to the original problem  :-)

  • Moving, coding, and golf are very similar to me.  All of them hold perfectly still for you and just wait for the first move.  All 3 of them can be frustrating, but when you finally do get something right, hit the perfect shot of the day.  EVERY frustrating memory we ever had fade away.  It is a hopeless addiction, I can't say that I am any good at moving, golf, or writing code for that matter but I am enjoying the journey and the challenge to always learn, grow, and strive to do better next time!


Keep coding peeps!