Lead Software Engineer
- Work with management to set and communicate team goals and vision aligned to business requirements; ensure the team stays focused and delivers against the goals, adapting to changing business requirements.
- Mentors the entire team on development best practices and standards.
- Estimate software development timelines and be accountable to the timelines by actively managing risks and changing requirements.
- Provide input into system software architecture development by working with Staff and Principal Engineers as required.
- Lead the design of software using abstraction, low coupling and high cohesion, modularization, encapsulation and information hiding, interfaces, and separation of concerns
- Collaborate with the Test Lead emphasizing the use of autonomous frameworks and Continuous Integration.
- Ensure the adoption and application of software development tools (IDEs, test frameworks, static analyzers, etc.) to improve engineering efficiency to maximize resources and reduce expense.
- Identify and reduce technical debt.
- Contribute to an Agile team that solves complex challenges and improves the scalability, security, and performance of existing products.
- Architects and designs performant, scalable, and secure software to a high degree of quality – not simply focusing on meeting functional requirements.
- Improves the software development process by recommending and instituting changes in policies and procedures.
- Provides technical guidance to team members through education and coaching of best practice principles.
- Germinates and drives new ideas and encourages innovative practices among peers.
- Participate in code reviews and quality assurance testing as a shared responsibility with the team.
- Perform on-call duties on a rotating schedule.
- Experience with one or more JS framework(s) (Aurelia, Angular, React, etc).
- Experience using at least one other general programming language (C#/Java/C++/VB.NET, for example).
- Experience writing unit tests.
- Experience and knowledge of object-oriented design.
- Experience and knowledge of the concepts of relational databases.
- Knowledge of HTML5 and CSS3.
- Knowledge of agile processes and milestones.
- Interest and ability to learn other coding languages as needed.
- Bachelor's degree in Computer Science, Math or other equivalent experience
- Ability to speak and write English fluently and idiomatically.
- Experience writing build scripts and plugins.
- Knowledge or experience in WCAG and accessibility best practices.
- Knowledge of package managers, bundlers, and task runners.
- Knowledge of JIRA, Bitbucket, and other project and code management software.
- Knowledge of CSS extensions (SASS, LESS, etc).