Consulting

I offer software development contracting, and advisory consulting on Rust adoption and engineering leadership. I'm happy to take on short-term, long-term, or open-ended contracts, and can invoice based on project milestones, or a daily or hourly rate. I'm experienced with remote work and can also work on-site for short periods (local laws permitting). Consulting can be combined with Rust coaching, support, or training.

To discuss any of these services, please get in touch!

Software development

I have nearly twenty years experience of software development and over ten years of development experience in Rust. I have experience designing and implementing distributed systems, databases, programming languages, compilers, developer tools, and libraries and APIs. I'm skilled in working with users and non-technical staff, requirement gathering and elaboration, software design, and specification.

I work well in teams or independently; I adapt quickly to new teams and organisations, and work well across multiple teams. I have excellent written and verbal communication skills. I've worked on very large code bases (10m+ LoC) and can quickly understand large, complex projects.

I primarily work in Rust, though I'm happy to take on projects which include components in other languages (I have professional experience with C/C++, Go, Java, Javascript, and Python, and have programmed in many more). I'm particularly able to take on projects in the following domains or skill areas:

  • distributed systems,
  • database implementation,
  • developer tools,
  • library design and implementation; API design,
  • programming language design,
  • foundational research and theoretical work on programming languages,
  • technical writing, scientific writing, and documentation.

Rust adoption

I can help you adopt Rust in your team or across your organisation: from initial assessment, prototyping, and production. At the start of your journey I can help technical and business leaders understand the benefits and costs of Rust, assess the suitability of Rust for your specific needs, identify risks and risk mitigations, and help integrate Rust into your policies and strategies. I can recommend tools and libraries, integrate these with your existing systems, and adapt them to your requirements.

If you're committed to Rust, then I can help make that commitment a success. I can provide education to individuals and teams in the form of training and mentoring, and I can assist with internal evangelism efforts to help ensure the adoption process has the support it needs. I can undertake research to identify libraries, tools, and techniques which are most suited to your needs or to develop new ones if necessary.

For ongoing Rust usage, I offer online support, design and code review, and team augmentation.

Engineering leadership

I've worked as a principle engineer at Microsoft and a staff engineer at Mozilla, and helped a successful startup (PingCAP) build their engineering culture. I've also had key leadership roles in the Rust community. I can work with your senior engineers and management to make your engineering org more effective. I'm particularly able to help with issues around:

  • open source software and communities (whether or not your own products are open source),
  • remote and hybrid working,
  • community building and community leadership,
  • building an engineering culture at startups,
  • mentoring and growing engineers.