As a Java Developer, you will be responsible for analysis of requirements to drive further clarification; proposing, defining and documenting sound design/refactoring options & alternatives; creating sound pre-development estimates; developing application code and unit tests; integrating with other Client applications as necessary; delivering integrated application components to Testing and Quality Assurance team and support delivery to the Production environment.
We are looking for a self-starter with the ability to handle a number of simultaneous projects, demonstrate a sense of urgency and ownership to drive projects to completion, and be successful in a collaborative environment. The right person for this role will be organized; detail oriented and be able to prioritize tasks. He/She will help ensure that application code is of high quality by participating in/leading code reviews, writing automated test harnesses, and assisting in the deployment of code onto the pre-production & production environments. This person will demonstrate strong analytical and problem solving skills, a high level of technical competency & leadership, attention to detail and the ability to communicate effectively (written & verbal). We look for professional certifications and a continuing education history to suggest knowledge and familiarity with J2EE design & development techniques.
Relevant job functions:
- Design complex, high traffic web-based applications and REST services using Object-oriented design and patterns
- Document high-level and detailed solution design, different options considered and their tradeoffs, prod deployment plan, etc.
- Develop detailed work breakdown structure for analysis, design, development and deployment activities
- Develop REST services and web applications using Spring MVC, Spring IoC, Spring REST, Spring Boot, Spring Data, Spring Batch, etc.
- Develop unit and integration tests using JUnit and Spock
- Deploy applications to Apache HTTP server, Apache Tomcat server and validate application functionality
- Develop search applications using Apache SOLR
- Develop shell scripts as required
- Work with PostgreSQL, Oracle and MongoDB databases
- Work with version control system Git
- Work with defect tracking system JIRA and documentation system Confluence
- Work with application deployment and orchestration tool uDeploy
- Work with build system Jenkins
- Work with log management tool Splunk and create dashboards for key performance metrics
- Perform troubleshooting of issues in prod and non-prod environments and document the root causes
- Participate in Agile meetings: backlog grooming, planning and daily stand-ups
What's In It For You
Besides a competitive compensation package, you'll be working with a great group of technologists interested in always finding the right tool for the job in a culture that encourages innovation. If you're ready to take on some new technical challenges at a well-respected company, we'd love to hear from you.
What You Need For This Position
- Bachelor's degree in Computer Science, Technology or Engineering or equivalent related work experience
- 3+ years of disciplined application design and development experience, preferably in the Internet or software industry
- Experience with designing and developing web-based applications for moderate to high traffic sites
- Demonstrated strong development skills in Java SE
- Demonstrated strong development experience using Spring MVC and Spring IoC
- Experience developing unit and integration tests using JUnit or similar tools (Spock, Selenium, etc.)
- Experience with application packaging and deployment tools e.G., Maven, Gradle.
- Experience working with Apache web server and Tomcat on Windows or Linux systems
- Experience working with relational database management systems like Oracle, MySQL, MS SQL, PostgreSQL or similar systems
- Experience developing SQL queries and stored procedures
- Familiarity with Linux systems and using shell commands
- Strong organizational and communication skills, both verbal and written
... And if you have the following, even better!
- Prior responsibilities that required communication and coordination across different groups: e.G., Engineering, QA, Operations and Project Management. History of increasing responsibilities
- Prior Design and Development experience using Service Oriented and Microservice Architectures
- Experience with some of the modules Spring Boot, Spring Batch, Spring Data, Spring REST, Spring Cache, etc.
- Hands-on experience using Web 2.0 technologies like AJAX, JQuery and data exchange with XML and JSON formats
- Development experience with Groovy
- Experience working with MongoDB
- Experience developing unit and integration tests using Spring Testing framework
- Experience at an internet company