Assignment
WordPress Engineer – Plugin
If you have directly landed here, and have questions about this whole “assignment” thing, you may read this first!
Now you are settled, the purpose of this assignment is to check if you can write the quality WordPress code.
Assignment Alternatives
If you have existing work samples to show and you missed them to submit during the application process, you can still submit them by replying to the email you receive upon your application.
Acceptable
- Links to WordPress core patches unless they are really small one which just fixes a typo or a CSS property. As a WordPress user, we still thank you for your contribution but unfortunately, that won’t be enough to make a cut.
- Public code repo showcasing WordPress themes or plugin codes preferably passing WordPress coding standard or covered by unit testing or both. We accept any link where we can see your source code in a version control environment such as WordPress.org, Github, Gitlab, Bitbucket.
- Link to one or more git/svn commits in case you do not have a solo project to show but has a significant contribution to a larger project where we can see your code commits. Often 100+ lines of PHP codes written for WordPress are enough for us to evaluate.
Not Acceptable
- Sending links to public sites! It doesn’t tell us anything about PHP code quality or if you have followed the WordPress coding standard or written test cases.
- Sending zip files either as an attachment or via dropbox or some public link. Zip files do not give us visibility into your commit history over the time which tells a lot about how disciplined you are! But still, if you submit your codes via wp-starter assignment, it’s acceptable.
Scenarios
As we attract people from different walks of life, we have many options to suit everyone’s needs, tastes, and experiences here. So please read carefully every scenario described below and pick the one as per your comfort. Do not worry if you pick the wrong one. Our hiring team will be happy to guide you in the correct direction.
Developed WordPress codes like a pro ?
If you have ever used WordPress coding standards and/or unit testing in any of your WordPress theme or plugin work in the past, you can still submit your old codes as an alternative to assignment and save your time.
Just Have WordPress codes publicly available
If you developed some WordPress theme or plugins but did not follow coding standards, you can still get your own code upto the mark by running them through WordPress Coding Standards. If you manage to fix phpcs
feedback — first accept our congratulations for becoming a pro developer — and then you can submit your own repo packed with quality to us for further evaluation.
While we do expect you to figure out how to get everything related to WordPress Coding Standards up and running, if you are short on time, you can use our wp-starter assignment to proceed further quickly.
Have WordPress codes but not public
If for some reason, you have developed WordPress codes but not put them public yet, we recommend you to use wp-starter assignment to proceed further.
Please note that, the private Github repo that wp-starter assignment creates is private to you and our hiring team! If for some reason, you do not want us to have access to your private codes, better work on a sample problem.
Not yet a WordPress developer
If you are new to WordPress development or just exploring the WordPress ecosystem, it’s better to start with our free and open DIY training program. This program is by no means the only way to learn WordPress. There are many ways out there in the open web and you can learn WordPress from anywhere.
Sample Programming Challenges
Just to clarify again, if you have code samples to show, you don’t need to solve a programming challenge. You can (re) read section above.
We have two kinds of challenges for WordPress Engineers. Once you decide which challenge to pursue, please proceed to wp-starter assignment section.
You need to complete any one. If you wish to complete two, we won’t mind. 😉
WordPress Plugin Challenge
There are already more than 10000 WordPress plugins out there. So it’s really hard to set up a challenge for you! Still, we need to create a playground for you. So we came up with a few ideas for the plugin. Go ahead with anyone below:
Challenge-1: WordPress-Slideshow Plugin
This plugin will test if you are familiar with WordPress shortcodes.
Admin-Side:
- Create an admin-side settings page.
- Provide an interface to add/remove images from plugin settings page.
- User must be able to change order of uploaded image. (Hint: Use http://jqueryui.com/demos/sortable/#connect-lists )
Front-end:
- Create provision for a shortcode like [myslideshow]
- When you add shortcode [myslideshow] to any page, it will be replaced by a slideshow of images uploaded from admin-side.
- You can use any jQuery slideshow library/plugin.
Challenge-2: WordPress-Contributors Plugin
This plugin will test if you are familiar with WordPress metabox functionality. Goal is to create a plugin so that we can display more than one author-name on a post.
Admin-Side:
- Add a new metabox, labeled “contributors” to WordPress post-editor page.
- This metabox will display list of authors (wordpress users) with a checkbox for each author.
- User (author/editor/admin) may tick one or more authors name from the list.
- When post saves, states of checkboxes for author-list in “contributors” box must be saved as well.
Front-end:
- Use a post-content filter.
- At the end of post, display a box called “Contributors”.
- It will have list of authors checked for that post.
- Show contributor names with their Gravatars.
- Contributor-names must be clickable and will link to their respective “author” page.
Coding Guidelines
Irrespective of which challenge you choose, please note down our common minimum requirements applicable to all challenges.
- UI Framework – Use WordPress core CSS/JS. Make sure what you create looks nice!
- Responsive – Your code must work on mobile devices like iPhone/Android.
- Code Organisation – All 3rd party codes, libraries must be inside
lib
folder. No unwanted files e.g. IDE files, temporary files should be committed on git-repo. (Hint: Write a nice.gitignore
) - Coding Standard – Your code must pass the WordPress coding standards. You can use PHP Code Sniffer and JSHint on localhost. Additionally, you can configure scrutinizer-ci so your code quality can be seen easily.
- Unit Testing – Submissions without unit tests will not be accepted. You may use wp-cli to setup unit testing easily.
- Github Readme – Write a nice Github Readme using markdown syntax. Make sure you include a demo link and links to libraries used in the readme.
WP-Starter Assignment
If you are solving a programming challenge above, or just need a place to upload sample codes for further evaluation, our wp-starter assignment can help you.
Starting the assignment automatically
⚠️ Please note, we use Github Classroom for the automated assignment. It is originally developed for the classroom teacher and student interaction. So the repo created using automated method starts a pull-request for feedback which refers to our hiring team as a teacher and you as a student. Since Github doesn’t provide the option to customize the text, we are helpless in this regard. We apologize in advance if it makes you feel less special. ?
Process
- Please open this Github Classroom assignment link. You will need a Github account to use this link.
- When you open the link, Github will prompt you to “Accept this assignment”.
- Clicking the “Accept…” button creates a private copy of this repo to which you and rtCamp’s hiring team will have access. Your access level for the repo will be admin-level. As a repo admin, you can transfer repo to your private space and remove our access should you wish to withdraw from the process anytime.
- You are expected to push all your codes to this new repo. Make sure you do not touch
.github
folder accidentally as it can break the magic. - If you have developed any theme or plugin codes in the past, you are free to push those codes in your private repo.
- When pushing existing large code-base, we request you to commit them in chunks — ideally one PHP file at a time. You can commit all non-PHP files at once as code-scanner bot only checks PHP codes at the moment. It is yet to Learn JavaScript Deeply!
Manual Setup
The above method creates a private repo under rtLearn Github organization which you can transfer to your Github space anytime. Still, for some reason, you want to have start manually, you may use wp-starter assignment repo’s source code to proceed further.
It doesn’t matter which way you set up a repo as long as you can show your work on a Github repo where we can give you feedback about code quality.
Have Questions?
We request you to read FAQ here.