How I Landed a Software Developer Job

It’s taken me a year’s worth of hard work and lots of dedication to get to this point. I’ve officially accepted a software developer position and will be starting at the end of this month. I’d like to share my experience with others so they know what a possible route in landing a developer gig could look like. Full disclosure, this is my path and I definitely don’t believe it’s the only one.

First, I’d like to put everything in perspective. I think level setting the field will give you an idea of who I am and what my skill set was at the time I decided to start my journey to Ruby/Rails development.

I’d say the story starts back in middle school. I was always interested in computers. I was an avid PC gamer and built a few websites when Geocities was huge. I took a semester long course in high school that covered the basics of HTML. This was back in 2004 when web development wasn’t all the rage it is today. I even (dare I say) played around with MySpace for a short while. It was in high school that I strayed away from technology and decided to pursue a career in human resources (they said average salary was $90K…boy were they wrong). I graduated with a bachelor’s in HR, got a job in HR, then made a pivot into becoming a business analyst at a software company. I played around with a few WordPress sites here and there, but this is where it gets interesting.

The BAs at this company weren’t your traditional BAs. Not only did we do all the requirements gathering and analysis, we actually did all of the coding as well. We build HR software, working in our own DSL and framework. So we are actually grouped with the development department. That being said, we went through the typical SDLC. Although we worked within our own framework that nobody else would ever know, we were still a development team that went through the same process any other development team does: analysis, design, coding, documentation, maintenance, etc. What I’m trying to get across is that I was essentially a developer already, just not working with common frameworks. This, I strongly believe, was an advantage over someone who comes from a completely different background.

After a few months in my new role, I came to the early conclusion that none of my technical knowledge was transferable. If I wanted to stay in development, I needed to learn other languages. That’s when, almost exactly a year ago, I decided to learn Ruby on Rails.

First off, why Ruby? In all honestly, it was because of the simplicity of the syntax combined with the power of Rails. My primary interest was web development, and there are plenty of resources for Rails. I ignored all the JavaScript-is-the-new-way comments. A simple job search on Indeed showed Rails was still flourishing. After all, if PHP is still around, Ruby/Rails shouldn’t die all that fast.

January 2014

  • I bought a used mid-2009 Mac Book Pro 13″ for $300. Rails development does not require a whole lot of power, so this thing has gotten me very far. It was strictly used for Rails.
  • The first tutorials I started: JumpstartLab’s Blogger, Rails Guide’s Blog Tutorial, and Hartl’s tutorial.
  • Started this blog (something I highly recommend everyone does).

February 2014 – April 2014

  • Attended a few Meetups. There’s a great one here specific to Rails.
  • Continued my learning path. I started a personal project to help learn since tutorials are a bit of a spoon feed.
  • Scoured Google and StackOverflow.

May 2014

  • Landed an interview with a local company for a Ruby developer. It was a decent size company. I think they said it was around 140 people. I want to stress that this was for a Ruby development position, not strictly Rails. This deserves its own post because boy was I humbled. There was an initial lunch meeting to get a feel for who I was, then a 4 hour interview where I was grilled by 8-10 people on my technical knowledge. We pair programmed for the last part of the interview and it did not go well at all. I have an HR background and did recruiting for many years. I’m generally comfortable in interviews, but boy was this an eye opener. I’ll explain my experience more specifically on this in a separate post. For now, just know I bombed a Ruby developer interview.

June 2014 – October 2014

  • After my dismal interview, I actually became more encouraged. It really showed me what to expect if I wanted to break into real development. I NEVER want to feel like an idiot again.
  • I continue my personal project and actually have a few under my belt. I use a variety of resources to further my knowledge.
  • Things start to click for me during this time. I start to understand a little more on how to tackle certain issues and can build skeleton apps.

November 2014 – Today

  • I release a Udemy course that goes over how to build a Craigslist Clone. I’ve received good feedback. 24 students and counting!
  • I apply for a Ruby/Java developer position and get an interview. It’s with a smaller company, 40 – 50 people. It’s actually a great thing because then I have more chances to get my hands dirty with all different parts of development. I start my new role end of this month :).

Essentially, a lot of persistent and resilience to the challenges that you will most definitely encounter. Being a self taught developer takes a strong will, and I think companies know that. Ruby is one of the few languages I’ve seen to be primarily self taught. The community is very supportive and it seems like most of the senior developers have all been in our shoes. There is a certain level of empathy, and if you’re willing to learn and stick with it, it shows commitment and perseverance. All of which, regardless of your title, are great assets to have in an employee.

Depending on where you are located, your path may be a lot shorter. I’m located in the Twin Cities. We don’t necessarily have a booming tech scene. Therefore, it took me a lot longer to find a gig since companies were less willing to take a chance. If you were out in California or New York, I’m positive you will take a lot less time than I did to land a developer position.

Here’s a blog I posted a few months ago on what I used to help my learning:
List of Resources to Learn Ruby on Rails

My hope is to further my knowledge, only to return the favor and help others learn.

New Year, New Job!

I’m excited and anxious about a new job offer I received. It’ll be a Ruby developer position, working more so with backend stuff and doing some light front-end work. Thought I’d get a post up. Too excited to post more. Just goes to show that even in a smaller market, there are definitely places willing to take a risk on a junior developer.

Tips for Researching Your Programming Issues

One of the greatest attributes the modern day developer can have is resourcefulness. With the age of the internet, we have unlimited amounts of data and information at the tip of our fingers (yes, there are other things on the internet than cat videos ;) ). You will undoubtedly run into a brick wall when you’re learning how to program, and for that, you have to rely on your research skills.

Back in the day, people would scour through textbooks with 1000+ pages of content. These days, you can simply ask a question on a forum or Google to find an article. There’s a popular saying out there somewhere stating that if you’re running into a coding problem, chances are, you’re not the first. The reality is, we’re all working on different applications. Someone might be working on a movie reviews site while another on a restaurant coupon site. Although the applications are different, the code itself is fundamentally the same. This is where effective research skills come into play.

Something I learned very quickly is that I can’t simply type my question in Google and expect to find an answer, at least not directly. Here’s the perfect example of what happened to me: I’m building out a Groupon clone with vendors who have deals. I ran into an issue where I didn’t know how to create a new deal while being in the context of a vendor. So I searched for an hour and couldn’t find anything related to my question. That’s when a light bulb turned on.

Instead of looking for creating a deal of a vendor, I instead decided to search creating a menu of a restaurant. Bam! First result was a StackOverflow question that was exactly what I was looking for. I learned a valuable lesson that day: you have to be methodical in your research in order to find a solution to a problem, not just your problem. In its essence, I was looking for the exact same thing they were looking for, just in a different context. Don’t get so focused on your model names or controller methods and instead broaden the horizon by looking more generically at your issue. You’ll be surprised by how many people have already asked the very same question you’re asking.

Learn Ruby on Rails by Building a Craigslist Clone

I’m excited to announce that I have a course up on Udemy! I want to teach folks what I’ve learned to help ease the transition of learning Rails. Most tutorials you find out there only help create a shell of an app. With my Craigslist clone course, I’m diving a little deeper into more of the things you can do. While it doesn’t have all the features of Craigslist, I think it’s certainly more than creating a trivial blogging or Pinterest application. It takes a dive into using Devise for user authentication, Geocoder for geolocation, and I’ll even cover building out a search method from scratch (instead of relying on Solr or Ransack).

My philosophy is to do as much of it as you can without the use of gems. Gems are fantastic and definitely help with implementing a feature very quickly, but from a beginner perspective, it can be a bit of a crutch. The course’s focus is strictly on how to put together the application, so it doesn’t go over version control or production (ex: Git or Heroku). But, I think that this is a great start if you’re looking to build out your own classifieds website. And if you want to add more features, you’ll hopefully learn enough from the course to learn how to implement whatever you want!

Here’s a $5 off coupon to use when you’re checking out: 5OFF

Or, if you’d like to go there directly, click on this link: Learn Ruby on Rails – Build a Craigslist Clone

