I'm going to straight up necro this post a bit and ask a few more questions. My company is right on the edge of needing a salesforce developer and if I play my cards right and am comfortable with SF and working in it theirs a real chance I can get my dive into real development and move into that role if i'm ready and able.
Searched for Salesforce and your AMA popped up so I couldn't resist!!
Do you feel that salesforce dev work is akin to full coding with say Java? (version control, scope, etc.)
Did you find Learning Apex to be easier or more difficult than other languages to work with?
Does Salesforce have version control and other such features or do you just upload your source from another source. i.e. github?
What do you wish you had known when you first started learning Apex?
Thanks in advance for any advice or recommendations. I'm probably gonna start going through the SF certification paths next month and ANY advice on getting ahead of the curve would be precious. Thanks!
My advice is, if you start learning it and like it, deep dive into it. It's a growing product and it does offer a lot of possibilities. As for the Development experience, it's getting better as time progresses. A few years ago it wasn't that good, but it's improving now.
Regarding your questions, I'll go one by one.
1) If you're a Java developer, you will easily get the grasp of Apex quickly. Fundamentally you will find Apex is exactly just like java but with 80% less classes and functionality, so it's easier to learn. On the other hand, since in Salesforce you only have to concentrate on very high level problem solving (no file handling, repository layer, etc.), it isn't a problem.
Version Control is probably the most inmature aspect of a Salesforce Development environment, but it's completely feasible. I work with git with my current team and we're all comfortable now. Just not as straight forward as with other technologies since for compiling and running tests, you do it remotely, not in your local env.
2) Apex is overall a VERY easy language. It's OOP, but it lacks features, so if you know C# or Java, give it a couple of weeks and you'll be fine. Nonetheless, Salesforce is not just Apex. You have Visualforce and the Lightning Components Framework for the frontend, which is more complicated. But then again, LCF is just like React, Angular or any of these new JS frameworks. The knowledge is not lost :)
3) Development in Salesforce using Version Control is not all that old, so no. You will find many repositories in Github, but it's not as common as other ecosystems like Java or Python. You would basically have to find whatever package you're interested in, clone the project and upload it to your Salesforce environment via the Metadata API. Again, this is starting to be very automated with the new SFDX CLI. Actually, Wade Wegner made a plugin for this exact purpose not long ago: github.com/wadewegner/sfdx-waw-plugin
4) What do I wish I had known? Probably to code efficiently. Salesforce is VERY hard on its limits. You can't execute more than 100 queries in a same transaction. You can't make more than 100 HTTP requests in the same transaction. You can't query more than 50k records in the same query... It basically enforces you to optimize code as much as possible. Eventually, once you learn, it's good knowledge tho!
5) As for the certifications, I recommend you start with the AppBuilder cert and then continue with the Developer I. There are many resources online though, so don't worry.
In any case, good luck with your new SF journey man! :)
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.