Who are you?
You’re a strong Java developer, analytical thinker and problem solver. You are committed to success and do whatever it takes to deliver your task on time with high quality. You’ve created Java applications, which are not only functional but also “clean”, well-constructed and maintainable. You’re never comfortable with code until high quality is assured. You may even prefer to do Test Driven Development whenever possible.
You’re passionate about your craft and have explored various Java libraries and frameworks, working with some professionally and keeping an eye on others. You’ve had the chance to compare how they work for different problems and have opinions about what works best in what situation.
You’re comfortable discussing requirements with the product management team, throwing your own ideas into the mix and constructively engaging when they seem to be asking for too much.
You like working in an Agile (Scrum) development environment and take responsibility for getting things done in a reasonable time frame. When you say something will be done you almost always keep your word. When you don’t there’s always a good reason why and you learn from the experience to minimize the chances it will happen again.
Responsibilities of the role include:
- Collaborate with your Scrum team to design, develop and test elegant software using state of the art technologies and techniques to implement cutting-edge intelligence systems
- Evaluate, recommend and implement appropriate analytical functions to help create more accurate user/customer profile
- Maintain and refactor existing code by analyzing and identifying areas for modification/improvement.
- Research and investigate new technologies and update on multiple coding languages to enhance depth of knowledge and build on Thunderhead’s competitive advantage.
- Develop automated tests for new/existing code
- Support the product by monitoring, identifying and fixing bugs and software defects
- Ensure that new code conforms to agreed coding and testing standards, paying particular attention to the writing and running of automated tests
- Liaise with QA members on your Scrum team to ensure sufficient knowledge transfer to enable testing
- Share knowledge with team members
- Mentor less senior team members and help them improve their knowledge
- Liaise with Professional Services and Support teams to identify and resolve implementation, performance and support issues
- Share responsibilities with other team members
- Think laterally as part of a team, or individually, to meet the requirements of the project
- Utilize open source projects for solving complex problems
Experience and Desired Qualifications:
- Proficient in Java programming
- Proficient in Object Oriented Programming and Design Patterns
- Proficient with Web Programming (Spring, JEE, Servlets, Jersey, JAX-RS, REST, JSON)
- Proficient with configuration management tools (Maven, Ant, Gradle)
- Familiar with unit testing frameworks (JUnit, Mockito, JMockit)
- Familiar with ORM frameworks (Hibernate, JPA)
- Familiar with relational databases (SQL, HSQLDB, Sql Server, MySQL)
- Big Data / Apache Spark
- SaaS Development Experience
- Cloud services (Azure, AWS, Google)
- Knowledge of Linux, AWS, Azure, etc.