From App Academy to Engineer at Zenefits – Zenefits Engineering


Most people know that Zenefits Engineering is bursting with talent, but you may not know what daily life is like as an engineer at Zenefits. Today’s post is the first in a series of personal stories written by our engineers to highlight who they are, how each of them got here, and their perspective on being part of the Zenefits engineering team.

To kick us off, Brian McGue tells his story that begins with the coding bootcamp App Academy where he built a foundation in software engineering, and continues through his evolution here from junior full-stack engineer to a key contributor on multiple engineering teams. Take it away, Brian!

The year was 2013. I was fresh out of college and had no idea what I wanted to do with my life. After toying around with a few ideas, I decided to attend a coding bootcamp, App Academy, in an attempt to become a software developer. Nine intense weeks later I started sending out applications. A lot of applications. 275 applications. Luckily, my resume impressed someone enough to be considered for an entry-level engineering position at a small startup. It was called Zenefits.

I had applied for a more experienced role, but Zenefits didn’t call me until a junior role became available. Once I heard from them, the entire interview and hiring process took less than a week. I had an initial phone screen on a Tuesday. We discussed the things I had learned at App Academy and my personal project at the time. I created a visual representation of a Red Black Tree. I was actually pretty happy with this project because it involved learning about Red Black Trees on my own, something a normal CS grad would likely learn in the classroom. It also involved learning about promises in Javascript (Zenefits has some blog posts about promises! Part 1 & Part 2).  My hope was this would impress companies looking for entry-level full stack developers because it shows my interest and some level of skill across most of the entire stack.

The next day, I received an email asking me to come to the office on Friday for an on-site interview.

“If all goes well, we will likely offer you the job on the spot. We move pretty fast… :)”

On Friday, I went into the office. My interview was non-standard to say the least.  Laks Srini, our CTO, sat me down at the desk of someone who was out that day and gave me a project to complete. He told me that if I ran into any issues, I should go to his desk and we’d work together to get back on track. The project involved interacting with an API, which was sort of nerve racking because I had to spend the first hour of my four-hour interview reading the API documentation before I could type a single line of code. Eventually I got things going, and while Laks helped me fix one or two bugs, I was mostly left alone to do my work.  

Four hours in, I wasn’t really happy with my progress, so I did my best to blend in and quietly kept working. My disguise must have worked, because Laks let me continue until I ran into another problem I couldn’t figure out – an hour and a half later. Laks helped me solve the issue, and I offered to keep working. He was hungry, though, so I explained my code to another engineer before four of us went to the local bar for a bite to eat. We sat around a picnic table, enjoying fries and beer while talking about my background. They asked about my experience at App Academy, and we discussed the culture of coding bootcamps in general.

Before I left, Laks asked if I had any questions about Zenefits or the position. I told them I was curious as to what I would be doing on a day to day basis if I got the job. After a little bit of silence, Laks spoke up: “Trust us… you won’t be bored.”

On my walk home, I received a phone call asking if I could start the following Monday.

When I started, Zenefits was a small office in the Mission district of San Francisco. The engineers sat in a small room called the “dev cave.” Most of my first projects involved working closely with the Marketing team, so I spent most of my time sitting with them.  This is actually something Zenefits engineers do a lot, we sit with the teams we work with closely.  This approach is particularly useful when we’re building functionality for internal use.  Understanding how Zenefits employees interact with the current tools and processes can give insight into what are the most important features to build in your next project.  This past fall, I even got the chance to travel with three or four other engineers to our Scottsdale, AZ offices to sit and work with people from different departments.

We’ve always been pressed for space, so back then I shared a desk with our VP of marketing. Since I wasn’t sitting with the other engineers, I made a lot of technical decisions on my own. Even when I did ask the other engineers how to do something, they didn’t always have a definitive answer. Instead, the answer was usually something like: “Here are two options, choose whichever one makes sense to you.” It’s funny looking back at it now, because I still get these types of answers all the time. I’m often forced to do the research and make decisions for myself, which can be terrifying, but it also makes me more confident in my technical abilities. That’s not to say my stupid decisions don’t get me called out – that happens all the time – but I’m able to make my own choices and expected to fix them if they’re wrong.

Since those early days, I’ve had the chance to explore new areas of the codebase and take on new projects. I remember being slightly nervous when I first told my manager that I wanted to try something new, but he and everyone else were very encouraging. I drew out my plan to switch roles, which Laks likes to refer to as my Fourteen Point plan, alluding to President Woodrow Wilson’s Fourteen Points. I was told that I just needed to make sure my existing work was taken care of or handled by another engineer. Even after starting a new project, though, engineers at Zenefits are expected to support their previous projects. Sometimes this means maintaining your code and fixing any new bugs, and sometimes it means reviewing the new owner’s changes to your old code, but you never completely leave your old projects. Either way, I’ve found that Zenefits really praises engineers who take on side projects and find solutions to problems.

These days I’m working on a new client communication and notification framework that allows Zenefits’ operations departments to quickly create notifications for clients that appear directly on the user’s dashboard. In addition, this new framework gives developers the ability to generate the same notifications and emails automatically through code. So far, it’s already produced some interesting challenges across the entirety of the stack, and I recently was able to participate in a design meeting that highlights just how much input engineers have in product design here.

In this three-hour design sprint we had every designer at Zenefits, our PM for the project, and the two engineers who are currently building out the framework.  After an initial explanation of the product, everyone was handed a piece of paper and told to take five minutes to draw any and all ideas we could possibly think of for the UX/UI.  This first round was supposed to make us draw our original, untainted ideas about the product.  Afterwards, we taped our drawings to the wall and each person took a minute or so to explain his or her ideas.  After hearing every idea, we went through another round of drawing.  This time we were supposed to draw fewer pages, but incorporate our favorite ideas from others’ drawings.

After a second round of presentations, everyone received stickers which we used to place on the features we found particularly powerful.  At the end, we counted up the highest rated design aspects, and now our designer is working on some new mocks that will hopefully be a combination of the best of everything we were able to produce.

I really enjoyed being able to do something a little different than what I was used to, and I was very pleased that some of my ideas (though not very well conveyed through my drawings) were highly rated.  I know we stole this design sprint idea from many companies before us, but it was a really neat process and I’m happy I was able to participate.

“Trust us… you won’t be bored.”  It seems really ominous.  To be honest though, that could be the best thing you could ask for as a junior developer. The idea of not really knowing what was going to happen next really interested me when I first started at Zenefits, and it hasn’t really let up.  As I’m writing this post, I’m sitting in my 16th desk here, and by the time this is posted to the Zenefits Engineering Blog, I will have already settled down in my 17th desk.  We’ve moved around so much, but we have to because we keep growing.  Like hermit crabs, Zenefits engineers often outgrow their shells, but we’re encouraged to seek out new challenges, new shells, new ways to make a real impact. In the time I’ve been here, the company has changed locations more than once and now we have an entire floor for engineering, product, and design. But we’re still young with plenty of room to grow – not just in number of people, but with regards to building newer and better products, and improving on our existing products. As an engineer, you couldn’t ask for a better place to grow your career and make a real impact on a real problem.

Brian McGue (left) & Sujay Suresh (right). Photo-cred: Manpreet Khanna

– Brian McGue

Thanks to Leaf Pell for copy-writing and James Hsi for reviewing drafts of this.



Source link