One of the things any force.com developer working with Salesforce CRM side of things will quickly learn, is that there is always something else to learn. Sure, many of the platforms out there evolve and change rapidly, but as a developer who spends the majority of their time cutting Apexcode, writing formulae and creating Visualforce pages, you definitely have your work cut out. Not only do you need to keep pace with three releases a year which add new development features, you also need to keep track of everything else on offer. One day one of your users will come up with a requirement involving some aspect of the system you've only glanced at previously, and it helps to know at least a little about such things.
Today, for me, was one of those days, and in this case it even involved something I had done once before (a trigger on lead conversion), but still presented a problem. So what can you do to make keeping up that bit easier?
Head To Desk
Right now, anybody who's worked on the CRM side of the system is probably thinking something along the lines of "what's the big problem? Write a trigger that fires on lead update, job's a good 'un.". Sure, me too. In fact, the trigger was already working perfectly in the sandbox, and all I needed to do was move it to production now that the green light was glowing — the snag was that it just didn't work in the production org. Checking the debug logs confirmed my suspicions, it wasn't even being fired. I checked it had deployed correctly, I checked it was active, and I checked that it was valid: all good. I deployed again for the sake of my own sanity: nadda.
Taking stock of the situation, I considered the fact that I was dealing with one of the core CRM objects, something that forms an essential part of the sales process, and if there's one thing to be said for the Salesforce CRM, it's that the sales process in place is open to customisation. On a hunch I looked to see if there were Lead specific settings, and as it turns out there are; rather cunningly, they're called "Lead Settings". The eagle-eyed amongst you (or, all of you) will immediately see from the screenshot below what I had to do to fix this one. I'm sure I've encountered these settings in the past, but there's so many things to check that the obvious cause is often overlooked — a trait, in my experience, often found amongst developers.
The source of misery during today's escapades
Frankly, staying on top of all of the features offered by the platform, from development through to partner portal administration, is an endeavour likely to drive you insane; as a developer, concentrate on having an in-depth knowledge of apex, visualforce and the things that you will be dealing with 90% of the time. Once you've got that sorted, then ensure that you have a broad knowledge of the CRM features, the portal features and related products — more often than just knowing that a feature exists is enough to enable you to make the correct decisions and/or recommendations to your users. Think of it as lazy loading for knowledge: when somebody enquires about how they can achieve a goal and you've heard of a feature that might help, that is the perfect time to improve your understanding by reading up on the necessary details in order to serve them best.
Concentrate on having a detailed knowledge of the areas that concern you 90% of the time, but don't ignore that other 10% altogether.
When a new release is about to roll around, . This sounds obvious, but it's easy to shrug off as a task to be done later, and doing it later could be after you've written a lof of code to solve a problem that's already been taken care of. Additionally, the release notes for developers are (be sure to read the release notes. This sounds obvious, but it's easy to shrug off as a task to be done later, and doing it later could be after you've written a lof of code to solve a problem that's already been taken care of. Additionally, the release notes for developers are (thankfully) not separate from everything else that's being rolled out; they will help your build your broader, high-level, knowledge of the platform.
Read the release notes. Doing so can only benefit you, ignoring them will only make life harder.
Finally, become part of the wider discussion. Social is the rage these days, but unsurprisingly by participating in both online and offline communities you expose yourself to a much greater range of platform usage scenarios than you would otherwise. Joining in discussions on LinkedIn, Twitter, Facebook, the Developer Boards or user groups are all excellent ways to start familiarising yourself with the wider picture, highlighting scenarios that you may never encounter otherwise, but could potentially leverage with even a little knowledge of them.
Join the discussion. Choose a network, or several networks where you can participate, learn and teach.
Once the Stack Exchange Salesforce site goes live (we're making great progress), it will quickly become an excellent knowledge base, so please commit and share the link to the proposal!