I am writing this blog to basically put my thoughts on the state of salesforce developers. This is not to defame or criticize anyone or any company. I am just trying to share what I see, hear and feel about developers in salesforce ecosystem.
It is a fact that any Salesforce developer that you meet will have the following strengths and weakness. This is a consistent trend everywhere.
What Salesforce developers know?
Very good grasp on salesforce administration
Somewhat good knowledge in salesforce customizations
Knowledge of products in salesforce ecosystem (at least 2 or 3 like Sales Cloud, Service Cloud, Marketing Cloud, etc)
Know Apex Coding and Testing Best Practices as recommended by Salesforce
Certified individuals (mostly). Possess more than 1 certification.
Some are so young and they possess System Architect Certifications.
Know about good apps and components in AppExchange.
What Salesforce developers lack?
Most developers lack the basic understanding of Object Oriented Programming and how to actually do that in Salesforce. It would usually reflect in their code.
Developers usually say that “Rapid Application Development” forces them to focus on somehow making things work rather than focusing on the right way to do it.
Some developers even do not know that Apex language is Object Oriented in nature. And that this language is much more powerful than what has been taught in books.
Developers are like 90% SF admins and 10% coders. They know more about how to implement something in Salesforce without coding than actually coding. Well, Salesforce itself advocates for Declarative Programming.
Most developers only know about “public classes”, “global classes”, “triggers”, “wrapper classes”. Nothing beyond it in terms of modularity/SOLID principles.
Biggest blunder that you will ever hear – “writing a business logic in a wrapper class is Modularization.”
Do not understand Web Stack and how it works.
Don’t know really about mocks and stubs. Even if someone know about mock, it would be that classic “HttpCalloutMock”.
If a salesforce developer (for some reason) is asked to work on any web based technology, they would be reluctant. It’s because they are too much coupled into this platform knowledge that they totally lost grasp on basic fundamentals of programming.
If asked about patterns, salesforce developers/architects would say about the patterns listed in the Salesforce Architect Documentation page. It would be in the exact same order/sequence as it is written in that page. They think patterns are only for integration. Big mistake.
Majority of the salesforce developers/architects (except a few bright ones) would be totally clueless about Design Patterns. You will be able to see the lack of quality of foresight in the code that they deliver.
Very few developers or even architects in Salesforce ecosystem understand UML.
Mostly developers are the ones who take design decisions in the Salesforce project that they are put into. This derails the quality of the project because most architects do not know how to represent a system in terms of UML and object orientation.
It’s true that Salesforce is a powerful CRM and the job opportunities are huge. The hype that its community creates is exciting and motivating. But I feel sad that every person who choses Salesforce as their career from their initial days are not rightly guided to be great programmers and platform experts. If there becomes a need for a Salesforce programmer to shift to a different technology (for better opportunity/company reasons), they should have the right understanding of Programming Fundamentals, Concepts, Patterns, Data Structures and Algorithms to be successfull in their career.
The fact (as of today) is that most of the salesforce professionals (newbies to seniors) that I have met through community interactions or interviews accepts the fact that they are stuck with Salesforce. And that they are worried about their career growth if for some reason they have to switch technologies/platforms.
Definitely, something has to be done to fix this problem. Let me know on what you feel and how can we help people become successful and not get stuck/stagnant.