Software Engineer
Summary: The main function of a Software Engineer is to design, develop, implement, test, and maintain business and computer applications software or specialized utility programs including mainframe and client/server applications, and major enhancement of existing systems
Job Responsibilities: • Fine-tune and improve a variety of sophisticated software implementation projects • Gather and analyze system requirements, document specifications, and develop software solutions to meet client needs and data • Analyze and review enhancement requests and specifications • Implement system software and customize to client requirements • Prepare the detailed software specifications and test plans • Code new programs to client’s specifications and create test data for testing • Modify existing programs to new standards and conduct unit testing of developed programs • Create migration packages for system testing, user testing, and implementation • Provide quality assurance reviews • Perform post-implementation validation of software and resolve any bugs found during testing
Qualifications: • Bachelor's degree in a technical field such as computer science, computer engineering or related field required • 5-7 years experience required • A solid foundation in computer science, with strong competencies in data structures, algorithms, and software design • large systems software design and development experience • Experience performing in-depth troubleshooting and unit testing with both new and legacy production systems • experience in programming and experience with problem diagnosis and resolution • A minimum of 3 years of experience as a full stack developer utilizing Java/ .Net and RESTful services or similar experience with GraphQL and BFF patterns • Experience with developing web applications using React or Angular • Expertise in SQL (relational databases), key-value datastores, and document stores • Experience with cloud environments (preferably Azure) • Understanding of CI/CD pipelines and build & release automation tools
Additional Responsibilities • Partner with product owner, architect, and the team to create secure, reliable, and scalable software solutions • Full lifecycle application development using standard frameworks and coding standards/patterns • Efficiently produce well-organized, optimized, and well-documented source code • Design and develop code into independent reusable components • Decompose requirements (typically user stories) into meaningful tasks with estimations • Work closely with senior developers and software engineers to gain additional knowledge and expertise. • Perform code reviews to suggest, encourage, and support coding best practices • Provide application support to software running in production • Proactively engage in the identification / remediation of software issues related to code or solutions quality, security, and/or pattern/frameworks and software usability or end user related issues • Perform root cause analysis, do technology evaluations, and develop quick prototypes • Promote improvements in programming practices