Photoshop professionals and developers - the Great Divide

Hi. I am having the most frustrating, difficult, painful time becoming even nearly proficient in plugin development for Photoshop.

I am very good at using PS to do image manipulation in ways it was never intended for, pushing it well past it’s boundaries. For decades. I have things I NEED to make.

I have a very modest background in programming languages and web dev. All of the “getting started” documentation for UXP says that should be enough.

But it’s just not the case. I’m calling foul.

We literally need a UXP roadmap for dummies. Where to start, really - don’t just point a link to the Mozilla edu site. There has been so much time wasted just trying to know what I didn’t know. And now that I know what I don’t know, how and where to get the reliable material.

I don’t have time to go back to school, learn to be a full-stack developer, and return to plugins for Photoshop in 5 years.

Believe me, I don’t expect this to be easy.

@Jarda has created the most fantastic tools to support non-developers. But do we continue to rely on batchplay?

@DavideBarranca has created the most incredible instruction for UXP development. But where do we find the instruction to bring us to the level of functioning in the environment?

The distance between the working photoshop professionals and developers seems as wide today as it has ever been. The plugins I see on the marketplace are mostly developer projects. Virtually nothing substantial from a professional workflow perspective.

You might be thinking, “Well buddy, just go back to retouching then.”

I get ya.

But wouldn’t it be a better world if we could bridge that divide?

1 Like

Are you suggesting that retouchers should become developers and developers become retouchers? :slight_smile: Also, don’t search for plugins only on marketplace - lots of pro retouch plugins simply are not there, but sold on dedicated websites. If you really are familiar with programming languages and know JS, then Davides UXP video series should be a great kickstart. If not, you could get his book on UXP with React. At least that’s what clicked for me to develop my first ever React project. Of course it took a lot of other tutorials on the web, but I’d say it was worth it

1 Like

I’m a pro-retoucher of twenty years who has bridged that divide and I’ll be honest, it took me about 2 years to feel confident and 4+ years to become truly proficient with JavaScript.

I made the mistake of trying to learn JS via CEP, rather than learning JS first, and although UXP and CEP are very different beasts I think the same would still be true.
Whilst UXP isn’t generally that complicated, it’s still a significant jump from basic JS, especially if (like I was) you’re not very familiar with ES6 JS - in particular asynchronous programming, which is notoriously hard to get a handle on.

I found this course to be extremely helpful and it gave me the core skills I needed to build with UXP.

Don’t be shy about asking for help and guidance here - I’m in a number of forums for similar niche programming subjects and this is by far the most helpful and supportive!

3 Likes

Thanks! Yes, I have watched all Davides videos and purchased his UXP course. I naively thought, knowing some fundamentals of vanilla js, I could learn to make plugins via these materials plus the docs and support on the web. The overlapping complexity of js, libraries, UXP, the dev environment, etc (regular expressions wtf?!) was something I was very unprepared for.

It’s taken this long to just get all that figured out. Hence the, I at least now know what I don’t know.

I wish that would have been laid out much more clearly in the getting started materials. And preferably with a good roadmap.

@Timothy_Bennett thanks - that’s kinda the realization I made over the last 6 months. I kept running into walls which would take hours to solve, and they were just stupid fundamental concepts I’d missed.

And thanks, I have been shy because I’ve been feeling pretty dumb at every turn. I was proud of myself yesterday just for solving how to update my test plugin to API 2 and implement executeAsModal.

So now I’m sort of jumping back and forth between straight-up javascript tutorials and trying to make things work in UXP. When I want to punch my computer I switch back to just learning js & ES6.

I’ve pretty much swallowed whatever pride I had left, so expect to see lots of infantile questions on the forum!

Thanks for your support and reference to the course.

1 Like

I empathise deeply - I’ve been on a bit of an odyssey teaching myself to code over the last 5 years and as you say, half the struggle is getting to the apex of a pretty steep learning curve, just to find that you’ve really just got to place where you can conceptually realise everything you’ve yet to learn!
It’s a really interesting kind of stupid that learning to code on your own can make you feel because it’s all plainly there right in front of you, other people who can barely string a sentence together on Stack Overflow have managed it, but you’re sitting there unable to fit the jigsaw pieces together. I’ve literally cried to my wife about how dumb I felt at times!
But this passes; whilst I regularly encounter code that I just can’t get working I at least now have the tools to start working out what’s not working so I can better search for a solution or phrase a meaningful question on a forum.

