Perform new application development including initial design and evaluation for workload to give an estimated work duration
Provide maintenance support and enhance performance to existing application code
Review and document existing application code
Analyze and design databases within an application area, working individually or coordinating database development as part of a team
Monitor and troubleshoot production software issues and provide solutions
Analyze user needs and software requirements to determine feasibility of design within time and cost constraints
Confer with systems analysts, engineers, programmers, product managers and others to design system and to obtain information on project limitations and capabilities, performance requirements and interfaces and legacy systems
Store, retrieve, and manipulate data for analysis of system capabilities and requirements
Design, develop and modify software systems, using scientific analysis and mathematical models to predict and measure outcome and consequences of design
Develop and coordinate software unit testing and system testing and validation procedures, and documentation
Develop in accordance with system performance standards set by the organization
Coordinate software deployments and monitor applications to ensure specifications are met
Mentor Junior developers
Perform other duties as required and assigned by manager and upper management
Follow legal policies as directed
Qualifications:
Bachelor’s degree or, Information Technology, or a related field
5+ years of recent software development experience
Strong development experience using Java/Spring
Proficiency in Object Oriented design and programming
Experience with build management tools, preferably Maven
Experience with version control tools, preferably Git
Proficiency with IDE-based development, especially in Eclipse or IntelliJ
Proficiency building unit tests / integration tests using JUnit or similar
SQL/NoSQL development experience
Experience building web services, preferably using the REST style
Knowledge of data structures and algorithms
Experience with Asynchronous messaging technologies such as JMS, Apache Kafka, Apache Pulsar, or RabbitMQ
Experience with production troubleshooting and analysis using log / debugging tools such as Splunk, AppDynamics
Collaborative and able to communicate well with the team
Experience with building applications using container technologies such as Docker/Kubernetes, Tomcat/Jetty
Transaction Handling across DBs/Services
Process Improvement & Product Management
ORM Frameworks such as Hibernate
Multi-threading, Concurrent programming
Experience in Security frameworks, Cache technologies, Micro Service Architecture, Enterprise Architecture
Scaling applications for performance and availability