Job Summary
Creates, modifies, and maintains software applications individually or as part of a team. Provides technical leadership on a team, including training and mentoring of other team members. Provides technology and architecture direction for the team, department, and organization.
Essential Duties & Responsibilities
· Develops software applications and supporting infrastructure using established coding standards and methodologies
· Sets example for software quality through multiple levels of automated tests, including but not limited to unit, API, End to End, and load.
· Self-starter and self-organized - able to work without supervision
· Develops tooling, test harnesses and innovative solutions to understand and monitor the quality of the product
· Develops infrastructure as code to reliably deploy applications on demand or through automation
· Understands cloud managed services and builds scalable and secure applications using them
· Creates proof of concepts for new ideas that answer key questions of feasibility, desirability, and viability
· Work with other technical leaders to establish coding standards, development best practices and technology direction
· Performs thorough code reviews that promote better understanding throughout the team
· Work with architects, designers, business analysts and others to design and implement high quality software solutions
· Builds intuitive user interfaces with the end user persona in mind using front end frameworks and styling
· Assist product owners in backlog grooming, story breakdown and story estimation
· Collaborate and communicate effectively with team members and other stakeholders throughout the organization
· Document software changes for use by other engineers, quality assurance and documentation specialists
· Master the technologies, languages, and practices used by the team and project assigned
· Train others in the technologies, languages, and practices used by the team
· Trouble shoot, instrument and debug existing software resolving root causes of defective behavior
· Other duties as assigned
Experience
Education
· BA/BS in Computer Science, a related field or equivalent work experience
Minimum Qualifications
· Mastered advanced programming concepts, including object oriented programming
· Mastered technologies and tools utilized by team and project assigned
· Able to train others on general programming concepts and specific technologies
· Minimum 8 years’ experience developing software applications
Skills/Knowledge
· Must be expert in advanced programming skills and database technology
· Must be expert in at least one technology and/or language and proficient in multiple technologies and languages:
· (Specific languages needed will vary based on development department or project)
· .Net Core, C#, Java, SQL, JavaScript, Typescript, Python
· Additional desired skills:
o Single-Page Applications, Angular (v9), Ivy, RXJS, NGRX, HTML5, CSS/SASS, Web Components, Atomic Design
o Test First approach, Test Driven Development (TDD), Automated testing (Protractor, Jasmine), Newman Postman, artillery.io
o Microservices, Terraform, Jenkins, Jupyter Notebook, Docker, NPM, Yarn, Nuget, NodeJS, Git/Gerrit, LaunchDarkly
o Amazon Web Services (AWS), Lambda, S3, Cognito, Step Functions, SQS, IAM, Cloudwatch, Elasticache
o Database Design, Optimization, Replication, Partitioning/Sharding, NoSQL, PostgreSQL, MongoDB, DynamoDB, Elastic Search, PySpark, Kafka
o Agile, Scrum, Kanban, DevSecOps
· Strong problem-solving skills
· Outstanding communications and interpersonal skills
· Strong organizational skills and ability to multi-task
· Ability to track software issues to successful resolution
· Ability to work in a collaborative fast paced environment
· Ability to learn new development language quickly and apply that knowledge effectively