This week I am doing #DEV450. I neeeed to learn more about coding.
Like the other Salesforce courses I have attended, I don't expect to get much out of it, but as it's a topic I don't know a lot of, I do expect to get a lot out of it. It's a conundrum.
It is a huge investment to take a week out of productive paying work to do learning, so I will have to do real work after hours for the week.
At the same time as doing this course, I am doing David Liu's Pluralsight course, which has been great so far.
I really really think this course is only suitable for those that have a really good understanding of Salesforce from an Admin or Consulting background first. I think you need a thorough understanding of the things work in Salesforce. Especially permissions and when to use Code and not.
You MAY be able to get by if you are a shit-hot programmer with experience in many different languages, but "check your knowledge at the door" and don't think that SQOL is exactly like SQL and don't complain that things don't work the same way as they do in X language. Understand how the multitenanted database works and why the limitations are in place, and argue from a good basis.
Yes, there are really shitty things in Salesforce, but know enough to be able to defend them to start criticising them. (in most cases).
It's so slow to get going. To have to go through permissions, OWDs, Record Types etc. It's like they are just covering those things because the code they are writing later on touches those areas, but it is presented without enough business context.
When we finally get to code, we are copying and pasting code. I hate hate copy and pasting code. Again, it is like learning by rote rather than really understanding the way things really work. But there is only 5 days to get through stuff and we are starting from less than zero, so you have to catch up somewhere.
This is definitely NOT a course for the uninitiated developer, you do need to be fluent in your dev language - eg know what compile, initialize, method, type, etc words mean.
Then at 4.20pm it starts going into real code where you are just copying and pasting and not understanding where you are going or what you are doing. Mind. Blown. Not in a good way. From being completely slow and boring to completely not understood in the space of 20mins. This is not good.
Yep! Of course. Exactly what I said. The first coding structure we write can be dealt with in standard setup now. Checking Duplicates. But thankfully the instructor told me of a scenario where you will need to code deduping - deduping on two lookups. (But I still worked out a way you can do that within setup using a SteveMo trick of concatenating two values together and setting uniqueness on that.
Today was much easier to cope with because I understand SOQL quite well. Still learnt a few things though - like a 5 level limit up the parent chain for Apex whereas it's 10 in formulas.
The coding bit started quite slowly which is good, and the TODO items in the examples were writen in such a way that I could work out what was needed with a bit of checking on the previous examples. I'm not convinced I have taken it all in. But I am at least a bit more comfortable with using Lists.
One cool thing I learnt today is AllOrNone as I had come across that last week in a Flow Error message, and wondered what exactly it was. Now I know.
I still need to know these things right now, and I still think even a beginning developer needs to know these things.
Things I know but needed to be covered in DEV450
So regardless of the issues I have with this course, and that I don't feel I can code (YET), I have had some good outcomes.
Blob, Boolean, String, Integer etc
All variables are initialised to null. So you always need to check for null values
== is Equality 'A' = 'B' (false). Used for comparing strings (eg recordIDs)
=== is Memory reference the same - It is a true coding memory thing - eg a=1; b=a; b===a is true.
Contains is ==
Platform limits are things like 500 fields in an object, workflow limits.
Governor limits are limits to make sure your apex code doesn't run away with server resources.
Data in memory is also known as an SObject. (doesn't quite make sense yet).
An SObject is the Metadata of an Object.
public void UpdateLocation(List<Course_Delivery__c> deliveriesToCheck) {
<> encloses an parameter for a Collection.
[ ] encloses SOQL
Parent to Child Relationships - lookup the Child object, then the field to the Parent object then find the Child Relationship Name, and add __r onto the end. The instructor told the students it was "always plural of the object name", but that is not correct. I often rename my relationship names - especially to get rid of the underscores. So know where to find it in the database.
http://womencodeheroes.com/learning-to-code/
Of course we will use Developer Console only in the class