For me, the jump from the vanilla JS skills I’d learnt 25 years ago into the module based world of ES6 was huge, and until I worked through that JS course I linked and got a solid conceptual understanding of how JS actually works, async code, functional programming, how to set up a development environment, and working with the JS ecosystem of packages I was floundering and pretty lost despite having previously built a pretty complex CEP plugin that managed the retouching workflow and asset management for a global e-commerce company.
Because I’d learnt CEP rather than JS, I’d basically really just learnt how to tell Photoshop to iterate through a glorified Action with branching logic (ok, it was a bit more complicated than that, but it was literally a single JS file with 6k lines of code spread over three functions! :face_vomiting:).
When UXP came along I felt like I’d wasted the previous 3 years because I couldn’t get anything to work. I took a step back, spent a month or so doing a bit of that course every evening and when I came back to UXP it was a completely different experience and I built and sold a plugin within a month. Some of my early posts in this very forum are testament to how lost I was!

I would really recommend putting UXP to one side and just focussing on ES6 JS first, it’ll pay huge dividends. I guarantee that you’ll also be inordinately proud of all the classic learning to code apps like to-do lists that you’ll build!

I think I can safely speak for all the regular contributors of help on this forum that there’s no question too stupid as long as you show that you’ve at least tried to solve it yourself first! I’m always much more inclined to respond to a question where someone has demonstrated that and is humble enough to put their janky code up for scrutiny - it also is usually much easier to help them as it’s easier to identify what knowledge they’re lacking.

2 Likes

I’ll also add that that course is really very good once you get past the teacher’s somewhat robotic delivery. I’ve done a lot of online courses and his is one of the very best I’ve encountered. I’m also an ex-teacher and I very much appreciated his understanding of how to teach and solidify knowledge.
He also doesn’t do any of that annoying wiggling the mouse and scrolling all the time like most code teachers do!
If Udemy isn’t offering it to you at a discount as a new member I’d recommend signing up but then just leaving it in your cart - they come back to you with a massive discount pretty quickly. Once you’re registered they also offer you a discount every month - I’ve never paid more than about £15 for a course.

1 Like

Thanks again @Timothy_Bennett !! This is all so comforting and informative! I wish I’d read this 6 months ago. So here’s to hoping some other noob with good ideas and no skill to execute stumbles on this discussion!

Copy that - I’m going to follow your recommendations word for word. Already purchased the course at $25. It looks great. I love how he has provided the pathways. I had been using some other free course resources and I can tell this will be much better.

I’m in the same boat - over the last 2 years I worked with a developer to create 3 plugins in CEP. Even though cheap relatively speaking, expensive out of my own pocket. I came to realize I needed to just buckle down and get started porting, both for costs sake but also so I can just try out new ideas without relying on others.

I love seeing things work and making photoshop dance.

Thanks again, I’ll only ask questions that I really can’t figure out, aren’t answered elsewhere, and can help others feeling that unique kind of stupid learning to code brings!

1 Like

I don’t want to sound like the fifth Yorkshireman (ref), but here’s my take on the topic of “There isn’t but a crooked path towards PS development enlightenment—YET” :slight_smile:

As I’m an old chap, I started self-teaching myself JavaScript with the goal of Photoshop scripting in my twenties on a book called “JavaScript: the definitive guide” (the one with the rhino) which was marketed as covering JavaScript 1.5 (sad LOL).
Very bad choice, but back then there wasn’t better alternatives than generic old books made of trees. Besides having difficulties moving my first steps with coding, I couldn’t grasp this DOM concept, mostly because learning JS in the context of a Browser and trying to apply this precarious knowledge onto the Photoshop DOM was overwhelming to my younger self.
It may sound silly now, but in a pre-Node.js era, a JS engine independent to, and disconnected from a Browser environment was a very novel concept.

Forums were a godsend though (lovely communities), but my first attempts to build something more complex crashed into Flash panels. God, was I lost then. I had to figure out this typed language, the Flex SDK, and at the same time the integration between that environment and the host application. This was, has always been, and still IMHO is, the main torment for anyone who’s trying to approach Adobe extensibility: the need to learn “the fancy thing that is trendy at the moment” (ExtendScript, ActionScript, JavaScript) plus the integration system (ScriptUI, CSXS, CEP, UXP) at the same time. Unless you are very familiar with at least one item of the pair (say, JS), you’re gonna have hard times figuring out your learning path in what looks like a prerequisites-loop-from-hell.
Do you want to do this? You’ve got to know that first. Wait, that? Well, there’s this other thing that it’s build upon. Go learn it and come back (ad lib.)

Anyway, as soon as I got my toy project done in Flash, one Steve Jobs wrote a certain letter and presto, CEP landed. HTML, CSS and JS (which are possibly now taught in preschool) became my nightly companions—I’ve always been a PS retoucher, so I was spending my days using PS instead of programming it.
Things were slightly easier then, because I had a decent grasp of ExtendScript, and my only worry was to conquer CEP (Chromium + Node.js, two techs at the price of one). It took me a while, but by Jove I eventually got it.

