Are you looking to work on challenging projects, with a diverse and motivated team, while building technology that can change the world? Do you want to join an award winning startup in their scale-up phase? Do you want to give students all over the world access to a prosperous future? Do you want to work with large distributed systems, machine learning, web crawling, and other interesting technology?
We’re looking for a Senior Java Backend Engineer with 5+ years experience in Java, Spring, REST API, and other web tech based in Amsterdam or remote within the +-2 GMT timezones. You need to be curious and passionate with a drive to continually improve yourself, your craft, your code, and your colleagues. You need to hold yourself and your peers to the highest standards to deliver the best quality products possible! You must not be complacent, and must keeping working to improve your craft and skills. You must be able to step outside your role to work on requirements, deal with customers, and think holistically about our systems, processes, and people; always with a view to improving efficiency and long-term maintainability and quality.
You need to be available during core hours 10:00-16:00 in CET/CEST. Option to work in Amsterdam office is available. On-site in Delhi is also available, but no remote. We don't offer visa or relocation sponsorship.
- designing, building, and maintaining highly-scalable APIs and distributed systems in Groovy/Java with Spring, Hazelcast, MySQL/PostgreSQL, AWS, etc.
- improving our web crawler and integrations with client content;
- enhancing our search engine based on Elasticsearch
Your abilities and skills:
- Fluent in English
- 5+ years experience designing, building, delivering, and maintaining production software and distributed systems
- A solid computer science background with deep understanding of algorithms, computing theory, etc. Degree preferred, but self-study also a big plus
- Proven ability to ace the entire product life cycle: from requirements, through design and development, to testing and production deployment
- Be able to communicate effectively with team members, but also be able to solve difficult problems on your own with perseverance and tenacity
- Prove that you’re continually working to improve your skills and knowledge, by raising the standards for your own designs and code constantly, and by reading and learning from books, courses, and peers
- Prove that you can write high quality code with deep thought given to performance, concurrency, maintenance and other issues. No “but it worked on my machine” allowed, or code that you wouldn’t be happy to work on again in a year’s time
- Writing web backends in Java with Spring, RDBMS, Elasticsearch, etc. on an AWS stack
- REST API development. HTTP, JSON, etc.
- Used to development workflows with git and github
- Comfortable communicating and collaborating on designs remotely using diagrams, video conferencing, instant messaging, prototypes, etc.
- Friendly and helpful to tech and non-tech team members.
- Must be able to think of edge cases and errors to be able to write good unit and integration tests, and to test by hand to make sure new code is production-ready.
- Any other languages: Groovy, Bash, Python, etc.
- JPA, Hibernate, Flyway
- REST APIs
- Devops techniques like continuous integration and delivery, zero-downtime deployments, clustering, queues, failover, redundancy, automated and validated backups, etc.
- Startup experience
- Apache Storm
- Amazon Web Services:
- Elastic Beanstalk
- IAM, security groups, bastion hosts
- Instrumenting code for Prometheus
- Application performance monitoring implementation
- Curious. Able to learn and apply new concepts and tools rapidly
- Pragmatic. Choose the practical path to delivering a product without getting lost in fancy new technologies or techniques
- Attention to detail. Every line of code should be crafted well and understood thoroughly. No copy/paste coding allowed
- Perseverance. Able to solve difficult problems without giving up and expecting someone else to take over
- Take pride in your work. You should be proud to put high quality software in front of users. Software you’ve tested thoroughly yourself
- Take responsibility for your work throughout its life cycle from requirements to delivery and maintenance
- High degree of personal responsibility over designated duties. Step outside your role if needed to get the job done well
- Consistent and organised
- Timely and eloquent communicator
- Focused on helping the team win, before personal gain
- Open to receiving objective criticism and improving upon it
- Like to work in a startup environment