Senior Developer Tools Engineer
The product and engineering teams at Marchex work in tight tandem on some of the hardest problems at the intersection of business and technology; we span online and real-world data and bring together human psychology and mobile technology to deliver innovation and results. The engineering team designs, develops, tests, deploys, operates, maintains, monitors and services all of the software and systems that delight our customers daily. We are a learning culture full of some of the best and brightest in the software industry who innovate and iterate daily. We care about code quality and integrity, we deliver early and often, and we have a great time collaborating to make it all come together.
Outline of Duties and Responsibilities
- Identify current software development and systems engineering bottlenecks, inefficiencies, and weaknesses.
- Prioritize, with Engineering Leadership, solutions to bottlenecks and opportunities for enhanced efficiency throughout the Engineering process and systems.
- Design, implement, monitor, and continuously improve those processes and systems.
- Collaborate with senior product and engineering leaders to evaluate and improve upon SDLC process and technical direction for all Marchex engineering.
- Drive the architecture, design, and development of all new and existing Marchex software, services, applications and technology platforms.
- Lead design teams through the complete SDLC, estimate development scope and effort, own deliverables through design, implementation and deployment as needed.
- Provide analysis, technical guidance, and mentoring while developing solutions for advanced technical problems and issues at Marchex.
- Identify and drive adoption of best practices across all engineering disciplines.
- Guide and mentor less experienced engineers in design, testing and implementation of code.
- Write maintainable, efficient, and well-documented code using TDD and other engineering best practices.
- Contribute and adhere to company-wide coding standards for enhancing code readability, supportability, and extensibility. Create and maintain high-quality technical documentation for all relevant specifications, systems, and procedures.
- Investigate and evaluate emerging technologies and provide advice on technical strategies and opportunities.
- Participate in regular team-based code reviews; provide feedback and suggestions to other members of the development team, and incorporate ideas from members of the team into developed applications.
- Assist with project management tasks (e.g. scheduling, task and project estimation, status reports, etc.) as necessary.
- Collaborate with other Marchex employees and teams to ensure strong products and that all functional concerns are addressed.
Experience, Skills and Qualifications
- BS or advanced degree in computer science, engineering, or related technical field or equivalent professional experience
- 5+ years full time professional experience, 8+ total years, of software design and development, using a diverse set of programming languages, frameworks, and systems, for example: Java, Scala, Akka, Play or Spray, Javascript, .Net, C#, Ruby, RoR, Perl, etc.
- 2+ years of experience implementing database-driven, web-based applications with MySQL, Postgres, MS SQL, Oracle, or comparable relational database.
- Demonstrated experience in designing tools that streamline developer and operational activities.
- Demonstrated experience with web service architectures and methodologies (REST, SOAP, XML).
- Demonstrates very strong understanding and experience in using OO, TDD, SQL and relational databases. Functional languages a plus.
- Passionate about working with agile development practices with a focus on delivering proven features frequently.
- Strong knowledge of Unix and/or Linux.
- Experience with source code management and version control systems.
- Demonstrated ability to write and maintain clear technical documentation.
- Attention to detail and commitment to quality.
- Desire to work in fast-paced team environment and meet set deadlines.
- Ability to adapt to a rapidly changing environment and rapidly changing requirements.
- Strong oral and written communication skills.
- A strong desire to learn new technologies.
- Solid analytical skills (problem solving, debugging others/own code, etc.).
- Understanding and application of design, algorithms, data structures, data modeling & optimization