My journey as an Optinaut at Optimizely

Class of 2018

First, who is this guy?

My name is Son Pham, and I’m from Hanoi, Vietnam. I came to the US for college back in 2011, and Seattle, WA was my first stop for about six years. I got my Associate’s at Bellevue College, my Bachelor’s in Electrical Engineering at the University of Washington, Seattle, and I’m finishing up my Master’s in Computer Science at the Maharishi University of Management in Iowa.

How did you get into software engineering?

I wanted to study something computer related after I watched some movies and saw some hackers typing like crazy on the keyboard (I know now that it was all fake… and I myself don’t do that daily). I took some Computer Science fundamentals courses at the beginning of college but decided to major in Electrical Engineering because I wanted to create some hardware/software connected devices. Later, during my senior capstone project, I found myself coding software in Java, mostly while working at my first technical internship (which was also in Java and Python). So, I decided to switch back to doing only software. Fortunately, I landed a software engineering internship at Snapchat, and that experience confirmed to me that I wanted to work in software development.

How did you find out about Optimizely?

To be honest, like any other college student spamming applications trying to look for a job, I did the same thing on LinkedIn/Glassdoor. However, what caught my eye about Optimizely was that the job description matched my experience, I loved the product, and I loved the culture of transparency at Optimizely, where all employees know what’s going on (positive and negative) with the company. So I turned in my application for the software engineering internship (App Backend).

This is a bit off track, but I also want to mention the swift intern interview process at Optimizely. It included quick and responsive status updates from the recruiter along with a professional and supportive interview experience from the interviewers, which resulted in an offer within just a few hours after the final interview. The whole process took me two weeks due to some rescheduling, but overall everything was super smooth and fast.

You came here without a background in frontend development. How was your experience interning on the Frontend team?

Interestingly, I applied to be a backend intern and didn’t initially choose to do frontend development. I was always afraid of coding in JavaScript because I didn’t know anything about it, and I thought it would be boring and hard. I was about to ask if I could switch to a different team so that I can work on something that would be a better fit for my experience, but a second thought came to mind — maybe I should face what I was afraid of. If I can work on the backend, why can’t I work on the frontend as well? Let’s give this a try and see how it goes, I told myself, because I will have to get that experience at some point no matter what I do or where I work.

I got assigned as a Frontend Intern on the Experimentation Squad, the team that manages the Optimizely X Web and Full Stack products. At Optimizely, ADEPT (A Design, Engineering, and Product Team) is divided into different squads which are in charge of different parts of Optimizely’s products. At this point, I was really worried that I wouldn’t be able to contribute, given my lack of frontend skills. Fortunately, I got to work with Jessica Chong an incredible mentor to help me get through the storm. Jess started as an intern and was always enthusiastic and energizing in helping me — she also had some prior experience mentoring another frontend intern who was successful in getting hired at Optimizely after her internship.

To help onboard me to the frontend, my awesome manager, Asa Schachar, put me on Engineering Support Rotation. Here I got the chance to take a look at various bugs and issues that were open and needed an owner. I picked out some high priority tickets to resolve and familiarized myself with our code base and technology. Support Rotation was very helpful because I was able to use it as a stepping stone to learn and contribute at the beginning.

What’re your favorite things about working at Optimizely?

Help is always there for those who ask. So you can ask pretty much anyone anytime you bump into something or get stuck such as bugs or setting up the environment, etc. People will always be happy to answer/help you resolve the problem — just make sure you have done your homework and research first before you ask. It’s good to let the person you’re asking know what the problem is, what have you tried, and what could be the cause. Rather than trying to directly jump to the solution or the answer, talk about different approaches and discuss trade-offs — then come up with a solution yourself if you can.

I love how we live by our company values, OPTIFY NOW: .

Ownership — Take ownership of your role.

Passion — Demonstrate deep, authentic passion.

Trust — Trust and respect one another.

Integrity — Be intellectually honest and seek the truth.

Fearlessness — Take risks and experiment in order to innovate.

YTransparencY — Default to sharing everything and be candid.

Now — Have a bias for action.

OKRs — Hold yourself accountable to the highest levels of performance.

Winning — Focus on enabling our customers to win.

