Skip to content

Instantly share code, notes, and snippets.

@rwdaigle
Last active May 20, 2022 14:00
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save rwdaigle/e680696cf8078cbde5cc to your computer and use it in GitHub Desktop.
Save rwdaigle/e680696cf8078cbde5cc to your computer and use it in GitHub Desktop.
Spreedly Active Merchant work sample #1

Spreedly Active Merchant work sample

In a simplistic sense, you can think of Spreedly's primary product - what we call "Core" - as a hosted version of the ActiveMerchant open source library. Every time we add support for a new payment gateway, we're leveraging an ActiveMerchant adapter, and usually these days, we're creating and contributing that adapter from scratch. We have several employees who are committers on the project as well as several employees who are top-10 contributors.

The assignment

Here is your assignment:

  • Following the new gateway contribution guidelines of the ActiveMerchant project, create a new gateway adapter and tests for the mythical "Awesomesauce Gateway" that we have setup and written documentation for.
  • Instead of submitting a pull request directly to the ActiveMerchant project, please squash your work into a single commit and use git format-patch to generate a patch file. Email the patch file to us as your work sample submission.
  • Since we don't want (and you probably don't want) to reveal your completing the work sample to others, nor confuse non-Spreedly maintainers, don't fork the ActiveMerchant repository on Github. Instead, just clone it directly (which will give you read-only access), and do your work in a local branch.
  • Awesomesauce Gateway isn't a very strong engineering organization so its API is ... interesting. This is intentional! I promise we know how to build a better API. If you have questions about the gateway, please email Awesomesauce support as though you are interacting with a real gateway and prefix your emails with [AWESOMESAUCE] so we can tell when you're after gateway support.

Grading

We feel this work sample is a great way to measure many things, only one of which is your ability to develop software. We will be looking at the following when evaluating your work sample:

  • Ability to follow specific instructions
  • Ability to follow existing software patterns
  • Thoroughness
  • Comfort working with the complete development stack (version control, test frameworks, etc...)

Our grading process uses a pre-determined checklist of 20+ concrete criteria that are applied to your work sample, each of which verifies one of the above skills. Samples that conform to more than some threshold of criteria "pass". All sample grading is blind-confirmed by a second technical member of Spreedly to ensure no biases creep into the grading.

If you feel like you're spending too much time on the work sample, we completely understand your reluctance to spend more than 4-8 hours on this exercise and respect your right to withdraw from the application process at any time with no hard feelings or impact on future applications! However, please be aware that incomplete work samples rarely achieve a passing grade.

Notes

Really important work sample notes:

  • This is a 100% open book test - you should be reading existing adapters, searching Google for solutions to common problems, etc...
  • We understand that Ruby may not be a language you're very comfortable in, but since Spreedly is primarily a Ruby shop today, and since we know that many non-Rubyists contribute ActiveMerchant adapters in real life, we think this is a legitimate work sample even though it can only be completed in Ruby. If you need help installing Ruby we'd encourage you to start with the official Ruby language site installation instructions
  • The work sample is meant to be doable (and has been done several times) by people with limited experience with ActiveMerchant (even limited experience with Ruby!). As such, it is best to try and figure out pure coding questions on your own (with the help of the whole internet, of course). However, if you’re seeing a weird response from the gateway, or you need clarification from something in the gateway docs, please do email Awesomesauce support!
  • Finally, we are looking for any and all feedback about the work sample process including whether you think it's an appropriate effort to ask somebody to do as part of the application process (i.e. it doesn't take too long, isn't too onerous of a process etc...).

Ready to go? Here is the site for the Awesomesauce gateway. Have at it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment