As an experienced Software Engineer in this role you will:
· Get the opportunity to both build new capabilities in existing solutions, and build new software and services from scratch, keeping technical debt low, quality high and be operationally excellent.
· Have ownership of capabilities/services from cradle-to-grave (idea conception, requirements gathering, design, development, validation, deployment, customer reviews, and operational support)
· Work at as many levels as necessary: the single-page webapp, the REST service layer, the backend platform architecture, and the AWS services we leverage (ElasticSearch, DynamoDB, Simple Workflow, SNS/SQS, S3, EC2)
· Automate the operation of systems to scale horizontally and operate at high availability.
· Iterate development of our unique, multi-master, multi-region replicated distributed system platform service that is used by multiple other customers.
· Mentor and grow junior engineers in the team
· Bachelor’s Degree in Computer Science or related field
· Equivalent experience to a Bachelor's degree based on 3 years of work experience for every 1 year of education
· 4+ years professional experience in software development
· Computer Science fundamentals in object-oriented design
· Computer Science fundamentals in data structures
· Computer Science fundamentals in algorithm design, problem solving, and complexity analysis
· Proficiency in, at least, one modern programming language such as C, C++, C#, Java, or Perl
· Hands-on experience building and operating webapps and webservices that have very high availability and scaling requirements
· Knowledge of professional software engineering practices & best practices for the full software development life cycle, including coding standards, code reviews, source control management, build processes, testing, and operations
· Experience with distributed computing and enterprise-wide systems
· Experience in communicating with users, other technical teams, and senior management to collect requirements, describe software product features, technical designs, and product strategy
· Experience mentoring junior software engineers to improve their skills, and make them more effective, product software engineers
· Experience influencing software engineers best practices within your team
· Hands-on expertise in many disparate technologies, typically ranging from front-end user interfaces through to back-end systems and all points in between