Software crafter at Survival International

ruby

#1

Introductory paragraph

Feel free to include an introductory paragraph here.

About us

My name: Ketan Patel
My position: Software developer
Company name: Survival International
Website: www.survivalinternational.org
Company info and history:

Survival International is the global movement for tribal peoples’ rights. We’re the only organization that champions tribal peoples around the world. We help them defend their lives, protect their lands and determine their own futures. We’ve been doing this since 1969.

We have a website that is an important campaigning tool and where we accept donations. We are in the planning phase of rewriting this site and were considering Elixir and are open to suggestions.

About the job

Job title: Software crafter
Job description:

Most of our time is devoted to our multilingual site. It has a monthly site traffic of around 200,000 unique visitors from all around the globe. It has to scale and cope with huge spikes in traffic due to media interest, increase sustainable traffic, and do it without incurring technical debt.

We use mob programming to start new projects and once it has shape and direction we carry on with pair programming. From time to time we may also code solo but we prefer to pair. We follow industry best practices and build everything through TDD and BDD. We don’t merge anything to master until it is reviewed and all tests pass. We work in incremental units and weekly iterations.

Our current tech stack includes Rails, MySQL, several payment APIs, Mailchimp API, Salesforce API, Amazon S3, Vimeo, TLS, Engine Yard hosting, Cloudflare load balancing and DDoS protection, Git, and more. If you don’t have experience with all of these, or any of them puts you off, don’t worry! The web team you’ll be part of is slowly moving to a different tech stack and architecture, and you will contribute suggestions and ideas!

Salary range: £30-35k
Position on remote work: Currently we are onsite full time.
Qualifications or experience required:

Technical requirements
• Passion for software engineering and craftsmanship values.
• Great OO skills and strong design patterns knowledge. Functional programming
experience is also welcome.
• Knowledge of software best practices like refactoring, writing clean and maintainable
code, domain-driven design, encapsulation, clean architecture, etc.
• Experience working with Agile, continuous integration, weekly iterations, code reviews,
etc.
• TDD, BDD, etc. Able to think of a test that forces you to write the code you want. Able
not to write any more code than required to make the test pass.
• Able to do the simplest thing that could possibly work.
• Strict on keeping a clean git history. Heavy use and deep understanding of rebase,
squashing, splitting commits and fixup commits.
• Able to write commit messages that help document the “why” of the change rather than
the “what”, providing useful context when looking at the code months later.
• We work mainly with Ruby but welcome pretty much any other languages like Elixir, Go,

If you have these qualities, we really won’t mind your specific tech stack. We prefer you to have a solid foundation in the principles of good software development.

Non-technical requirements
• Aware and realistic about own strengths and weaknesses.
• Excited about new technologies and constantly learning and keeping up to date with the
latest trends.
• The web team is dynamic, collaborative, transparent, and ego-free. We will expect the
same from you!
• Able to see the big picture and focus on what will help provide value to the organization
in the long term. You do not get distracted with “busy work” and know how to prioritise
tasks that give the most value.
• We encourage everyone in our web team to speak their mind and express their opinions
and concerns as we believe this is the best way for everyone to be on the same page
and move forward as a united team.
• Supportive team member and a team player.
• Comfortable pairing and mob programming. Works well with others.
• Our staff is international and discrimination is not tolerated on the grounds of age,
ethnicity, faith, gender, sexual orientation. You must be comfortable working with non-
technical colleagues, whose expertise lies in other areas.
• Software craftsmanship training by any of 8th Light, Thoughtbot, ThoughtWorks, Pivotal,
and the likes, is an advantage, so if you’ve been trained by them, mention it in the cover
letter!
• We are an international organisation, so if you speak any other languages let us know, as
it is an advantage!

What the successful job applicant will be working on:

The rewrite of our donations system (ruby) and the rewrite of our website (stack not yet decided).

About the interview process

• 15-20 minute technical chat on Skype
• Short technical assignment, fixed delivery time: 1 week
• In-person interview to know more about you, followed by a pair programming test with
somebody from the web team
• Offer & references

Further info

Please visit our job post page to apply.


#2

For anybody else who was curious, “onsite” is in London.