Udemy Courses for Learning

Been busy with the holidays so I haven’t been able to post lately. I’ve also got another project in the works, so more on that to come.

I just wanted to get a quick plug in here. I’m no way affiliated with Udemy, but I’ve found some great material there. It’s basically a user-generated course website, having everything from public speaking to how to program. I strongly encourage you all to check it out. They ran some great deals during the Thanksgiving week (I bought a $199 course for $11!) and now they’re having some great Holiday deals (last I checked, the course I purchased was at $19). I purchased a Learn-Web-Development type of course, covering everything from HTML to Javascript to PHP. I haven’t had the chance to go through it yet, but the real reason I bought it was for the Javascript/jQuery lectures.

Give Udemy a try. I’d sign up for the email lists and wait for great deals. I’m not sure if there are any deals throughout the year, but if you’re able to get a highly rated course for $10, I think that’s a steal.

More on my other project soon!

Alright…I need to learn JavaScript

Seems like JavaScript has really taken a turn. With all the new frameworks like Node, Ember, Angular, Coffee, D3…JavaScript has really become a core language to know. It seems like it’s almost becoming synonymous to web development, much like HTML/CSS are. Having been primarily focused on learning Ruby/Rails, I’ve been able to sidestep JavaScript for some time now. But with the new technologies and the live-action magic it provides, it looks like I’m going to have to start learning it, at least to a point where I’m functional.

I’m thinking jQuery is the place to start. It has just about everything you’ll want/need to do with a web app. Everyone I’ve spoke to and all the posts I’ve read, they say to stick to one language. After all, you don’t want to be the “jack of all trades, master of none.” But I’m starting to think some things just can’t be avoided. Learning JavaScript is one of them. From what I understand, it’s being used everywhere: in the web, for mobile apps, even some Java applications. Possibly some scripting too now.

I’d hate to stray away from my learning path, especially because I’m not at a point yet where I’m comfortable with Ruby/Rails. But, I’ll tack on another language. Maybe I’ll start with CoffeeScript or Angular as those seems to be a little better of a learning curve. We’ll see. Hopefully I’ll still have hair left when I take the dive.

Nitrous.io – Cloud Environment

One of the great things about Ruby on Rails development is that it doesn’t necessarily require a state-of-the-art machine. I have a mid-2009 MacBook that I bought for $300 in January this year and it’s held up fairly well. Any slowness I attribute to OSX, not to the space or memory of Rails. However, there definitely are some drawbacks by not having a fast Mac.

For one, multitasking is painfully slow. I’ve done a lot of pair programming online and it slows my machine to the point where it’s no longer useful to screen share. In my case, it doubled the time for everything: starting rails server, running any sort of “rake” command, and bundling gems. I’ve also tried to screen record with audio so I can further explain to someone what I’m trying to do. I felt like my machine was going to blow up because the fans were running at above 80%.

I wanted a way to use my gaming PC that is relatively fast (built it 4 years ago). It has a duo core i5 processor with 16gb memory and a decent graphics card. Surely, if it can handle video games at mediocre graphics, it can handle a little Ruby on Rails development. In comes Nitrous.io.

I heard about Nitrous way back when I initially started to learn Rails. It’s essentially an online environment, mimicking a Mac. I never paid it much attention because I had a Mac that didn’t have any performance issues (at the time, all I was doing was coding). But now that I’ve gotten to a point where I am screen sharing with mentors and wanting to record my process, I needed a stronger machine. I’m not quite ready yet to blow $1,500 on a new Mac, so that’s when I had the idea of using Nitrous and recording in HD on my PC. I haven’t had the opportunity to test it out yet, but it seems like an ingenious solution at first glance. I’ll be trying it later this evening and will return with my results.

New Project: Classifieds Website

I finished up my first project and have decided I should get right back into the trenches by starting another one. I was contemplating whether or not I wanted to go through all the headache and frustration after it’s just ended, but the feeling of starting from scratch and completing a project has given me an awkward euphoria. As I gain more knowledge, coding becomes more enjoyable. Pushing through the initial phases of learning to code was, at times, unbearable and left me feeling helpless. But as I came face to face with obstacles and learned proper syntax to do the things I wanted to do, it’s becoming a lot of fun.

