Netflix has more than 50 open source projects

Register or Login to like
Register or Login to like keynote address

POSSCON, a technical conference, is just around the corner. Given the speaker lineup and talk topics, the event again promises to be one of the most interesting open tech and open web conferences of the year. The list of speakers is long and each one is a master in their field. I got in touch with one, Semmy Purewal of Netflix, to find out more about the culture there, his favorite open source tools, and the impact of open source on his career.

Semmy Purewal Netflix headshotSemmy is a JavaScript veteran with more than a decade of experience working as a consultant where he worked with a diverse group of clients including startups, nonprofits, and research labs. Semmy also taught computer science during that period of his career and is keen on helping people onboard the JavaScript ship. He even wrote a book about it and made some cool videos with O'Reilly. Today, Semmy is a software engineer for Netflix in San Jose, California.

Read more in this interview.

You have been working for Netflix for more than a year now as a software engineer. How interested in open source is everyone?

Netflix has an incredible open source culture. To get a sense of what we do in open source, take a look at our GitHub page. We've released over 50 open source projects, with several more in the pipeline. We also host regular public NetflixOSS meetups in the Bay Area.

JavaScript is one of your technical fortes. What are the available open source JavaScript libraries that you are most fond of? Why?

My team has become very fond of an open source tool called Browserify. It was originally designed to allow the Node.js modules to be used in the browser, but we've leveraged it as the primary component in our build process. Over the last year, it has helped us to turn our monolithic code into a set of independent, maintainable modules. Previously, we were concatenating a big file and maintaining subsystem independence using namespaces, so this has been a big change for us.

Obviously, I'm also a big fan of Node.js. I really like the culture and the pace of innovation in the Node community. I started working in JavaScript a few years before Node hit the scene, so I've seen a massive shift in the way JavaScript projects are engineered and thought about. Pre-Node JavaScript development and post-Node JavaScript development is like night and day.

My team also uses underscore (or lodash) regularly which gives us some additional functional programming tooling on top of the already existing JavaScript patterns, and the Q library which gives us an implementation of promises. Our User Interface (UI) engineering teams have largely adopted RxJS (JavaScript reactive extensions) for asynchronous programming, and they are having a lot of success with it.

You were a freelancer for a long period in your career. Do you think freelancing helps in developing a knack for contributing to open source software (OSS)?

I'm not sure that my experience as a freelancer helped too much with my OSS contributions. I found that in freelancing, I was spending far more time working directly with clients than I was working with the OSS community. But, freelancing helped me learn to more effectively leverage open source software. I didn't want to reinvent the wheel on every project, so it was helpful to have a set of tools that I could reuse regularly.

Can you give us a glimpse of what you'll cover in your talk at POSSCON?

Sure. I alluded to the fact earlier that we've transitioned into a more Node.js development workflow by separating our code into small independent modules. I'll talk about how we've done that gradually and some of the engineering challenges that came along with it. In addition, I'll talk a bit about what my team does by giving an overview on how we create the Netflix experience on a diverse ecosystem of game consoles, smart TVs, and set-top boxes.

What advice would you give to people interested in getting started in computer programming? Are there any easy entry points?

I think taking a Computer Science (CS) course at a local college is a nice, structured way to get a solid background in computer programming. I've also found that over the last few years that opinion has become more controversial, but I think I understand why. I think the argument goes something like this: a CS program won't teach a lot of skills that you'll use in your day-to-day programming life, so if your goal is to be a professional software developer you're better off learning on your own, or through experience, or from immersive bootcamp program. But my experience has been largely the opposite. I use a lot of formal CS training in my day-to-day work, so I still think traditional concepts like data structures and algorithms are valuable.

Of course, immersive bootcamps and on-the-job training are useful for people too, but I think everyone who plans to be a software developer can benefit from a stronger CS background.

Outside of taking classes in a structured environment, I still think the best way to get good at something is to practice it. And with programming I really like the idea of memorizing a lot of core structures when you're first starting out. If you don't have to look up the structure of a "for" loop then you'll be able to focus on the actual problem you're trying to solve instead of grappling with the syntax of the language.

I've written a bit about this topic on O'Reilly's blog as well.

Speaker Interview

This article is part of the Speaker Interview Series for POSSCON 2015. The Palmetto Open Source Conference is a technical conference focused on open technology and the open web. POSSCON takes place in Columbia, SC from April 14-15, 2015..

Nitish is a software developer and open source enthusiast. He loves to read and explore anything open source. In his free time, he likes to read motivational books. He is currently working for Minio - an open source object storage server, compatible with AWS S3 API. You can follow him on twitter @nitisht_.

Comments are closed.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.