UXP came along, and I was already familiar with the notion of environment (UXP) API vs. host application (PS) API, and the need to integrate them. Same old riff, you’ve got to learn at least two things (if not more, in case you aren’t fluent with the languages involved). At this stage I felt more comfortable, and I was able to deal with it if not effortlessly, at least with a manageable amount of work. Still, the feeling is that one is constantly circling over the same concepts like a vulture, hopefully with a deeper understanding each time.
Please Adobe don’t change anytime soon because I’m now in the descending part of my brain’s performance curve :grin:

Re: Documentation.
As it’s clear, I tried to do my best to provide the kind of learning material I wish I had when I started. The tradeoff for me is that I’m not full-time on writing (plus I’m slow, as a non-native speaker proofreading takes more time, etc.) and I had to make choices. As an independent author, my reach is limited: I’ve done UXP/React, I’d like to work on UXP/JS. I did PS Scripting (ExtendScript), I’d like to rewrite a second edition (modern JS).
The official documentation has improved over the years, and the people in charge of it are truly committed, but it’s still lacking in providing learning paths, and more generally speaking, the kind of glue that infuses sense to all the scattered parts and turns them into a bigger something that has a master plan behind. Or at least this would be my idea of documentation.

It goes without saying that I’d be glad—and I’ve offered—to help; although, I don’t know if you’ve noticed, we’re living a post-pandemic, hot war, high interest rates, mass layoffs, spending cut, big tech reset era, so it might not be the best of times to get resources for such things.

5 Likes

@DavideBarranca you are definitely a poet as well as scholar. And warrior too.

I’m just grateful to hear these stories. From you and @Timothy_Bennett , they are validating and inspiring. They are part of the glue, actually. They are what’s going to keep me (and others) in the game.

Re: learning paths - yep that’s what would help so immensely. What to focus on first, then next. What to forget about. For newer learners, burning months just figuring out what the landscape actually is will kill the spirit. It’s almost killed mine a few times.

Actually, the Udemy course @Timothy_Bennett reco’d really does a great job of providing high-altitude view of learning paths for the varying goals of people learning javascript.

I LOL’d at your reference to the certain letter.

History trivia for anyone reading (no fair Googling): What was the original name of Flash before Macromedia acquired it?

I :heart: all you guys for your hospitality.

Sincere thanks.

1 Like

Yeah, I do agree with you here.

I feel every word you wrote man because I’ve felt same at some point, it was a really steep curve to learn to program when I started 5 years ago. Davide’s HTML 5 CEP Panels book helped me to get where I wanted plus I had to search the entire web for answers and learn to read documentation, but sometimes documentation is not enough. I had a great udemy course to learn to build my site that changed my life forever, where I learned front and end with pure vanilla JS which made me understand the principles of programming in a very deep way.

Nevertheless, my path to learning to become a plugin developer I really is in high percentage greatful to Davide’s blog and Courses, but there’s a lot that have to be learned by ourselves.

Funny thing is that by learning to develop for UXP have made me understand very good how adynschronous and synchronous code works. I used to don’t understand promises or await words and async functions, now with my plugin migration as an objetive it is easier to understand it.

We as developers spend more time reading than coding, and that is a truth know by any coder out there, it is the reality and we don’t just learn to code, but we wire our brains to be a problem solver, and find solutions everywhere and don’t give up on the road even it is harder than ever, community of developers is wait makes developers to be great as well, so I’m very thankful this community exists, I think without this CreativeCloudDevs community it would make things extremely harder to get where I want to get, so I’m very thankful about this place and people who are participating and helping a lot like @DavideBarranca @Karmalakas @Jarda and a lot more.

You don’t know how many times it goes through my mind that I want to quit because things gets difficult and is hard af to find an answer, but the spirit of a developer is to be persistent enough to find the answer by trying different ways of perceiving the problem. Migrating my UXP plugins at first was a pain in the @$$, now I’m excited AF to see all the capabilities of this new era and more happy that Adobe is willing to hear us to make the API’s a better software and update the environment so we can play more easily and have more fun while we make a living of this.

I feel the same as @Timothy_Bennett , I think we have kind of the same road! Deffinitelly being a retouched / compositing artists before than being a developer is a game changer, because you are mixing your both sides of the brain and the plugins we can create with that perspective is just INSANE.

@sefmccullough We have felt so may times as you feel now my brother, resist the unknown and embrace failure because this environment is full of joy when you become excited to learn a new technology and understand that at the begining is going ot be hard af, even do you are an experimented developer.

We are here all to help us and grow together, that is what makes a great community!

4 Likes