Blog Post

Interview with John Loy

Job Title:

Senior Software Engineer

Place of Work: 

DreamWorks Animation

Industry your place of work is in: 

I build custom web-based software for internal use at DreamWorks Animation in their animation production pipeline. Example applications include a 3D model/assets catalog browser and software launching console.

What got you into Web Design/Development?

I studied graphic design and illustration, which landed me an entry-level position at a design firm out of college in 1998. While there, I was tasked with basic production work building websites for clients like Monticello and the University of Virginia. This mostly involved rudimentary HTML, but sparked a fire in me to begin investigating coding. JavaScript was in its infancy, and Perl, Java, a very nascent PHP, and Cold Fusion were the only games in town for server-side development. Over the next decade, through two different jobs at the University of Virginia as Webmaster (a dying job title these days), I refashioned my identity from designer to developer by pursuing coding more intensely, particularly with PHP, JavaScript, and CSS. Forays followed professionally developing with Ruby and Rails and ultimately Node and modern client-side JavaScript in all its glorious vastness.  

What does a typical day or week look like for you? What sort of things do you do?

On a typical day, I spend most of my time using Git, GitHub, Visual Studio Code, the Unix/Linux command line (Bash and Zsh shells), Node, and browser devtools. Of course, there are a number of other tools as well, like design software, an HTTP proxy, etc., but these are the staples. 

MDN (Mozilla Developer Network) is my copilot, being the closest thing the web platform, which primarily comprises HTTP, HTML, CSS, browser JS APIs, and SVG, has to an official authoritative reference. I find myself referencing MDN multiple times a day.

Git is used for source control, and is ubiquitous in the software industry for most types of software development. Also very common is the use of GitHub as a collaborative tool for teams using Git. This has been the case for all of my jobs since 2009. One of the key collaborative functions conducted on GitHub is team review of code submitted for potential integration with the stable software build, known as a “pull request”, or “PR”. Nearly every contribution I make at work flows through PRs, and I am tasked several times a week with reviewing the contributions of others.

Collaboration on my team also occurs through ticketing software, typically JIRA, design prototyping software, often Figma these days, basic office documents, normally using Google’s G Suite, and pair programming, conducted over video calls, chat, and through “live share” editing sessions in Visual Studio Code.

What types of web technologies do you work with most often?

The apps on which I’ve worked over the past 7 or so years have nearly all been authored in TypeScript, using React as the front-end (and occasionally full-stack) framework, and Webpack as the build tool. A cloud or app-dev platform, like Heroku, Amazon Web Services, Azure, or Google Cloud commonly drives the back-end, as they specialize in securely integrating various hosting needs, like API endpoint gateways, databases, storage, and turn-key authentication services. Though Node is often used somewhere in the back-end, it’s rarely done so in an end-user-facing way, or at least as a single HTTP server. A best practice where Node is concerned is to front it with a more robust HTTP server, like NginX or Apache, and either cluster it using container (Docker) orchestration or run it inside a cloud function, like AWS Lambda. 

In recent years, I’ve dabbled in and evangelized to my teams the virtues of the so-called “Jamstack” in conjunction with ES modules and Web Components. This app architecture paradigm features static pre-rendering of sites and apps to HTML as much as possible, making deployment and hosting simpler, and improving site load performance. ES modules (aka JavaScript modules), for certain small-to-medium sites and apps, make a build step with something like Webpack optional, simplifying the developer experience. Web Components lean on browser capabilities to do much of what only frameworks could do several years ago. This reduces the overall amount of client-side code shipped with a site or app. 

What is your favorite thing about your job?

I love seeing a UX design vision come to life with interactivity. The web platform is so mature and rich with features and APIs these days, just about anything you can imagine can be built upon it. The same could be said for other software development platforms, but what’s particularly unique to the web is how quickly, simply, and inexpensively one can iterate on functionality and put a working product in front of many potential users.

What do you wish you could change about your job?

