update: May 30, 2015 - I've re-organized some of the information for the sake of clarity and readability. Tangential notes have been moved to a section called "Parting thoughts".
I'm assuming that you've already installed and played around a bit with Plone. If not start by doing a quick cloud installation of Plone.
The Plone stack touches many pieces and the deeper you go the more you learn. The good news is that understanding these things will probably benefit you with every other web project that you work on.
My checklist of fundamentals that you'll want to be comfortable with include:
- Linux/Unix Command line
- Basic Python
- Working with Web APIs
- Networking Fundamentals (TCP/IP, Application Protocols, Browsers, SSH)
Be an expert in your coreBeing able to learn new technology quickly is not an excuse for learning things superficially. For Plone the core includes understanding things like user permissions, roles, content type schemas, browser views, templates and ZCML.
My checklist of Plone fundamentals
- Page Templates
- Content Type Schemas with Dexterity
- Generic Setup Configuration with XML
- Browser Views
- User permissions
Be systematic about your development processMy recommended posture would be the same no matter the technology stack. I'll explain them in more detail below:
- Learn the big picture: learn about the tools available in your toolbox.
- Trust the blackbox: learn only what you need to know and trust that the other parts just work.
- Organically absorb the stack. learn new stuff on an as-needed basis.
Learn the big picture
Find out what is available in your toolbox. I recommend these articles:
http://plone.org/products/plone/features/ - An overview of what Plone does out of the box
http://blog.dbain.com/2013/12/plone-big-picture.html - A non-exhaustive summary of the pieces of Plone
http://developer.plone.org/getstarted/index.html - Gives a realistic picture of Plone
http://developer.plone.org/#manuals - This is really a table of contents, but gives an idea of what's possible
Trust the blackbox
You don't need to understand the plumbing of your house in order to take a shower, the same is true with Plone. While there's a lot of plumbing going on you need only focus on how to connect your hose to the system. Some personalities find this difficult as they need to understand everything before proceeding but you'll need this approach to become productive quickly. If you just want to use Plone as it was designed to be used (as a content management application and framework) then just grab some good examples and copy them.
Organically Absorb the stackAs you advance you will begin to discover that you need more parts of the stack. Learn these parts as you need to. Remember you can always dig deeper into more features of Plone and it certainly makes sense if you intend to become a core contributor to the project.
In general I've observed a mind-set in the Plone community that aims for systems that are "team scale" (not just "works for me"). In keeping with this idea, I try to follow the following three rules as I develop, (not that I'm following them very well but...):
- Aim to support iterating quickly
- Aim to support deploying reliably
- Aim to make your project so well documented and predictable that a knowledgeable Plone developer could pick up from you in less than 30 minute