Senior Software Engineer
Job Summary: The Senior Software Engineer applies practical knowledge of development and engineering to conceive, design, develop, test, and implement software fixes, enhancements, components, and/or new software systems and applications of moderate to high complexity. The Senior Software Engineer owns design and development, and drives development of components through his/her own' and subordinate engineers' work. The Senior Engineer provides technical guidance and acts as a point of escalation and technical expert. The Senior Software Engineer designs and develops highly scalable software systems and applications.
Primary Responsibilities
- Owns the design and development of software fixes, enhancements, components, and/or new software systems and applications
- Leads programming, testing and debugging of applications or fixes to existing applications
- Participates in setting the architectural direction for software development projects
- Able to code with front-end and back-end technology stacks and lead end-to-end troubleshooting
- Participate in the design, development, and implementation of highly scalable, high-volume software systems and components, mobile-first applications, and major SaaS solutions
- Overseeing, influencing and mentoring collaborative project teams, inclusive of on-shore and off-shore development resources, key clients, and other technical groups in the organization
- Working closely with technical and non-technical leaders to strategize on delivery approach and dependency management.
- Strong practice of agile development in a collaborative, dynamic team environment.
- Highly flexible to quickly changing business needs and adoption of new technologies
- Ability to create and follow programming and style guidelines to maintain high-quality, secure code
- Ability to create and maintain documentation, procedures, and work instructions for development or operations team.
- Overseeing the diagnosis of issues, evaluating and recommending the best resolution plan and executing against that plan.
- Adhering to technical development processes, standard and software engineering best practices.
- Perform code reviews on regular basis and establish coding best practices
- Responsible for Release Management, Service Management and build configuration in highly integrated environment while using DevOps tools like Jenkins, Rundeck, Bamboo, uDeploy, UC4, API gateways, AppDynamics and Splunk.
Basic Qualifications
- Minimum of 5 years of web development, including experience with HTML, CSS, AJAX, JavaScript and modern JavaScript libraries
- Minimum of 5 years of Java development experience including Java EE
- Strong background in Computer Science fundamentals
- Working knowledge of object-oriented programming with an understanding of design principles
- A Bachelor's Degree in Computer Science or equivalent
- Experience developing RESTful Web Services
- Experience with JSON and/or XML
- Experience with Single Page Applications built using JavaScript frameworks like Angular
- Experience with NodeJS
- Experience with version control systems like GitHub
- Experience with Cloud technologies like AWS
- Experience with SQL (eg MariaDB) and/or NoSQL Database technologies (eg DynamoDB)
- Experience with Integrated Development Environments (IDEs) like IntelliJ
- Experience writing technical specifications and driving them through development
- Ability to develop and implement high-quality code in a timely manner is essential
- Effective verbal and written communication skills with both technical and non-technical audiences
- Ability to thrive in a dynamic, collaborative and fast paced environment
- Strong interpersonal skills as well as strong problem-solving and analytical skills
- Attention to detail
Preferred Qualifications
- Working knowledge of micro-services, RESTful Web Services or APIs using Spring boot, JPA, JAXB
- Deep knowledge of standards-based HTML, CSS and JavaScript
- Experience with log monitoring tools like Splunk or Grafana
- Experience with Application performance monitoring tools like AppDynamics, New Relic
- Knowledge of mobile app development
- Knowledge of accessible/accessibility development standards and WCAG guidelines
- Knowledge of server-side scripting language and framework; eg: Zend for PHP
- Content Management System Architecture knowledge a plus
- Experience with SCRUM or other agile development practices
- You read up on and experiment with new technologies just for fun
- Experience with event driven architecture, including technologies such as JMS, RabbitMQ, Kafka, and similar solutions.
- Strong knowledge of unit testing, behavioral testing and continuous integration such as Junit, JBehave, Component test cases.
- Experience with software performance optimization using tools like VisualVM, Parasoft, YourKit
- Experience with caching technologies such as EhCache, JCS Cache and Redis cache frameworks.
- Experience with source control and build deploy tools such as Git, Git Prime, Sonar Jenkins, Maven, CICD, Parasoft.
Soft Skill Requirments
- Excellent written, verbal and interpersonal communication skills
- Proven ability to work with all members of an extended and diverse, multi-disciplinary project team
- Must be detail-oriented, self-organized, be committed to quality and be capable of tracking multiple issues simultaneously
- Candidate must have mentoring and guidance skills to provide oversight and direction to contractors and internal members
- Ability to handle virtual teams and work with resources in multiple sites (onsite, offshore, near shore)
- Excellent time management skills
- Ability to communicate to both technical and business users and the ability to gracefully handle passionate conversations.