Responsibilities:
Contribute to all stages of software development lifecycle
Design, implement and maintain Java-based applications that can be high-volume and low-latency
Analyze user requirements to define business objectives
Envisioning system features and functionality
Define application objectives and functionality
Ensure application designs conform with business goals
Develop and test software
Identify and resolve any technical issues arising
Create detailed design documentation
Propose changes to current Java infrastructure
Develop technical designs for application development
Develop multimedia applications
Write well designed, testable code
Conducting software analysis, programming, testing, and debugging
Manage Java and Java EE application development
Develop documentation to help users
Transforming requirements into stipulations
Prepare and produce releases of software components
Support continuous improvement, investigating alternatives and technologies, and presenting for architectural review
Skills:
Sound knowledge of Object-Oriented Programming (OOP) Patterns and Concepts
Familiarity with different design and architectural patterns
Skill for writing reusable Java libraries
Knowhow of Java concurrency patterns
Basic Understanding of the concepts of MVC (Model-View-Controller) Pattern, JDBC (Java Database Connectivity), and RESTful web services
Relevant Knowledge of Java GUI frameworks like Swing, SWT, AWT according to project requirements
Ability to write clean, readable Java code
Basic knowhow of class loading mechanism in Java
Understanding basic design principles behind a scalable application
Skilled at creating database schemas that characterize and support business processes
Basic knowledge of JVM (Java Virtual Machine), its drawbacks, weaknesses, and workarounds
Implementing automated testing platforms and unit tests
In-depth knowledge of code versioning tools, for instance, Git
Understanding of building tools like Ant, Maven, Gradle, etc