For the Lead Software Engineer role, you will need to have strong, lead-level understanding of software engineering best practices such as coding standards, testing, code reviews, source control management, and build processes.
In addition to great coding skills, being able to communicate with our other members of the team to help lead and guide them of best engineering practices. Being able to design applications from top to bottom, troubleshooting and fixing tough problems, hitting quick deadlines, and knowing when to push back on requirements will all be very important parts of this role.
What you’ll be doing:
- Lead, mentor and inspire fellow technology Zapponians
- Help build complex, scalable fast systems and services using modern technology and methodologies
- Facilitate difficult conversations between disparate technical and business perspectives balancing short-term needs vs setting up the company for long-term success with an eye towards limiting the buildup of technical debt
- Capturing and analyzing data to improve system capabilities
- Building fault-tolerant systems that can process billions of requests per day and have the ability to enhance processes within the system through analysis, tracking and automation.
What you’ll bring to the table:
- Experience with distributed computing and enterprise-wide systems
- Understanding of expert 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
- Capability in connecting with users, other technical teams, and senior management to collect requirements, describe software product features, technical designs, and product approach
- A solid understanding of all software layers including UI, service, data store, and communication layers
- Expertise in mentoring and advising junior software engineers to develop their skills, and make them more successful, product software engineers
- Experience influencing software engineers best practices within your team
- Hands-on skill in many incongruent technologies, typically fluctuating from front-end user interfaces through to back-end systems and all points in between
- Computer Science fundamentals in object-oriented design, required
- Computer Science fundamentals in data structures, required
- Computer Science fundamentals in algorithm design, problem-solving, and complexity analysis, required
- Proficiency in, at least, one modern programming language such as C, C++, C#, Java, or Perl, required