The web development ecosystem of tools, techniques, browser APIs, and potential areas of specialization has grown massively during my nearly 25 year career. On the one hand this provides constant opportunities for professional growth and fresh experiences. On the other hand, it has unfortunately led to burn out for me on multiple occasions. Web developers, and JavaScript developers in particular, have a penchant for constantly reinventing and overcomplicating solutions, as well as celebrating that behavior as progress. I really wish the pace of change would slow down to allow me a chance to catch up, and to separate what’s worth learning from what’s not.

Where do you see your section of the web development/design industry going?

I don’t think I really have a “section”, so this is hard to answer! 

Overall, I see web development diverging pretty strongly in two directions. Technologies like WebAssembly and WebGL make really sophisticated software, like Figma, possible and performant. This is not your grandparents’ world wide web. The learning curve to develop such software is very steep. In contrast, a number of web APIs and features have emerged in recent years that make web development potential much simpler and lighter than it’s been in quite a while. These include things like CSS Grid, CSS custom properties, Web Components, ES modules, and the Web Animation API. 

What technology and/or skill do you wish you learned before you entered the industry?

Math. Math. Math. Specifically, linear algebra and trigonometry, as these are very useful in animation.

What are you looking to learn or what skill are you looking to build next?

Would it surprise you to know I’m looking to learn web graphics APIs and animation better? I’m dedicating this year to finally learning WebGL, 3D, and animation. This means also learning the Canvas API, along with a number of related things like typed arrays in JS, GLSL, which is the WebGL shader language, and Three.js, which is the industry-favored library abstraction over WebGL.

What question should I have asked that I didn’t?

Q) What would you have done differently in the course of your career?

A) Learned how to write shell scripts and use the Vim editor (or Emacs) much sooner. Seriously, yes. Understanding the Bash shell and Vim have been immeasurably beneficial since I finally hunkered down to learn them some years ago. They’ve been around since I started web development, though, so I could have learned them much sooner.

What would you tell someone to do who’s looking to get into the industry? How should they best prepare themselves?

The practice of web development has evolved into a number of specialized roles in the workplace, each with wide and deep realms of requisite knowledge. Being a “Web Developer” used to mean writing HTML, CSS, and JavaScript for a browser environment, but not so much these days, as these technologies can now be used for development targeting a wide range of environments. For employability, but also for your sanity, I recommend choosing one of the specializations that aligns with your interests and going all-in on it, rather than trying to learn a little about everything (impossible, really). Examples of some of the specialized flavors of web development include:

  • Front-end (HTML, CSS, and JavaScript browser APIs; traditional websites)
  • Back-end (Node/Java/Go/PHP, servers, databases, containers/Docker, cloud platform compute, data, storage, etc. with AWS, Azure, Google Cloud)
  • App (front-end skills, frameworks like React/Vue/Angular/Svelte, Progressive Web App APIs, WebAssembly, Electron)
  • Full-stack (front-end and back-end skills; WARNING: Unless you are a magical unicorn, it’s very difficult to do this well, because it’s so nebulous and demanding)
  • UX-focused (CSS expert, accessibility, usability, responsive)
  • Creative (web graphics with CSS, SVG, Canvas, WebGL; animation, datavis, games, 3D)
  • Stack/platform/framework expert (ex: LAMP, WordPress, AWS, React, Rails/Ruby, Spring/Java)
  • Quality-focused and metric-driven (SEO, performance, security, analytics)
  • Media (web audio and video APIs, WebRTC; realtime, streaming)

And the list doesn’t end there, because web technologies have also found their way into toolchains for developing robotics, IoT [Internet of Things], voice assistants like Alexa and Google Home, AI/ML [Artificial Intelligence/Machine Learning], distributed apps utilizing blockchain, browser extensions, and many more things!

Anything else you’d like to tell future designers and developers?

Use “the platform” as much as possible, because it endures while frameworks rise and fall.

Is there a way people can get in contact with you to ask questions etc.?

Despite my years working to help build the web, my online presence is woefully lacking, but feel free to get in touch with me at loy[dot]john[at]gmail[dot]com

Last Question: If you had to be a zombie and you had to eat someone’s brains, whose would it be and why?

Leonardo da Vinci, because his brain would no doubt be very filling.