Senior Software Engineers are the technical leaders/decision makers for a software development initiative and drive the architecture and development of advanced software solutions. Full stack engineers lead the architecture and development of all aspects of the software, including data storage, services, and user interface development. In addition to having extensive experience leading large, complex software development initiatives, he/she must demonstrate a passion for technology and delivering high quality business applications to customers.
Essential Duties and Responsibilities
Develop software solutions by studying information needs, conferring with users, studying systems flow, data usage, and work processes.
Architect cross-functional, multi-platform distributed software applications leveraging most appropriate architectural patterns and practices
Drive the development of large, complex software solutions including both frontend and and backend aspects of software features
Work as part of a development team to mentor software engineers, perform code reviews, and ensure best practice is being followed for all layers of the software architecture.
Consult with clients and guide them through critical technology decisions
Work as part of an Agile development team to implement all phases of enterprise-level software development across all layers of the application architecture (back-end to front end)
Interact with project management to plan project schedules and technical direction
Diagnose and resolve software problems quickly and efficiently
Develop high-level system design diagrams for program design, coding, testing, debugging and documentation
Effectively estimate project work, and communicate issues and risks that might impact development timeline, budget or resources
Collaborate with clients and project managers to consistently deliver projects on time and on budget
Adhere to development standards and methodologies but also drive changes based on new tools, technologies, and trends in the market
Qualifications
Requires experience working with Java technologies including both frontend and backend technologies such as Spring, Spring Boot, Sprint MVC Struts, Node, data access libraries such as JDBC, JSON libraries such as Jackson, ORM tools such as Hibernate, and JVM, and front end tools including Angular, React, and/or Vue
Requires architectural experience utilizing design patterns on complex, distributed applications and platforms
Requires both database and data services architecture experience as well as user interface design and development experience.
Requires experience with OOP design principles and architectural patterns
Preferred experience with testing platforms including JUnit and Mockito
Preferred experience with Java cloud services and containers such as Kubernetes and Docker
Preferred engineering experience using Eclipse and/or IntelliJ
Preferred engineering experience with Angular and React
Preferred experience with microservices, services oriented architecture, REST, and similar services patterns
Experience in database development and web-based server-side integration
Proven experience driving coding best practices
Experience leading developers in Agile teams and co-sourced teams
Ability to be customer facing with good communication skills
Willing and able to learn new technologies
The company is an equal opportunity employer and will consider all applications without regards to race, sex, age, color, religion, national origin, veteran status, disability, sexual orientation, gender identity, genetic information or any characteristic protected by law.