Be responsible for designing, coding, testing, implementing, maintaining, and supporting application software that is delivered on time and within budget. Work closely with customers, business analysts, technology, and project teams to understand business requirements, drive the analysis and design of quality technical solutions that are aligned with business and technology strategies, and comply with the organization's architectural standards. Provide technical guidance to the development team through the full software life cycle.
• Well versed with SDLC concepts
• Working with cross functional teams like Business Management, Architects, operations and QA
• Strong programming & problem solving skills
• Ability to think from a business perspective
• Agile team player with interpersonal communication skills
• Ability to work independently with minimal supervision Responsibilities
Performs other duties as assigned
- Hands on developer coding and create low level design documents (including code samples/outlines) and detailed engineering specifications based on complex business, user, and non-functional (e.g., performance, reliability, balance, and controls) requirements. Write code that adheres to coding standards, procedures, and techniques. Maintain the integrity of existing program logic according to specifications.
- Actively participate in the code review process to ensure development work adheres to standards and specifications (including peer review and code review external to team). Ensure the quality of work completed by vendor partners. Write and/or revise system design documentation and operations documentation to include providing required input into operation support manuals.
- Unit test all code and programs prior to releasing them to quality assurance. Quickly resolve all unit test issues. Assist quality assurance in identifying test cases and creating/mining test data to enable a thorough test of all development deliverables. Respond to all inquiries and issues in a timely manner as developed code/program moves through the testing process.
- Provide mentoring and direction to more junior members of the application development team. Influence the shaping of standards and tools. Provide governance oversight to ensure project adherence to development strategy, standards, policies, tools, and procedures. Guide the development team to consistently apply appropriate development principles and standards during all phases.
- Work in partnership with the project team and business to fully understand project goals and requirements and use this knowledge to effectively plan and execute the development process. Participate in project design walkthroughs. Evaluate interrelationships between applications to determine whether a change in one part of the project would impact or cause undesirable results in related applications and design for effective interfaces between interrelated applications.
- Improve the health of system assets by identifying enhancements to improve performance, reliability, and resource consumption. Track exceptions to standards (e.g. security gaps) to ensure they are addressed in a planful and timely fashion. Evaluate and troubleshoot root-cause analysis for production issues and system failures; determine corrective action(s) and propose improvements to prevent their recurrence.
- Maintain up-to-date business domain knowledge and technical skills in software development technologies and methodologies. Provide input in the selection, implementation and use of development tools and best practices. Work effectively in a team environment to ensure that solution delivery is on time, within cost estimates and meets business needs.
In our interviews we usually check knowledge in the following areas.
1. Core Java Skills & Java 8 hands on expertise
2. Design Patterns
3. Memory Management
4. Multi-Threading/Parallel processing
5. Logical Abilities.
6. Real-Time problems solving
7. Dev Ops experience Required Qualifications
Bachelors degree or equivalent (4-years) in Computer Science, Engineering, or related Field; or equivalent work experience.
5-7 years of relevant experience required.
5-7+ years of experience coding and/or designing in relevant programming languages (specific required languages will vary by position).
5+ years of practical experience and proven success with the design and build of complex software applications.
Demonstrated experience coding and/or designing in multiple environments.
- Expertise in JAVA/J2EE programming language utilizing Spring framework.
- Sound knowledge on Object oriented programming concepts
- Experience in working on Multithreaded Systems.
- Strong Experience RESTful services with security/availability/performance aspects being thorough
- Exposure to Unit testing framework like TestNG, JUnit.
- Good knowledge on system design and various design patterns
- Strong systems fundamentals related to performance, scale and factors inside/outside the JVM that impact the system.
- Strong experience with SQL databases (procedures, triggers, etc.)
- Expertise in Unix commands.
- Expertise on GIT and Maven usage.
- Experience in working in Agile methodologies
- Experience in continuous integration
- Experience in Micro Services development.
- Containerization technologies - Docker is preferred
* Java 8 required
* building websites/services
* 30% hands on coding 70% leading and coordinating offshore team/attending meetings with the business/basic java architecture/gathering requirements form business
* candidates should have coordinated and developed alongside offshore team previously
* security: experience with making services like Resftul web services secure
* strong design pattern experience
* unit testing- at the very least (heavy testing on this team) Preferred Qualifications
- Proven ability to successfully translate client/business needs into software designs.
- Proven analytical and business skills to reconcile conflicting objectives and find/design acceptable compromises within existing limitations.
- Understand and apply both current technical solution elements (specific tools, components, and frameworks) and abstract elements (algorithms and architectures).
- Effectively apply technology/engineering knowledge-base to multiple and evolving programs and languages..