5 things I learned coding AppExchange Apps

As most of you know, I’m not a full-time coder, but see myself as an Admin and Architect. 
Releasing 4 apps over the last couple of months was quite a challenge.  As every other AppExchange developer I talked to agreed:  “Coding apps make you a better Developer.”

Today I want to share my 5 main learnings. All of them apply not only for AppExchange development but for Salesforce development in general.

Table of Contents

Object agnostic Code is helpful and easier than thought

When writing AppExchange apps, you can’t expect anything in your customer’s Org. Therefore most of my code is object agnostic.
Once I figured out a little base code, maybe 50 lines, it was easier than expected.
I made it a habit to write most of my code object agnostic, which makes it easy to adapt and extend. Of course, performance has to be taken into account.

Make everything customizable for Admins

In theory, we know, that we should code with Admins in mind. More often than not we go the easy route and hardcode instead of making it customizable.
Developing apps, that’s not an option. The same as with Object agnostic code, once I had some boilerplate code using Field Set, Component Settings, and Custom Metadata Types is easy.
Component Configuration for my Lightning components is very intuitive for the Admin when installing the app.

Avoid bugs at all cost

In-house or even as a consultant, bugs are annoying but part of doing business. As an AppExchange developer, bugs are deadly.
Avoiding bugs is an absolute must! Even the smallest bug costs me days to fix and worst case a customer.
Since I don’t have a QA department, I try to avoid bugs on the source. I avoid complex code and modularize as much as possible. So far, served me well.

Clean UI & UX is everything

In-house or as a consultant, Users have to use whatever we give them. On the AppExchange a single appealing screenshot often makes all the difference.
Oftentimes, I have just a 5 second GIF to convey the message of my app. A clean and easy-to-read UI is even more important.
Most of the time of my apps is spent on the front end. I try to copy Salesforces style as much as possible.

Clean, clean, clean, and clean again

You wouldn’t believe how much time goes into cleaning my app’s code. After I’m done coding, the cleaning starts. 
I only touch the code of an app every few weeks, if I don’t clean now, touching the code again later will be a nightmare.
A few things I check every time.
Variables: still relevant, correctly named? Apex Method: Still relevant? Short? Simple? UI: Unnecessary classes? Proper denting?….

Honorable mentions:

– LWC is amazing!
– Embrace Source Driven development and SFDX
– Re-Use wherever possible
– Keep it simple!
– Plan before you build
– Keep the releases small

Thanks for getting me to this place:
Erol DönerlerNeha NagoriBram JulsingTim MathisEd Ralph