So instead of procrastinating, my hope is to continue this momentum and run into more challenges to build even more knowledge. As I tackle problems, I learn more about Ruby and what to do to overcome them. I want to build a portfolio of projects, not only as a means to showcase what I’ve done, but to be able to reference something I’ve already found a solution to. As I’ve stated before, the smart programmers are the ones who don’t try to reinvent the wheel. If a solution has already been thought out and exists, why not copy it?

All that being said, my next project is building a Craigslist-like app. At first thought, it actually seems easier than what I’ve just gotten done building. But, that could just be my idiotic first glance. I’m hoping this one goes a lot faster than my first one, particularly because not only  have I learned more but now I have code I can reference.

Finishing Up Project!

I’m excited to say that I’m almost done with my project, at least to the point that I wanted to get it to. It’s funny because it seems like I’ve been stuck on a few issues for so many weeks/months. Once I was able to get past those hurdles, finishing up the project was fairly quick. The main things that were stopping me in my tracks were full text searches and geolocation. After I figured those out, everything else started to come together (and I think I also started to grasp a little more of Rails in general).

Now, I don’t have a production ready application. There are a still a few things I need to do in order to have a fully functional website. Sending out emails isn’t set up, I’m not using real data (lorem ipsum is all over the place), I have a few pages that are redirected to the root path, a lot of my code can probably use some refactoring (making it DRY). But, I’m content with what I have and am considering my project near finished. It’s a rewarding feeling and looking back at how long it’s taken me, I’m a little surprised. Looking at my code, it doesn’t seem like I needed to do much. That’s the power of Rails, but it’s also a testament that being self taught, you learn at a much slower pace. All it took was someone to help push me through those obstacles. If I had that person on Day 1, this project would’ve been done in a few weeks versus a few months.

Since I’m considering my project to be near done, I’ve admittedly been holding back on starting another one. I’m more than likely going to build another clone because I think the familiarity will help guide me on what I should do next. Maybe it’ll be a slightly more in depth application, that way with each project, I’m learning more and challenging myself to learn more complex concepts. We’ll see.

Got My Ruby on Rails Question Answered for $5

So after a week of trying to implement a feature for my Yelp clone project, I finally caved and decided that I needed some extra help. I contacted a few folks on Reddit and Codementor, but ultimately didn’t receive any responses. Elance would’ve been a little much since I had a simple question. The next local Meetup is 2 weeks away and I didn’t want to wait any longer. So, in desperation, I resorted to trying to find someone on Fiverr again.

My experience with finding someone on Fiverr hasn’t been negative, but it wasn’t exactly positive either. If I had to rate it out of 10, I’d say it was a 4. But, I was desperate and decided I’d try it again. I search for “ruby on rails” and was brought to the “High Rating” gigs. I decided I’d try something else. I wanted new blood because I’ve already contacted a few of the folks before and they either tried the bait-n-switch (posting a $5 gig but saying it’ll take 10 gigs) or I used them before and they weren’t much help. This time, it was definitely a success.

Now maybe it’s because what I wanted to do was very simple and I just needed to know the syntax, but the new person I found responded within minutes and even had the solution within an hour. I basically wanted to be able to capture a visitor’s location and show them a model within X amount of miles. Instead of throwing some syntax for me to try, they actually pulled my repo and made a pull request, comments and all. It wasn’t exactly what I wanted, but I could take what they did and apply it. For $5, I couldn’t have asked for more. Also, they said they’re more than willing to help me if I have anymore questions in the future and to just email them.

Learning Rails on a budget is definitely a slower pace, but I think I’m getting the most bang for my buck. One reader contacted me and gave me their experience with Bloc.io. I’m glad they did, because I contemplated using their services but couldn’t justify the $5k price tag. And from what they were saying, it might not be worth it. But maybe I’ll save that for a later post. Happy Halloween!