Having spent nearly a decade in the Microsoft eco-system, I decided it was time for a change.
I've developed a range of web applications and tools using the Microsoft stack using some fantastic, far flung and now pretty outdated defunct platforms/technologies such as:
- Web/Windows forms
- WPF
- Silverlight
- SQL Server
- Web API
- MVC
- VSTO
- Powershell
- TFS/ VSTS
These were/are all important blocks in the Microsoft suite of tools that are available to developers. When moving across to a new technology, you automatically look to how your knowledge of applications from your previous technology is translated across, or how similar frameworks exist in your new eco-system.
This is not always the case however, certain things don't have a direct mapping, certain tasks and issues do not cast directly. In fact most don't.
The database is no longer a separate entity, security and infrastructure have been drastically reduced, default styling and user interaction has already been defined. A lot of the complexity has been removed, so there's really not that much to do apart from start coding your solution. Yes a large part of your control is removed, but a large amount of effort you would usually have to go through has also disappeared. Whereas trigger use is actively discouraged in SQL Server the Salesforce system encourages the use, and let's not get started on debugging! Or the lack there of it.
So how do you go about re-wiring your brain to think in a different way?
Do you even want to do this? Or do you use this knowledge to create a new path for your brain to follow.
I think there's a lot more to discuss on this, but in essence yes, and as the title suggests the path I went down was Salesforce!
Why do I hear you ask? There are plenty of other languages and frameworks out there that are super interesting at the moment. JavaScript frameworks are all the rage, Angular, React and Vue are in full flow and the rise of the cloud with AWS/Azure and NoSQL databases seem like the natural route to go down! The predominance of micro services and event driven systems such as Apache Kafka are also very cool and are definitely the future too.
Why did I choose Salesforce?
Well Salesforce has more to it than most people would think. Saleforce is the cloud, every instance is hosted in the cloud! AWS is a major success story for Salesforce:
https://www.salesforce.com/customer-success-stories/aws/
Salesforce owns Heroku too!
https://www.salesforce.com/uk/products/platform/products/heroku/
Did you know that they also have their own AI framework?
https://www.salesforce.com/uk/products/einstein/overview/
Did I mention, that Salesforce is the best company to work for in the world right now? 2018!
https://www.salesforce.com/blog/2018/02/salesforce-fortune-100-best-companies-to-work.html
Now I don't work directly for Salesforce, but understanding their tools, their approach, and their ethos was a major part for me to be interested in their working with their technologies. I suppose all the things I've mentioned are options here, Salesforce are continuously improving their system with a multitude of enhancements and updates.
There are definitely some positives, but also some negatives!
Would you believe that the basic Switch Statement has only just (May 2018) been incorporated into the Salesforce language?
https://developer.salesforce.com/blogs/2018/05/summer18-rethink-trigger-logic-with-apex-switch.html
Some people would not be able to get over such an oversight, but looking at the range of things available to us it's understandable that some things might not quite always be at the top of their list!
Getting Started.
With any new technology the first thing you need to do is learn how to use it.
This usually involves reading countless blog posts, technical documentation and watching as many videos as you can before you fall asleep!
You will then need to install the software/libraries/etc to get the product to work and then get around to trying out a few examples.
Getting started with Salesforce is surprisingly easy. As the product is in the cloud, you simply request an environment and it get's built for you. You can then do your work directly on this. For an introduction the framework is surprisingly quick and painless. Yes IDE's and third party tools/ source control will be needed to get the most out of this venture but you can do everything you need directly in the browser.
Another massive help is the free training tool that Salesforce have implemented to guide you through the minefield of things this tool can do. Which leads me onto Trailheads!
Trailhead
Trailhead adds gamification to the learning process. It's surprisingly effective. As of right now I've got 37 badges and 48,037 points. These are gained by completing trails, which compromise of modules, with either multiple choice questions or hands on exercises. The real benefit of all this is that Salesforce actually check for your completed implementation by running unit tests directly on your environment. So although it can take a little longer to finish certain sections, it all sinks it a lot more effectively than by reading or watching something.
What's next?
So yeah, so far so good. I'm starting to look into the nitty gritty aspects of the framework now, with how deployments work, and how best to incorporate newer technologies into this massive CRM behemoth. I wonder how my thoughts and feelings will change over the coming months and whether Salesforce will continue to grow and how some of it's new tech like Lightning and Einstein will shape the product.
Do you work with Salesforce at the moment? What language did you switch from? How has your transition been?
If you've got any useful tips to share I'd love to read them, so please link them below.
Top comments (14)
Certainly an interesting opinion! In my case, it's been directly the opposite way: After a few years developing on the Salesforce platform, integrating against multiple services and having the fullstack experience of Apex and Lightning Components, I grew tired.
On the one hand, it's true that Salesforce does A LOT for you and that with very little code, a lot of business value is achieved. That, in my opinion, is the true power of the platform. It has frameworks for the frontend that couple perfectly with the backend with little to no work and deployments are much less of an impact than on other platforms.
On the other hand, the development experience is terrible. Debugging long integration queues or triggers which call queueables which make callouts and then trigger other triggers is very complicated. You have to go through long debug logs and place traces everywhere. And then, even the tooling is starting to be better, it is not abundant. I use Illuminated Cloud with IntelliJ, but it's still not the same as Visual Studio. Now, with SFDX, the future looks brighter, but it is not yet mature enough.
At the end of the day, I do agree that it is a very good platform, but for the true developer, it falls short. It's the reason why I started to move towards .NET. The control you have over the application is different :)
Anyways, great article nonetheless! I enjoyed the read :)
Hi Chris,
I get the promotion of Salesforce. Its a very valuable tool and even more powerful when coupled with tools like Mule ESB. However its behooves me to consider that MVC, WebAPI, SqlServer and Powershell are "defunct". Maybe Framework MVC, WebAPI considering the move towards Core. But .NET as a whole and SqlServer has a very robust ecosystem with a large enterprise footprint. I would be cautious of introducing bias when those frameworks and dbs are how many organizations interface and organize with Salesforce.
Hey Dan,
Maybe I worded that badly, the only defunct, maybe I should have used "outdated" areas are Windows Forms / Silverlight. Everything else I consider still to be completely current and relevant. I'm not mocking the suite or tools, I was just trying to show to breadth of options available to a .Net developer. And with .Net Core and the move to containerisation options are getting even larger.
Whereas I have struggled to adapt to the Salesforce framework, where everything is packaged under one roof! Once again, nothing wrong with that... just more of an interesting change of scene from what I've been used to.
I've loved learning how you can do things a "different" way, whether or not that different way is better or worse I can't quite comment on yet. Gimme a few more months!
P.S - I'm not trying to promote Salesforce, this was my decision, and one that came out of left field, sorry if it came across that way.
Hi Chris,
How is it going?
Still happy with your move?
Hey, thanks for the comment. Haha, yes still happy with the move.
Salesforce is a large, confused, convoluted platform that has many benefits for specific use cases including rapid development and deployment. The emergence of sfdx and lightning web components shows promise in the future. But oh my it still grinds my gears most days!
Hi There, Chris. And now, here we are in late 2019. Almost 2020. What's your outlook on SFDC these days?
I'm a full-stack developer with a heavy NodeJS / ASP.NET MVC / Blockchain background. I'm considering a move in Salesforce myself; with a long-view of going for Technical Architect. At the same time, I don't want to completely abandon my "real developer" roots.
Your last comment indicated that you might be a little frustrated with the platform. Are you no longer enjoying working with it? Are you currently exercising your SFDC skills on the job?
Hey Mike, Wow yeah it's been a while since I wrote this. After some time with it, I think SFDC development is a doubled edged sword. Javier's comments above still ring true, but Salesforce is still growing.
Lightning web components which super cede Lightning is a step in the right direction (Another FrontEnd JavaScript framework, but more proprietary), SFDX (The developer experience, i.e. Tools/CLI etc) is also getting better, the shift to VScode throughout and 2nd Generation packaging definitely simplify the framework. The problem is, I wouldn't class all these things as fully complete yet.
If moving to Salesforce for greenfield work you'll have a much better experience, but there are a lot of hoops to jump through in general. Quick to develop, but relatively arduous to release. If you need to interact with the CRM backend you have no choice, if that's where the data and customers are, then this is all necessary. I see a lot of people using it predominately as a backend though, using it as a database. This removes a lot of the benefits of this type of ecosystem.
It's fascinating to see how this is growing and changing and how they improve things. Salesforce developers are in high demand, and understanding another framework is always good in my opinion. Coming from the open source nature of blockchain development though, you may feel constricted as your options will be limited in contrast.
Thank you very much for your quick reply, Chris. Your feedback is insightful and invaluable. Wish you all the best. Hope your projects in-flight are going well.
BTW, strange to hear that some are using SFDC predominately as a backend, or even just as a database. Why not just use Oracle or SAP in that case?
Cheers!
Thanks. By backend, I mean, not developing on the platform itself. A lot of people use Salesforce as their CRM of choice, and there's a big market for integration. If that's the case, and you don't want to write "Salesforce" code you can simply read and write via API's and then use whatever platforms you want. It works, but as I said, I don't think it's the best use case for the system.
👍Great read, Chris! It's interesting to see your transition from .Net to Salesforce and how you've navigated the challenges. Your insights will be helpful to others considering a similar move.
🔍 Recently, I found an interesting article What Nobody Told You About Salesforce,It sheds light on the origins and significance of Salesforce terms, which is a topic that is often overlooked.🌟 A must-read for for those who are considering a transition into Salesforce. 💼
Hi Chris,
thanks for this post.I am also same path. want to learn new technology in 2020 and thinking about salesforce. your post inspired me. take my small step on this path.
Thanks for this article I am working as .NET developer and supporting apps. I think .NET is growing very fast and I am planing to catch up on Salesforce as it looks promising.
Do we know the job environment and tech challange if I plan to move from .NET to Salesforce.
As per my understanding one should start with Salesforce Admin and then move to dev area is it right ? or moving to Sales force is not a good idea!
Salesforce development is all about adding functionality to the existing CRM platform. It really requires buy in of the Salesforce domain and all that entails.
I wouldn't move to an admin position, with your .Net experience moving straight into developer role is more than feasible.
Thanks calcualting the effort any estimations I can go for sales force developer certification. As per trailhead it seems around 2 months say 2hr per day.
Thanks in advance