Moving from .Net to Salesforce. My thoughts and the challenges so far.

Image result for microsoft logo

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 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.

From what I can tell the Salesforce technologies include:

Apex, Lightning and SOQL.

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.

Related image

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?

Image result for salesforce.com logo

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

Image result for trailhead logo

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.

Leave a Reply

Your email address will not be published. Required fields are marked *