Our Engineers build software that makes our customers happy, they prefer problem solving over task completing, love learning from colleagues, and constantly strive to be nice humans.
We primarily write and deliver custom software to our customers. We build solutions in a variety of langugaes and platforms, historically PHP and Ruby on Rails, we tend to use React, JavaScript, Elixir and Clojure these days. We will usually be responsible for setting up a customer's infrastructure on Azure or Vultr, with tools like Ansible and T erraform though sometimes we opt for a Platform as a Service like Heroku. We make sure there is a Continuous Delivery pipeline running our automated test suites before deploying changes.
The software we build solves business problems. We’ve built software for marketing, e-commerce, retail buying departments, accountants, photography studios, warehouses, supply chain companies, and ourselves. Typical projects will last 3-6 months, some customers work with us over longer periods but we like to mix up teams at around 6 months to keep things fresh.
We'll expect you to be proficient in at least two programming languages. This is usually something like Ruby/Python/PHP/Java/C# and then JavaScript. Everyone in the organisation comes from various language backgrounds and we see this as a strength of our offering, our teams can solve problems with open minds and across many platforms. This also makes for a great learning environment.
Code is only the half of it. The other half is communication. We expectyou to be a great communicator with customers and colleagues in written and spoke English. We meet our customers face to face regularly, even working frmo their office, along with keeping in touch via Microsoft Teams and Skype for Business.
Everything else is optional but highly sought after. We would love for you to have experience in:
- Previous experience working directly with customers
- Writing code with Test Driven Development or perhps ATDD
- Mentoring colleagues providing them with guidance rather than solutions
- Pair programming as we pair around 50% of the time
- Agile practices like Scrum, XP, and/or Kanban
- Component based design techniques such as using pattern libraries, styled components, CSS-in-JS, BEM, and/or SUIT CSS
- React ecosystem including a TDD approach
- Working with a range of SQL and NoSQL databases
- Infrastructure as code tools like Ansible, Chef, Pullet, and/or Saltstack
- Strong delivery skills: a huge drive to get something shipped
We are a sanctuary for those wanting to hone their skills alongside like-minded learns. After joining our team it is common for new starters to comment on how much they're learning and how much they enjoy the fact that they are surrounded by people they can learn from. This includes our most senior hires.
The biggest thing you'll take away from our culture after spending the day with us would be that we practice continuous improvement at every level. Everyone has peer-based one-to-ones every 2 weeks, along with monthly one-to-ones with a directory (executive). Teams have fortnightly retrospectives. We also hold a company wide retrospective fortnightly. We discuss our problems out in the open, and rather than punish failure we band together to find solutions.
Other notable things:
- Every Friday afternoon is dedicated to learning new skills
- Everyone is encouraged to write blog posts regularly
- Our handbook is open sourced
- We are vegan and non-drinker friendly as well as meat-eater and drinker friendly
- Retreats and trips every year
This role has a salary of $65-105k depending on experience.
We expect our Engineers to be able to work on entire features, from conception through to production deployment, without guidance and direction from others. This doesn't mean they have to be delivered without pairing, or asking advice from the wider team. What does it mean is the primary force for ensuring the feature is built and deployed in a timely fashion, is the responsibility of the Engineer working on the platform.
We expect our Engineers to significantly contribute to customer deliveries, to justify billing their time. Without billing customers, Scope Web isn't a sustainable business.
We expect our Engineers to be honing their craft, practising at every opportunity and consistently making progress towards attaining all the Scope Web Core Skills.
We expect our engineering team to write tests first by default. We expect every feature to be tested. Every Pull Request (or equivalent chunk of work put up for peer review) must contain a test. If for some reason there are extenuating circumstances for not writing tests, then more than one engineer should peer review and verify this.
We expect our engineering team to be friendly and lovely people to pair with. All pairing dynamics are different, sometimes you will be pairing with someone with less experience, sometimes you will have the same experience. Adjusting the speed of your work to accomodate for your pair is important and special care must be taken with mentoring/coaching those with less experience. No matter who you are pairing with, you must take turns to compromise when your opinions differ.
We expect our engineering team to always have their code peer reviewed at least by one other person before merging. It's the responsibility of the code author to ask their colleagues to review and to merge the code in a timely fashion.
We expect our engineering team to provide feedback that makes code safer, easier to maintain and advances the knowledge of the original author. We expect everyone to negotiate and compromise when making a call on whether feedback should be addressed or not.
We expect our engineering team to keep their customers up-to-date with progress. Customers should be invited to standups or at appropriate points in time. A customer should never have to chase us for an update.
We expect our engineering teams to keep their fellow team members up-to-date with their progress. A good litmus test for this is everyone on the team can describe what their team mates are up to.
We expect our engineering team to ensure team ceremonies such as planning, retrospectives, and standups happen on a regular basis.
We expect our engineering team to be able to demonstrate the successes of their iterations with weekly showcases to customers. We also expect Engineers to be able to facilitate retrospectives with engaging formats and customer involvement. Good teams will rotate this responsibility on a weekly basis.
We expect our engineering team to understand how to secure the devices they use for work including issued laptops, personal computers, mobile phones, and other electronic devices. We expect individuals to ensure they adhere to our security guidelines upon setting up devices and to ensure that their machines are compliant at all times.
We expect our engineering team to reflect on our practices and be a proactive voice in suggesting change. We expect you to be reflecting on your own development practices, reflecting on your team and the wider business.