Principal Software Engineer

Input Output
Summary
Join IOG, a blockchain technology company, as a Principal Software Engineer to lead complex software initiatives. You will drive high-level technical decisions, shape system architecture, mentor engineers, and improve development processes. This role requires collaboration with various teams, including product, delivery, and research, to define goals and navigate priorities. As a senior specialist, you will need technical expertise and leadership skills to deliver complex software projects. The position involves strategic technical leadership, software architecture and design, coding and development, technical problem-solving, project management, and continuous improvement. IOG offers remote work, laptop reimbursement, a new starter package, learning and development opportunities, and competitive PTO.
Requirements
- Ability to align technical initiatives with business objectives
- Capable of managing timelines, resources, and deliverables to ensure project success
- Strong leadership and mentorship abilities
- Excellent communication and collaboration skills
- Promotes diversity and inclusion in technical decision-making and team dynamics
- Establish and oversee coding and deployment processes that maximize efficiency, consistency, and quality across the development lifecycle
- Define, implement, and continually refine CI/CD and all development workflows, ensuring alignment with team and organizational goals
- Monitor adherence to processes and make adjustments to improve productivity and team alignment
- Develop and enforce coding and deployment standards to ensure consistency, maintainability, and scalability across projects
- Lead the adoption of industry best practices for version control, code reviews, CI/CD, and automation, driving improvements in software quality and delivery speed
- Collaborate with teams to ensure that processes and standards are well-documented, widely understood, and consistently applied
- Serve as a technical liaison between development teams and other departments, ensuring that technical decisions complement business needs and product strategy
- Influence company-wide technical direction by actively contributing to cross-functional leadership discussions and decision-making processes
- Bachelor's or Master's degree in Computer Science or a related field
- Several years (typically 15 years) of professional software development experience
- Proficiency in multiple programming languages and technologies
- Strong understanding of software architecture, design patterns, and best practices
- Excellent problem-solving and debugging skills
- Leadership and mentoring skills with the ability to lead and inspire a team
- Experience with Agile and other software development methodologies
- Strong communication and collaboration skills
- Experience with version control systems, continuous integration, and DevOps practices
Responsibilities
- Lead and mentor software development teams, providing technical guidance and expertise
- Advocate for coding best practices, design patterns, and architectural excellence
- Collaborate with cross-functional teams, including product managers, designers, and QA engineers, to define technical requirements and project goals, ensuring that technical direction complements overarching business goals
- Collaborate with research teams and academic partners to translate cutting-edge theory into practical engineering solutions
- Evaluate experimental technologies and guide strategic investments in technical capabilities that give the organization a competitive edge
- Architect and design complex software systems, considering scalability, performance, and maintainability
- Evaluate and recommend technologies, tools, and frameworks for development
- Create and maintain architectural documentation
- Write high-quality, clean, and efficient code
- Participate actively in coding and development tasks
- Set benchmarks for code quality, championing clean and efficient code
- Tackle complex technical challenges and provide innovative solutions
- Troubleshoot and debug software issues in production environments
- Collaborate with project/delivery managers to define project timelines, deliverables, and resource requirements
- Offer insights on tech feasibility during project planning and execution stages
- Stay up-to-date with industry trends and emerging technologies
- Identify areas for process improvement and lead initiatives to enhance development processes and methodologies
- Encourage feedback-driven improvements to drive a continual learning culture in both tech tools and processes
- Create technical documentation, including design documents and API documentation
- Establish avenues for smooth knowledge exchange within the team
- Nurture the professional growth of software engineers, offering guidance and technical mentorship
- Lead regular tech sessions and workshops, fostering a culture of continuous learning
- Identify and nurture potential leads or senior developers within the team
- Champion diversity and inclusion within the technical team, promoting a wide range of perspectives and approaches
Preferred Qualifications
- Experience maintaining large codebases (open-source contributions to large projects are preferred, but not required)
- Experience translating scientific research into software products
- Deep understanding of distributed systems
- Experience debugging Haskell performance issues (CPU, memory)
- Proven ability to follow developer workflows (code review, debugging, documentation)
- Strong Haskell background, familiarity with its ecosystem (lenses, Template-Haskell, CBOR, GHC Generics, STM, mtl, SOP, etc.)
- Software Architecture & Design: Expertise in architecting, designing, and maintaining complex, scalable, and maintainable software systems with a focus on performance and security
- 15+ years of Haskell experience
- In-depth understanding of blockchain technology, and experience with maintaining large complex distributed systems
- Security Best Practices: Expertise in secure coding practices, cryptographic methods, and implementation of security measures to safeguard sensitive data and systems
- Testing & Quality Assurance: Familiarity with automated testing tools and frameworks (e.g., QuickCheck, Hedgehog, QuickCheck State Machine), along with implementing test-driven or model driven development and continuous integration for code reliability
Benefits
- Remote work
- Laptop reimbursement
- New starter package to buy hardware essentials (headphones, monitor, etc)
- Learning & Development opportunities
- Competitive PTO
Share this job:
Similar Remote Jobs
