You are primarily a software engineer that happens to have specialised on the backend. You don't consider any part of your software's life to be someone else's problem.
You find Scala to be a great tool and you can talk about some of its drawbacks. You know how to take advantage of its multi-paradigm nature.
While you welcome the technical freedom of greenfield developments you also enjoy the intricacies inherent in evolving existing software.
You're capable of appreciating the subtle impacts of different tech choices but ultimately you're a pragmatic. You favour readability of code, instinctively rejecting excessive conciseness or artistry.
You naturally stay within the scope of a story. You are biased to action: you prefer to deliver the good instead of arguing what perfection is.
You think critically and are happy to be proven wrong. You are methodical in your troubleshooting and debugging. When you find yourself stuck you take a step-back an re-analyse. You're able to fend off pressure and get the necessary space to think.
You see in a mistake a learning opportunity. When you teach, you teach without patronising or overpowering.
You are able to communicate the technical vision in a clear way, and correctly translate tech choices and their consequences into business terms.
You will make mistakes. We'll pick you up. You will learn from them. You'll laugh a lot.
- Build an understanding of the whole architecture and its different services and develop in alignment with it.
- Gain deeper knowledge of the most important services. Contribute to plans for improvement.
- Produce code of great quality with the right degree of test coverage. Review code constructively, favouring the development of skills where possible. Frequently share your programming expertise and disseminate important knowledge within the practice.
- Understand the delivery pipeline and keep it in good health. Work in an ops-minded way.
- Contribute to a rational, informed and civil discussion when technical disputes arise.
- Keep abreast of technological developments in the industry and their relevance to the company. Openly and continuously share your knowledge.
- You have at least 3 years of experience in software engineering and a BSc in Engineering or Computer Science or higher degree.
- You have at least 1 year of experience with Scala in at least one of its different styles and paradigms. You're familiar with at least another language such as Java, Go, Python, ES6/7 and variants.
- You have an understanding of the main programming paradigms.
- You have a working knowledge of relational databases, especially SQL. Knowledge of non-relational databases is a plus.
- You have a working knowledge of microservice architectures, and have been exposed to different message passing paradigms (synchronous over HTTP, gRPC, Event-Sourced). You have good working knowledge of REST APIs principles and associated tooling.
- You have worked previously in Agile teams, and understand the core principles of Agile.
- You have written unit tests, integration tests, and acceptance tests. You’re familiar with the concept of testing pyramid.
- You have experience with AWS's offering. You understand the importance of Continuous Delivery, and you’re familiar with the tools that enable companies to continuously deliver value.