C++ at Adobe with Sean Parent, senior principal scientist

Sean Parent senior principal scientist at Adobe

With more than 25 combined years at Adobe, Sean Parent and his team work to expand the reach of Photoshop, all the while reinventing the professional creative software product that touches millions of customers across the world. You can thank his team for implementing innovative features and capabilities, such as evolving Photoshop from a desktop product to a multi-surface platform, implementing AI capabilities, and simplifying the product for new users. There always seems to be an infinite number of unique challenges to take on. And what’s the secret to making this happen? It’s all in the code. Learn how Sean and his team are using C++ to bring Photoshop to new heights in this Q&A.

How does Adobe apply C++ in its products today?

Adobe’s use of C++ is extensive. Our desktop and mobile products are written almost entirely in C++.

C++ powers our various imaging systems and codecs and is used for performance-critical components server-side and, with Web Assembly, is powering more of our browser experiences.

What are the benefits of using C++ compared to other languages?

The two primary benefits are reach and performance.

C++ runs everywhere – Mac, Windows, Linux, iOS, Android, and in browser. It gives you access to the hardware and OS on all platforms. It is well supported and standardized, with few discrepancies between implementations. C++ allows us to build high-performance libraries that can be used anywhere.

As energy costs increasingly drive the costs of computing and the limits of performance, the efficiency of C++ has drawn developers from all domains. C++ is at the forefront of computing and research.

What are some of the innovations that Adobe is doing with C++?

We are always looking at better ways to get more out of existing and new hardware. That means increasing use of concurrency and utilizing low-overhead constructs, like coroutines and continuations, and looking at new models for structuring systems to scale from one-to-many cores. We are experimenting with ways to unify our computational environment between CPU and GPU and better ways to bridge C++ between other languages and runtimes (Swift and Objective-C on iOS, Kotlin on Android, TypeScript in the browser, Java on the server, and so on). We have been developing a system for documenting C++ libraries, known as Hyde, and we collaborate with MIT and Google on the Halide language. Halide is a C++ DSL (Domain Specific Language) for image processing that can run on a CPU using SIMD instructions and GPUs. Much of the lower-level image processing code in Photoshop is now written in Halide. There is so much going on in the C++ domain – it is staggering.

“After more than 30 years, you would think Photoshop would be complete, but there is a constant desire to reinvent the product.”

What excites you most about working on the Photoshop team?

Two things; the people and the opportunities. I know it is a cliché – but the Photoshop team is a family. Anyone who has ever worked on Photoshop is forever a part of the family, and the caring extends beyond the workplace.

After more than 30 years, you would think Photoshop would be complete, but there is a constant desire to reinvent the product. Extending from a desktop product to a multi-surface platform, pushing image processing and new AI capabilities, improving the core subsystems to scale better on new hardware and running in the browser, simplifying the product for new users adding fine controls for experts.

There always seems to be an infinite number of unique challenges to take on.

Members of the Adobe Photoshop team.

Why is Adobe the place for you if you develop with C++?

Whether your thing is squeezing the last cycle out of a piece of code, architecting libraries at scale, or working with concurrent systems on a wide variety of hardware – there is a position where you can do your thing and work with an internal community.

We create tools so that others can be creative – it does not get better than that.

Outside of writing code, Parent has a passion for photography and can often be found at the beach trying to get that perfect shot of a sunset or the fog lifting over a pier. As an avid photographer, Parent has the unique opportunity to work on projects that he uses directly in Photoshop.

Any tips for someone considering a role in C++ at Adobe?

Come and join us! The amount of work to be done can be a bit overwhelming, especially to those just joining us. My experience is the teams are open to new ideas and new approaches. If you are someone who wants to roll up your sleeves and get to work, this is the place.