Senior Software Engineer
Place of Work:
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?
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.
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?
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?
- 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.