How did you get into programming? #1
When I was a kid, I had a friend who coded. He was working on a game and I wanted to work on it with him. He totally lost me when he was teaching me what a
When I started college years later (2007), I decided to major in Electrical Engineering like my older brother. I took two classes on programming: Intro to Computer Programming (Java) and Computer Systems (Machine, Assembly, and C). Each required about 8 hours of coding a week. I struggled quite a bit (though I pulled an A and a B+ out of them) and determined that the last thing I wanted to do was sit in front of a computer for 8 hours a day.
After that first semester, I took a break to serve a two year mission for my church. When I got back, I still felt like I should stick with my major even though I hadn't really enjoyed programming (not all EE is programming anyway).
After a while, I started poking around at other majors like Chemical Engineering and Physics. I actually ended up deciding on Accounting (my dad's an accountant). That required me to take an Information Systems class to get into the program. And here's where I get back to programming.
After taking a few Accounting classes, I realized how much of a distaste I have for Accounting. But I enjoyed my Information Systems class (we did a tiny bit of programming in Excel and a tiny webpage with HTML and CSS). I decided that if I could get business and computers together, that would be awesome, so I switched majors (again, for the last time).
Before I started my first semester in the BYU Information Systems program, I got a job at The More Good Foundation and was tasked with a very mundane, monkey job of uploading tons of videos to YouTube in 13 different languages.
I started work on the project right around the time my Principles of Business Programming class started. That class was basically another intro to Java class. I was dreading it. But after just a week or two of that class, I really liked it. A lot. I decided that I could automate my job away with Java. It was a dream. I coded for four hours at work every day, and then another couple at school, then I started coding for fun at home. My first three open source projects were from around that time: Java-Helper, My-Components, and MassMessenger (which I built for fun to send the announcement of our first daughter).
I got an internship at the Information Communication Systems department at my church as a Business Intelligence Engineer (getting that internship is an interesting story as well). I still wasn't totally convinced that I was going to be a programmer. But instead of creating star schemas, ETLs, and SQL queries, I ended up automating a lot of the processes that we had there using Java. They kept me on when I started school and I commuted for a while...
Drinking it in
Overall, USAA was a good experience, and I loved the people I worked with. I learned from that experience how valuable autonomy, leading edge tech, and smaller companies are to me. So I denied their offer of employment and went back to finish my masters degree and work with Domo part time again.
Landing the full time job
Getting a full time job at Domo is a fun story. Having rejected USAA was scary for me because at the time my wife and I had our daughter and we were expecting our son. All my friends were getting and accepting offers and I was nervous I would be left with the dregs. Domo wasn't making any offers to anyone so far out (like many other companies do), so I wasn't sure I'd get a job with them either.
Domo had regular hack nights that were tons of fun. You pretty much build whatever you want for four hours after work and they pick "winners" at the end of the night. One of my work related tasks involved fixing some keyboard shortcuts we had in the product. I forked keymaster to do it. Then, for the hack night I added a bunch of keyboard shortcuts to the product.
It was fun, but I soon figured out that the keyboard is pretty limited to intuitive keystrokes for actions. So for the next few weeks, I built genie at home and at the next hack night I implemented it in our project.
It worked out great. @iammerrick was impressed and decided to bring Josh James (the CEO) over so I could show him what I'd done. I pretty much stumbled (I was seriously intimidated by Josh) all over my words and I don't think he got it until Merrick explained it in plain english to him. Here's about what happened next:
Josh: Hey, that's way cool.
There was almost an audible gasp from the 10 or so other people standing around when I said that. Josh stared at me for a second, but slid me a piece of paper and said: "What's your number?" I was freaking out! I hadn't planned for this. I jotted down something that I thought was fair and he called the HR VP (it was almost midnight) to get approval. He wrote up a quick job offer and signed it. I signed it a boom! I landed my full time job for when I graduated.
There's plenty more to tell, but to make an already super long story shorter, I no longer work at Domo, I'm now at Alianza where I totally love it.
Feel free to ask more questions about how I got here, what I'm doing now, etc. :-)
As requested in #227 from @cynicaldevil, here's an update:
I worked at Alianza for just over a year. While I was there, I rewrote our build from grunt to this messed up gulp thing I thought was super cool at the time, and then again to webpack. I started co-locating everything and loving it sooooo much. I learned a TON while I was there. Most of my webpack/babel experience came from making those tools work at Alianza. I also moved our frontend stuff to a Continuous Delivery setup with SnapCI (after evaluating other solutions). I believe they've since moved to Wercker. I set it up to deploy to every one of our environments for each build and pull request so we could validate things in a real environment with ease before merging. When all you've got is a couple of static files, doing something like this is pretty simple. But it was soooo cool. Being the sole frontend dev at a 40ish person company was pretty awesome. I was given a great deal of autonomy. I loved it.
When I hit about the 10 month mark (around August 2015), a recruiter at Facebook reached out to me and wanted me to interview. It's hard to say no to Facebook, and quite honestly this is about the time I started to question my loyalties to Angular (in favor of React... see #7). So I interviewed, had a great experience (I even saw Zuck from the back! Sitting there hunched over his laptop in the middle of everyone else at a table like everyone else) and I got an offer. It was extremely difficult, but my wife and I decided that the reasons we didn't want to move to California outweighed the reasons we did. So we said no.
But at this point, I was starting to consider things a little more. I started to realize that it would be really nice to work with a team of frontend engineers. In fact, the guy I replaced at Alianza had left for the same reason. I had actually hired a frontend engineer to join me and we'd been working well together for a few months. But I wanted more team members who had more/different experience than I had. So I kept my options open. I actually interviewed at two local companies and didn't get offers from them (a wonderfully needed humbling experience).
So that gets us caught up! Maybe I'll do this again sometime!