No cubicles or private offices no matter who you are. I mean it. All employees, regardless of position, sit next to each other across three floors. Another intern (Manan Bhalodia) sat next to our Co-Founder, Dan Siroker, and I got to sit next to my mentor and manager. I can communicate to anyone via Slack or just walk over to their desk.. Employees also get to ask the CEO any question during Show & Tell (a company gathering every Thursday to talk about company performance and updates). I also got to jam/sing with my manager and other Co-Founder, Pete Koomen, during Optimizely Jamtown (a weekly event that happens after Show & Tell where people gather and play music).

Office foods can get fancy.

Tell us about the project that you got to work on for your internship.

This summer I built the frontend UI to integrate Stats Accelerator into Optimizely X Web Multivariate Tests (MVT) using ReactJS, NuclearJS, and OUI. Stats Accelerator had rolled out about three months before in Web A/B, Web Personalization, and Full Stack A/B Tests, and it had gotten positive feedback from customers. Web MVT was the remaining part of the product where Stats Accelerator had yet to be implemented.

To ramp myself up at the beginning, I read existing pull requests to see how I other people went about building something similar and tried to get a sense of how I could build my feature. I quickly learned that building a feature was hard and that Optimizely’s code base was really big.

Because I didn’t have any idea how I should proceed, Jess helped me by telling me “Why don’t you write it down and put your thoughts together and see what you need?” The process of writing my first technical design doc gave me clear thoughts about what I needed to prepare, where I should start, which place I should put this/that component, and what the flow of the feature would be. It also gave me a chance to work with our new QA process. Jeff and Todd are the two QA Engineers that helped me a lot with preparing acceptance criteria, test plans, scheduling bug bashes, and user acceptance tests to ensure that I would build and release a bug-free feature.

With some clear directions in mind, I started building out my project while I continued to discuss the best user experience with product managers and fellow engineers. After bugging some other engineers, along with help from Jess and Derek Hammond, and provided feedback on my design doc and pull requests, I was able to push out my changes while improving my coding ability.

Tell us about your experience working with your onboarding buddy.

It was great to have a mentor when I first started at Optimizely. I was fortunate to have Jess as my mentor. We started off by setting up a weekly 1–1 meeting so that we could keep each other up to date. She helped me with setting up my environment, getting familiar with the code base, and understanding how Optimizely’s products work end to end. We sometimes did pair-programming so that she could show me how to navigate from the browser to the code base and find the components that I was looking for; she also taught me how to use the element inspector, debuggers, and other Chrome Developer Tools. She gave me guidance until I felt comfortable working on my own. She also put aside time every morning for a quick stand-up for both of us to sync up and unblock any problems — which helped me to have a productive day. Needless to say, it was awesome to have Jess as my buddy so that I could easily blend in and be a part of the team.

New hires volunteering St. Anthony Dining Room

Tell us about three things that you learned while you were here.

You can learn anything if you put your mind to it. I didn’t know anything about JavaScript or frontend development when I started, and I mentioned above that I was afraid that I couldn’t do the work. However, with the knowledge that I learned from other engineers, I was able to push out changes; and with countless support and feedback, I could commit and roll out new features.

Meet the standard, then raise the bar. It doesn’t matter where you started, what matters is how you learn and grow. It’s understandable to make mistakes, it’s good to learn from mistakes, it’s better to not repeat mistakes and learn from others, and it’s the best to share with others to improve the productivity of the team.

Prioritize. I learned how to separate and prioritize the essential. You can have a lot on your plate, and at the same time, you want to do a lot of things. However, you should identify and try to complete the highest priority tasks in a timely manner. This way, you can make concrete progress that leads to accomplishment.

What advice do you have for future Optimizely interns?

Be proactive and reach out: Try to set up weekly 1–1 with your mentor and your manager; this is especially important at the beginning, and the cadence can be revisited later on. It’s good to have a checkpoint during the week to give an update on what have you done, what you are doing, and the things on your mind. This keeps everyone on the same page.

Be open to feedback and learning: Always ask for feedback (both positive and constructive) so that you learn from it and improve on what you need to work on.

Be relaxed and don’t stress yourself out: You are here to learn and to have fun. So don’t put too much stress on yourself, because it could stress out those around you.

How have you grown as a software engineer during your time here?

I’ve grown to be a better software engineer, from coming out of college with almost zero experience to being able to build and ship features with production-level code quality. I learned what it takes to be a software engineer, what I need to get there, and what the steps are to achieve it. I’m excited to continue my journey as a full-time Software Engineer at Optimizely.

Free free to ping me at son [dot] pham [at] optimizely [dot] com for any questions, and we are HIRING NOW.

One of the weekend getaways.